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,7 +22,6 @@ RAILS_ENV="production"
22 # /bin/sh variables such as PATH, EDITOR or SHELL. 22 # /bin/sh variables such as PATH, EDITOR or SHELL.
23 app_root="/home/git/gitlab" 23 app_root="/home/git/gitlab"
24 app_user="git" 24 app_user="git"
25 -unicorn_conf="$app_root/config/unicorn.rb"  
26 pid_path="$app_root/tmp/pids" 25 pid_path="$app_root/tmp/pids"
27 socket_path="$app_root/tmp/sockets" 26 socket_path="$app_root/tmp/sockets"
28 web_server_pid_path="$pid_path/unicorn.pid" 27 web_server_pid_path="$pid_path/unicorn.pid"
@@ -129,7 +128,7 @@ start() { @@ -129,7 +128,7 @@ start() {
129 # Remove old socket if it exists 128 # Remove old socket if it exists
130 rm -f "$socket_path"/gitlab.socket 2>/dev/null 129 rm -f "$socket_path"/gitlab.socket 2>/dev/null
131 # Start the webserver 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 fi 132 fi
134 133
135 # If sidekiq is already running, don't start it again. 134 # If sidekiq is already running, don't start it again.
@@ -137,7 +136,7 @@ start() { @@ -137,7 +136,7 @@ start() {
137 echo "The Sidekiq job dispatcher is already running with pid $spid, not restarting" 136 echo "The Sidekiq job dispatcher is already running with pid $spid, not restarting"
138 else 137 else
139 echo "Starting the GitLab Sidekiq event dispatcher..." 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 # We are sleeping a bit here because sidekiq is slow at writing it's pid 140 # We are sleeping a bit here because sidekiq is slow at writing it's pid
142 sleep 2 141 sleep 2
143 fi 142 fi
@@ -151,7 +150,7 @@ stop() { @@ -151,7 +150,7 @@ stop() {
151 exit_if_not_running 150 exit_if_not_running
152 # If the Unicorn web server is running, tell it to stop; 151 # If the Unicorn web server is running, tell it to stop;
153 if [ "$web_status" = "0" ]; then 152 if [ "$web_status" = "0" ]; then
154 - kill -QUIT "$wpid" 153 + RAILS_ENV=$RAILS_ENV script/web stop
155 echo "Stopping the GitLab Unicorn web server..." 154 echo "Stopping the GitLab Unicorn web server..."
156 stopping=true 155 stopping=true
157 else 156 else
@@ -160,7 +159,7 @@ stop() { @@ -160,7 +159,7 @@ stop() {
160 # And do the same thing for the Sidekiq. 159 # And do the same thing for the Sidekiq.
161 if [ "$sidekiq_status" = "0" ]; then 160 if [ "$sidekiq_status" = "0" ]; then
162 printf "Stopping Sidekiq job dispatcher." 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 stopping=true 163 stopping=true
165 else 164 else
166 echo "The Sidekiq was not running, must have run out of breath." 165 echo "The Sidekiq was not running, must have run out of breath."
@@ -215,10 +214,10 @@ reload(){ @@ -215,10 +214,10 @@ reload(){
215 exit 1 214 exit 1
216 fi 215 fi
217 printf "Reloading GitLab Unicorn configuration... " 216 printf "Reloading GitLab Unicorn configuration... "
218 - kill -USR2 "$wpid" 217 + RAILS_ENV=$RAILS_ENV script/web reload
219 echo "Done." 218 echo "Done."
220 echo "Restarting GitLab Sidekiq since it isn't capable of reloading its config..." 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 # Waiting 2 seconds for sidekiq to write it. 221 # Waiting 2 seconds for sidekiq to write it.
223 sleep 2 222 sleep 2
224 status 223 status
lib/tasks/sidekiq.rake
1 namespace :sidekiq do 1 namespace :sidekiq do
2 desc "GITLAB | Stop sidekiq" 2 desc "GITLAB | Stop sidekiq"
3 task :stop do 3 task :stop do
4 - system "bundle exec sidekiqctl stop #{pidfile}" 4 + system "script/background_jobs stop"
5 end 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 end 13 end
19 14
20 desc "GITLAB | Start sidekiq with launchd on Mac OS X" 15 desc "GITLAB | Start sidekiq with launchd on Mac OS X"
21 task :launchd do 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 end 18 end
32 end 19 end
script/background_jobs 0 → 100755
@@ -0,0 +1,56 @@ @@ -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 @@ @@ -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