backburner-allq 1.0.31 → 1.0.35

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7fadeda9c5cd1ea2944c017dd005fe56acf0a93c525c060ab243a4d56fd9348a
4
- data.tar.gz: 69b8b032a9225fa2b8ac80e9e8379e89d169eb3f53948fba3128dfa730890323
3
+ metadata.gz: dcdca608a5d89c656e3bac8e9c08a8609bd621c87a65627be816182047f72682
4
+ data.tar.gz: 5b22e47c0e50d030e6b512b9b592b5e754281b6152f16225539074277458071b
5
5
  SHA512:
6
- metadata.gz: 4001bde438023201e35cda405fc977918b1c77c33b1159e922d9d04789264323af58d2582105bca794df921a4e612d32d66885104021a2678af61592fd314390
7
- data.tar.gz: 07cb5147efc0a3f720799599451de746ba3b54bf8ae32a46dc5425bb07a428a8eecfc66ae9d58593468d9e98c0fe10b729e17d87ed0a1e735f056dbe1f635bad
6
+ metadata.gz: ef7402c39f84323438ac0f8427943143f3f7e8ab82f56dd60669147098dc38d6fab2ab84a3a12d2fc0a751f270ac6cb3723ef800aa523b67b18f2e18290f76a5
7
+ data.tar.gz: b5f5ba04f1bebb6e511cb4d32c3bf83f6c2fb5e0960b908a6d1ef90cbf206e39c9a7c4d9e38745ab7734de990313e24ab1142f724f71d94ef8e69f8a95c1ce33
data/deploy.sh CHANGED
@@ -1,3 +1,3 @@
1
1
  echo "Did you update the version?"
2
2
  gem build backburner-allq.gemspec
3
- gem push backburner-allq-1.0.31.gem
3
+ gem push backburner-allq-1.0.35.gem
@@ -21,7 +21,7 @@ module Backburner
21
21
  ran = true
22
22
  end
23
23
  # Wait if nothing returned
24
- sleep(rand() * 3) unless ran
24
+ sleep(rand * 3) unless ran
25
25
  end
26
26
  end
27
27
  end
@@ -81,7 +81,7 @@ module Backburner
81
81
  end
82
82
 
83
83
  class AllQWrapper
84
- DEFAULT_TIMEOUT = 17800
84
+ DEFAULT_TIMEOUT = 17_800
85
85
  def initialize(url = 'localhost:8090')
86
86
  allq_conf = Allq::Configuration.new do |config|
87
87
  config.host = url
@@ -91,14 +91,12 @@ module Backburner
91
91
  @client = Allq::ActionsApi.new(raw_client)
92
92
  @admin = Allq::AdminApi.new(raw_client)
93
93
  @recent_times = []
94
-
95
94
  end
96
95
 
97
96
  def speed
98
- if @recent_times.size > 0
99
- return @recent_times.sum(0.0) / @recent_times.size
100
- end
101
- return 0
97
+ return @recent_times.sum(0.0) / @recent_times.size if @recent_times.size > 0
98
+
99
+ 0
102
100
  end
103
101
 
104
102
  def touch(job)
@@ -118,7 +116,7 @@ module Backburner
118
116
  end
119
117
 
120
118
  def bury(job)
121
- @client.bury_put(job.id)
119
+ @client.bury_put(job.id)
122
120
  end
123
121
 
124
122
  def tube_names
@@ -131,13 +129,11 @@ module Backburner
131
129
  end
132
130
 
133
131
  def peek_buried(tube_name = 'default')
134
- job = nil
135
132
  job = @client.peek_get(tube_name, buried: true)
136
133
  return nil if job.body.nil?
137
134
 
138
135
  job.body = Base64.decode64(job.body) if job
139
- job_obj = Backburner::AllQJob.new(self, job)
140
- job_obj
136
+ Backburner::AllQJob.new(self, job)
141
137
  end
142
138
 
143
139
  def get(tube_name = 'default')
@@ -147,19 +143,18 @@ module Backburner
147
143
  # Inplace decode
148
144
  job.body = Base64.decode64(job.body) if job&.body
149
145
 
150
- job_obj = Backburner::AllQJob.new(self, job)
151
- job_obj
152
- rescue StandardError => ex
153
- if ex.message == "Couldn't resolve host name"
154
- puts("COUDNT RESOLVE HOST NAME------ SHOULD REBOOT")
146
+ Backburner::AllQJob.new(self, job)
147
+ rescue StandardError => e
148
+ if e.message == "Couldn't resolve host name"
149
+ puts('COUDNT RESOLVE HOST NAME------ SHOULD REBOOT')
155
150
  else
156
- puts(ex)
151
+ puts(e)
157
152
  end
158
153
  end
159
154
 
160
155
  def close
