Commit 2c0f4c766458b15771b6a7b64760c9cb37b8ccfe

Authored by Dmitriy Zaporozhets
2 parents 8f4fdd94 6a7d63aa

Merge branch 'unicorn_rake_tasks' of /home/git/repositories/gitlab/gitlabhq

lib/support/init.d/gitlab
... ... @@ -22,7 +22,6 @@ RAILS_ENV="production"
22 22 # /bin/sh variables such as PATH, EDITOR or SHELL.
23 23 app_root="/home/git/gitlab"
24 24 app_user="git"
25   -unicorn_conf="$app_root/config/unicorn.rb"
26 25 pid_path="$app_root/tmp/pids"
27 26 socket_path="$app_root/tmp/sockets"
28 27 web_server_pid_path="$pid_path/unicorn.pid"
... ... @@ -129,7 +128,7 @@ start() {
129 128 # Remove old socket if it exists
130 129 rm -f "$socket_path"/gitlab.socket 2>/dev/null
131 130 # Start the webserver
132   - bundle exec unicorn_rails -D -c "$unicorn_conf" -E "$RAILS_ENV"
  131 + RAILS_ENV=$RAILS_ENV script/web start
133 132 fi
134 133  
135 134 # If sidekiq is already running, don't start it again.
... ... @@ -137,7 +136,7 @@ start() {
137 136 echo "The Sidekiq job dispatcher is already running with pid $spid, not restarting"
138 137 else
139 138 echo "Starting the GitLab Sidekiq event dispatcher..."
140   - RAILS_ENV=$RAILS_ENV bundle exec rake sidekiq:start
  139 + RAILS_ENV=$RAILS_ENV script/background_jobs start
141 140 # We are sleeping a bit here because sidekiq is slow at writing it's pid
142 141 sleep 2
143 142 fi
... ... @@ -151,7 +150,7 @@ stop() {
151 150 exit_if_not_running
152 151 # If the Unicorn web server is running, tell it to stop;
153 152 if [ "$web_status" = "0" ]; then
154   - kill -QUIT "$wpid"
  153 + RAILS_ENV=$RAILS_ENV script/web stop
155 154 echo "Stopping the GitLab Unicorn web server..."
156 155 stopping=true
157 156 else
... ... @@ -160,7 +159,7 @@ stop() {
160 159 # And do the same thing for the Sidekiq.
161 160 if [ "$sidekiq_status" = "0" ]; then
162 161 printf "Stopping Sidekiq job dispatcher."
163   - RAILS_ENV=$RAILS_ENV bundle exec rake sidekiq:stop
  162 + RAILS_ENV=$RAILS_ENV script/background_jobs stop
164 163 stopping=true
165 164 else
166 165 echo "The Sidekiq was not running, must have run out of breath."
... ... @@ -215,10 +214,10 @@ reload(){
215 214 exit 1
216 215 fi
217 216 printf "Reloading GitLab Unicorn configuration... "
218   - kill -USR2 "$wpid"
  217 + RAILS_ENV=$RAILS_ENV script/web reload
219 218 echo "Done."
220 219 echo "Restarting GitLab Sidekiq since it isn't capable of reloading its config..."
221   - RAILS_ENV=$RAILS_ENV bundle exec rake sidekiq:restart
  220 + RAILS_ENV=$RAILS_ENV script/background_jobs restart
222 221 # Waiting 2 seconds for sidekiq to write it.
223 222 sleep 2
224 223 status
... ...
lib/tasks/sidekiq.rake
1 1 namespace :sidekiq do
2 2 desc "GITLAB | Stop sidekiq"
3 3 task :stop do
4   - system "bundle exec sidekiqctl stop #{pidfile}"
  4 + system "script/background_jobs stop"
5 5 end
6 6  
7   - desc "GITLAB | Start sidekiq"
8   - task :start => :restart
  7 + desc "GITLAB | Start sidekiq" do
  8 + system "script/background_jobs start"
  9 + end
9 10  
10   - desc 'GitLab | Restart sidekiq'
11   - task :restart do
12   - if File.exist?(pidfile)
13   - puts 'Shutting down existing sidekiq process.'
14   - Rake::Task['sidekiq:stop'].invoke
15   - puts 'Starting new sidekiq process.'
16   - end
17   - system "bundle exec sidekiq -q post_receive,mailer,system_hook,project_web_hook,gitlab_shell,common,default -e #{Rails.env} -P #{pidfile} -d -L #{log_file} >> #{log_file} 2>&1"
  11 + desc 'GitLab | Restart sidekiq' do
  12 + system "script/background_jobs restart"
18 13 end
19 14  
20 15 desc "GITLAB | Start sidekiq with launchd on Mac OS X"
21 16 task :launchd do
22   - system "bundle exec sidekiq -q post_receive,mailer,system_hook,project_web_hook,gitlab_shell,common,default -e #{Rails.env} -P #{pidfile} >> #{log_file} 2>&1"
23   - end
24   -
25   - def pidfile
26   - Rails.root.join("tmp", "pids", "sidekiq.pid")
27   - end
28   -
29   - def log_file
30   - Rails.root.join("log", "sidekiq.log")
  17 + system "script/background_jobs start_no_deamonize"
31 18 end
32 19 end
... ...
script/background_jobs 0 → 100755
... ... @@ -0,0 +1,56 @@
  1 +#!/bin/bash
  2 +
  3 +cd $(dirname $0)/..
  4 +app_root=$(pwd)
  5 +sidekiq_pidfile="$app_root/tmp/pids/sidekiq.pid"
  6 +sidekiq_logfile="$app_root/log/sidekiq.log"
  7 +gitlab_user=$(ls -l config.ru | awk '{print $3}')
  8 +
  9 +function stop
  10 +{
  11 + bundle exec sidekiqctl stop $sidekiq_pidfile &>> $sidekiq_logfile
  12 +}
  13 +
  14 +function killall
  15 +{
  16 + pkill -u $gitlab_user -f sidekiq
  17 +}
  18 +
  19 +function restart
  20 +{
  21 + if [ -f $sidekiq_pidfile ]; then
  22 + stop
  23 + fi
  24 + killall
  25 + start_sidekiq -d -L $sidekiq_logfile
  26 +}
  27 +
  28 +function start_no_deamonize
  29 +{
  30 + start_sidekiq
  31 +}
  32 +
  33 +function start_sidekiq
  34 +{
  35 + bundle exec sidekiq -q post_receive,mailer,system_hook,project_web_hook,gitlab_shell,common,default -e $RAILS_ENV -P $sidekiq_pidfile $@ &>> $sidekiq_logfile
  36 +}
  37 +
  38 +case "$1" in
  39 + stop)
  40 + stop
  41 + ;;
  42 + start)
  43 + restart
  44 + ;;
  45 + start_no_deamonize)
  46 + start_no_deamonize
  47 + ;;
  48 + restart)
  49 + restart
  50 + ;;
  51 + killall)
  52 + killall
  53 + ;;
  54 + *)
  55 + echo "Usage: RAILS_ENV=your_env $0 {stop|start|start_no_deamonize|restart|killall}"
  56 +esac
