diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-03-17 18:09:44 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-03-17 18:09:44 +0000 |
commit | 2c156e3c7bbade01c36eee18327f1ced6eebea79 (patch) | |
tree | 115fa8dbf6bc05037378b380311d31acb805f54c /bin | |
parent | 8e129497b2565b8c595ef4f806d9a9595ca654e5 (diff) | |
download | gitlab-ce-2c156e3c7bbade01c36eee18327f1ced6eebea79.tar.gz |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'bin')
-rwxr-xr-x | bin/background_jobs | 92 | ||||
-rwxr-xr-x | bin/background_jobs_sk | 67 | ||||
-rwxr-xr-x | bin/background_jobs_sk_cluster | 76 |
3 files changed, 148 insertions, 87 deletions
diff --git a/bin/background_jobs b/bin/background_jobs index 06f26df5409..b3d7cc04d4f 100755 --- a/bin/background_jobs +++ b/bin/background_jobs @@ -1,91 +1,9 @@ #!/bin/sh cd $(dirname $0)/.. -app_root=$(pwd) -sidekiq_pidfile="$app_root/tmp/pids/sidekiq.pid" -sidekiq_logfile="$app_root/log/sidekiq.log" -sidekiq_config="$app_root/config/sidekiq_queues.yml" -gitlab_user=$(ls -l config.ru | awk '{print $3}') -warn() -{ - echo "$@" 1>&2 -} - -stop() -{ - bundle exec sidekiqctl stop $sidekiq_pidfile >> $sidekiq_logfile 2>&1 -} - -killall() -{ - pkill -u $gitlab_user -f 'sidekiq [0-9]' -} - -restart() -{ - if [ -f $sidekiq_pidfile ]; then - stop - fi - killall - start_sidekiq -P $sidekiq_pidfile -d -L $sidekiq_logfile >> $sidekiq_logfile 2>&1 -} - -start_no_deamonize() -{ - start_sidekiq >> $sidekiq_logfile 2>&1 -} - -start_sidekiq() -{ - cmd="exec" - chpst=$(which chpst) - - if [ -n "$chpst" ]; then - cmd="${cmd} ${chpst} -P" - fi - - ${cmd} bundle exec sidekiq -C "${sidekiq_config}" -e $RAILS_ENV "$@" -} - -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 - ;; - start) - restart - ;; - start_no_deamonize) - start_no_deamonize - ;; - start_foreground) - start_sidekiq - ;; - restart) - restart - ;; - killall) - killall - ;; - load_ok) - load_ok - ;; - *) - echo "Usage: RAILS_ENV=your_env $0 {stop|start|start_no_deamonize|restart|killall|load_ok}" -esac +if [ -n "$SIDEKIQ_WORKERS" ] ; then + exec bin/background_jobs_sk_cluster "$@" +else + exec bin/background_jobs_sk "$@" +fi diff --git a/bin/background_jobs_sk b/bin/background_jobs_sk new file mode 100755 index 00000000000..25218718bb8 --- /dev/null +++ b/bin/background_jobs_sk @@ -0,0 +1,67 @@ +#!/bin/sh + +cd $(dirname $0)/.. +app_root=$(pwd) +sidekiq_pidfile="$app_root/tmp/pids/sidekiq.pid" +sidekiq_logfile="$app_root/log/sidekiq.log" +sidekiq_config="$app_root/config/sidekiq_queues.yml" +gitlab_user=$(ls -l config.ru | awk '{print $3}') + +warn() +{ + echo "$@" 1>&2 +} + +stop() +{ + bundle exec sidekiqctl stop $sidekiq_pidfile >> $sidekiq_logfile 2>&1 +} + +restart() +{ + if [ -f $sidekiq_pidfile ]; then + stop + fi + + pkill -u $gitlab_user -f 'sidekiq [0-9]' + start_sidekiq -P $sidekiq_pidfile -d -L $sidekiq_logfile >> $sidekiq_logfile 2>&1 +} + +# Starts on foreground but output to the logfile instead stdout. +start_silent() +{ + start_sidekiq >> $sidekiq_logfile 2>&1 +} + +start_sidekiq() +{ + cmd="exec" + chpst=$(which chpst) + + if [ -n "$chpst" ]; then + cmd="${cmd} ${chpst} -P" + fi + + ${cmd} bundle exec sidekiq -C "${sidekiq_config}" -e $RAILS_ENV "$@" +} + +case "$1" in + stop) + stop + ;; + start) + restart + ;; + start_silent) + warn "Deprecated: Will be removed at 13.0 (see https://gitlab.com/gitlab-org/gitlab/-/issues/196731)." + start_silent + ;; + start_foreground) + start_sidekiq + ;; + restart) + restart + ;; + *) + echo "Usage: RAILS_ENV=<env> $0 {stop|start|start_silent|start_foreground|restart}" +esac diff --git a/bin/background_jobs_sk_cluster b/bin/background_jobs_sk_cluster new file mode 100755 index 00000000000..9f44bb7381f --- /dev/null +++ b/bin/background_jobs_sk_cluster @@ -0,0 +1,76 @@ +#!/bin/sh + +cd $(dirname $0)/.. +app_root=$(pwd) +sidekiq_pidfile="$app_root/tmp/pids/sidekiq-cluster.pid" +sidekiq_logfile="$app_root/log/sidekiq.log" +gitlab_user=$(ls -l config.ru | awk '{print $3}') + +warn() +{ + echo "$@" 1>&2 +} + +get_sidekiq_pid() +{ + if [ ! -f $sidekiq_pidfile ]; then + warn "No pidfile found at $sidekiq_pidfile; is Sidekiq running?" + return + fi + + cat $sidekiq_pidfile +} + +stop() +{ + sidekiq_pid=$(get_sidekiq_pid) + + if [ $sidekiq_pid ]; then + kill -TERM $sidekiq_pid + fi +} + +restart() +{ + if [ -f $sidekiq_pidfile ]; then + stop + fi + + warn "Sidekiq output will be written to $sidekiq_logfile" + start_sidekiq >> $sidekiq_logfile 2>&1 +} + +start_sidekiq() +{ + cmd="exec" + chpst=$(which chpst) + + if [ -n "$chpst" ]; then + cmd="${cmd} ${chpst} -P" + fi + + # sidekiq-cluster expects '*' '*' arguments (one wildcard for each process). + for (( i=1; i<=$SIDEKIQ_WORKERS; i++ )) + do + processes_args+=("*") + done + + ${cmd} bin/sidekiq-cluster "${processes_args[@]}" -P $sidekiq_pidfile -e $RAILS_ENV +} + +case "$1" in + stop) + stop + ;; + start) + restart & + ;; + start_foreground) + start_sidekiq + ;; + restart) + restart & + ;; + *) + echo "Usage: RAILS_ENV=<env> SIDEKIQ_WORKERS=<n> $0 {stop|start|start_foreground|restart}" +esac |