sidekiq-unique-jobs 7.0.0.beta11 → 7.0.0.beta12
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.
Potentially problematic release.
This version of sidekiq-unique-jobs might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/CHANGELOG.md +33 -0
- data/lib/sidekiq_unique_jobs/lua/lock.lua +4 -1
- data/lib/sidekiq_unique_jobs/lua/queue.lua +9 -5
- data/lib/sidekiq_unique_jobs/lua/unlock.lua +14 -19
- data/lib/sidekiq_unique_jobs/unlockable.rb +7 -0
- data/lib/sidekiq_unique_jobs/version.rb +1 -1
- metadata +22 -22
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5099888d19251ef2ee0edc4cf6918d060faaeb3abc949b13bfb959f55dfdbb86
|
4
|
+
data.tar.gz: 92114bd7aa7b7d2834e683aca81fdf58ad7e9b6b4b73717101eae406fcc80f4f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 42ecd0377617197773d37bd233191ec47bb4942338107f3251154b47d1148a60d963c722168dc4fd07af533886875383bc890376bbf4750ef39f2d94df66df90
|
7
|
+
data.tar.gz: 3b4805fb012f2b0a12633e63136b5a0759afd67556865d2ca358e3a05715d75aa543ab2f8c5aa940c433ba44c02188e96e9718f710f5fe4b8dca62bf73d2c1ea
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,38 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## [Unreleased](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/HEAD)
|
4
|
+
|
5
|
+
[Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v6.0.20...HEAD)
|
6
|
+
|
7
|
+
**Fixed bugs:**
|
8
|
+
|
9
|
+
- until\_expired is not setting TTL [\#468](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/468)
|
10
|
+
|
11
|
+
## [v6.0.20](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v6.0.20) (2020-03-22)
|
12
|
+
|
13
|
+
[Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v7.0.0.beta11...v6.0.20)
|
14
|
+
|
15
|
+
**Fixed bugs:**
|
16
|
+
|
17
|
+
- Deletion of digest doesn't work from admin UI [\#438](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/438)
|
18
|
+
|
19
|
+
**Closed issues:**
|
20
|
+
|
21
|
+
- Please keep some recent versions on rubygems.org [\#478](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/478)
|
22
|
+
- validate\_worker! throws error [\#466](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/466)
|
23
|
+
|
24
|
+
**Merged pull requests:**
|
25
|
+
|
26
|
+
- Allow v7 configuration to work [\#479](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/479) ([mhenrixon](https://github.com/mhenrixon))
|
27
|
+
|
28
|
+
## [v7.0.0.beta11](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v7.0.0.beta11) (2020-03-21)
|
29
|
+
|
30
|
+
[Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v7.0.0.beta10...v7.0.0.beta11)
|
31
|
+
|
32
|
+
**Fixed bugs:**
|
33
|
+
|
34
|
+
- Only configure RSpec when constant is defined [\#477](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/477) ([mhenrixon](https://github.com/mhenrixon))
|
35
|
+
|
3
36
|
## [v7.0.0.beta10](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v7.0.0.beta10) (2020-03-21)
|
4
37
|
|
5
38
|
[Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v6.0.19...v7.0.0.beta10)
|
@@ -8,6 +8,7 @@ local changelog = KEYS[6]
|
|
8
8
|
local digests = KEYS[7]
|
9
9
|
-------- END keys ---------
|
10
10
|
|
11
|
+
|
11
12
|
-------- BEGIN lock arguments ---------
|
12
13
|
local job_id = ARGV[1]
|
13
14
|
local pttl = tonumber(ARGV[2])
|
@@ -15,6 +16,7 @@ local lock_type = ARGV[3]
|
|
15
16
|
local limit = tonumber(ARGV[4])
|
16
17
|
-------- END lock arguments -----------
|
17
18
|
|
19
|
+
|
18
20
|
-------- BEGIN injected arguments --------
|
19
21
|
local current_time = tonumber(ARGV[5])
|
20
22
|
local debug_lua = ARGV[6] == "true"
|
@@ -23,6 +25,7 @@ local script_name = tostring(ARGV[8]) .. ".lua"
|
|
23
25
|
local redisversion = ARGV[9]
|
24
26
|
--------- END injected arguments ---------
|
25
27
|
|
28
|
+
|
26
29
|
-------- BEGIN local functions --------
|
27
30
|
<%= include_partial "shared/_common.lua" %>
|
28
31
|
---------- END local functions ----------
|
@@ -68,7 +71,7 @@ redis.call("LREM", primed, 1, job_id)
|
|
68
71
|
|
69
72
|
-- The Sidekiq client should only set pttl for until_expired
|
70
73
|
-- The Sidekiq server should set pttl for all other jobs
|
71
|
-
if
|
74
|
+
if pttl and pttl > 0 then
|
72
75
|
log_debug("PEXPIRE", digest, pttl)
|
73
76
|
redis.call("PEXPIRE", digest, pttl)
|
74
77
|
|
@@ -8,13 +8,15 @@ local changelog = KEYS[6]
|
|
8
8
|
local digests = KEYS[7]
|
9
9
|
-------- END keys ---------
|
10
10
|
|
11
|
+
|
11
12
|
-------- BEGIN lock arguments ---------
|
12
|
-
local job_id
|
13
|
-
local pttl
|
14
|
-
local lock_type
|
15
|
-
local limit
|
13
|
+
local job_id = ARGV[1] -- The job_id that was previously primed
|
14
|
+
local pttl = tonumber(ARGV[2])
|
15
|
+
local lock_type = ARGV[3]
|
16
|
+
local limit = tonumber(ARGV[4])
|
16
17
|
-------- END lock arguments -----------
|
17
18
|
|
19
|
+
|
18
20
|
-------- BEGIN injected arguments --------
|
19
21
|
local current_time = tonumber(ARGV[5])
|
20
22
|
local debug_lua = ARGV[6] == "true"
|
@@ -22,6 +24,7 @@ local max_history = tonumber(ARGV[7])
|
|
22
24
|
local script_name = tostring(ARGV[8]) .. ".lua"
|
23
25
|
--------- END injected arguments ---------
|
24
26
|
|
27
|
+
|
25
28
|
-------- BEGIN Variables --------
|
26
29
|
local queued_count = redis.call("LLEN", queued)
|
27
30
|
local locked_count = redis.call("HLEN", locked)
|
@@ -29,6 +32,7 @@ local within_limit = limit > locked_count
|
|
29
32
|
local limit_exceeded = not within_limit
|
30
33
|
-------- END Variables --------
|
31
34
|
|
35
|
+
|
32
36
|
-------- BEGIN local functions --------
|
33
37
|
<%= include_partial "shared/_common.lua" %>
|
34
38
|
---------- END local functions ----------
|
@@ -70,7 +74,7 @@ redis.call("LPUSH", queued, job_id)
|
|
70
74
|
|
71
75
|
-- The Sidekiq client should only set pttl for until_expired
|
72
76
|
-- The Sidekiq server should set pttl for all other jobs
|
73
|
-
if
|
77
|
+
if pttl and pttl > 0 then
|
74
78
|
log_debug("PEXPIRE", digest, pttl)
|
75
79
|
redis.call("PEXPIRE", digest, pttl)
|
76
80
|
log_debug("PEXPIRE", queued, pttl)
|
@@ -8,13 +8,15 @@ local changelog = KEYS[6]
|
|
8
8
|
local digests = KEYS[7]
|
9
9
|
-------- END keys ---------
|
10
10
|
|
11
|
+
|
11
12
|
-------- BEGIN lock arguments ---------
|
12
|
-
local job_id
|
13
|
-
local pttl
|
14
|
-
local
|
15
|
-
local limit
|
13
|
+
local job_id = ARGV[1]
|
14
|
+
local pttl = tonumber(ARGV[2])
|
15
|
+
local lock_type = ARGV[3]
|
16
|
+
local limit = tonumber(ARGV[4])
|
16
17
|
-------- END lock arguments -----------
|
17
18
|
|
19
|
+
|
18
20
|
-------- BEGIN injected arguments --------
|
19
21
|
local current_time = tonumber(ARGV[5])
|
20
22
|
local debug_lua = ARGV[6] == "true"
|
@@ -23,12 +25,14 @@ local script_name = tostring(ARGV[8]) .. ".lua"
|
|
23
25
|
local redisversion = ARGV[9]
|
24
26
|
--------- END injected arguments ---------
|
25
27
|
|
28
|
+
|
26
29
|
-------- BEGIN Variables --------
|
27
30
|
local queued_count = redis.call("LLEN", queued)
|
28
31
|
local primed_count = redis.call("LLEN", primed)
|
29
32
|
local locked_count = redis.call("HLEN", locked)
|
30
33
|
--------- END Variables ---------
|
31
34
|
|
35
|
+
|
32
36
|
-------- BEGIN local functions --------
|
33
37
|
<%= include_partial "shared/_common.lua" %>
|
34
38
|
---------- END local functions ----------
|
@@ -65,21 +69,12 @@ redis.call("LREM", primed, -1, job_id)
|
|
65
69
|
log_debug("ZREM", digests, digest)
|
66
70
|
redis.call("ZREM", digests, digest)
|
67
71
|
|
68
|
-
|
69
|
-
|
70
|
-
redis.call("PEXPIRE", digest, pttl)
|
71
|
-
|
72
|
-
log_debug("PEXPIRE", locked, pttl)
|
73
|
-
redis.call("PEXPIRE", locked, pttl)
|
74
|
-
|
75
|
-
log_debug("PEXPIRE", info, pttl)
|
76
|
-
redis.call("PEXPIRE", info, pttl)
|
77
|
-
else
|
78
|
-
local redis_version = toversion(redisversion)
|
79
|
-
local del_cmd = "DEL"
|
72
|
+
local redis_version = toversion(redisversion)
|
73
|
+
local del_cmd = "DEL"
|
80
74
|
|
81
|
-
|
75
|
+
if tonumber(redis_version["major"]) >= 4 then del_cmd = "UNLINK"; end
|
82
76
|
|
77
|
+
if lock_type ~= "until_expired" then
|
83
78
|
log_debug(del_cmd, digest, info)
|
84
79
|
redis.call(del_cmd, digest, info)
|
85
80
|
|
@@ -90,8 +85,8 @@ end
|
|
90
85
|
log_debug("LPUSH", queued, "1")
|
91
86
|
redis.call("LPUSH", queued, "1")
|
92
87
|
|
93
|
-
log_debug("PEXPIRE", queued,
|
94
|
-
redis.call("PEXPIRE", queued,
|
88
|
+
log_debug("PEXPIRE", queued, 5000)
|
89
|
+
redis.call("PEXPIRE", queued, 5000)
|
95
90
|
|
96
91
|
log("Unlocked")
|
97
92
|
log_debug("END unlock digest:", digest, "(job_id: " .. job_id ..")")
|
@@ -11,6 +11,13 @@ module SidekiqUniqueJobs
|
|
11
11
|
# Unlocks a job.
|
12
12
|
# @param [Hash] item a Sidekiq job hash
|
13
13
|
def unlock(item)
|
14
|
+
SidekiqUniqueJobs::Job.add_digest(item)
|
15
|
+
SidekiqUniqueJobs::Locksmith.new(item).unlock
|
16
|
+
end
|
17
|
+
|
18
|
+
# Unlocks a job.
|
19
|
+
# @param [Hash] item a Sidekiq job hash
|
20
|
+
def unlock!(item)
|
14
21
|
SidekiqUniqueJobs::Job.add_digest(item)
|
15
22
|
SidekiqUniqueJobs::Locksmith.new(item).unlock!
|
16
23
|
end
|
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.beta12
|
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-03-
|
11
|
+
date: 2020-03-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: brpoplpush-redis_script
|
@@ -176,72 +176,72 @@ dependencies:
|
|
176
176
|
name: timecop
|
177
177
|
requirement: !ruby/object:Gem::Requirement
|
178
178
|
requirements:
|
179
|
-
- - "
|
179
|
+
- - "~>"
|
180
180
|
- !ruby/object:Gem::Version
|
181
|
-
version: '0'
|
181
|
+
version: '0.9'
|
182
182
|
type: :development
|
183
183
|
prerelease: false
|
184
184
|
version_requirements: !ruby/object:Gem::Requirement
|
185
185
|
requirements:
|
186
|
-
- - "
|
186
|
+
- - "~>"
|
187
187
|
- !ruby/object:Gem::Version
|
188
|
-
version: '0'
|
188
|
+
version: '0.9'
|
189
189
|
- !ruby/object:Gem::Dependency
|
190
190
|
name: github-markup
|
191
191
|
requirement: !ruby/object:Gem::Requirement
|
192
192
|
requirements:
|
193
|
-
- - "
|
193
|
+
- - "~>"
|
194
194
|
- !ruby/object:Gem::Version
|
195
|
-
version: '0'
|
195
|
+
version: '3.0'
|
196
196
|
type: :development
|
197
197
|
prerelease: false
|
198
198
|
version_requirements: !ruby/object:Gem::Requirement
|
199
199
|
requirements:
|
200
|
-
- - "
|
200
|
+
- - "~>"
|
201
201
|
- !ruby/object:Gem::Version
|
202
|
-
version: '0'
|
202
|
+
version: '3.0'
|
203
203
|
- !ruby/object:Gem::Dependency
|
204
204
|
name: github_changelog_generator
|
205
205
|
requirement: !ruby/object:Gem::Requirement
|
206
206
|
requirements:
|
207
|
-
- - "
|
207
|
+
- - "~>"
|
208
208
|
- !ruby/object:Gem::Version
|
209
|
-
version: '
|
209
|
+
version: '1.14'
|
210
210
|
type: :development
|
211
211
|
prerelease: false
|
212
212
|
version_requirements: !ruby/object:Gem::Requirement
|
213
213
|
requirements:
|
214
|
-
- - "
|
214
|
+
- - "~>"
|
215
215
|
- !ruby/object:Gem::Version
|
216
|
-
version: '
|
216
|
+
version: '1.14'
|
217
217
|
- !ruby/object:Gem::Dependency
|
218
218
|
name: yard
|
219
219
|
requirement: !ruby/object:Gem::Requirement
|
220
220
|
requirements:
|
221
|
-
- - "
|
221
|
+
- - "~>"
|
222
222
|
- !ruby/object:Gem::Version
|
223
|
-
version:
|
223
|
+
version: 0.9.18
|
224
224
|
type: :development
|
225
225
|
prerelease: false
|
226
226
|
version_requirements: !ruby/object:Gem::Requirement
|
227
227
|
requirements:
|
228
|
-
- - "
|
228
|
+
- - "~>"
|
229
229
|
- !ruby/object:Gem::Version
|
230
|
-
version:
|
230
|
+
version: 0.9.18
|
231
231
|
- !ruby/object:Gem::Dependency
|
232
232
|
name: gem-release
|
233
233
|
requirement: !ruby/object:Gem::Requirement
|
234
234
|
requirements:
|
235
|
-
- - "
|
235
|
+
- - "~>"
|
236
236
|
- !ruby/object:Gem::Version
|
237
|
-
version: '0'
|
237
|
+
version: '2.0'
|
238
238
|
type: :development
|
239
239
|
prerelease: false
|
240
240
|
version_requirements: !ruby/object:Gem::Requirement
|
241
241
|
requirements:
|
242
|
-
- - "
|
242
|
+
- - "~>"
|
243
243
|
- !ruby/object:Gem::Version
|
244
|
-
version: '0'
|
244
|
+
version: '2.0'
|
245
245
|
description: |
|
246
246
|
Prevents simultaneous Sidekiq jobs with the same unique arguments to run.
|
247
247
|
Highly configurable to suite your specific needs.
|