... ...
script/web 0 → 100755
... ... @@ -0,0 +1,49 @@
  1 +#!/bin/bash
  2 +
  3 +cd $(dirname $0)/..
  4 +app_root=$(pwd)
  5 +
  6 +unicorn_pidfile="$app_root/tmp/pids/unicorn.pid"
  7 +unicorn_config="$app_root/config/unicorn.rb"
  8 +
  9 +function get_unicorn_pid
  10 +{
  11 + local pid=$(cat $unicorn_pidfile)
  12 + if [ -z $pid ] ; then
  13 + echo "Could not find a PID in $unicorn_pidfile"
  14 + exit 1
  15 + fi
  16 + unicorn_pid=$pid
  17 +}
  18 +
  19 +function start
  20 +{
  21 + bundle exec unicorn_rails -D -c $unicorn_config -E $RAILS_ENV
  22 +}
  23 +
  24 +function stop
  25 +{
  26 + get_unicorn_pid
  27 + kill -QUIT $unicorn_pid
  28 +}
  29 +
  30 +function reload
  31 +{
  32 + get_unicorn_pid
  33 + kill -USR2 $unicorn_pid
  34 +}
  35 +
  36 +case "$1" in
  37 + start)
  38 + start
  39 + ;;
  40 + stop)
  41 + stop
  42 + ;;
  43 + reload)
  44 + reload
  45 + ;;
  46 + *)
  47 + echo "Usage: RAILS_ENV=your_env $0 {start|stop|reload}"
  48 + ;;
  49 +esac
... ...