backburner-allq 1.0.5 → 1.0.7

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c571fab5da811c77fe0bf58bed5f808fa8981b9730bee955cb82ae3e90695c1d
4
- data.tar.gz: c365ca785e4a5d5ed0db33654d2d2d8dc9941a1b251bae20b1c445c1703dd565
3
+ metadata.gz: 1b73c3b5303a61511d25f26f0d29b7383a530e2f4b6de7aecbf49f7849e1aab1
4
+ data.tar.gz: 384a76bb81541a15068d7b216bfe1bdba72ff093af3f39119acde1485e5a3719
5
5
  SHA512:
6
- metadata.gz: a66719f1557c17349478db2a21d2ee72e136582fa0329afc8c52d29187b96817a0608d0bbde79ef3f6e7feb5d0fb370bf55d470faa7be7b49e3e7f4bd5d9a77f
7
- data.tar.gz: e952ae3e8eb9427055b7dfc6612a4fda9d79bdc767a2af0da2ea7559be93bf35f1972bf23d95c209a810e90fc8c95977b95d8f4213691aed27408f26409218c1
6
+ metadata.gz: d82bbf92e60e38b4a875c7f7d6dd322e143ee239e42122ae83f61a82c5249a9d6306e600951bf9cdd9fa9833a1489235a8b7cb878c253b8fa5bb137d8e45773d
7
+ data.tar.gz: 98b6537bda44810cd9b312aebe3eb47130ead4a2bc2d6f61f95a844b2742723e96e3c46b64d631515a7812d0b6741a1f0965c1ab2c0dc81f98e4badddc574434
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.5.gem
3
+ gem push backburner-allq-1.0.7.gem
@@ -79,7 +79,7 @@ module Backburner
79
79
  end
80
80
 
81
81
  class AllQWrapper
82
- def initialize(url = Blitline::Constants::ALLQ_DEFAULT_EU_URL)
82
+ def initialize(url = 'localhost:8090')
83
83
  allq_conf = Allq::Configuration.new do |config|
84
84
  config.host = url
85
85
  end
@@ -127,35 +127,30 @@ module Backburner
127
127
  return nil if job.body.nil?
128
128
 
129
129
  job.body = Base64.decode64(job.body) if job
130
- job_obj = Blitline::AllQJob.new(self, job)
130
+ job_obj = Backburner::AllQJob.new(self, job)
131
131
  job_obj
132
132
  end
133
133
 
134
134
  def get(tube_name = 'default')
135
135
  job = nil
136
- delt = Blitline::Utils.get_delta do
137
- job = @client.job_get(tube_name)
138
- end
139
- puts "Allq http get delta: #{delt} #{tube_name} #{job}" if delt.to_f > 1.5
136
+ job = @client.job_get(tube_name)
140
137
 
141
- @recent_times.push(delt.to_f)
142
- @recent_times.shift if @recent_times.size > 2
143
138
  # Inplace decode
144
139
  job.body = Base64.decode64(job.body) if job&.body
145
140
 
146
- job_obj = Blitline::AllQJob.new(self, job)
141
+ job_obj = Backburner::AllQJob.new(self, job)
147
142
  job_obj
148
143
  rescue StandardError => ex
149
144
  if ex.message == "Couldn't resolve host name"
150
- BlitlineLogger.log("COUDNT RESOLVE HOST NAME------ SHOULD REBOOT")
145
+ puts("COUDNT RESOLVE HOST NAME------ SHOULD REBOOT")
151
146
  else
152
- BlitlineLogger.log(ex)
147
+ puts(ex)
153
148
  end
154
149
  end
155
150
 
156
151
  def close
157
152
  rescue StandardError => ex
158
- BlitlineLogger.log(ex)
153
+ puts(ex)
159
154
  end
160
155
 
161
156
  def map_priority(app_priority)
@@ -178,9 +173,9 @@ module Backburner
178
173
  end
179
174
 
180
175
  def log_result(job_result)
181
- BlitlineLogger.log("ALLQ-HTTP-JOB-ID=#{job_result.job_id}")
176
+ puts("ALLQ-HTTP-JOB-ID=#{job_result.job_id}")
182
177
  rescue StandardError => ex
183
- BlitlineLogger.log(ex)
178
+ puts(ex)
184
179
  end
185
180
 
186
181
  def build_new_job(body, options)
@@ -241,30 +236,27 @@ module Backburner
241
236
  begin
242
237
  Timeout.timeout(10) do
243
238
  if body && body.to_s.include?('["default"]')
244
- BlitlineLogger.log "PUTTING DEFAULT! #{caller.inspect}"
239
+ puts "PUTTING DEFAULT! #{caller.inspect}"
245
240
  end
