eycloud-recipe-resque 1.0.2 → 1.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/.DS_Store ADDED
Binary file
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- eycloud-recipe-resque (1.0.2)
4
+ eycloud-recipe-resque (1.0.3)
5
5
  eycloud-helper-cronjobs
6
6
 
7
7
  GEM
@@ -1,7 +1,7 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
  $:.push File.expand_path("../lib", __FILE__)
3
3
 
4
- version = "1.0.2" # get from metadata.json or .rb
4
+ version = "1.0.3" # get from metadata.json or .rb
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "eycloud-recipe-resque"
@@ -0,0 +1,257 @@
1
+ #!/bin/sh
2
+ #
3
+ # This script starts and stops the Resque daemon
4
+ # This script belongs in /engineyard/bin/resque
5
+ #
6
+
7
+ PATH=/bin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:$PATH
8
+ CURDIR=`pwd`
9
+
10
+ usage() {
11
+ echo "Usage: $0 <appname> {start|stop|term|quit|pause|cont|abort} <environment> <conf_file>"
12
+ echo -e "\nstop) is a synonym for quit"
13
+ echo "quit) issues -QUIT to request the worker to stop"
14
+ echo "term) issues -TERM to request the worker to stop"
15
+ echo "pause) issues -USR2 when the current job finishes, worker remains running, but doesn't start any new jobs"
16
+ echo "cont) issues -CONT to continue after pausing"
17
+ echo "abort) issues -USR1 kills current job, or shuts down if there is no job"
18
+ echo "see http://github.com/defunkt/resque for more details"
19
+ echo -e "\nSet the GRACE_TIME env variable to configure how long we should wait for after issuing quit, before asumming a problem and killing the worker and job"
20
+ exit 1
21
+ }
22
+
23
+ rm_lockfile(){
24
+ if [ -e $LOCK_FILE ]; then
25
+ logger -t "monit-resque[$$]" "removing $LOCK_FILE for `cat $LOCK_FILE`"
26
+ rm $LOCK_FILE
27
+ fi
28
+ }
29
+
30
+ exit_cleanly() {
31
+ cd $CURDIR
32
+ logger -t "monit-resque[$$]" "exiting wrapper cleanly with $RESULT"
33
+ exit $RESULT
34
+ }
35
+
36
+ unlock_and_exit_cleanly(){
37
+ rm_lockfile
38
+ exit_cleanly
39
+ }
40
+
41
+ set_pid_from_file(){
42
+ export PID=`cat $PID_FILE`
43
+ }
44
+
45
+ signal_worker() {
46
+ RESULT=0
47
+ if [ -f $PID_FILE ]; then
48
+ set_pid_from_file
49
+ logger -t "monit-resque[$$]" "Issuing kill with -$SIG $PID"
50
+ SLEEP_COUNT=0
51
+ kill -$SIG $PID
52
+ fi
53
+ }
54
+
55
+ signal_worker_fatally(){
56
+ signal_worker()
57
+ if [ -f $PID_FILE ]; then
58
+ if [ -n "$ALLOW_TIMEOUT" ]; then
59
+ while [ -e /proc/$PID ]; do
60
+ sleep .25
61
+ let "SLEEP_COUNT+=1"
62
+ let "REPORT_TIME = $SLEEP_COUNT%4"
63
+ if(( "$SLEEP_COUNT" > $GRACE_TIME )); then
64
+ logger -t "monit-resque[$$]" "Resque worker with pid $PID for $WORKER_REF still running, issuing -TERM"
65
+ kill -15 $PID 2>/dev/null; true
66
+ elif(( $REPORT_TIME == 0 )); then
67
+ let "RUNTIME = $SLEEP_COUNT/4"
68
+ logger -t "monit-resque[$$]" "waiting for $PID to die ( for $RUNTIME seconds now)"
69
+ fi
70
+ done
71
+ fi
72
+ sleep 1
73
+ if [ -d /proc/$PID ];then
74
+ for child in $(ps axo pid,ppid | awk "{ if ( \$2 == $PID ) { print \$1 }}");
75
+ do
76
+ kill -9 $child 2>/dev/null; true
77
+ logger -t "monit-resque[$$]" "Murdering Resque workers child with $child for $WORKER_REF"
78
+ break
79
+ done
80
+ while [ -d /proc/$PID ]; do
81
+ logger -t "monit-resque[$$]" "Murdering Resque worker with $PID for $WORKER_REF"
82
+ kill -9 $PID
83
+ sleep 1
84
+ done
85
+ fi
86
+ logger -t "monit-resque[$$]" "Removing pid file for $PID - $WORKER_REF"
87
+ [ -e "$PID_FILE" -a ! -d /proc/$PID ] && rm -f $PID_FILE
88
+ fi
89
+ }
90
+
91
+ lock(){
92
+ RESULT=0
93
+ if [ -e $LOCK_FILE ]; then
94
+ LAST_LOCK_PID=`cat $LOCK_FILE`
95
+ if [ -n $LAST_LOCK_PID -a -z "`ps axo pid|grep $LAST_LOCK_PID`" -a -f $LOCK_FILE ];then
96
+ sleep 1
97
+ logger -t "monit-resque[$$]" "Removing stale lock file for $WORKER_REF ($LAST_LOCK_PID)"
98
+ rm $LOCK_FILE 2>&1
99
+ else
100
+ logger -t "monit-resque[$$]" "Monit already messing with $WORKER_REF ($LAST_LOCK_PID)"
101
+ RESULT=1
102
+ exit_cleanly
103
+ fi
104
+ fi
105
+ echo $$ > $LOCK_FILE
106
+ }
107
+
108
+ legacy_fix() {
109
+ #In the transition from 0.18.2 to 0.18.3 of ey monit scripts the way
110
+ #the pid file is used to find the process to kill has changed.
111
+ #To avert problems being left behind after an upgrade of this package,
112
+ if [ -f $PID_FILE ]; then
113
+ set_pid_from_file
114
+ if [ -n "`ps axo pid,command|grep $PID|grep 'su -c'`" ];then
115
+ logger -t "monit-resque[$$]" "Monit Scripts have just been upgraded, killing old style workers"
116
+ for child in $(ps axo pid,ppid| awk "{ if ( \$2 == $PID ) { print \$1 }}");
117
+ do
118
+ kill -TERM $child 2> /dev/null
119
+ while [ -e /proc/$child ]; do
120
+ logger -t "monit-resque[$$]" "killing legacy worker: $child"
121
+ [ -e /proc/$child ] && kill -9 $child 2> /dev/null
122
+ sleep 1
123
+ done
124
+ done
125
+ [ -e /proc/$PID ] && kill -9 $PID 2> /dev/null
126
+ rm $PID_FILE
127
+ unlock_exit_cleanly
128
+ fi
129
+ fi
130
+ }
131
+
132
+ if [ $# -lt 4 ]; then usage; fi
133
+
134
+ if [ "`whoami`" != "root" ]; then
135
+ logger -t `basename $0` -s "Must be run as root"
136
+ exit 1
137
+ fi
138
+
139
+ #Baisc Setup of default values
140
+ APP=$1 ; ACTION=$2; RACK_ENV=$3; CONF_FILE=$4;
141
+
142
+ APP_DIR="/data/${APP}"
143
+ APP_ROOT="${APP_DIR}/current"
144
+ APP_SHARED="${APP_DIR}/shared"
145
+ APP_CONFIG="${APP_SHARED}/config"
146
+
147
+ if [ -e "${APP_CONFIG}/${CONF_FILE}" ]; then
148
+ source "${APP_CONFIG}/${CONF_FILE}"
149
+ if [ -z "$QUEUE" ]; then
150
+ logger -t "resque_${APP}" -s "QUEUE not defined in ${CONF_FILE} not found for app: ${APP}"
151
+ exit 1
152
+ fi
153
+ else
154
+ logger -t "resque_${APP}" -s "/data/${APP}/shared/config/${CONF_FILE} not found for app: ${APP}"
155
+ exit 1
156
+ fi
157
+
158
+ WORKER_REF=`echo $CONF_FILE | sed s/.conf//`
159
+ LOG_FILE="$APP_ROOT/log/$WORKER_REF.log"
160
+ LOCK_FILE="/tmp/$WORKER_REF.monit-lock"
161
+ PID_FILE="/var/run/engineyard/resque/$APP/$WORKER_REF.pid"
162
+ GEMFILE="$APP_ROOT/Gemfile"
163
+ RAKE="rake"
164
+ if [ -f $GEMFILE ];then
165
+ RAKE="bundle exec $APP_ROOT/ey_bundler_binstubs/rake"
166
+ fi
167
+
168
+ if [ -d $APP_ROOT ]; then
169
+ USER=$(stat -L -c"%U" $APP_ROOT)
170
+ export HOME="/home/$USER"
171
+
172
+ # Fix for SD-3786 - stop sending in VERBOSE= and VVERBOSE= by default
173
+ if declare -p VERBOSE >/dev/null 2>&1; then export V="VERBOSE=$VERBOSE"; fi
174
+ if declare -p VVERBOSE >/dev/null 2>&1; then export VV="VVERBOSE=$VVERBOSE"; fi
175
+
176
+ # Older versions of sudo need us to call env for the env vars to be set correctly
177
+ COMMAND="/usr/bin/env $V $VV APP_ROOT=${APP_ROOT} RACK_ENV=${RACK_ENV} RAILS_ENV=${RACK_ENV} MERB_ENV=${RACK_ENV} QUEUE=${QUEUE} $RAKE -f ${APP_ROOT}/Rakefile resque:work"
178
+
179
+ if [ ! -d /var/run/engineyard/resque/$APP ]; then
180
+ mkdir -p /var/run/engineyard/resque/$APP
181
+ fi
182
+
183
+ # handle the second param, don't start if already existing
184
+
185
+ logger -t "monit-resque[$$]" "${ACTION}ing Resque worker $WORKER_REF"
186
+ case "$ACTION" in
187
+ start)
188
+ lock
189
+ cd $APP_ROOT
190
+ if [ -f $PID_FILE ]; then
191
+ set_pid_from_file
192
+ if [ -d /proc/$PID ]; then
193
+ logger -t "monit-resque[$$]" "Resque worker $WORKER_REF is already running with $PID."
194
+ RESULT=1
195
+ else
196
+ rm -f $PID_FILE
197
+ logger -t "monit-resque[$$]" "Removing stale pid file ($PID_FILE) for pid $PID"
198
+ fi
199
+ fi
200
+ if [ ! -f $PID_FILE ]; then
201
+ sudo -u $USER -H $COMMAND >> $LOG_FILE 2>&1 &
202
+ RESULT=$?
203
+ logger -t "monit-resque[$$]" "Started with pid $! and exit $RESULT"
204
+ echo $! > $PID_FILE
205
+ sleep .1
206
+ fi
207
+ unlock_and_exit_cleanly
208
+ ;;
209
+ stop|quit)
210
+ legacy_fix
211
+ lock
212
+ SIG="QUIT"
213
+ [ -z "$GRACE_TIME" ] && GRACE_TIME=60
214
+ ALLOW_TIMEOUT=1
215
+ signal_worker
216
+ [ -e "$LOCK_FILE" ] && rm $LOCK_FILE
217
+ unlock_and_exit_cleanly
218
+ ;;
219
+ kill|term)
220
+ lock
221
+ legacy_fix
222
+ ALLOW_TIMEOUT=
223
+ SIG="TERM"
224
+ signal_worker_fatally
225
+ unlock_and_exit_cleanly
226
+ ;;
227
+ pause)
228
+ lock
229
+ ALLOW_TIMEOUT=
230
+ SIG="USR2"
231
+ signal_worker
232
+ unlock_and_exit_cleanly
233
+ ;;
234
+ cont)
235
+ lock
236
+ ALLOW_TIMEOUT=
237
+ SIG="CONT"
238
+ signal_worker
239
+ unlock_and_exit_cleanly
240
+ ;;
241
+ abort)
242
+ lock
243
+ ALLOW_TIMEOUT=
244
+ SIG="USR1"
245
+ signal_worker
246
+ unlock_and_exit_cleanly
247
+ ;;
248
+ *)
249
+ usage
250
+ exit_cleanly
251
+ ;;
252
+ esac
253
+ else
254
+ echo "/data/$APP/current doesn't exist."
255
+ usage
256
+ fi
257
+
@@ -0,0 +1,68 @@
1
+ #!/bin/sh
2
+ #
3
+ # This script starts and stops the Resque Web front end
4
+ # This script belongs in /engineyard/bin/resque-web
5
+ #
6
+ PATH=/bin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:$PATH
7
+
8
+ usage() {
9
+ echo "Usage: $0 <appname> {start|stop}"
10
+ exit 1
11
+ }
12
+
13
+ if [ $# -lt 2 ]; then usage; fi
14
+
15
+ if [ "`whoami`" != "root" ]; then
16
+ logger -t `basename $0` -s "Must be run as root"
17
+ exit 1
18
+ fi
19
+
20
+ USER=`stat -c"%U" /data/$1/current`
21
+ HOME="/home/$USER" ; export HOME
22
+ APP=$1
23
+ APP_DIR="/data/${APP}"
24
+ APP_ROOT="${APP_DIR}/current"
25
+ APP_SHARED="${APP_DIR}/shared"
26
+ APP_CONFIG="${APP_SHARED}/config"
27
+
28
+ GEMFILE="$APP_ROOT/Gemfile"
29
+ BUNDLER=""
30
+ if [ -f $GEMFILE ];then
31
+ BUNDLER="bundle exec"
32
+ fi
33
+
34
+ COMMAND="$BUNDLER resque-web -p 8282"
35
+ PID_FILE="/var/run/engineyard/resque/$1/resque-web.pid"
36
+
37
+ #mkdir -p /var/run/engineyard/resque/
38
+
39
+ # handle the second param, don't start if already existing
40
+ case "$2" in
41
+ start)
42
+ echo "Starting Resque Web"
43
+ cd /data/$1/current
44
+ if [ -f $PID_FILE ]; then
45
+ PID=`cat $PID_FILE`
46
+ if [ -d /proc/$PID ]; then
47
+ echo "Resque Web is already running."
48
+ exit 1
49
+ fi
50
+ rm -f $PID_FILE
51
+ fi
52
+ echo $$ > $PID_FILE
53
+ logger -t "monit-resque-web[$$]" "Starting with: ${COMMAND}"
54
+ exec su -c"$COMMAND -f" $USER
55
+ ;;
56
+ stop)
57
+ echo "Stopping Resque Web"
58
+ if [ -f $PID_FILE ]; then
59
+ kill -15 `cat $PID_FILE` 2>/dev/null; true
60
+ fi
61
+
62
+ [ -e "$PID_FILE" ] && rm -f $PID_FILE
63
+ exit 0
64
+ ;;
65
+ *)
66
+ usage
67
+ ;;
68
+ esac
data/metadata.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "license": "MIT",
3
3
  "maintainer": "Engine Yard LLC",
