summaryrefslogtreecommitdiff
path: root/script/background_jobs
diff options
context:
space:
mode:
Diffstat (limited to 'script/background_jobs')
-rwxr-xr-xscript/background_jobs26
1 files changed, 25 insertions, 1 deletions
diff --git a/script/background_jobs b/script/background_jobs
index 06125c11ffe..52732f5532b 100755
--- a/script/background_jobs
+++ b/script/background_jobs
@@ -6,6 +6,11 @@ sidekiq_pidfile="$app_root/tmp/pids/sidekiq.pid"
sidekiq_logfile="$app_root/log/sidekiq.log"
gitlab_user=$(ls -l config.ru | awk '{print $3}')
+function warn
+{
+ echo "$@" 1>&2
+}
+
function stop
{
bundle exec sidekiqctl stop $sidekiq_pidfile >> $sidekiq_logfile 2>&1
@@ -35,6 +40,22 @@ function start_sidekiq
bundle exec sidekiq -q post_receive,mailer,system_hook,project_web_hook,gitlab_shell,common,default -e $RAILS_ENV -P $sidekiq_pidfile $@ >> $sidekiq_logfile 2>&1
}
+function load_ok
+{
+ sidekiq_pid=$(cat $sidekiq_pidfile)
+ if [[ -z $sidekiq_pid ]] ; then
+ warn "Could not find a PID in $sidekiq_pidfile"
+ exit 0
+ fi
+
+ if (ps -p $sidekiq_pid -o args | grep '\([0-9]\+\) of \1 busy' 1>&2) ; then
+ warn "Too many busy Sidekiq workers"
+ exit 1
+ fi
+
+ exit 0
+}
+
case "$1" in
stop)
stop
@@ -51,6 +72,9 @@ case "$1" in
killall)
killall
;;
+ load_ok)
+ load_ok
+ ;;
*)
- echo "Usage: RAILS_ENV=your_env $0 {stop|start|start_no_deamonize|restart|killall}"
+ echo "Usage: RAILS_ENV=your_env $0 {stop|start|start_no_deamonize|restart|killall|load_ok}"
esac