sidekiq-unique-jobs 8.0.9 → 8.0.11
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 +4 -4
- data/CHANGELOG.md +39 -2
- data/README.md +56 -43
- data/lib/sidekiq_unique_jobs/cli.rb +2 -2
- data/lib/sidekiq_unique_jobs/config.rb +51 -32
- data/lib/sidekiq_unique_jobs/digests.rb +1 -1
- data/lib/sidekiq_unique_jobs/exceptions.rb +2 -2
- data/lib/sidekiq_unique_jobs/lock/base_lock.rb +1 -1
- data/lib/sidekiq_unique_jobs/lock/while_executing.rb +1 -1
- data/lib/sidekiq_unique_jobs/lock.rb +1 -1
- data/lib/sidekiq_unique_jobs/lock_args.rb +3 -3
- data/lib/sidekiq_unique_jobs/lock_digest.rb +6 -1
- data/lib/sidekiq_unique_jobs/lock_ttl.rb +28 -6
- data/lib/sidekiq_unique_jobs/locksmith.rb +13 -8
- data/lib/sidekiq_unique_jobs/logging.rb +2 -2
- data/lib/sidekiq_unique_jobs/lua/delete.lua +6 -5
- data/lib/sidekiq_unique_jobs/lua/lock.lua +16 -7
- data/lib/sidekiq_unique_jobs/lua/queue.lua +9 -8
- data/lib/sidekiq_unique_jobs/lua/shared/_delete_from_queue.lua +10 -10
- data/lib/sidekiq_unique_jobs/lua/shared/_delete_from_sorted_set.lua +20 -10
- data/lib/sidekiq_unique_jobs/lua/unlock.lua +10 -9
- data/lib/sidekiq_unique_jobs/on_conflict/reject.rb +10 -1
- data/lib/sidekiq_unique_jobs/on_conflict/replace.rb +3 -3
- data/lib/sidekiq_unique_jobs/on_conflict/reschedule.rb +1 -1
- data/lib/sidekiq_unique_jobs/on_conflict.rb +2 -2
- data/lib/sidekiq_unique_jobs/orphans/manager.rb +3 -3
- data/lib/sidekiq_unique_jobs/orphans/ruby_reaper.rb +4 -5
- data/lib/sidekiq_unique_jobs/reflections.rb +3 -3
- data/lib/sidekiq_unique_jobs/sidekiq_unique_ext.rb +2 -2
- data/lib/sidekiq_unique_jobs/sidekiq_unique_jobs.rb +4 -4
- data/lib/sidekiq_unique_jobs/sidekiq_worker_methods.rb +1 -1
- data/lib/sidekiq_unique_jobs/testing.rb +2 -2
- data/lib/sidekiq_unique_jobs/version.rb +1 -1
- data/lib/sidekiq_unique_jobs/web/helpers.rb +29 -1
- data/lib/sidekiq_unique_jobs/web.rb +38 -30
- metadata +5 -8
@@ -7,17 +7,15 @@ module SidekiqUniqueJobs
|
|
7
7
|
# Useful for deleting keys that for whatever reason wasn't deleted
|
8
8
|
# @author Mikael Henriksson <mikael@mhenrixon.com>
|
9
9
|
module Web
|
10
|
-
def self.registered(app)
|
11
|
-
app.helpers
|
12
|
-
include Web::Helpers
|
13
|
-
end
|
10
|
+
def self.registered(app)
|
11
|
+
app.helpers Web::Helpers
|
14
12
|
|
15
13
|
app.get "/changelogs" do
|
16
|
-
@filter = h(
|
14
|
+
@filter = h(safe_url_params("filter") || "*")
|
17
15
|
@filter = "*" if @filter == ""
|
18
|
-
@count = h(
|
19
|
-
@current_cursor = h(
|
20
|
-
@prev_cursor = h(
|
16
|
+
@count = h(safe_url_params("count") || 100).to_i
|
17
|
+
@current_cursor = h(safe_url_params("cursor")).to_i
|
18
|
+
@prev_cursor = h(safe_url_params("prev_cursor")).to_i
|
21
19
|
@total_size, @next_cursor, @changelogs = changelog.page(
|
22
20
|
cursor: @current_cursor,
|
23
21
|
pattern: @filter,
|
@@ -29,15 +27,15 @@ module SidekiqUniqueJobs
|
|
29
27
|
|
30
28
|
app.get "/changelogs/delete_all" do
|
31
29
|
changelog.clear
|
32
|
-
|
30
|
+
safe_redirect_to :changelogs
|
33
31
|
end
|
34
32
|
|
35
33
|
app.get "/locks" do
|
36
|
-
@filter = h(
|
34
|
+
@filter = h(safe_url_params("filter") || "*")
|
37
35
|
@filter = "*" if @filter == ""
|
38
|
-
@count = h(
|
39
|
-
@current_cursor = h(
|
40
|
-
@prev_cursor = h(
|
36
|
+
@count = h(safe_url_params("count") || 100).to_i
|
37
|
+
@current_cursor = h(safe_url_params("cursor")).to_i
|
38
|
+
@prev_cursor = h(safe_url_params("prev_cursor")).to_i
|
41
39
|
|
42
40
|
@total_size, @next_cursor, @locks = digests.page(
|
43
41
|
cursor: @current_cursor,
|
@@ -49,11 +47,11 @@ module SidekiqUniqueJobs
|
|
49
47
|
end
|
50
48
|
|
51
49
|
app.get "/expiring_locks" do
|
52
|
-
@filter = h(
|
50
|
+
@filter = h(safe_url_params("filter") || "*")
|
53
51
|
@filter = "*" if @filter == ""
|
54
|
-
@count = h(
|
55
|
-
@current_cursor = h(
|
56
|
-
@prev_cursor = h(
|
52
|
+
@count = h(safe_url_params("count") || 100).to_i
|
53
|
+
@current_cursor = h(safe_url_params("cursor")).to_i
|
54
|
+
@prev_cursor = h(safe_url_params("prev_cursor")).to_i
|
57
55
|
|
58
56
|
@total_size, @next_cursor, @locks = expiring_digests.page(
|
59
57
|
cursor: @current_cursor,
|
@@ -67,29 +65,29 @@ module SidekiqUniqueJobs
|
|
67
65
|
app.get "/locks/delete_all" do
|
68
66
|
digests.delete_by_pattern("*", count: digests.count)
|
69
67
|
expiring_digests.delete_by_pattern("*", count: digests.count)
|
70
|
-
|
68
|
+
safe_redirect_to :locks
|
71
69
|
end
|
72
70
|
|
73
71
|
app.get "/locks/:digest" do
|
74
|
-
@digest = h(
|
72
|
+
@digest = h(safe_route_params(:digest))
|
75
73
|
@lock = SidekiqUniqueJobs::Lock.new(@digest)
|
76
74
|
|
77
75
|
erb(unique_template(:lock))
|
78
76
|
end
|
79
77
|
|
80
78
|
app.get "/locks/:digest/delete" do
|
81
|
-
digests.delete_by_digest(h(
|
82
|
-
expiring_digests.delete_by_digest(h(
|
83
|
-
|
79
|
+
digests.delete_by_digest(h(safe_route_params(:digest)))
|
80
|
+
expiring_digests.delete_by_digest(h(safe_route_params(:digest)))
|
81
|
+
safe_redirect_to :locks
|
84
82
|
end
|
85
83
|
|
86
84
|
app.get "/locks/:digest/jobs/:job_id/delete" do
|
87
|
-
@digest = h(
|
88
|
-
@job_id = h(
|
85
|
+
@digest = h(safe_route_params(:digest))
|
86
|
+
@job_id = h(safe_route_params(:job_id))
|
89
87
|
@lock = SidekiqUniqueJobs::Lock.new(@digest)
|
90
88
|
@lock.unlock(@job_id)
|
91
89
|
|
92
|
-
|
90
|
+
safe_redirect_to "locks/#{@lock.key}"
|
93
91
|
end
|
94
92
|
end
|
95
93
|
end
|
@@ -99,11 +97,21 @@ begin
|
|
99
97
|
require "delegate" unless defined?(DelegateClass)
|
100
98
|
require "sidekiq/web" unless defined?(Sidekiq::Web)
|
101
99
|
|
102
|
-
Sidekiq::
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
100
|
+
if Sidekiq::MAJOR >= 8
|
101
|
+
Sidekiq::Web.configure do |config|
|
102
|
+
config.register_extension(
|
103
|
+
SidekiqUniqueJobs::Web,
|
104
|
+
name: "unique_jobs",
|
105
|
+
tab: ["Locks", "Expiring Locks", "Changelogs"],
|
106
|
+
index: %w[locks/ expiring_locks/ changelogs/],
|
107
|
+
)
|
108
|
+
end
|
109
|
+
else
|
110
|
+
Sidekiq::Web.register(SidekiqUniqueJobs::Web)
|
111
|
+
Sidekiq::Web.tabs["Locks"] = "locks"
|
112
|
+
Sidekiq::Web.tabs["Expiring Locks"] = "expiring_locks"
|
113
|
+
Sidekiq::Web.tabs["Changelogs"] = "changelogs"
|
114
|
+
end
|
107
115
|
rescue NameError, LoadError => ex
|
108
116
|
SidekiqUniqueJobs.logger.error(ex)
|
109
117
|
end
|
metadata
CHANGED
@@ -1,14 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sidekiq-unique-jobs
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 8.0.
|
4
|
+
version: 8.0.11
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mikael Henriksson
|
8
|
-
autorequire:
|
9
8
|
bindir: bin
|
10
9
|
cert_chain: []
|
11
|
-
date:
|
10
|
+
date: 2025-05-25 00:00:00.000000000 Z
|
12
11
|
dependencies:
|
13
12
|
- !ruby/object:Gem::Dependency
|
14
13
|
name: concurrent-ruby
|
@@ -39,7 +38,7 @@ dependencies:
|
|
39
38
|
version: 7.0.0
|
40
39
|
- - "<"
|
41
40
|
- !ruby/object:Gem::Version
|
42
|
-
version:
|
41
|
+
version: 9.0.0
|
43
42
|
type: :runtime
|
44
43
|
prerelease: false
|
45
44
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -49,7 +48,7 @@ dependencies:
|
|
49
48
|
version: 7.0.0
|
50
49
|
- - "<"
|
51
50
|
- !ruby/object:Gem::Version
|
52
|
-
version:
|
51
|
+
version: 9.0.0
|
53
52
|
- !ruby/object:Gem::Dependency
|
54
53
|
name: thor
|
55
54
|
requirement: !ruby/object:Gem::Requirement
|
@@ -208,7 +207,6 @@ licenses:
|
|
208
207
|
- MIT
|
209
208
|
metadata:
|
210
209
|
rubygems_mfa_required: 'true'
|
211
|
-
post_install_message:
|
212
210
|
rdoc_options: []
|
213
211
|
require_paths:
|
214
212
|
- lib
|
@@ -223,8 +221,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
223
221
|
- !ruby/object:Gem::Version
|
224
222
|
version: '0'
|
225
223
|
requirements: []
|
226
|
-
rubygems_version: 3.
|
227
|
-
signing_key:
|
224
|
+
rubygems_version: 3.6.2
|
228
225
|
specification_version: 4
|
229
226
|
summary: Sidekiq middleware that prevents duplicates jobs
|
230
227
|
test_files: []
|