summaryrefslogtreecommitdiff
path: root/bin
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2020-03-17 18:09:44 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2020-03-17 18:09:44 +0000
commit2c156e3c7bbade01c36eee18327f1ced6eebea79 (patch)
tree115fa8dbf6bc05037378b380311d31acb805f54c /bin
parent8e129497b2565b8c595ef4f806d9a9595ca654e5 (diff)
downloadgitlab-ce-2c156e3c7bbade01c36eee18327f1ced6eebea79.tar.gz
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'bin')
-rwxr-xr-xbin/background_jobs92
-rwxr-xr-xbin/background_jobs_sk67
-rwxr-xr-xbin/background_jobs_sk_cluster76
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