mirror of https://github.com/apache/lucene.git
39 lines
1.1 KiB
Bash
39 lines
1.1 KiB
Bash
|
#!/bin/bash
|
||
|
|
||
|
# Custom oom handler loosely based on
|
||
|
# https://github.com/apache/lucene-solr/blob/master/solr/bin/oom_solr.sh
|
||
|
# See solr-forgeground for how to configure OOM behaviour
|
||
|
|
||
|
if [[ -z "${SOLR_LOGS_DIR:-}" ]]; then
|
||
|
if [ -d /var/solr/logs ]; then
|
||
|
SOLR_LOGS_DIR=/var/solr/logs
|
||
|
elif [ -d /opt/solr/server/logs ]; then
|
||
|
SOLR_LOGS_DIR=/opt/solr/server/logs
|
||
|
else
|
||
|
echo "Cannot determine SOLR_LOGS_DIR!"
|
||
|
exit 1
|
||
|
fi
|
||
|
fi
|
||
|
SOLR_PID=$(pgrep -f start.jar)
|
||
|
if [[ -z "$SOLR_PID" ]]; then
|
||
|
echo "Couldn't find Solr process running!"
|
||
|
exit
|
||
|
fi
|
||
|
|
||
|
NOW=$(date +"%F_%H_%M_%S")
|
||
|
(
|
||
|
echo "Running OOM killer script for Solr process $SOLR_PID"
|
||
|
if [[ "$SOLR_PID" == 1 ]]; then
|
||
|
# under Docker, when running as pid 1, a SIGKILL is ignored,
|
||
|
# so use the default SIGTERM
|
||
|
kill "$SOLR_PID"
|
||
|
sleep 2
|
||
|
# if that hasn't worked, send SIGKILL
|
||
|
kill -SIGILL "$SOLR_PID"
|
||
|
else
|
||
|
# if we're running with `--init` or under tini or similar,
|
||
|
# follow the upstream behaviour
|
||
|
kill -9 "$SOLR_PID"
|
||
|
fi
|
||
|
) | tee "$SOLR_LOGS_DIR/solr_oom_killer-$SOLR_PORT-$NOW.log"
|