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 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