postburner 0.6.1 → 0.6.2

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