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 +4 -4
- data/CHANGELOG.md +6 -0
- data/app/models/postburner/job.rb +40 -22
- data/lib/postburner/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6d47898f4be7a93d1643ba6ff32db238b341a2ceed09bbc18de2774d3048d9cd
|
4
|
+
data.tar.gz: 934f5a102f6644e679c2bf30d4708e171f01d88b5652fe6bcef2cac8b6fe4c50
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cb29ebe178b4675552a441c335fd95867a9a26c0a15235c42d5dff0f8ab72c40c417c728bc171ecf461ef3e78c9672364b89fae3b91419dceac59f80ad4c9986
|
7
|
+
data.tar.gz: 807cb26488522a5a3becdc53fbc43b44a9123d1355ee31d2b79dc2d1d479ce714a6b3a5f20c60b74e2f2fc22753736e6fde9822fe59e83feab69024e34e60deb
|
data/CHANGELOG.md
CHANGED
@@ -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 -
|
43
|
+
options[:delay] ||= at.to_i - now.to_i
|
40
44
|
at
|
41
45
|
when options[:delay].present?
|
42
|
-
|
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!(
|
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!(
|
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
|
-
|
204
|
-
|
205
|
-
|
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 =
|
240
|
-
|
241
|
-
|
242
|
-
|
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
|
data/lib/postburner/version.rb
CHANGED