summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Abrahams <jonathan@mongodb.com>2016-06-09 15:02:01 -0400
committerJonathan Abrahams <jonathan@mongodb.com>2016-06-21 13:23:29 -0400
commit9756d828821e0fdeb9d58e9b993639148d07ba1a (patch)
tree3cfec0816ee8cb043936c337da257a66134a7b1c
parentbf6e2ae440efa10dbc28026d384e6c1241641599 (diff)
downloadmongo-9756d828821e0fdeb9d58e9b993639148d07ba1a.tar.gz
SERVER-24211 Add OOM killed process messages to system log
(cherry picked from commit 5e26352a654193b3d323b8cb1bac54d41ea03765)
-rw-r--r--etc/evergreen.yml51
1 files changed, 51 insertions, 0 deletions
diff --git a/etc/evergreen.yml b/etc/evergreen.yml
index b65aa6b2681..e0836076d98 100644
--- a/etc/evergreen.yml
+++ b/etc/evergreen.yml
@@ -400,6 +400,25 @@ pre:
set -o verbose
rm -rf src /data/db/* mongo-coredumps.tgz
+ - command: expansions.update
+ params:
+ updates:
+ - key: set_sudo
+ value: |
+ set -o | grep errexit | grep on
+ errexit_on=$?
+ # Set errexit "off".
+ set +o errexit
+ sudo=
+ # Use sudo, if it is supported.
+ sudo date > /dev/null 2>&1
+ if [ $? -eq 0 ]; then
+ sudo=sudo
+ fi
+ # Set errexit "on", if previously enabled.
+ if [ $errexit_on -eq 0 ]; then
+ set -o errexit
+ fi
- command: shell.exec
params:
system_log: true
@@ -408,6 +427,14 @@ pre:
set -o verbose
ulimit -a
+ # Clear the dmesg ring buffer. The "post" phase will check dmesg for OOM messages.
+ ${set_sudo}
+ $sudo dmesg --clear > /dev/null 2>&1
+ if [ $? -eq 0 ]; then
+ echo "Cleared the dmesg ring buffer"
+ else
+ echo "Could not clear the dmesg ring buffer"
+ fi
post:
- command: attach.results
@@ -436,6 +463,30 @@ post:
content_type: ${content_type|application/x-gzip}
display_name: Core Dumps - Execution ${execution}
optional: true
+ - command: shell.exec
+ params:
+ system_log: true
+ working_dir: src # Temporary files created in src will be cleaned up in "pre".
+ script: |
+ ${set_sudo}
+ # Use dmesg -T option, if supported, to display timestamps.
+ dmesg=dmesg
+ dmesg -T > /dev/null 2>&1
+ if [ $? -eq 0 ]; then
+ dmesg="dmesg -T"
+ fi
+ $sudo $dmesg 2> /dev/null > dmesg.txt
+ if [ $? -ne 0 ]; then
+ echo "Cannot check for OOM (Out of memory) killed processes on this platform"
+ exit 0
+ fi
+ egrep -i '(Out of memory|OOM[- ]killer|Killed process)' dmesg.txt > oom.txt
+ if [ -s oom.txt ]; then
+ echo "OOM (Out of memory) killed processes detected"
+ cat oom.txt
+ else
+ echo "No OOM (Out of memory) killed processes detected"
+ fi
- command: shell.cleanup
timeout: