postburner 0.6.1 → 0.6.2

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: ca9bed4afd8b585d14934b4ba09b20c58109d8de39d5300d135069e2723c3aba
4
- data.tar.gz: 5ae5f4a07e53ac69b4d4b795f3b8c8bdf5b9a087e1a8513f6fed03cb47e48210
3
+ metadata.gz: 6d47898f4be7a93d1643ba6ff32db238b341a2ceed09bbc18de2774d3048d9cd
4
+ data.tar.gz: 934f5a102f6644e679c2bf30d4708e171f01d88b5652fe6bcef2cac8b6fe4c50
5
5
  SHA512:
6
- metadata.gz: c741884d62b1b71b7c8ce928baff5fef35054c58962f530ee06764b4947477ca394712300256e98409187494092c7164a5f8490482e54a19d0f1776b8465f783
7
- data.tar.gz: 193a2e625139d0a441503afc15d64888eb25234d0ae81ca320a319506130e8eb1c960141d60b97066633f6a777ab47fe21d49d42bc448497b4225e8c78924051
6
+ metadata.gz: cb29ebe178b4675552a441c335fd95867a9a26c0a15235c42d5dff0f8ab72c40c417c728bc171ecf461ef3e78c9672364b89fae3b91419dceac59f80ad4c9986
7
+ data.tar.gz: 807cb26488522a5a3becdc53fbc43b44a9123d1355ee31d2b79dc2d1d479ce714a6b3a5f20c60b74e2f2fc22753736e6fde9822fe59e83feab69024e34e60deb
data/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # Changelog
2
2
 
3
+ ## v0.6.2 - 2021-11-01
4
+
5
+ ### Fixed
6
+ - add #requeue method.
7
+ - check if AlreadyProcessed.
8
+
3
9
  ## v0.6.1 - 2021-11-01
4
10
 
5
11
  ### Updated
@@ -31,15 +31,19 @@ module Postburner
31
31
  def queue!(options={})
32
32
  return if self.queued_at.present? && self.bkid.present?
33
33
  raise ActiveRecord::RecordInvalid, "Can't queue unless valid." unless self.valid?
34
+ raise AlreadyProcessed, "Processed at #{self.processed_at}" if self.processed_at
35
+
34
36
  at = options.delete(:at)
37
+ now = Time.zone.now
35
38
 
39
+ self.queued_at = now
36
40
  self.run_at = case
37
41
  when at.present?
38
42
  # this is rudimentary, add error handling
39
- options[:delay] ||= at.to_i - Time.zone.now.to_i
43
+ options[:delay] ||= at.to_i - now.to_i
40
44
  at
41
45
  when options[:delay].present?
42
- Time.zone.now + options[:delay].seconds
46
+ now + options[:delay].seconds
43
47
  end
44
48
 
45
49
  @_insert_options = options
@@ -47,6 +51,13 @@ module Postburner
47
51
  self.save!
48
52
  end
49
53
 
54
+ def requeue!(options={})
55
+ self.delete!
56
+ self.bkid, self.queued_at = nil, nil
57
+
58
+ self.queue! options
59
+ end
60
+
50
61
  def will_insert?
51
62
  @_insert_options.is_a? Hash
52
63
  end
@@ -104,7 +115,7 @@ module Postburner
104
115
  return
105
116
  end
106
117
 
107
- self.log!('START')
118
+ self.log!("START (bkid #{self.bkid})")
108
119
 
109
120
  begin
110
121
  self.perform(args)
@@ -114,7 +125,7 @@ module Postburner
114
125
  raise exception
115
126
  end
116
127
 
117
- self.log!('DONE')
128
+ self.log!("DONE (bkid #{self.bkid})")
118
129
 
119
130
  begin
120
131
  now = Time.zone.now
@@ -181,6 +192,7 @@ module Postburner
181
192
  self.errata << [
182
193
  Time.zone.now,
183
194
  {
195
+ bkid: self.bkid,
184
196
  class: exception.class,
185
197
  message: exception.message,
186
198
  backtrace: exception.backtrace,
@@ -200,9 +212,10 @@ module Postburner
200
212
  self.logs << [
201
213
  Time.zone.now, # time
202
214
  {
203
- level: options[:level], # level
204
- message: message, # message
205
- elapsed: self.elapsed_ms, # ms from start
215
+ bkid: self.bkid,
216
+ level: options[:level], # level
217
+ message: message, # message
218
+ elapsed: self.elapsed_ms, # ms from start
206
219
  }
207
220
  ]
208
221
  end
@@ -219,6 +232,12 @@ module Postburner
219
232
  self.update_column :logs, self.logs
220
233
  end
221
234
 
235
+ def intended_at
236
+ self.run_at ? self.run_at : self.queued_at
237
+ end
238
+
239
+ class AlreadyProcessed < StandardError; end
240
+
222
241
  private
223
242
 
224
243
  def persist_metadata!(data={})
@@ -236,19 +255,22 @@ module Postburner
236
255
  end
237
256
 
238
257
  def insert!(options={})
239
- response = Backburner::Worker.enqueue(
240
- Postburner::Job,
241
- self.id,
242
- options
243
- )
258
+ response = nil
259
+
260
+ Job.transaction do
261
+ response = Backburner::Worker.enqueue(
262
+ Postburner::Job,
263
+ self.id,
264
+ options
265
+ )
266
+
267
+ persist_metadata!(
268
+ bkid: response[:id],
269
+ )
270
+ end
244
271
 
245
272
  self.log("QUEUED: #{response}")
246
273
 
247
- persist_metadata!(
248
- queued_at: Time.zone.now,
249
- bkid: response[:id],
250
- )
251
-
252
274
  response
253
275
  end
254
276
 
@@ -256,14 +278,10 @@ module Postburner
256
278
  now = Time.zone.now
257
279
  self.attempts << now
258
280
  self.attempting_at ||= now
259
- self.lag ||= (self.attempting_at - self.intended_at) * 1000
281
+ self.lag ||= (self.attempting_at - self.intended_at) * 1000 rescue nil
260
282
  now
261
283
  end
262
284
 
263
- def intended_at
264
- self.run_at ? self.run_at : self.queued_at
265
- end
266
-
267
285
  def ensure_sid!
268
286
  self.sid ||= SecureRandom.uuid
269
287
  end
@@ -1,3 +1,3 @@
1
1
  module Postburner
2
- VERSION = '0.6.1'
2
+ VERSION = '0.6.2'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: postburner
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.1
4
+ version: 0.6.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matt Smith