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 CHANGED
@@ -1 +1 @@
1
- 0.4.2
1
+ 0.4.3
data/beanstalker.gemspec CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{beanstalker}
8
- s.version = "0.4.2"
8
+ s.version = "0.4.3"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Gleb Pomykalov"]
@@ -11,11 +11,15 @@ module Beanstalker
11
11
  def start
12
12
  $logger = logger
13
13
  $logger.info "Starting cycle"
14
- Worker.new(binding,
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).run
21
+ :workers_count => workers_count)
22
+ @worker.run
19
23
  $logger.info "Ending cycle"
20
24
  end
21
25
  end
@@ -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
- if job.stats['releases'] > 10
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']}, Release #{job.stats['releases']}"
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 unless job.ybody[:delete_first]
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. interrupt again to kill them.'
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: 11
4
+ hash: 9
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 4
9
- - 2
10
- version: 0.4.2
9
+ - 3
10
+ version: 0.4.3
11
11
  platform: ruby
12
12
  authors:
13
13
  - Gleb Pomykalov