4
4
  "maintainer_email": "drnic@engineyard.com",
5
- "version": "1.0.2",
5
+ "version": "1.0.3",
6
6
  "description": "Resque for EY Cloud",
7
7
  "name": "resque",
8
8
  "attributes": {
data/metadata.rb CHANGED
@@ -3,5 +3,5 @@ description "Resque for EY Cloud"
3
3
  long_description IO.read(File.join(File.dirname(__FILE__), 'README.md'))
4
4
  maintainer "Engine Yard LLC"
5
5
  maintainer_email "drnic@engineyard.com"
6
- version "1.0.2"
6
+ version "1.0.3"
7
7
  depends "cronjobs"
data/recipes/configure.rb CHANGED
@@ -7,13 +7,6 @@ if node[:instance_role] == "solo" || node[:instance_role] == "eylocal" ||
7
7
  (node[:instance_role] == "util" && node[:name] =~ /^(resque)/)
8
8
  resque_workers_count = get_resque_worker_count()
9
9
 
10
- remote_file "/usr/local/bin/resque_kill_stale" do
11
- owner 'root'
12
- group 'root'
13
- mode 0755
14
- source "resque_kill_stale"
15
- end
16
-
17
10
  directory "/tmp/resque_ttls" do
18
11
  owner "root"
19
12
  group "root"
@@ -31,17 +24,47 @@ if node[:instance_role] == "solo" || node[:instance_role] == "eylocal" ||
31
24
  group node[:owner_name]
32
25
  mode 0755
33
26
  end
27
+
34
28
 
35
29
  node[:applications].each do |app_name, data|
30
+
31
+ template "/data/#{app_name}/shared/log/#{node[:environment][:framework_env]}.log" do
32
+ source "log.erb"
33
+ owner node[:owner_name]
34
+ group node[:owner_name]
35
+ mode 0666
36
+ end
37
+
36
38
  # app-server specific recipes usually take care of this
37
39
  link "/data/#{app_name}/shared/log" do
38
40
  to "/var/log/resque"
39
41
  end
42
+
43
+ template "/etc/monit.d/resque_#{app_name}.monitrc" do
44
+ owner 'root'
45
+ group 'root'
46
+ mode 0644
47
+ source "monitrc.conf.erb"
48
+ variables({
49
+ :num_workers => resque_workers_count,
50
+ :app_name => app_name,
51
+ :rails_env => node[:environment][:framework_env]
52
+ })
53
+ end
54
+
55
+ resque_workers_count.times do |count|
56
+ template "/data/#{app_name}/shared/config/resque_#{count}.conf" do
57
+ owner node[:owner_name]
58
+ group node[:owner_name]
59
+ mode 0644
60
+ source "resque_wildcard.conf.erb"
61
+ end
62
+ end
40
63
  end
41
64
  end
42
65
 
43
66
  if %w[solo app app_master util].include? node[:instance_role]
44
- redis_instance = node[:engineyard][:environment][:utility_instances].find {|x| x[:name] == "redis"} ||
67
+ redis_instance = node[:engineyard][:environment][:instances].find {|x| x[:name] == "redis"} ||
45
68
  node[:engineyard][:environment][:db_master] ||
46
69
  node[:engineyard][:environment][:instances].find { |x| x[:role] == "solo" }
47
70
 
data/recipes/default.rb CHANGED
@@ -3,6 +3,7 @@
3
3
  # Recipe:: default
4
4
  #
5
5
 
6
+ require_recipe "resque::install"
6
7
  require_recipe "resque::configure"
7
8
  require_recipe "resque::restart"
8
9
 
@@ -0,0 +1,36 @@
1
+ #
2
+ # Cookbook Name:: resque
3
+ # Recipe:: install
4
+ #
5
+
6
+ if node[:instance_role] == "solo" || node[:instance_role] == "eylocal" ||
7
+ (node[:instance_role] == "util" && node[:name] =~ /^(resque)/)
8
+
9
+ file "/usr/local/bin/resque_kill_stale" do
10
+ owner 'root'
11
+ group 'root'
12
+ mode 0755
13
+ if Chef::VERSION == '0.6.0.2'
14
+ source "resque_kill_stale"
15
+ end
16
+ end
17
+
18
+ file "/engineyard/bin/resque" do
19
+ owner 'root'
20
+ group 'root'
21
+ mode 0755
22
+ if Chef::VERSION == '0.6.0.2'
23
+ source "resque"
24
+ end
25
+ end
26
+
27
+ file "/engineyard/bin/resque-web" do
28
+ owner 'root'
29
+ group 'root'
30
+ mode 0755
31
+ if Chef::VERSION == '0.6.0.2'
32
+ source "resque-web"
33
+ end
34
+ end
35
+
36
+ end
data/recipes/restart.rb CHANGED
@@ -3,12 +3,15 @@
3
3
  # Recipe:: default
4
4
  #
5
5
 
6
- node[:applications].each do |app_name, data|
7
- execute "ensure-resque-is-setup-with-monit" do
8
- command %Q{monit reload}
9
- end
6
+ if node[:instance_role] == "solo" || node[:instance_role] == "eylocal" ||
7
+ (node[:instance_role] == "util" && node[:name] =~ /^(resque)/)
8
+ node[:applications].each do |app_name, data|
9
+ execute "ensure-resque-is-setup-with-monit" do
10
+ command %Q{monit reload}
11
+ end
10
12
 
11
- execute "restart-resque" do
12
- command %Q{echo "sleep 20 && monit -g #{app_name}_resque restart all" | at now }
13
+ execute "restart-resque" do
14
+ command %Q{echo "sleep 20 && monit -g #{app_name}_resque restart all" | at now }
15
+ end
13
16
  end
14
17
  end
File without changes
@@ -0,0 +1,8 @@
1
+ <% (@num_workers || 1).times do |num| %>
2
+ check process resque_<%= @app_name %>_<%= num %>
3
+ with pidfile /var/run/engineyard/resque/<%= @app_name %>/resque_<%= num %>.pid
4
+ start program = "/engineyard/bin/resque <%= @app_name %> start <%= @rails_env %> resque_<%= num %>.conf" with timeout 90 seconds
5
+ stop program = "/engineyard/bin/resque <%= @app_name %> stop <%= @rails_env %> resque_<%= num %>.conf" with timeout 90 seconds
6
+ if totalmem is greater than 300 MB for 2 cycles then restart # eating up memory?
7
+ group <%= @app_name %>_resque
8
+ <% end %>
@@ -1 +1,4 @@
1
1
  <%= @framework_env %>: <%= @redis_host %>:<%= @redis_port %>
2
+ redis_host: <%= @redis_host %>
3
+ redis_port: <%= @redis_port %>
4
+ redis_uri: redis://<%= @redis_host %>:<%= @redis_port %>
@@ -0,0 +1 @@
1
+ QUEUE=*
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eycloud-recipe-resque
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-03-16 00:00:00.000000000 Z
12
+ date: 2012-03-17 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: eycloud-helper-cronjobs
16
- requirement: &70102548992340 !ruby/object:Gem::Requirement
16
+ requirement: &70200712055240 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70102548992340
24
+ version_requirements: *70200712055240
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rake
27
- requirement: &70102549016700 !ruby/object:Gem::Requirement
27
+ requirement: &70200712098120 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,7 +32,7 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *70102549016700
35
+ version_requirements: *70200712098120
36
36
  description: Resque for EY Cloud
37
37
  email:
38
38
  - drnicwilliams@gmail.com
@@ -40,6 +40,7 @@ executables: []
40
40
  extensions: []
41
41
  extra_rdoc_files: []
42
42
  files:
43
+ - .DS_Store
43
44
  - .gitignore
44
45
  - Gemfile
45
46
  - Gemfile.lock
@@ -47,16 +48,20 @@ files:
47
48
  - Rakefile
48
49
  - attributes/default.rb
49
50
  - eycloud-recipe-resque.gemspec
51
+ - files/default/resque
52
+ - files/default/resque-web
50
53
  - files/default/resque_kill_stale
51
54
  - libraries/get_resque_worker_count.rb
52
55
  - metadata.json
53
56
  - metadata.rb
54
57
  - recipes/configure.rb
55
58
  - recipes/default.rb
59
+ - recipes/install.rb
56
60
  - recipes/restart.rb
57
- - templates/default/resque.rb.erb
61
+ - templates/default/log.erb
62
+ - templates/default/monitrc.conf.erb
58
63
  - templates/default/resque.yml.erb
59
- - templates/default/resque_scheduler.rb.erb
64
+ - templates/default/resque_wildcard.conf.erb
60
65
  homepage: ''
61
66
  licenses: []
62
67
  post_install_message:
@@ -71,7 +76,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
71
76
  version: '0'
72
77
  segments:
73
78
  - 0
74
- hash: 1341964992032827832
79
+ hash: -116094860101360678
75
80
  required_rubygems_version: !ruby/object:Gem::Requirement
76
81
  none: false
77
82
  requirements:
@@ -80,7 +85,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
80
85
  version: '0'
81
86
  segments:
82
87
  - 0
83
- hash: 1341964992032827832
88
+ hash: -116094860101360678
84
89
  requirements: []
85
90
  rubyforge_project:
86
91
  rubygems_version: 1.8.17
@@ -1,73 +0,0 @@
1
- rack_env = "<%= @node[:environment][:framework_env] %>"
2
- app_root = "/data/awsm/current"
3
- owner = "<%= @node[:owner_name] %>"
4
- home = "/home/#{owner}"
5
- instance_id = "<%= @node.engineyard.id %>"
6
-
7
- <%= @resque_workers_count %>.times do |num|
8
- inline = "#{home}/.ruby_inline/resque-#{num}"
9
-
10
- God.watch do |w|
11
- w.name = "resque-#{num}"
12
- w.group = 'resque'
13
- w.uid = owner
14
- w.gid = owner
15
- w.interval = 30.seconds
16
- w.log = "#{app_root}/log/worker.#{num}.log"
17
- w.dir = app_root
18
- w.env = {
19
- "VERBOSE" => "true",
20
- "INSTANCE_ID" => instance_id,
21
- "GOD_WATCH" => w.name,
22
- "RACK_ENV" => rack_env,
23
- "LANG" => "en_US.utf-8",
24
- "MERB_ENV" => rack_env,
25
- "HOME" => home,
26
- "INLINEDIR" => inline
27
- }
28
-
29
- w.start = "bundle exec rake --trace resque:work"
30
-
31
- w.behavior(:clean_pid_file)
32
-
33
- w.start_grace = 2.minutes
34
- w.restart_grace = 2.minutes
35
-
36
- # retart if memory gets too high
37
- w.transition(:up, :restart) do |on|
38
- on.condition(:memory_usage) do |c|
39
- c.above = 350.megabytes
40
- c.times = 2
41
- end
42
- end
43
-
44
- # determine the state on startup
45
- w.transition(:init, { true => :up, false => :start }) do |on|
46
- on.condition(:process_running) do |c|
47
- c.running = true
48
- end
49
- end
50
-
51
- # determine when process has finished starting
52
- w.transition([:start, :restart], :up) do |on|
53
- on.condition(:process_running) do |c|
54
- c.running = true
55
- c.interval = 5.seconds
56
- end
57
-
58
- # failsafe
59
- on.condition(:tries) do |c|
60
- c.times = 5
61
- c.transition = :start
62
- c.interval = 5.seconds
63
- end
64
- end
65
-
66
- # start if process is not running
67
- w.transition(:up, :start) do |on|
68
- on.condition(:process_running) do |c|
69
- c.running = false
70
- end
71
- end
72
- end
73
- end
@@ -1,71 +0,0 @@
1
- rack_env = "<%= @node[:environment][:framework_env] %>"
2
- app_root = "/data/awsm/current"
3
- owner = "<%= @node[:owner_name] %>"
4
- home = "/home/#{owner}"
5
- instance_id = "<%= @node.engineyard.id %>"
6
-
7
- inline = "#{home}/.ruby_inline/resque-scheduler"
8
-
9
- God.watch do |w|
10
- w.name = "resque-scheduler"
11
- w.group = 'resque'
12
- w.uid = owner
13
- w.gid = owner
14
- w.interval = 30.seconds
15
- w.log = "#{app_root}/log/resque_scheduler.log"
16
- w.dir = app_root
17
- w.env = {
18
- "VERBOSE" => "true",
19
- "INSTANCE_ID" => instance_id,
20
- "GOD_WATCH" => w.name,
21
- "RACK_ENV" => rack_env,
22
- "MERB_ENV" => rack_env,
23
- "LANG" => "en_US.utf-8",
24
- "HOME" => home,
25
- "INLINEDIR" => inline
26
- }
27
-
28
- w.start = "bundle exec rake --trace resque:scheduler"
29
-
30
- w.behavior(:clean_pid_file)
31
-
32
- w.start_grace = 2.minutes
33
- w.restart_grace = 2.minutes
34
-
35
- # retart if memory gets too high
36
- w.transition(:up, :restart) do |on|
37
- on.condition(:memory_usage) do |c|
38
- c.above = 350.megabytes
39
- c.times = 2
40
- end
41
- end
42
-
43
- # determine the state on startup
44
- w.transition(:init, { true => :up, false => :start }) do |on|
45
- on.condition(:process_running) do |c|
46
- c.running = true
47
- end
48
- end
49
-
50
- # determine when process has finished starting
51
- w.transition([:start, :restart], :up) do |on|
52
- on.condition(:process_running) do |c|
53
- c.running = true
54
- c.interval = 5.seconds
55
- end
56
-
57
- # failsafe
58
- on.condition(:tries) do |c|
59
- c.times = 5
60
- c.transition = :start
61
- c.interval = 5.seconds
62
- end
63
- end
64
-
65
- # start if process is not running
66
- w.transition(:up, :start) do |on|
67
- on.condition(:process_running) do |c|
68
- c.running = false
69
- end
70
- end
71
- end