161
- rescue StandardError => ex
162
- puts(ex)
156
+ rescue StandardError => e
157
+ puts(e)
163
158
  end
164
159
 
165
160
  def map_priority(app_priority)
@@ -168,16 +163,14 @@ module Backburner
168
163
  # IF already using allq-like priority, stick with it
169
164
  return app_priority if app_priority < 11 && app_priority > 0
170
165
 
171
- default = 5
172
-
173
166
  # return app_priority unless larger than 10
174
167
  app_priority > 10 ? 5 : app_priority
175
168
  end
176
169
 
177
170
  def log_result(job_result)
178
171
  puts("ALLQ-HTTP-JOB-ID=#{job_result.job_id}")
179
- rescue StandardError => ex
180
- puts(ex)
172
+ rescue StandardError => e
173
+ puts(e)
181
174
  end
182
175
 
183
176
  def build_new_job(body, options)
@@ -188,14 +181,13 @@ module Backburner
188
181
  delay = options[:delay] || 0
189
182
  parent_id = options[:parent_id]
190
183
 
191
- new_job = Allq::NewJob.new(tube: tube_name,
192
- body: Base64.strict_encode64(body),
193
- ttl: ttl,
194
- delay: delay,
195
- priority: adjusted_priority,
196
- shard_key: options[:shard_key],
197
- parent_id: parent_id)
198
- new_job
184
+ Allq::NewJob.new(tube: tube_name,
185
+ body: Base64.strict_encode64(body),
186
+ ttl: ttl,
187
+ delay: delay,
188
+ priority: adjusted_priority,
189
+ shard_key: options[:shard_key],
190
+ parent_id: parent_id)
199
191
  end
200
192
 
201
193
  def build_new_parent_job(body, options)
@@ -208,16 +200,15 @@ module Backburner
208
200
  timeout = options[:timeout] || 3_600
209
201
  run_on_timeout = options[:run_on_timeout] || false
210
202
 
211
- new_parent_job = Allq::NewParentJob.new(tube: tube_name,
212
- body: Base64.strict_encode64(body),
213
- ttl: ttl,
214
- delay: delay,
215
- priority: adjusted_priority,
216
- timeout: timeout,
217
- run_on_timeout: run_on_timeout,
218
- shard_key: options[:shard_key],
219
- limit: limit)
220
- new_parent_job
203
+ Allq::NewParentJob.new(tube: tube_name,
204
+ body: Base64.strict_encode64(body),
205
+ ttl: ttl,
206
+ delay: delay,
207
+ priority: adjusted_priority,
208
+ timeout: timeout,
209
+ run_on_timeout: run_on_timeout,
210
+ shard_key: options[:shard_key],
211
+ limit: limit)
221
212
  end
222
213
 
223
214
  def put(body, options)
@@ -228,9 +219,6 @@ module Backburner
228
219
 
229
220
  begin
230
221
  Timeout.timeout(10) do
231
- if body && body.to_s.include?('["default"]')
232
- end
233
-
234
222
  if is_parent
235
223
  new_job = build_new_parent_job(body, options)
236
224
  result = @client.parent_job_post(new_job)
@@ -241,18 +229,18 @@ module Backburner
241
229
  raise 'PUT returned nil' if result.nil? || result.to_s == ''
242
230
  end
243
231
  rescue Timeout::Error
244
- puts('ALLQ_PUT_TIMEOUT')
232
+ puts('ALLQ PUT timeout, retrying...')
245
233
  sleep(5)
246
234
  retry_count += 1
247
235
  retry if retry_count < 4
248
- raise 'Failed to put on allq, we are investigating the problem, please try again'
249
- rescue StandardError => ex
250
- puts('Failed to ALLQ PUT')
251
- puts(ex)
236
+ raise "Failed to put on allq, we are investigating the problem, please try again -> #{body}"
237
+ rescue StandardError => e
238
+ puts('Failed to ALLQ PUT, retrying...')
239
+ puts(e)
252
240
  retry_count += 1
253
241
  sleep(5)
254
242
  retry if retry_count < 4
255
- raise 'Failed to put on allq, we are investigating the problem, please try again'
243
+ raise "Failed to put on allq, we are investigating the problem, please try again: #{body}"
256
244
  end
257
245
  result
258
246
  end
@@ -278,27 +266,9 @@ module Backburner
278
266
  end
279
267
  end
280
268
  final_stats
281
- rescue StandardError => ex
282
- puts(ex)
269
+ rescue StandardError => e
270
+ puts(e)
283
271
  {}
284
272
  end
285
-
286
- def get_ready_by_tube(name)
287
- count = -1
288
- tube_stats = stats[name]
289
- count = tube_stats['ready'].to_i if tube_stats && tube_stats['ready']
290
- count
291
- rescue StandardError => ex
292
- puts(ex)
293
- -1
294
- end
295
-
296
- def size
297
- result = get_ready_by_tube('default')
298
- result.to_i
299
- rescue StandardError => ex
300
- puts(ex)
301
- 0
302
- end
303
273
  end
