beanstalker 0.4.2 → 0.4.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|