FIX: Increase timeout when trying to reload unicorn.

Also fail better when reloading takes too long by sending
unicorn a TERM.
This commit is contained in:
Guo Xiang Tan 2018-12-04 13:42:10 +08:00
parent 5c17e46274
commit cfa0321aaa
1 changed files with 16 additions and 11 deletions

View File

@ -25,24 +25,29 @@ function on_reload()
unset NEW_UNICORN_PID unset NEW_UNICORN_PID
count=0 count=0
while [ "$count" -lt 30 -a -z "$NEW_UNICORN_PID" ]; do while [ "$count" -lt 180 -a -z "$NEW_UNICORN_PID" ]; do
NEW_UNICORN_PID=`ps -f --ppid $UNICORN_PID | grep 'unicorn master' | grep -v old | grep -v worker | awk '{ print $2 }'` NEW_UNICORN_PID=`ps -f --ppid $UNICORN_PID | grep 'unicorn master' | grep -v old | grep -v worker | awk '{ print $2 }'`
log "Waiting for new unicorn master pid... $NEW_UNICORN_PID" log "Waiting for new unicorn master pid... $NEW_UNICORN_PID"
count=$((count+1)) count=$((count+1))
sleep 1 sleep 1
done done
count=0 if [ -n "$NEW_UNICORN_PID" ]; then
while [ "$count" -lt 30 -a -z "$(ps -f --ppid $NEW_UNICORN_PID | grep worker | head -1 | awk '{ print $2 }')" ]; do count=0
log "Waiting for new unicorn workers under $NEW_UNICORN_PID to start up..." while [ "$count" -lt 180 -a -z "$(ps -f --ppid $NEW_UNICORN_PID | grep worker | head -1 | awk '{ print $2 }')" ]; do
count=$((count+1)) log "Waiting for new unicorn workers under $NEW_UNICORN_PID to start up..."
sleep 1 count=$((count+1))
done sleep 1
done
curl $LOCAL_WEB &> /dev/null curl $LOCAL_WEB &> /dev/null
kill -s QUIT $UNICORN_PID kill -s QUIT $UNICORN_PID
log "Old pid is: $UNICORN_PID New pid is: $NEW_UNICORN_PID" log "Old pid is: $UNICORN_PID New pid is: $NEW_UNICORN_PID"
UNICORN_PID=$NEW_UNICORN_PID UNICORN_PID=$NEW_UNICORN_PID
else
log "Unicorn is taking too long to reload...Sending TERM to $UNICORN_PID"
kill -s TERM $UNICORN_PID
fi
} }
function on_reopenlogs() function on_reopenlogs()