Commit 2b9d48ccd020a4ff62741118be94ab8d8f3b08b9

Authored by Jacob Vosmaer
1 parent 21e3d848

Fix the `service gitlab restart` command

This commit addresses two related issues:
- Sidekiq should shut down completely before we restart it;
- If we restart unicorn with USR2 we need to kill the old master and
  worker processes.
config/unicorn.rb.example
... ... @@ -64,19 +64,19 @@ before_fork do |server, worker|
64 64 # installations. It is not needed if your system can house
65 65 # twice as many worker_processes as you have configured.
66 66 #
67   - # # This allows a new master process to incrementally
68   - # # phase out the old master process with SIGTTOU to avoid a
69   - # # thundering herd (especially in the "preload_app false" case)
70   - # # when doing a transparent upgrade. The last worker spawned
71   - # # will then kill off the old master process with a SIGQUIT.
72   - # old_pid = "#{server.config[:pid]}.oldbin"
73   - # if old_pid != server.pid
74   - # begin
75   - # sig = (worker.nr + 1) >= server.worker_processes ? :QUIT : :TTOU
76   - # Process.kill(sig, File.read(old_pid).to_i)
77   - # rescue Errno::ENOENT, Errno::ESRCH
78   - # end
79   - # end
  67 + # This allows a new master process to incrementally
  68 + # phase out the old master process with SIGTTOU to avoid a
  69 + # thundering herd (especially in the "preload_app false" case)
  70 + # when doing a transparent upgrade. The last worker spawned
  71 + # will then kill off the old master process with a SIGQUIT.
  72 + old_pid = "#{server.config[:pid]}.oldbin"
  73 + if old_pid != server.pid
  74 + begin
  75 + sig = (worker.nr + 1) >= server.worker_processes ? :QUIT : :TTOU
  76 + Process.kill(sig, File.read(old_pid).to_i)
  77 + rescue Errno::ENOENT, Errno::ESRCH
  78 + end
  79 + end
80 80 #
81 81 # Throttle the master from forking too quickly by sleeping. Due
82 82 # to the implementation of standard Unix signal handlers, this
... ...
lib/support/init.d/gitlab
... ... @@ -81,7 +81,7 @@ restart() {
81 81 if [ "$PID" -ne 0 -a "$STATUS" -ne 0 ]; then
82 82 echo "Restarting $DESC..."
83 83 kill -USR2 `cat $WEB_SERVER_PID`
84   - execute "mkdir -p $PID_PATH && $STOP_SIDEKIQ > /dev/null 2>&1 &"
  84 + execute "mkdir -p $PID_PATH && $STOP_SIDEKIQ > /dev/null 2>&1"
85 85 if [ `whoami` = root ]; then
86 86 execute "mkdir -p $PID_PATH && $START_SIDEKIQ > /dev/null 2>&1 &"
87 87 fi
... ...