beanstalker 0.4.2 → 0.4.3
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/beanstalker.gemspec +1 -1
- data/lib/beanstalker/daemonizer_handler.rb +6 -2
- data/lib/beanstalker/worker.rb +4 -32
- metadata +3 -3
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.4.
|
1
|
+
0.4.3
|
data/beanstalker.gemspec
CHANGED
@@ -11,11 +11,15 @@ module Beanstalker
|
|
11
11
|
def start
|
12
12
|
$logger = logger
|
13
13
|
$logger.info "Starting cycle"
|
14
|
-
|
14
|
+
if option(:error_handler)
|
15
|
+
Worker.custom_error_handler = option(:error_handler)
|
16
|
+
end
|
17
|
+
@worker = Worker.new(binding,
|
15
18
|
:tube => option(:tube),
|
16
19
|
:servers => option(:servers),
|
17
20
|
:worker_id => worker_id,
|
18
|
-
:workers_count => workers_count)
|
21
|
+
:workers_count => workers_count)
|
22
|
+
@worker.run
|
19
23
|
$logger.info "Ending cycle"
|
20
24
|
end
|
21
25
|
end
|
data/lib/beanstalker/worker.rb
CHANGED
@@ -27,11 +27,6 @@ class Beanstalker::Worker
|
|
27
27
|
attr_accessor :finish
|
28
28
|
attr_accessor :custom_error_handler
|
29
29
|
attr_accessor :before_filter
|
30
|
-
attr_writer :handle
|
31
|
-
|
32
|
-
def handle
|
33
|
-
@handle or raise 'no custom handler is defined'
|
34
|
-
end
|
35
30
|
|
36
31
|
def error_handler(&block)
|
37
32
|
self.custom_error_handler = block
|
@@ -76,8 +71,6 @@ class Beanstalker::Worker
|
|
76
71
|
watched_tubes = Beanstalker::Queue.queue.list_tubes_watched.values.flatten #["default"]
|
77
72
|
to_watch = tubes - watched_tubes
|
78
73
|
to_ignore = watched_tubes - tubes
|
79
|
-
logger.debug "to_watch = #{to_watch.join(',')}"
|
80
|
-
logger.debug "to_ignore = #{to_ignore.join(',')}"
|
81
74
|
to_watch.each do |t|
|
82
75
|
Beanstalker::Queue.queue.watch(t)
|
83
76
|
end
|
@@ -147,7 +140,6 @@ class Beanstalker::Worker
|
|
147
140
|
def dispatch(job)
|
148
141
|
ActiveRecord::Base.verify_active_connections!
|
149
142
|
return run_ao_job(job) if beanstalker_job?(job)
|
150
|
-
return run_other(job)
|
151
143
|
end
|
152
144
|
|
153
145
|
def safe_dispatch(job)
|
@@ -174,32 +166,17 @@ class Beanstalker::Worker
|
|
174
166
|
def self.default_handle_error(job, ex)
|
175
167
|
logger.info "Job failed: #{job.server}/#{job.id}"
|
176
168
|
logger.info("#{ex.class}: #{ex}\n" + ex.backtrace.join("\n"))
|
177
|
-
|
178
|
-
job.bury
|
179
|
-
logger.info "BURY job due to many releases"
|
180
|
-
else
|
181
|
-
job.decay
|
182
|
-
end
|
169
|
+
job.decay
|
183
170
|
rescue Beanstalk::UnexpectedResponse
|
184
171
|
end
|
185
172
|
|
186
173
|
def run_ao_job(job)
|
187
|
-
logger.info "Running '#{job[:code]}'. Age #{job.stats['age']},
|
174
|
+
logger.info "Running '#{job[:code]}'. Age #{job.stats['age']}, Releases #{job.stats['releases']}"
|
188
175
|
f = self.class.before_filter
|
189
176
|
result = f.call(job) if f
|
190
|
-
job.delete if job.ybody[:delete_first]
|
191
177
|
run_code(job)
|
192
|
-
job.delete
|
178
|
+
job.delete
|
193
179
|
logger.info "Finished"
|
194
|
-
rescue ActiveRecord::RecordNotFound => ex
|
195
|
-
logger.warn "Record not found. Doing decay"
|
196
|
-
unless job.ybody[:delete_first]
|
197
|
-
if job.age > 60
|
198
|
-
job.delete # it's old; this error is most likely permanent
|
199
|
-
else
|
200
|
-
job.decay # it could be replication delay so retry quietly
|
201
|
-
end
|
202
|
-
end
|
203
180
|
end
|
204
181
|
|
205
182
|
def run_code(job)
|
@@ -210,13 +187,8 @@ class Beanstalker::Worker
|
|
210
187
|
begin job.ybody[:type] == :rails rescue false end
|
211
188
|
end
|
212
189
|
|
213
|
-
def run_other(job)
|
214
|
-
logger.info 'trying custom handler'
|
215
|
-
self.class.handle.call(job)
|
216
|
-
end
|
217
|
-
|
218
190
|
def do_all_work
|
219
|
-
logger.info 'finishing all running jobs
|
191
|
+
logger.info 'finishing all running jobs'
|
220
192
|
f = self.class.finish
|
221
193
|
f.call if f
|
222
194
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: beanstalker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 9
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 4
|
9
|
-
-
|
10
|
-
version: 0.4.
|
9
|
+
- 3
|
10
|
+
version: 0.4.3
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Gleb Pomykalov
|