sidekiq-unique-jobs 7.0.0.beta21 → 7.0.0.beta26

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of sidekiq-unique-jobs might be problematic. Click here for more details.

Files changed (80) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +99 -3
  3. data/README.md +48 -23
  4. data/lib/sidekiq_unique_jobs.rb +0 -1
  5. data/lib/sidekiq_unique_jobs/batch_delete.rb +1 -1
  6. data/lib/sidekiq_unique_jobs/changelog.rb +1 -1
  7. data/lib/sidekiq_unique_jobs/cli.rb +4 -2
  8. data/lib/sidekiq_unique_jobs/connection.rb +1 -1
  9. data/lib/sidekiq_unique_jobs/constants.rb +2 -1
  10. data/lib/sidekiq_unique_jobs/digests.rb +1 -1
  11. data/lib/sidekiq_unique_jobs/exceptions.rb +9 -9
  12. data/lib/sidekiq_unique_jobs/job.rb +5 -5
  13. data/lib/sidekiq_unique_jobs/json.rb +1 -1
  14. data/lib/sidekiq_unique_jobs/key.rb +1 -1
  15. data/lib/sidekiq_unique_jobs/lock.rb +1 -1
  16. data/lib/sidekiq_unique_jobs/lock/base_lock.rb +1 -1
  17. data/lib/sidekiq_unique_jobs/lock/client_validator.rb +1 -1
  18. data/lib/sidekiq_unique_jobs/lock/server_validator.rb +1 -1
  19. data/lib/sidekiq_unique_jobs/lock/until_and_while_executing.rb +1 -1
  20. data/lib/sidekiq_unique_jobs/lock/until_executed.rb +1 -1
  21. data/lib/sidekiq_unique_jobs/lock/until_executing.rb +1 -1
  22. data/lib/sidekiq_unique_jobs/lock/until_expired.rb +1 -1
  23. data/lib/sidekiq_unique_jobs/lock/validator.rb +1 -1
  24. data/lib/sidekiq_unique_jobs/lock/while_executing.rb +1 -1
  25. data/lib/sidekiq_unique_jobs/lock/while_executing_reject.rb +1 -1
  26. data/lib/sidekiq_unique_jobs/lock_args.rb +2 -2
  27. data/lib/sidekiq_unique_jobs/lock_config.rb +5 -5
  28. data/lib/sidekiq_unique_jobs/lock_digest.rb +2 -2
  29. data/lib/sidekiq_unique_jobs/lock_info.rb +1 -1
  30. data/lib/sidekiq_unique_jobs/lock_timeout.rb +1 -1
  31. data/lib/sidekiq_unique_jobs/lock_ttl.rb +1 -1
  32. data/lib/sidekiq_unique_jobs/locksmith.rb +1 -1
  33. data/lib/sidekiq_unique_jobs/logging.rb +3 -3
  34. data/lib/sidekiq_unique_jobs/logging/middleware_context.rb +2 -2
  35. data/lib/sidekiq_unique_jobs/lua/reap_orphans.lua +1 -5
  36. data/lib/sidekiq_unique_jobs/lua/shared/_delete_from_queue.lua +3 -0
  37. data/lib/sidekiq_unique_jobs/lua/shared/_find_digest_in_process_set.lua +16 -5
  38. data/lib/sidekiq_unique_jobs/middleware.rb +16 -4
  39. data/lib/sidekiq_unique_jobs/middleware/client.rb +5 -5
  40. data/lib/sidekiq_unique_jobs/middleware/server.rb +3 -3
  41. data/lib/sidekiq_unique_jobs/normalizer.rb +1 -1
  42. data/lib/sidekiq_unique_jobs/on_conflict.rb +1 -1
  43. data/lib/sidekiq_unique_jobs/on_conflict/log.rb +1 -1
  44. data/lib/sidekiq_unique_jobs/on_conflict/null_strategy.rb +1 -1
  45. data/lib/sidekiq_unique_jobs/on_conflict/raise.rb +1 -1
  46. data/lib/sidekiq_unique_jobs/on_conflict/reject.rb +2 -2
  47. data/lib/sidekiq_unique_jobs/on_conflict/replace.rb +1 -1
  48. data/lib/sidekiq_unique_jobs/on_conflict/reschedule.rb +1 -1
  49. data/lib/sidekiq_unique_jobs/on_conflict/strategy.rb +1 -1
  50. data/lib/sidekiq_unique_jobs/options_with_fallback.rb +1 -1
  51. data/lib/sidekiq_unique_jobs/orphans/lua_reaper.rb +1 -1
  52. data/lib/sidekiq_unique_jobs/orphans/manager.rb +35 -4
  53. data/lib/sidekiq_unique_jobs/orphans/null_reaper.rb +24 -0
  54. data/lib/sidekiq_unique_jobs/orphans/observer.rb +2 -2
  55. data/lib/sidekiq_unique_jobs/orphans/reaper.rb +5 -1
  56. data/lib/sidekiq_unique_jobs/orphans/ruby_reaper.rb +18 -11
  57. data/lib/sidekiq_unique_jobs/profiler.rb +1 -1
  58. data/lib/sidekiq_unique_jobs/redis.rb +1 -1
  59. data/lib/sidekiq_unique_jobs/redis/entity.rb +1 -1
  60. data/lib/sidekiq_unique_jobs/redis/hash.rb +1 -1
  61. data/lib/sidekiq_unique_jobs/redis/list.rb +1 -1
  62. data/lib/sidekiq_unique_jobs/redis/set.rb +1 -1
  63. data/lib/sidekiq_unique_jobs/redis/sorted_set.rb +1 -1
  64. data/lib/sidekiq_unique_jobs/redis/string.rb +1 -1
  65. data/lib/sidekiq_unique_jobs/rspec/matchers.rb +2 -2
  66. data/lib/sidekiq_unique_jobs/rspec/matchers/have_valid_sidekiq_options.rb +2 -2
  67. data/lib/sidekiq_unique_jobs/script.rb +1 -1
  68. data/lib/sidekiq_unique_jobs/script/caller.rb +2 -2
  69. data/lib/sidekiq_unique_jobs/sidekiq_unique_ext.rb +5 -5
  70. data/lib/sidekiq_unique_jobs/sidekiq_unique_jobs.rb +1 -1
  71. data/lib/sidekiq_unique_jobs/sidekiq_worker_methods.rb +8 -2
  72. data/lib/sidekiq_unique_jobs/timing.rb +1 -1
  73. data/lib/sidekiq_unique_jobs/unlockable.rb +1 -1
  74. data/lib/sidekiq_unique_jobs/update_version.rb +1 -1
  75. data/lib/sidekiq_unique_jobs/upgrade_locks.rb +1 -1
  76. data/lib/sidekiq_unique_jobs/version.rb +1 -1
  77. data/lib/sidekiq_unique_jobs/version_check.rb +23 -4
  78. data/lib/sidekiq_unique_jobs/web.rb +1 -1
  79. data/lib/sidekiq_unique_jobs/web/helpers.rb +1 -1
  80. metadata +6 -5
