postburner 0.3.2 → 0.3.3

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: ba4b7b0b6ccdc3f0ce25453614c73e683dcac10fde47c6382337e9d0a8eecc42
4
- data.tar.gz: 20899869073130b8fb856009c1a69dfa5b0bc4594c79477ff7593d17775cf35f
3
+ metadata.gz: 4b21ae5985bd9458b91095fe9a40370c6efe0a2d1903be46b47a0785dc6e0f73
4
+ data.tar.gz: e7e3989d2805bc64815f6b586ba8e594b11963a7330e0d012a7671928b55576d
5
5
  SHA512:
6
- metadata.gz: 32d316908465caab8c6276ba6db4be43bfdcab5185146cbff59a708057ef331dac90374b817f65a25c623530cfbcb8bfbded3d152aaabd7607fd8df4e7288a1a
7
- data.tar.gz: b7ba8bce12c6ddd9e2e353b8dd11fb6e87cd7e7ecbde3a410bc73e8c06464cfb6142172200528e66a2cdd3e02f903366f27ebd7d63e0b2ca14fb6a83335269bd
6
+ metadata.gz: af927556728f74e306075633a45851a51c4f26faa44f1c54901aa2c7a6f176e494b2c220d2040239e49c458a5cdc6c2e4ae19fd9d35548de1a2028f2a24c074a
7
+ data.tar.gz: 22d1b312e5b44a21b9035ecaf6a732aa6bac2100244144ed1084bf1f1d83f170df1f378f262fabdc1c8ec2edf26c2c97d4cfd94b006c27992a5871261f09bb4d
data/CHANGELOG.md CHANGED
@@ -1,5 +1,15 @@
1
1
  # Changelog
2
2
 
3
+ ## v0.3.3 - 2021-06-15
4
+
5
+ ### Fixed
6
+ - re-raise exception after logging during perform.
7
+ - log but swallow post perform data update exceptions.
8
+ - only allow remove! if job still present.
9
+
10
+ ### Added
11
+ - Job#log! and Job#log_exception! that save the data immediately.
12
+
3
13
  ## v0.3.2 - 2021-05-07
4
14
 
5
15
  ### Fixed
@@ -56,22 +56,19 @@ module Postburner
56
56
 
57
57
  begin
58
58
  if self.processed_at.present?
59
- self.log "Already Processed", level: :error
60
- update_column :logs, self.logs
59
+ self.log! "Already Processed", level: :error
61
60
  self.delete!
62
61
  return
63
62
  end
64
63
 
65
64
  if self.removed_at.present?
66
- self.log "Removed", level: :error
67
- update_column :logs, self.logs
65
+ self.log! "Removed", level: :error
68
66
  return
69
67
  end
70
68
 
71
69
  if self.run_at && self.run_at > Time.zone.now
72
70
  response = self.insert! delay: self.run_at - Time.zone.now
73
- self.log "PREMATURE; RE-INSERTED: #{response}"
74
- update_column :logs, self.logs
71
+ self.log! "PREMATURE; RE-INSERTED: #{response}"
75
72
  return
76
73
  end
77
74
 
@@ -81,26 +78,29 @@ module Postburner
81
78
 
82
79
  self.log('DONE')
83
80
 
84
- rescue Exception => e
85
- self.log_exception(e)
86
- end
81
+ begin
82
+ now = Time.zone.now
83
+ _duration = (now - self.processing_at) * 1000 rescue nil
84
+ self.update_columns(
85
+ processed_at: now,
86
+ duration: _duration,
87
+ errata: self.errata,
88
+ error_count: self.errata.length,
89
+ logs: self.logs,
90
+ log_count: self.logs.length,
91
+ )
92
+ rescue Exception => e
93
+ self.log_exception!(e)
94
+ self.log! '[Postburner] Could not set data after processing.'
95
+ # TODO README doesn't retry if Postburner is to blame
96
+ end
87
97
 
88
- begin
89
- now = Time.zone.now
90
- _duration = (now - self.processing_at) * 1000 rescue nil
91
- self.update_columns(
92
- processed_at: now,
93
- duration: _duration,
94
- errata: self.errata,
95
- error_count: self.errata.length,
96
- logs: self.logs,
97
- log_count: self.logs.length,
98
- )
99
- rescue Exception => e
100
- raise e if Rails.env.development? || Rails.env.production?
101
- self.log_exception(e)
102
- update_column :errata, self.errata
98
+ rescue Exception => exception
99
+ self.log_exception!(exception)
100
+ self.log! '[Postburner] Exception raised during perform prevented completion.'
101
+ raise exception
103
102
  end
103
+
104
104
  end
105
105
 
106
106
  def delete!
@@ -122,9 +122,12 @@ module Postburner
122
122
  end
123
123
 
124
124
  def remove!
125
- return false if self.attempts.any?
126
- self.delete!
127
- self.update_column(removed_at: Time.zone.now)
125
+ if self.beanstalk_job
126
+ self.delete!
127
+ self.update_column(:removed_at, Time.zone.now)
128
+ else
129
+ false
130
+ end
128
131
  end
129
132
 
130
133
  def beanstalk_job
@@ -152,6 +155,11 @@ module Postburner
152
155
  ]
153
156
  end
154
157
 
158
+ def log_exception!(exception)
159
+ self.log_exception(exception)
160
+ self.update_column :errata, self.errata
161
+ end
162
+
155
163
  def log(message, options={})
156
164
  options[:level] ||= :info
157
165
  options[:level] = :error unless LOG_LEVELS.member?(options[:level])
@@ -163,6 +171,11 @@ module Postburner
163
171
  ]
164
172
  end
165
173
 
174
+ def log!(message, options={})
175
+ self.log(message, options)
176
+ self.update_column :logs, self.logs
177
+ end
178
+
166
179
  private
167
180
 
168
181
  def insert!(options={})
@@ -1,3 +1,3 @@
1
1
  module Postburner
2
- VERSION = '0.3.2'
2
+ VERSION = '0.3.3'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: postburner
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.2
4
+ version: 0.3.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matt Smith
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-05-07 00:00:00.000000000 Z
11
+ date: 2021-06-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails