sidekiq-unique-jobs 6.0.0.rc2 → 6.0.0.rc3
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/.dockerignore +4 -4
- data/.reek +5 -1
- data/examples/until_and_while_executing_job.rb +4 -3
- data/lib/sidekiq_unique_jobs/lock/until_and_while_executing.rb +1 -1
- data/lib/sidekiq_unique_jobs/lock/until_executed.rb +1 -0
- data/lib/sidekiq_unique_jobs/lock/until_executing.rb +1 -1
- data/lib/sidekiq_unique_jobs/lock/while_executing.rb +4 -4
- data/lib/sidekiq_unique_jobs/lock/while_executing_reject.rb +2 -0
- data/lib/sidekiq_unique_jobs/locksmith.rb +3 -1
- data/lib/sidekiq_unique_jobs/sidekiq_unique_ext.rb +5 -5
- data/lib/sidekiq_unique_jobs/timeout.rb +0 -7
- data/lib/sidekiq_unique_jobs/version.rb +1 -1
- data/redis/create.lua +1 -7
- metadata +2 -3
- data/lib/sidekiq/simulator.rb +0 -67
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 040dccf5a4139ee93bdc4d8b76d641b54fd9048ed4e82efe653e08ed4c5cadae
|
4
|
+
data.tar.gz: 64059716024f596926a052d05da8cd27ec10e5cde5186cf84c6db2dd3e6b039f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 84fc218ebc8d22ebcb1b94a01344b313c8bf1dce2f7d89961edd8dee2307143fa9c75fe09b5c0ea46b0f736e93dc603b683202172727d55873b2aa2944225cf6
|
7
|
+
data.tar.gz: e0f78dea666c477a2b64929f82e85edfe5dfb6e1b21a030b2890761a3225e1baa619fd15df04cb1bad4dbfca77ea3334f3d7784f54e1da56662b35f943b3c656
|
data/.dockerignore
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
tmp
|
1
|
+
.dockerignore
|
2
|
+
.byebug_history
|
3
|
+
log/*
|
4
|
+
tmp/*
|
data/.reek
CHANGED
@@ -60,7 +60,9 @@ IrresponsibleModule:
|
|
60
60
|
TooManyStatements:
|
61
61
|
exclude:
|
62
62
|
- initialize
|
63
|
-
- Hash#slice
|
63
|
+
- Hash#slice
|
64
|
+
- SidekiqUniqueJobs::Locksmith#create_lock
|
65
|
+
- SidekiqUniqueJobs::Locksmith#expire_when_necessary
|
64
66
|
- SidekiqUniqueJobs::Middleware#configure_server_middleware
|
65
67
|
- SidekiqUniqueJobs::Server::Middleware#call
|
66
68
|
- SidekiqUniqueJobs::UniqueArgs#filtered_args
|
@@ -91,9 +93,11 @@ NilCheck:
|
|
91
93
|
FeatureEnvy:
|
92
94
|
exclude:
|
93
95
|
- SidekiqUniqueJobs::Lock::WhileExecutingReject#push_to_deadset
|
96
|
+
- SidekiqUniqueJobs::Logging#debug_item
|
94
97
|
- SidekiqUniqueJobs::Util#batch_delete
|
95
98
|
NestedIterators:
|
96
99
|
exclude:
|
100
|
+
- SidekiqUniqueJobs::Locksmith#create_lock
|
97
101
|
- SidekiqUniqueJobs::Middleware#configure_client_middleware
|
98
102
|
- SidekiqUniqueJobs::Middleware#configure_server_middleware
|
99
103
|
- SidekiqUniqueJobs::Util#batch_delete
|
@@ -5,9 +5,10 @@
|
|
5
5
|
class UntilAndWhileExecutingJob
|
6
6
|
include Sidekiq::Worker
|
7
7
|
|
8
|
-
sidekiq_options queue: :working, unique: :until_and_while_executing, lock_timeout: 0
|
8
|
+
sidekiq_options queue: :working, unique: :until_and_while_executing, lock_timeout: 0, lock_expiration: nil
|
9
9
|
|
10
|
-
def perform(
|
11
|
-
|
10
|
+
def perform(sleepy_time)
|
11
|
+
sleep(sleepy_time)
|
12
|
+
[sleepy_time]
|
12
13
|
end
|
13
14
|
end
|
@@ -18,10 +18,10 @@ module SidekiqUniqueJobs
|
|
18
18
|
|
19
19
|
# Locks the job with the RUN_SUFFIX appended
|
20
20
|
def execute(callback)
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
21
|
+
locksmith.lock(item[LOCK_TIMEOUT_KEY]) do
|
22
|
+
using_protection(callback) do
|
23
|
+
yield if block_given?
|
24
|
+
end
|
25
25
|
end
|
26
26
|
end
|
27
27
|
|
@@ -90,7 +90,8 @@ module SidekiqUniqueJobs
|
|
90
90
|
else
|
91
91
|
token = conn.lpop(available_key)
|
92
92
|
end
|
93
|
-
|
93
|
+
|
94
|
+
return yield jid if token
|
94
95
|
end
|
95
96
|
end
|
96
97
|
|
@@ -101,6 +102,7 @@ module SidekiqUniqueJobs
|
|
101
102
|
def return_token_or_block_value(token)
|
102
103
|
return token unless block_given?
|
103
104
|
|
105
|
+
# The reason for begin is to only signal when we have a block
|
104
106
|
begin
|
105
107
|
yield token
|
106
108
|
ensure
|
@@ -15,14 +15,14 @@ module Sidekiq
|
|
15
15
|
end
|
16
16
|
|
17
17
|
def delete_ext
|
18
|
-
SidekiqUniqueJobs::Unlockable.
|
18
|
+
SidekiqUniqueJobs::Unlockable.unlock(item) if delete_orig
|
19
19
|
end
|
20
20
|
|
21
21
|
private
|
22
22
|
|
23
23
|
def remove_job_ext
|
24
24
|
remove_job_orig do |message|
|
25
|
-
SidekiqUniqueJobs::Unlockable.
|
25
|
+
SidekiqUniqueJobs::Unlockable.unlock(Sidekiq.load_json(message))
|
26
26
|
yield message
|
27
27
|
end
|
28
28
|
end
|
@@ -41,7 +41,7 @@ module Sidekiq
|
|
41
41
|
end
|
42
42
|
|
43
43
|
def delete_ext
|
44
|
-
SidekiqUniqueJobs::Unlockable.
|
44
|
+
SidekiqUniqueJobs::Unlockable.unlock(item) if delete_orig
|
45
45
|
end
|
46
46
|
end
|
47
47
|
include UniqueExtension
|
@@ -58,7 +58,7 @@ module Sidekiq
|
|
58
58
|
|
59
59
|
def delete_ext
|
60
60
|
delete_orig
|
61
|
-
SidekiqUniqueJobs::Unlockable.
|
61
|
+
SidekiqUniqueJobs::Unlockable.unlock(item)
|
62
62
|
end
|
63
63
|
end
|
64
64
|
|
@@ -105,7 +105,7 @@ module Sidekiq
|
|
105
105
|
end
|
106
106
|
|
107
107
|
def delete_by_value_ext(name, value)
|
108
|
-
SidekiqUniqueJobs::Unlockable.
|
108
|
+
SidekiqUniqueJobs::Unlockable.unlock(Sidekiq.load_json(value)) if delete_by_value_orig(name, value)
|
109
109
|
end
|
110
110
|
end
|
111
111
|
|
data/redis/create.lua
CHANGED
@@ -12,11 +12,7 @@ local api_version = ARGV[3]
|
|
12
12
|
local concurrency = tonumber(ARGV[4])
|
13
13
|
|
14
14
|
local stored_token = redis.call('GETSET', exists_key, job_id)
|
15
|
-
|
16
|
-
redis.log(redis.LOG_DEBUG, "create.lua - starting...")
|
17
|
-
|
18
15
|
if stored_token then
|
19
|
-
redis.log(redis.LOG_DEBUG, "create.lua - stored_token: " .. stored_token)
|
20
16
|
return stored_token
|
21
17
|
end
|
22
18
|
|
@@ -24,12 +20,10 @@ end
|
|
24
20
|
-- TODO: Legacy support (Remove in v6.1)
|
25
21
|
local old_token = redis.call('GET', unique_digest)
|
26
22
|
if old_token then
|
27
|
-
-- redis.log(redis.LOG_DEBUG, "create.lua - " .. unique_digest .. " with " .. old_token)
|
28
23
|
if old_token == job_id or old_token == '2' then
|
29
|
-
--
|
24
|
+
-- No need to return, we just delete the old key
|
30
25
|
redis.call('DEL', unique_digest)
|
31
26
|
else
|
32
|
-
-- redis.log(redis.LOG_DEBUG, "create.lua - " .. unique_digest .. " with " .. old_token .. " MISMATCH with " .. job_id)
|
33
27
|
return old_token
|
34
28
|
end
|
35
29
|
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: 6.0.0.
|
4
|
+
version: 6.0.0.rc3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mikael Henriksson
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-06-
|
11
|
+
date: 2018-06-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: concurrent-ruby
|
@@ -228,7 +228,6 @@ files:
|
|
228
228
|
- examples/while_executing_reject_job.rb
|
229
229
|
- examples/without_argument_job.rb
|
230
230
|
- lib/sidekiq-unique-jobs.rb
|
231
|
-
- lib/sidekiq/simulator.rb
|
232
231
|
- lib/sidekiq_unique_jobs.rb
|
233
232
|
- lib/sidekiq_unique_jobs/cli.rb
|
234
233
|
- lib/sidekiq_unique_jobs/client/middleware.rb
|
data/lib/sidekiq/simulator.rb
DELETED
@@ -1,67 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'sidekiq/cli'
|
4
|
-
require 'sidekiq/launcher'
|
5
|
-
|
6
|
-
require 'sidekiq_unique_jobs/timeout'
|
7
|
-
|
8
|
-
module Sidekiq
|
9
|
-
class Simulator
|
10
|
-
include SidekiqUniqueJobs::Logging
|
11
|
-
include SidekiqUniqueJobs::Timeout
|
12
|
-
|
13
|
-
attr_reader :queues, :launcher
|
14
|
-
|
15
|
-
def self.process_queue(queue)
|
16
|
-
new(queue).process_queue { yield }
|
17
|
-
end
|
18
|
-
|
19
|
-
def initialize(queue)
|
20
|
-
@queues = Array(queue).uniq
|
21
|
-
@launcher = Sidekiq::Launcher.new(sidekiq_options(queues))
|
22
|
-
end
|
23
|
-
|
24
|
-
def process_queue
|
25
|
-
run_launcher
|
26
|
-
yield
|
27
|
-
ensure
|
28
|
-
terminate_launcher
|
29
|
-
end
|
30
|
-
|
31
|
-
private
|
32
|
-
|
33
|
-
def run_launcher
|
34
|
-
run_launcher!
|
35
|
-
rescue Timeout::Error => exception
|
36
|
-
log_warn('Timeout while starting Sidekiq')
|
37
|
-
log_warn(exception)
|
38
|
-
end
|
39
|
-
|
40
|
-
def run_launcher!
|
41
|
-
using_timeout(15) do
|
42
|
-
launcher.run
|
43
|
-
sleep 0.001 until alive?
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
def terminate_launcher
|
48
|
-
launcher.stop
|
49
|
-
end
|
50
|
-
|
51
|
-
def alive?
|
52
|
-
launcher.manager.workers.any?
|
53
|
-
end
|
54
|
-
|
55
|
-
def stopped?
|
56
|
-
!alive?
|
57
|
-
end
|
58
|
-
|
59
|
-
def sidekiq_options(queues = [])
|
60
|
-
{ queues: queues,
|
61
|
-
concurrency: 3,
|
62
|
-
timeout: 3,
|
63
|
-
verbose: false,
|
64
|
-
logfile: './tmp/sidekiq.log' }
|
65
|
-
end
|
66
|
-
end
|
67
|
-
end
|