sidekiq-unique-jobs 7.0.0.beta23 → 7.0.0.beta28
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +95 -6
- data/README.md +60 -35
- data/lib/sidekiq_unique_jobs.rb +0 -1
- data/lib/sidekiq_unique_jobs/batch_delete.rb +1 -1
- data/lib/sidekiq_unique_jobs/changelog.rb +1 -1
- data/lib/sidekiq_unique_jobs/cli.rb +4 -2
- data/lib/sidekiq_unique_jobs/config.rb +2 -2
- data/lib/sidekiq_unique_jobs/connection.rb +1 -1
- data/lib/sidekiq_unique_jobs/constants.rb +5 -1
- data/lib/sidekiq_unique_jobs/digests.rb +1 -1
- data/lib/sidekiq_unique_jobs/exceptions.rb +9 -9
- data/lib/sidekiq_unique_jobs/job.rb +5 -5
- data/lib/sidekiq_unique_jobs/json.rb +1 -1
- data/lib/sidekiq_unique_jobs/key.rb +1 -1
- data/lib/sidekiq_unique_jobs/lock.rb +1 -1
- data/lib/sidekiq_unique_jobs/lock/base_lock.rb +1 -1
- data/lib/sidekiq_unique_jobs/lock/client_validator.rb +1 -1
- data/lib/sidekiq_unique_jobs/lock/server_validator.rb +1 -1
- data/lib/sidekiq_unique_jobs/lock/until_and_while_executing.rb +1 -1
- data/lib/sidekiq_unique_jobs/lock/until_executed.rb +1 -1
- data/lib/sidekiq_unique_jobs/lock/until_executing.rb +1 -1
- data/lib/sidekiq_unique_jobs/lock/until_expired.rb +1 -1
- data/lib/sidekiq_unique_jobs/lock/validator.rb +3 -2
- data/lib/sidekiq_unique_jobs/lock/while_executing.rb +2 -2
- data/lib/sidekiq_unique_jobs/lock/while_executing_reject.rb +1 -1
- data/lib/sidekiq_unique_jobs/lock_args.rb +4 -4
- data/lib/sidekiq_unique_jobs/lock_config.rb +5 -5
- data/lib/sidekiq_unique_jobs/lock_digest.rb +2 -2
- data/lib/sidekiq_unique_jobs/lock_info.rb +1 -1
- data/lib/sidekiq_unique_jobs/lock_timeout.rb +1 -1
- data/lib/sidekiq_unique_jobs/lock_ttl.rb +1 -1
- data/lib/sidekiq_unique_jobs/locksmith.rb +2 -2
- data/lib/sidekiq_unique_jobs/logging.rb +3 -3
- data/lib/sidekiq_unique_jobs/logging/middleware_context.rb +2 -2
- data/lib/sidekiq_unique_jobs/lua/delete_by_digest.lua +1 -1
- data/lib/sidekiq_unique_jobs/middleware.rb +16 -4
- data/lib/sidekiq_unique_jobs/middleware/client.rb +5 -5
- data/lib/sidekiq_unique_jobs/middleware/server.rb +3 -3
- data/lib/sidekiq_unique_jobs/normalizer.rb +1 -1
- data/lib/sidekiq_unique_jobs/on_conflict.rb +1 -1
- data/lib/sidekiq_unique_jobs/on_conflict/log.rb +1 -1
- data/lib/sidekiq_unique_jobs/on_conflict/null_strategy.rb +1 -1
- data/lib/sidekiq_unique_jobs/on_conflict/raise.rb +1 -1
- data/lib/sidekiq_unique_jobs/on_conflict/reject.rb +1 -1
- data/lib/sidekiq_unique_jobs/on_conflict/replace.rb +1 -1
- data/lib/sidekiq_unique_jobs/on_conflict/reschedule.rb +1 -1
- data/lib/sidekiq_unique_jobs/on_conflict/strategy.rb +1 -1
- data/lib/sidekiq_unique_jobs/options_with_fallback.rb +1 -1
- data/lib/sidekiq_unique_jobs/orphans/lua_reaper.rb +1 -1
- data/lib/sidekiq_unique_jobs/orphans/manager.rb +35 -4
- data/lib/sidekiq_unique_jobs/orphans/null_reaper.rb +24 -0
- data/lib/sidekiq_unique_jobs/orphans/observer.rb +2 -2
- data/lib/sidekiq_unique_jobs/orphans/reaper.rb +5 -1
- data/lib/sidekiq_unique_jobs/orphans/ruby_reaper.rb +6 -6
- data/lib/sidekiq_unique_jobs/profiler.rb +1 -1
- data/lib/sidekiq_unique_jobs/redis.rb +1 -1
- data/lib/sidekiq_unique_jobs/redis/entity.rb +1 -1
- data/lib/sidekiq_unique_jobs/redis/hash.rb +1 -1
- data/lib/sidekiq_unique_jobs/redis/list.rb +1 -1
- data/lib/sidekiq_unique_jobs/redis/set.rb +1 -1
- data/lib/sidekiq_unique_jobs/redis/sorted_set.rb +1 -1
- data/lib/sidekiq_unique_jobs/redis/string.rb +1 -1
- data/lib/sidekiq_unique_jobs/rspec/matchers.rb +2 -2
- data/lib/sidekiq_unique_jobs/rspec/matchers/have_valid_sidekiq_options.rb +2 -2
- data/lib/sidekiq_unique_jobs/script.rb +1 -1
- data/lib/sidekiq_unique_jobs/script/caller.rb +2 -2
- data/lib/sidekiq_unique_jobs/sidekiq_unique_ext.rb +5 -5
- data/lib/sidekiq_unique_jobs/sidekiq_unique_jobs.rb +2 -2
- data/lib/sidekiq_unique_jobs/sidekiq_worker_methods.rb +9 -3
- data/lib/sidekiq_unique_jobs/testing.rb +2 -1
- data/lib/sidekiq_unique_jobs/timing.rb +1 -1
- data/lib/sidekiq_unique_jobs/unlockable.rb +1 -1
- data/lib/sidekiq_unique_jobs/update_version.rb +1 -1
- data/lib/sidekiq_unique_jobs/upgrade_locks.rb +1 -1
- data/lib/sidekiq_unique_jobs/version.rb +1 -1
- data/lib/sidekiq_unique_jobs/version_check.rb +23 -4
- data/lib/sidekiq_unique_jobs/web.rb +1 -1
- data/lib/sidekiq_unique_jobs/web/helpers.rb +1 -1
- metadata +19 -6
@@ -4,13 +4,13 @@ module SidekiqUniqueJobs
|
|
4
4
|
#
|
5
5
|
# We all know what the hell RSpec is no?
|
6
6
|
#
|
7
|
-
# @author Mikael Henriksson <mikael@
|
7
|
+
# @author Mikael Henriksson <mikael@mhenrixon.com>
|
8
8
|
#
|
9
9
|
module RSpec
|
10
10
|
#
|
11
11
|
# Module Matchers provides RSpec matcher for your workers
|
12
12
|
#
|
13
|
-
# @author Mikael Henriksson <mikael@
|
13
|
+
# @author Mikael Henriksson <mikael@mhenrixon.com>
|
14
14
|
#
|
15
15
|
module Matchers
|
16
16
|
end
|
@@ -5,13 +5,13 @@ module SidekiqUniqueJobs
|
|
5
5
|
#
|
6
6
|
# Module Matchers provides RSpec matcher for your workers
|
7
7
|
#
|
8
|
-
# @author Mikael Henriksson <mikael@
|
8
|
+
# @author Mikael Henriksson <mikael@mhenrixon.com>
|
9
9
|
#
|
10
10
|
module Matchers
|
11
11
|
#
|
12
12
|
# Class HaveValidSidekiqOptions validates the unique/lock configuration for a worker.
|
13
13
|
#
|
14
|
-
# @author Mikael Henriksson <mikael@
|
14
|
+
# @author Mikael Henriksson <mikael@mhenrixon.com>
|
15
15
|
#
|
16
16
|
class HaveValidSidekiqOptions
|
17
17
|
attr_reader :worker, :lock_config, :sidekiq_options
|
@@ -3,12 +3,12 @@
|
|
3
3
|
module SidekiqUniqueJobs
|
4
4
|
# Interface to dealing with .lua files
|
5
5
|
#
|
6
|
-
# @author Mikael Henriksson <mikael@
|
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@
|
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@
|
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@
|
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@
|
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@
|
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@
|
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@
|
6
|
+
# @author Mikael Henriksson <mikael@mhenrixon.com>
|
7
7
|
module SidekiqUniqueJobs
|
8
8
|
include SidekiqUniqueJobs::Connection
|
9
9
|
extend SidekiqUniqueJobs::JSON
|
@@ -168,7 +168,7 @@ module SidekiqUniqueJobs
|
|
168
168
|
# @option options [Integer] :lock_timeout (default is 0)
|
169
169
|
# @option options [Integer] :lock_ttl (default is 0)
|
170
170
|
# @option options [true,false] :enabled (default is true)
|
171
|
-
# @option options [String] :
|
171
|
+
# @option options [String] :lock_prefix (default is 'uniquejobs')
|
172
172
|
# @option options [Logger] :logger (default is Sidekiq.logger)
|
173
173
|
# @yield control to the caller when given block
|
174
174
|
def configure(options = {})
|
@@ -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@
|
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
|
-
|
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
|
@@ -44,7 +50,7 @@ module SidekiqUniqueJobs
|
|
44
50
|
# @return [Sidekiq::Worker]
|
45
51
|
def worker_class_constantize(klazz = @worker_class)
|
46
52
|
return klazz.class if klazz.is_a?(Sidekiq::Worker) # sidekiq v6.x
|
47
|
-
return klazz
|
53
|
+
return klazz unless klazz.is_a?(String)
|
48
54
|
|
49
55
|
Object.const_get(klazz)
|
50
56
|
rescue NameError => ex
|
@@ -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@
|
7
|
+
# @author Mikael Henriksson <mikael@mhenrixon.com>
|
8
8
|
module Unlockable
|
9
9
|
module_function
|
10
10
|
|
@@ -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@
|
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
|
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 [
|
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@
|
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
|
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.
|
4
|
+
version: 7.0.0.beta28
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mikael Henriksson
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-01-07 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@
|
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,9 +213,21 @@ 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
|
+
IMPORTANT!
|
219
|
+
|
220
|
+
This version deprecated the following sidekiq_options
|
221
|
+
|
222
|
+
- sidekiq_options lock_args: :method_name
|
223
|
+
|
224
|
+
It is now configured with:
|
225
|
+
|
226
|
+
- sidekiq_options lock_args_method: :method_name
|
227
|
+
|
228
|
+
This is also true for `Sidekiq.default_worker_options`
|
229
|
+
|
230
|
+
We also deprecated the global configuration options:
|
218
231
|
- default_lock_ttl
|
219
232
|
- default_lock_ttl=
|
220
233
|
- default_lock_timeout
|
@@ -239,7 +252,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
239
252
|
- !ruby/object:Gem::Version
|
240
253
|
version: 1.3.1
|
241
254
|
requirements: []
|
242
|
-
rubygems_version: 3.
|
255
|
+
rubygems_version: 3.2.4
|
243
256
|
signing_key:
|
244
257
|
specification_version: 4
|
245
258
|
summary: Sidekiq middleware that prevents duplicates jobs
|