304
274
  end
@@ -109,7 +109,10 @@ module Backburner
109
109
  ttr: ttr
110
110
  }
111
111
 
112
- options.merge!(opt)
112
+ options[:shard_key] = opt[:shard_key] if opt[:shard_key]
113
+
114
+ # Overwrite originals
115
+ opt.merge!(options)
113
116
  @allq_wrapper.put(data, options)
114
117
  end
115
118
 
@@ -1,3 +1,3 @@
1
1
  module Backburner
2
- VERSION = "1.0.31"
2
+ VERSION = "1.0.35"
3
3
  end
@@ -24,6 +24,7 @@ module Backburner
24
24
  # Backburner::Worker.enqueue NewsletterSender, [self.id, user.id], :ttr => 1000
25
25
  #
26
26
  def self.enqueue(job_class, args=[], opts={})
27
+ opts[:shard_key] = opts[:shard_key].nil? ? "X" : opts[:shard_key].to_s
27
28
  pri = resolve_priority(opts[:pri] || job_class)
28
29
  delay = [0, opts[:delay].to_i].max
29
30
  ttr = resolve_respond_timeout(opts[:ttr] || job_class)
@@ -40,7 +41,13 @@ module Backburner
40
41
  connection.retryable do
41
42
  tube_name = expand_tube_name(queue || job_class)
42
43
  serialized_data = Backburner.configuration.job_serializer_proc.call(data)
43
- response = connection.put(tube_name, serialized_data, :pri => pri, :delay => delay, :ttr => ttr, :shard_key => opts[:shard_key])
44
+ send_data = {
45
+ pri: pri,
46
+ delay: delay,
47
+ ttr: ttr
48
+ }
49
+ opts.merge!(send_data)
50
+ response = connection.put(tube_name, serialized_data, opts)
44
51
  end
45
52
  return nil unless Backburner::Hooks.invoke_hook_events(job_class, :after_enqueue, *args)
46
53
  ensure
@@ -207,7 +207,7 @@ module Backburner
207
207
 
208
208
  # Run work_one_job while we can
209
209
  def run_while_can(conn = connection)
210
- puts "Run while can"
210
+ log_info "Run while can"
211
211
  while @garbage_after.nil? or @garbage_after > @runs
212
212
  @runs += 1 # FIXME: Likely race condition
213
213
  work_one_job(conn, @watched_tube_name)
@@ -221,7 +221,7 @@ module Backburner
221
221
  end
222
222
 
223
223
  def on_reconnect(conn)
224
- watch_tube(@watching_tube, conn) if @watching_tube
224
+ watch_tube(@watched_tube_name, conn) if @watched_tube_name
225
225
  end
226
226
 
227
227
  # Exit with Kernel.exit! to avoid at_exit callbacks that should belongs to
data/lib/backburner.rb CHANGED
@@ -10,8 +10,8 @@ require 'backburner/logger'
10
10
  require 'backburner/connection'
11
11
  require 'backburner/hooks'
12
12
  require 'backburner/performable'
13
- require 'backburner/worker'
14
- require 'backburner/workers/simple'
13
+ require_relative 'backburner/worker'
14
+ require_relative 'backburner/workers/simple'
15
15
  require 'backburner/workers/forking'
16
16
  require 'backburner/workers/threads_on_fork'
17
17
  require 'backburner/workers/threading'
@@ -24,10 +24,12 @@ module Backburner
24
24
  # @example
25
25
  # Backburner.enqueue NewsletterSender, self.id, user.id
26
26
  #
27
- def enqueue(job_class, args, shard_key: nil)
28
- Backburner::Worker.enqueue(job_class, args, { shard_key: shard_key.nil? ? "X" : shard_key.to_s })
27
+ def enqueue(job_class, args, opts={})
28
+ opts[:shard_key] = opts[:shard_key].nil? ? "X" : opts[:shard_key].to_s
29
+ Backburner::Worker.enqueue(job_class, args, opts)
29
30
  end
30
31
 
32
+
31
33
  # Begins working on jobs enqueued with optional tubes specified
32
34
  #
33
35
  # @example
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: backburner-allq
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.31
4
+ version: 1.0.35
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jason Malcolm
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-05-24 00:00:00.000000000 Z
11
+ date: 2021-12-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: allq_rest
@@ -188,8 +188,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
188
188
  - !ruby/object:Gem::Version
189
189
  version: '0'
190
190
  requirements: []
191
- rubyforge_project:
192
- rubygems_version: 2.7.9
191
+ rubygems_version: 3.0.9
193
192
  signing_key:
194
193
  specification_version: 4
195
194
  summary: Reliable allq background job processing made easy for Ruby and Sinatra