77 lines
2.2 KiB
Text
77 lines
2.2 KiB
Text
|
#!/sbin/openrc-run
|
||
|
|
||
|
extra_started_commands="finish"
|
||
|
|
||
|
name="GitLab Sidekiq"
|
||
|
description="GitLab backgroud workers"
|
||
|
description_finish="Stop fetching new jobs and finish current ones"
|
||
|
|
||
|
: ${gitlab_base:="/usr/lib/bundles/gitlab"}
|
||
|
: ${metrics_dir:="/dev/shm/gitlab"}
|
||
|
|
||
|
: ${sidekiq_logfile:="/var/log/gitlab/sidekiq.log"}
|
||
|
: ${sidekiq_memkiller_max_rss:="2000"} # default per Omnibus
|
||
|
: ${sidekiq_metrics_dir:="$metrics_dir/sidekiq"}
|
||
|
: ${sidekiq_negate:="no"}
|
||
|
: ${sidekiq_queue_groups:="*"}
|
||
|
: ${sidekiq_queue_selector:="no"}
|
||
|
|
||
|
command="$gitlab_base/bin/sidekiq-cluster"
|
||
|
# Note: The rest of the options is set in start_pre().
|
||
|
command_args="-r $gitlab_base -e production ${command_args:-}"
|
||
|
command_background="yes"
|
||
|
command_user="git"
|
||
|
|
||
|
directory="$gitlab_base"
|
||
|
error_log="$sidekiq_logfile"
|
||
|
output_log="$sidekiq_logfile"
|
||
|
|
||
|
supervise_daemon_args="
|
||
|
--env RAILS_ENV=production
|
||
|
--env NODE_ENV=production
|
||
|
--env EXECJS_RUNTIME=Disabled
|
||
|
--env TZ=:/etc/localtime
|
||
|
--env SIDEKIQ_MEMORY_KILLER_MAX_RSS=$(( sidekiq_memkiller_max_rss * 1024 ))
|
||
|
--env prometheus_multiproc_dir=$sidekiq_metrics_dir
|
||
|
"
|
||
|
start_stop_daemon_args="--interpreted $supervise_daemon_args"
|
||
|
pidfile="/run/gitlab/sidekiq.pid"
|
||
|
|
||
|
depend() {
|
||
|
need redis
|
||
|
use net postgresql
|
||
|
}
|
||
|
|
||
|
start_pre() {
|
||
|
yesno "$sidekiq_queue_selector" && command_args="$command_args --queue-selector"
|
||
|
|
||
|
command_args="$command_args
|
||
|
$(optif --max-concurrency ${sidekiq_max_concurrency:-})
|
||
|
$(optif --min-concurrency ${sidekiq_min_concurrency:-})
|
||
|
$(optif --interval ${sidekiq_interval:-})
|
||
|
$(optif --timeout ${sidekiq_shutdown_timeout:-})
|
||
|
$(set -f; printf "'%s' " $sidekiq_queue_groups)
|
||
|
"
|
||
|
yesno "$sidekiq_negate" && command_args="$command_args --negate"
|
||
|
|
||
|
checkpath -d -m 755 -o $command_user -q "${pidfile%/*}" || return 1
|
||
|
checkpath -d -m 700 -o $command_user -q "$metrics_dir" || return 1
|
||
|
checkpath -d -m 700 -o $command_user --directory-truncate "$sidekiq_metrics_dir" || return 1
|
||
|
checkpath -f -m 644 -o $command_user "$sidekiq_logfile"
|
||
|
}
|
||
|
|
||
|
finish() {
|
||
|
ebegin "Telling $name to stop fetching new jobs"
|
||
|
|
||
|
if [ "$supervisor" ]; then
|
||
|
$supervisor "$RC_SVCNAME" --signal TSTP
|
||
|
else
|
||
|
start-stop-daemon --pidfile "$pidfile" --signal TSTP
|
||
|
fi
|
||
|
eend $?
|
||
|
}
|
||
|
|
||
|
optif() {
|
||
|
test -n "$2" && printf '%s/n' "$1=$2" || true
|
||
|
}
|