@@ -3,12 +3,12 @@
3
3
  module SidekiqUniqueJobs
4
4
  # Interface to dealing with .lua files
5
5
  #
6
- # @author Mikael Henriksson <mikael@zoolutions.se>
6
+ # @author Mikael Henriksson <mikael@mhenrixon.com>
7
7
  module Script
8
8
  #
9
9
  # Module Caller provides the convenience method #call_script
10
10
  #
11
- # @author Mikael Henriksson <mikael@zoolutions.se>
11
+ # @author Mikael Henriksson <mikael@mhenrixon.com>
12
12
  #
13
13
  module Caller
14
14
  module_function
@@ -11,7 +11,7 @@ module Sidekiq
11
11
  #
12
12
  # Provides extensions for unlocking jobs that are removed and deleted
13
13
  #
14
- # @author Mikael Henriksson <mikael@zoolutions.se>
14
+ # @author Mikael Henriksson <mikael@mhenrixon.com>
15
15
  #
16
16
  module UniqueExtension
17
17
  #
@@ -48,7 +48,7 @@ module Sidekiq
48
48
  #
49
49
  # Provides extensions for unlocking jobs that are removed and deleted
50
50
  #
51
- # @author Mikael Henriksson <mikael@zoolutions.se>
51
+ # @author Mikael Henriksson <mikael@mhenrixon.com>
52
52
  #
53
53
  module UniqueExtension
54
54
  #
@@ -73,7 +73,7 @@ module Sidekiq
73
73
  #
74
74
  # Provides extensions for unlocking jobs that are removed and deleted
75
75
  #
76
- # @author Mikael Henriksson <mikael@zoolutions.se>
76
+ # @author Mikael Henriksson <mikael@mhenrixon.com>
77
77
  #
78
78
  module UniqueExtension
79
79
  #
@@ -93,7 +93,7 @@ module Sidekiq
93
93
  #
94
94
  # Provides extensions for unlocking jobs that are removed and deleted
95
95
  #
96
- # @author Mikael Henriksson <mikael@zoolutions.se>
96
+ # @author Mikael Henriksson <mikael@mhenrixon.com>
97
97
  #
98
98
  module UniqueExtension
99
99
  #
@@ -113,7 +113,7 @@ module Sidekiq
113
113
  #
114
114
  # Provides extensions for unlocking jobs that are removed and deleted
115
115
  #
116
- # @author Mikael Henriksson <mikael@zoolutions.se>
116
+ # @author Mikael Henriksson <mikael@mhenrixon.com>
117
117
  #
