good_job 3.4.7 → 3.4.8

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: 8994365182a8cc05445c3368e6dea0bb2ccedf2678f59bd5612280b8154c1ee3
4
- data.tar.gz: 3a4d3f05f8e3a862abadd24a6f6b68b1bc969740b9bf14dab5328b055c9e3835
3
+ metadata.gz: a80a59cedda856949e71696310b0b241e1c48f9959c07275ad6afadf02694db1
4
+ data.tar.gz: bd60e75a3f468681f7cdea53d8681b9f04ff66e3ea55aa2430cd514805eff1b9
5
5
  SHA512:
6
- metadata.gz: cb67c0a6c3979b29a59b74b33c1097b9c38b53f7e678e80368e9f28829fe31703fe9d4f2c2a710783e3f5e650467fc7c196433c49c1c55b0b3522c3d6d5a7645
7
- data.tar.gz: 6a114ae3a9509b2987b49ad65547ac0b12adb16de93127d0d72c9a4a86850f60680bed12468e7e94a5718ad5f364419b8b2daf609800d52f1f6ec9c6c1362340
6
+ metadata.gz: 5da8d6fc72c367dee54984d411cef1c34a5cdf4e1d32b2f80e8e787a02cc159e59e004c02695888da6cf5e2dc940a5bb9e3b2452247a7594390c0df8c31a1e56
7
+ data.tar.gz: e3a3821681ec9ee55bd5e364c41d4b0bc43801ad51e144a4910b81bd37d68149d03c507bd09e11520cdab1dcc8dbc5f1283a7c332e50c1c06d3fa28db21e0dfc
data/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # Changelog
2
2
 
3
+ ## [v3.4.8](https://github.com/bensheldon/good_job/tree/v3.4.8) (2022-10-11)
4
+
5
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.4.7...v3.4.8)
6
+
7
+ **Merged pull requests:**
8
+
9
+ - When not preserving job records, ensure all prior executions are deleted after successful retry [\#719](https://github.com/bensheldon/good_job/pull/719) ([ylansegal](https://github.com/ylansegal))
10
+
3
11
  ## [v3.4.7](https://github.com/bensheldon/good_job/tree/v3.4.7) (2022-10-06)
4
12
 
5
13
  [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.4.6...v3.4.7)
@@ -66,6 +66,7 @@ module GoodJob
66
66
  end
67
67
 
68
68
  belongs_to :job, class_name: 'GoodJob::Job', foreign_key: 'active_job_id', primary_key: 'active_job_id', optional: true, inverse_of: :executions
69
+ after_destroy -> { self.class.active_job_id(active_job_id).delete_all }, if: -> { @_destroy_job }
69
70
 
70
71
  # Get Jobs with given ActiveJob ID
71
72
  # @!method active_job_id
@@ -298,11 +299,11 @@ module GoodJob
298
299
 
299
300
  if result.unhandled_error && GoodJob.retry_on_unhandled_error
300
301
  save!
301
- elsif GoodJob.preserve_job_records == true || (result.unhandled_error && GoodJob.preserve_job_records == :on_unhandled_error)
302
+ elsif GoodJob.preserve_job_records == true || result.retried? || (result.unhandled_error && GoodJob.preserve_job_records == :on_unhandled_error)
302
303
  self.finished_at = Time.current
303
304
  save!
304
305
  else
305
- destroy!
306
+ destroy_job
306
307
  end
307
308
 
308
309
  result
@@ -354,6 +355,14 @@ module GoodJob
354
355
  (finished_at || Time.zone.now) - performed_at if performed_at
355
356
  end
356
357
 
358
+ # Destroys this execution and all executions within the same job
359
+ def destroy_job
360
+ @_destroy_job = true
361
+ destroy!
362
+ ensure
363
+ @_destroy_job = false
364
+ end
365
+
357
366
  private
358
367
 
359
368
  def active_job_data
@@ -379,7 +388,7 @@ module GoodJob
379
388
  end
380
389
  handled_error ||= current_thread.error_on_retry || current_thread.error_on_discard
381
390
 
382
- ExecutionResult.new(value: value, handled_error: handled_error)
391
+ ExecutionResult.new(value: value, handled_error: handled_error, retried: current_thread.error_on_retry.present?)
383
392
  rescue StandardError => e
384
393
  ExecutionResult.new(value: nil, unhandled_error: e)
385
394
  end
@@ -8,14 +8,18 @@ module GoodJob
8
8
  attr_reader :handled_error
9
9
  # @return [Exception, nil]
10
10
  attr_reader :unhandled_error
11
+ # @return [Exception, nil]
12
+ attr_reader :retried
13
+ alias retried? retried
11
14
 
12
15
  # @param value [Object, nil]
13
16
  # @param handled_error [Exception, nil]
14
17
  # @param unhandled_error [Exception, nil]
15
- def initialize(value:, handled_error: nil, unhandled_error: nil)
18
+ def initialize(value:, handled_error: nil, unhandled_error: nil, retried: false)
16
19
  @value = value
17
20
  @handled_error = handled_error
18
21
  @unhandled_error = unhandled_error
22
+ @retried = retried
19
23
  end
20
24
  end
21
25
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
  module GoodJob
3
3
  # GoodJob gem version.
4
- VERSION = '3.4.7'
4
+ VERSION = '3.4.8'
5
5
  end
data/lib/good_job.rb CHANGED
@@ -57,7 +57,7 @@ module GoodJob
57
57
  # By default, GoodJob deletes job records after the job is completed successfully.
58
58
  # If you want to preserve jobs for latter inspection, set this to +true+.
59
59
  # If you want to preserve only jobs that finished with error for latter inspection, set this to +:on_unhandled_error+.
60
- # @return [Boolean, nil]
60
+ # @return [Boolean, Symbol, nil]
61
61
  mattr_accessor :preserve_job_records, default: true
62
62
 
63
63
  # @!attribute [rw] retry_on_unhandled_error
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: good_job
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.4.7
4
+ version: 3.4.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ben Sheldon
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-10-06 00:00:00.000000000 Z
11
+ date: 2022-10-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activejob