246
241
 
247
- delt = Blitline::Utils.get_delta do
248
- if is_parent
249
- new_job = build_new_parent_job(body, options)
250
- result = @client.parent_job_post(new_job)
251
- else
252
- new_job = build_new_job(body, options)
253
- result = @client.job_post(new_job)
254
- end
255
- raise 'PUT returned nil' if result.nil? || result.to_s == ''
242
+ if is_parent
243
+ new_job = build_new_parent_job(body, options)
244
+ result = @client.parent_job_post(new_job)
245
+ else
246
+ new_job = build_new_job(body, options)
247
+ result = @client.job_post(new_job)
256
248
  end
257
- BlitlineLogger.log "Allq http put delta: #{delt}"
249
+ raise 'PUT returned nil' if result.nil? || result.to_s == ''
258
250
  end
259
251
  rescue Timeout::Error
260
- BlitlineLogger.log('ALLQ_PUT_TIMEOUT')
252
+ puts('ALLQ_PUT_TIMEOUT')
261
253
  sleep(5)
262
254
  retry_count += 1
263
255
  retry if retry_count < 4
264
256
  raise 'Failed to put on allq, we are investigating the problem, please try again'
265
257
  rescue StandardError => ex
266
- BlitlineLogger.log('Failed to ALLQ PUT')
267
- BlitlineLogger.log(ex)
258
+ puts('Failed to ALLQ PUT')
259
+ puts(ex)
268
260
  retry_count += 1
269
261
  sleep(5)
270
262
  retry if retry_count < 4
@@ -290,7 +282,7 @@ module Backburner
290
282
  end
291
283
  final_stats
292
284
  rescue StandardError => ex
293
- BlitlineLogger.log(ex)
285
+ puts(ex)
294
286
  {}
295
287
  end
296
288
 
@@ -300,7 +292,7 @@ module Backburner
300
292
  count = tube_stats['ready'].to_i if tube_stats && tube_stats['ready']
301
293
  count
302
294
  rescue StandardError => ex
303
- BlitlineLogger.log(ex)
295
+ puts(ex)
304
296
  -1
305
297
  end
306
298
 
@@ -308,7 +300,7 @@ module Backburner
308
300
  result = get_ready_by_tube('default')
309
301
  result.to_i
310
302
  rescue StandardError => ex
311
- BlitlineLogger.log(ex)
303
+ puts(ex)
312
304
  0
313
305
  end
314
306
  end
@@ -21,8 +21,8 @@ module Backburner
21
21
  attr_accessor :job_parser_proc # proc to parse a job body from a string
22
22
 
23
23
  def initialize
24
- @allq_url = "127.0.0.1:8090"
25
- @tube_namespace = ""
24
+ @allq_url = "allq://127.0.0.1:8091"
25
+ @tube_namespace = "backallq"
26
26
  @namespace_separator = "."
27
27
  @default_priority = 5
28
28
  @respond_timeout = 120
@@ -1,7 +1,7 @@
1
1
  require 'delegate'
2
2
 
3
3
  module Backburner
4
- class Connection < SimpleDelegator
4
+ class Connection
5
5
  class BadURL < RuntimeError; end
6
6
 
7
7
  attr_accessor :url, :allq_wrapper
@@ -27,7 +27,6 @@ module Backburner
27
27
  def close
28
28
  @allq_wrapper.close if @allq_wrapper
29
29
  @allq_wrapper = nil
30
- __setobj__(@allq_wrapper)
31
30
  end
32
31
 
33
32
  # Determines if the connection to allq is currently open
@@ -67,7 +66,7 @@ module Backburner
67
66
  begin
68
67
  yield
69
68
 
70
- rescue Beaneater::NotConnected
69
+ rescue Exception => e
71
70
  if retry_count > 0
72
71
  reconnect!
73
72
  retry_count -= 1
@@ -80,8 +79,6 @@ module Backburner
80
79
  end
81
80
  end
82
81
 
83
- protected
84
-
85
82
  # Attempt to ensure we're connected to allq if the missing method is
86
83
  # present in the delegate and we haven't shut down the connection on purpose
87
84
  # @raise [Beaneater::NotConnected] If allq fails to connect after multiple attempts.
@@ -93,8 +90,7 @@ module Backburner
93
90
  # Connects to a allq queue
94
91
  # @raise Beaneater::NotConnected if the connection cannot be established
95
92
  def connect!
96
- @allq_wrapper = Backburner::AllqWrapper.new(allq_addresses)
97
- __setobj__(@allq_wrapper)
93
+ @allq_wrapper = Backburner::AllQWrapper.new(allq_addresses)
98
94
  @allq_wrapper
99
95
  end
100
96
 
@@ -102,7 +98,7 @@ module Backburner
102
98
  pri = (opt[:pri] || 5).to_i
103
99
  delay = opt[:delay].to_i
104
100
  ttr = (opt[:ttr] || 600).to_i
105
- @allq_wrapper.put2(data, pri, ttr, delay)
101
+ @allq_wrapper.put2(data, pri, ttr, tube_name, delay)
106
102
  end
107
103
 
108
104
  def get(tube_name)
@@ -48,12 +48,7 @@ module Backburner
48
48
  return false unless res
49
49
  # Execute the job
50
50
  @hooks.around_hook_events(job_name, :around_perform, *args) do
51
- # We subtract one to ensure we timeout before beanstalkd does, except if:
52
- # a) ttr == 0, to support never timing out
53
- # b) ttr == 1, so that we don't accidentally set it to never time out
54
- # NB: A ttr of 1 will likely result in race conditions between
55
- # Backburner and beanstalkd and should probably be avoided
56
- timeout_job_after(task.ttr > 1 ? task.ttr - 1 : task.ttr) { job_class.perform(*args) }
51
+ job_class.perform(*args)
57
52
  end
58
53
  task.delete
59
54
  # Invoke after perform hook
@@ -1,3 +1,3 @@
1
1
  module Backburner
2
- VERSION = "1.0.5"
2
+ VERSION = "1.0.7"
3
3
  end
@@ -40,7 +40,8 @@ module Backburner
40
40
  connection.retryable do
41
41
  tube_name = expand_tube_name(queue || job_class)
42
42
  serialized_data = Backburner.configuration.job_serializer_proc.call(data)
43
- response = connection.put(serialized_data, :pri => pri, :delay => delay, :ttr => ttr)
43
+ puts "Tube name #{tube_name}"
44
+ response = connection.put(tube_name, serialized_data, :pri => pri, :delay => delay, :ttr => ttr)
44
45
  end
45
46
  return nil unless Backburner::Hooks.invoke_hook_events(job_class, :after_enqueue, *args)
46
47
  ensure
@@ -129,7 +130,8 @@ module Backburner
129
130
  def work_one_job(conn = connection)
130
131
  begin
131
132
  job = reserve_job(conn)
132
- rescue Beaneater::TimedOutError => e
133
+ rescue Exception => e
134
+ sleep(rand*3)
133
135
  return
134
136
  end
135
137
 
@@ -149,18 +151,13 @@ module Backburner
149
151
 
150
152
  # NB: There's a slight chance here that the connection to beanstalkd has
151
153
  # gone down between the time we reserved / processed the job and here.
152
- num_retries = job.stats.releases
154
+ num_retries = job.releases
153
155
  max_job_retries = resolve_max_job_retries(job.job_class)
154
156
  retry_status = "failed: attempt #{num_retries+1} of #{max_job_retries+1}"
155
- if num_retries < max_job_retries # retry again
156
- retry_delay = resolve_retry_delay(job.job_class)
157
- delay = resolve_retry_delay_proc(job.job_class).call(retry_delay, num_retries) rescue retry_delay
158
- job.retry(num_retries + 1, delay)
159
- self.log_job_end(job.name, "#{retry_status}, retrying in #{delay}s") if job_started_at
160
- else # retries failed, bury
161
- job.bury
162
- self.log_job_end(job.name, "#{retry_status}, burying") if job_started_at
163
- end
157
+ retry_delay = resolve_retry_delay(job.job_class)
158
+ delay = resolve_retry_delay_proc(job.job_class).call(retry_delay, num_retries) rescue retry_delay
159
+ job.release(delay)
160
+ self.log_job_end(job.name, "#{retry_status}, retrying in #{delay}s") if job_started_at
164
161
 
165
162
  handle_error(e, job.name, job.args, job)
166
163
  end
@@ -170,7 +167,7 @@ module Backburner
170
167
 
171
168
  # Return a new connection instance
172
169
  def new_connection
173
- Connection.new(Backburner.configuration.beanstalk_url) { |conn| Backburner::Hooks.invoke_hook_events(self, :on_reconnect, conn) }
170
+ Connection.new(Backburner.configuration.allq_url) { |conn| Backburner::Hooks.invoke_hook_events(self, :on_reconnect, conn) }
174
171
  end
175
172
 
176
173
  # Reserve a job from the watched queues
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.5
4
+ version: 1.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jason Malcolm
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-09-08 00:00:00.000000000 Z
11
+ date: 2020-09-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: allq_rest