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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8ee36e00cd0663929ce027ef233084358ec02d6ab4dc26146fa716e22eab22ed
4
- data.tar.gz: 05abdd365d0655d1df25a80c54d4530f62fb049a4c10bbe1c39a6e855902f8a2
3
+ metadata.gz: 040dccf5a4139ee93bdc4d8b76d641b54fd9048ed4e82efe653e08ed4c5cadae
4
+ data.tar.gz: 64059716024f596926a052d05da8cd27ec10e5cde5186cf84c6db2dd3e6b039f
5
5
  SHA512:
6
- metadata.gz: ad6188cf8bdba50eee4e1c4fbb71c64e937e9452c5f4f4dabfebe141fadc53c28e63241d5cc1f6e45fa6d10aadedc735ce4d48a0ccec94e8c6609609bd7d3bb7
7
- data.tar.gz: 464b147ec401b9d85f842ef4243d60a54b1e254a6a14487534be6a81d1e9d05ef399b2f42ea9721035eadd92c27b19ecfc61ce4df2f37277cec6f3fb7cb0dfc5
6
+ metadata.gz: 84fc218ebc8d22ebcb1b94a01344b313c8bf1dce2f7d89961edd8dee2307143fa9c75fe09b5c0ea46b0f736e93dc603b683202172727d55873b2aa2944225cf6
7
+ data.tar.gz: e0f78dea666c477a2b64929f82e85edfe5dfb6e1b21a030b2890761a3225e1baa619fd15df04cb1bad4dbfca77ea3334f3d7784f54e1da56662b35f943b3c656
data/.dockerignore CHANGED
@@ -1,4 +1,4 @@
1
- tmp/restart.txt
2
- tmp/cache
3
- tmp/pids
4
- tmp/sockets
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(one)
11
- [one]
10
+ def perform(sleepy_time)
11
+ sleep(sleepy_time)
12
+ [sleepy_time]
12
13
  end
13
14
  end
@@ -5,7 +5,7 @@ module SidekiqUniqueJobs
5
5
  class UntilAndWhileExecuting < BaseLock
6
6
  def execute(callback)
7
7
  return unless locked?
8
- delete!
8
+ unlock
9
9
 
10
10
  runtime_lock.execute(callback) do
11
11
  yield if block_given?
@@ -10,6 +10,7 @@ module SidekiqUniqueJobs
10
10
  using_protection(callback) do
11
11
  yield if block_given?
12
12
  end
13
+ unlock
13
14
  end
14
15
  end
15
16
  end
@@ -4,7 +4,7 @@ module SidekiqUniqueJobs
4
4
  class Lock
5
5
  class UntilExecuting < BaseLock
6
6
  def execute(callback)
7
- delete
7
+ unlock
8
8
  callback.call
9
9
  yield if block_given?
10
10
  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
- return unless locksmith.lock(item[LOCK_TIMEOUT_KEY])
22
-
23
- using_protection(callback) do
24
- yield if block_given?
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
 
@@ -9,6 +9,8 @@ module SidekiqUniqueJobs
9
9
  using_protection(callback) do
10
10
  yield if block_given?
11
11
  end
12
+
13
+ unlock
12
14
  end
13
15
 
14
16
  # Private below here, keeping public due to testing reasons
@@ -90,7 +90,8 @@ module SidekiqUniqueJobs
90
90
  else
91
91
  token = conn.lpop(available_key)
92
92
  end
93
- yield token if token == jid
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.delete(item) if delete_orig
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.delete(Sidekiq.load_json(message))
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.delete(item) if delete_orig
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.delete(item)
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.delete(Sidekiq.load_json(value)) if delete_by_value_orig(name, value)
108
+ SidekiqUniqueJobs::Unlockable.unlock(Sidekiq.load_json(value)) if delete_by_value_orig(name, value)
109
109
  end
110
110
  end
111
111
 
@@ -1,14 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'timeout'
4
-
5
3
  module SidekiqUniqueJobs
6
4
  module Timeout
7
- def using_timeout(value)
8
- ::Timeout.timeout(value) do
9
- yield
10
- end
11
- end
12
5
  end
13
6
  end
14
7
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SidekiqUniqueJobs
4
- VERSION = '6.0.0.rc2'
4
+ VERSION = '6.0.0.rc3'
5
5
  end
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
- -- redis.log(redis.LOG_DEBUG, "create.lua - " .. unique_digest .. " with " .. old_token .. " MATCH with " .. job_id)
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.rc2
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-26 00:00:00.000000000 Z
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
@@ -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