118
118
  module UniqueExtension
119
119
  #
@@ -3,7 +3,7 @@
3
3
  #
4
4
  # Contains configuration and utility methods that belongs top level
5
5
  #
6
- # @author Mikael Henriksson <mikael@zoolutions.se>
6
+ # @author Mikael Henriksson <mikael@mhenrixon.com>
7
7
  module SidekiqUniqueJobs
8
8
  include SidekiqUniqueJobs::Connection
9
9
  extend SidekiqUniqueJobs::JSON
@@ -3,7 +3,7 @@
3
3
  module SidekiqUniqueJobs
4
4
  # Module with convenience methods for the Sidekiq::Worker class
5
5
  #
6
- # @author Mikael Henriksson <mikael@zoolutions.se>
6
+ # @author Mikael Henriksson <mikael@mhenrixon.com>
7
7
  module SidekiqWorkerMethods
8
8
  # Avoids duplicating worker_class.respond_to? in multiple places
9
9
  # @return [true, false]
@@ -35,7 +35,13 @@ module SidekiqUniqueJobs
35
35
  # The hook to call after a successful unlock
36
36
  # @return [Proc]
37
37
  def after_unlock_hook
38
- -> { worker_class.after_unlock if worker_method_defined?(:after_unlock) }
38
+ lambda do
39
+ if @worker_class.respond_to?(:after_unlock)
40
+ @worker_class.after_unlock # instance method in sidekiq v6
41
+ elsif worker_class.respond_to?(:after_unlock)
42
+ worker_class.after_unlock # class method regardless of sidekiq version
43
+ end
44
+ end
39
45
  end
40
46
 
41
47
  # Attempt to constantize a string worker_class argument, always
@@ -3,7 +3,7 @@
3
3
  module SidekiqUniqueJobs
4
4
  # Handles timing of things
5
5
  #
6
- # @author Mikael Henriksson <mikael@zoolutions.se>
6
+ # @author Mikael Henriksson <mikael@mhenrixon.com>
7
7
  module Timing
8
8
  module_function
9
9
 
@@ -4,7 +4,7 @@ module SidekiqUniqueJobs
4
4
  # Utility module to help manage unique keys in redis.
5
5
  # Useful for deleting keys that for whatever reason wasn't deleted
6
6
  #
7
- # @author Mikael Henriksson <mikael@zoolutions.se>
7
+ # @author Mikael Henriksson <mikael@mhenrixon.com>
8
8
  module Unlockable
9
9
  module_function
10
10
 
@@ -4,7 +4,7 @@ module SidekiqUniqueJobs
4
4
  #
5
5
  # Class UpdateVersion sets the right version in redis
6
6
  #
7
- # @author Mikael Henriksson <mikael@zoolutions.se>
7
+ # @author Mikael Henriksson <mikael@mhenrixon.com>
8
8
  #
9
9
  class UpdateVersion
10
10
  #
@@ -4,7 +4,7 @@ module SidekiqUniqueJobs
4
4
  #
5
5
  # Upgrades locks between gem version upgrades
6
6
  #
7
- # @author Mikael Henriksson <mikael@zoolutions.se>
7
+ # @author Mikael Henriksson <mikael@mhenrixon.com>
8
8
  #
9
9
  class UpgradeLocks # rubocop:disable Metrics/ClassLength
10
10
  #
@@ -3,5 +3,5 @@
3
3
  module SidekiqUniqueJobs
4
4
  #
5
5
  # @return [String] the current SidekiqUniqueJobs version
6
- VERSION = "7.0.0.beta21"
6
+ VERSION = "7.0.0.beta26"
7
7
  end
@@ -4,13 +4,13 @@ module SidekiqUniqueJobs
4
4
  #
5
5
  # Handles checking if a version is compliant with given constraint
6
6
  #
7
- # @author Mikael Henriksson <mikael@zoolutions.se>
7
+ # @author Mikael Henriksson <mikael@mhenrixon.com>
8
8
  #
9
9
  class VersionCheck
10
- PATTERN = /(?<operator1>[<>=]+)?\s?(?<version1>(\d+.?)+)(\s+&&\s+)?(?<operator2>[<>=]+)?\s?(?<version2>(\d+.?)+)?/m.freeze # rubocop:disable Layout/LineLength
10
+ PATTERN = /(?<operator1>[<>=]+)?\s?(?<version1>(\d+.?)+)(\s+&&\s+)?(?<operator2>[<>=]+)?\s?(?<version2>(\d+.?)+)?/m.freeze # rubocop:disable Layout/LineLength, Lint/MixedRegexpCaptureTypes
11
11
 
12
12
  #
13
- # Checks if a version is consrtaint is satisfied
13
+ # Checks if a version is constraint is satisfied
14
14
  #
15
15
  # @example A satisfied constraint
16
16
  # VersionCheck.satisfied?("5.0.0", ">= 4.0.0") #=> true
@@ -22,12 +22,31 @@ module SidekiqUniqueJobs
22
22
  # @param [String] version a version string `5.0.0`
23
23
  # @param [String] constraint a version constraint `>= 5.0.0 <= 5.1.1`
24
24
  #
25
- # @return [<type>] <description>
25
+ # @return [true, false] <description>
26
26
  #
27
27
  def self.satisfied?(version, constraint)
28
28
  new(version, constraint).satisfied?
29
29
  end
30
30
 
31
+ #
32
+ # Checks if a version is constraint is unfulfilled
33
+ #
34
+ # @example A satisfied constraint
35
+ # VersionCheck.unfulfilled?("5.0.0", ">= 4.0.0") #=> false
36
+ #
37
+ # @example An unfulfilled constraint
38
+ # VersionCheck.unfulfilled?("5.0.0", "<= 4.0.0") #=> true
39
+ #
40
+ #
41
+ # @param [String] version a version string `5.0.0`
42
+ # @param [String] constraint a version constraint `>= 5.0.0 <= 5.1.1`
43
+ #
44
+ # @return [true, false] <description>
45
+ #
46
+ def self.unfulfilled?(version, constraint)
47
+ !satisfied?(version, constraint)
48
+ end
49
+
31
50
  #
32
51
  # @!attribute [r] version
33
52
  # @return [String] a version string `5.0.0`
@@ -12,7 +12,7 @@ module SidekiqUniqueJobs
12
12
  # Utility module to help manage unique keys in redis.
13
13
  # Useful for deleting keys that for whatever reason wasn't deleted
14
14
  #
15
- # @author Mikael Henriksson <mikael@zoolutions.se>
15
+ # @author Mikael Henriksson <mikael@mhenrixon.com>
16
16
  module Web
17
17
  def self.registered(app) # rubocop:disable Metrics/MethodLength, Metrics/AbcSize
18
18
  app.helpers do
@@ -5,7 +5,7 @@ module SidekiqUniqueJobs
5
5
  #
6
6
  # Provides view helpers for the Sidekiq::Web extension
7
7
  #
8
- # @author Mikael Henriksson <mikael@zoolutions.se>
8
+ # @author Mikael Henriksson <mikael@mhenrixon.com>
9
9
  #
10
10
  module Helpers
11
11
  #
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sidekiq-unique-jobs
3
3
  version: !ruby/object:Gem::Version
4
- version: 7.0.0.beta21
4
+ version: 7.0.0.beta26
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mikael Henriksson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-06-12 00:00:00.000000000 Z
11
+ date: 2020-10-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: brpoplpush-redis_script
@@ -94,7 +94,7 @@ description: |
94
94
  Prevents simultaneous Sidekiq jobs with the same unique arguments to run.
95
95
  Highly configurable to suite your specific needs.
96
96
  email:
97
- - mikael@zoolutions.se
97
+ - mikael@mhenrixon.com
98
98
  executables:
99
99
  - uniquejobs
100
100
  extensions: []
@@ -173,6 +173,7 @@ files:
173
173
  - lib/sidekiq_unique_jobs/options_with_fallback.rb
174
174
  - lib/sidekiq_unique_jobs/orphans/lua_reaper.rb
175
175
  - lib/sidekiq_unique_jobs/orphans/manager.rb
176
+ - lib/sidekiq_unique_jobs/orphans/null_reaper.rb
176
177
  - lib/sidekiq_unique_jobs/orphans/observer.rb
177
178
  - lib/sidekiq_unique_jobs/orphans/reaper.rb
178
179
  - lib/sidekiq_unique_jobs/orphans/ruby_reaper.rb
@@ -212,7 +213,7 @@ metadata:
212
213
  bug_tracker_uri: https://github.com/mhenrixon/sidekiq-unique-jobs/issues
213
214
  documentation_uri: https://mhenrixon.github.io/sidekiq-unique-jobs
214
215
  source_code_uri: https://github.com/mhenrixon/sidekiq-unique-jobs
215
- changelog_uri: https://github.com/mhenrixon/sidekiq-unique-jobs/CHANGELOG.md
216
+ changelog_uri: https://github.com/mhenrixon/sidekiq-unique-jobs/blob/master/CHANGELOG.md
216
217
  post_install_message: |
217
218
  This version deprecated the configuration options:
218
219
  - default_lock_ttl
@@ -239,7 +240,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
239
240
  - !ruby/object:Gem::Version
240
241
  version: 1.3.1
241
242
  requirements: []
242
- rubygems_version: 3.1.4
243
+ rubygems_version: 3.1.2
243
244
  signing_key:
244
245
  specification_version: 4
245
246
  summary: Sidekiq middleware that prevents duplicates jobs