BigW Consortium Gitlab

background_jobs 1.42 KB
Newer Older
Pavel Novitskiy committed
1
#!/bin/sh
2 3 4 5 6 7 8

cd $(dirname $0)/..
app_root=$(pwd)
sidekiq_pidfile="$app_root/tmp/pids/sidekiq.pid"
sidekiq_logfile="$app_root/log/sidekiq.log"
gitlab_user=$(ls -l config.ru | awk '{print $3}')

Pavel Novitskiy committed
9
warn()
10 11 12 13
{
  echo "$@" 1>&2
}

Pavel Novitskiy committed
14
stop()
15
{
16
  bundle exec sidekiqctl stop $sidekiq_pidfile >> $sidekiq_logfile 2>&1
17 18
}

Pavel Novitskiy committed
19
killall()
20
{
21
  pkill -u $gitlab_user -f 'sidekiq [0-9]'
22 23
}

Pavel Novitskiy committed
24
restart()
25 26 27 28 29
{
  if [ -f $sidekiq_pidfile ]; then
    stop
  fi
  killall
30
  start_sidekiq -d -L $sidekiq_logfile >> $sidekiq_logfile 2>&1
31 32
}

Pavel Novitskiy committed
33
start_no_deamonize()
34
{
Jacob Vosmaer committed
35
  start_sidekiq >> $sidekiq_logfile 2>&1
36 37
}

Pavel Novitskiy committed
38
start_sidekiq()
39
{
40
  exec bundle exec sidekiq -q post_receive -q mailers -q archive_repo -q system_hook -q project_web_hook -q gitlab_shell -q incoming_email -q runner -q common -q default -e $RAILS_ENV -P $sidekiq_pidfile "$@"
41 42
}

Pavel Novitskiy committed
43
load_ok()
44 45
{
  sidekiq_pid=$(cat $sidekiq_pidfile)
46
  if [ -z "$sidekiq_pid" ] ; then
47 48 49 50 51 52 53 54 55 56 57 58
    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
}

59 60 61 62 63 64 65 66 67 68
case "$1" in
  stop)
    stop
    ;;
  start)
    restart
    ;;
  start_no_deamonize)
    start_no_deamonize
    ;;
Jacob Vosmaer committed
69 70 71
  start_foreground)
    start_sidekiq
    ;;
72 73 74 75 76 77
  restart)
    restart
    ;;
  killall)
    killall
    ;;
78 79 80
  load_ok)
    load_ok
    ;;
81
  *)
82
    echo "Usage: RAILS_ENV=your_env $0 {stop|start|start_no_deamonize|restart|killall|load_ok}"
83
esac