sidekiq-unique-jobs 7.0.0.beta25 → 7.0.0

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.

Files changed (83) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +99 -15
  3. data/README.md +192 -55
  4. data/lib/sidekiq-unique-jobs.rb +0 -2
  5. data/lib/sidekiq_unique_jobs/batch_delete.rb +1 -1
  6. data/lib/sidekiq_unique_jobs/changelog.rb +2 -2
  7. data/lib/sidekiq_unique_jobs/cli.rb +1 -1
  8. data/lib/sidekiq_unique_jobs/config.rb +2 -2
  9. data/lib/sidekiq_unique_jobs/connection.rb +1 -1
  10. data/lib/sidekiq_unique_jobs/constants.rb +5 -1
  11. data/lib/sidekiq_unique_jobs/digests.rb +2 -2
  12. data/lib/sidekiq_unique_jobs/exceptions.rb +9 -9
  13. data/lib/sidekiq_unique_jobs/job.rb +2 -2
  14. data/lib/sidekiq_unique_jobs/json.rb +1 -1
  15. data/lib/sidekiq_unique_jobs/key.rb +1 -1
  16. data/lib/sidekiq_unique_jobs/lock.rb +1 -1
  17. data/lib/sidekiq_unique_jobs/lock/base_lock.rb +1 -1
  18. data/lib/sidekiq_unique_jobs/lock/client_validator.rb +1 -1
  19. data/lib/sidekiq_unique_jobs/lock/server_validator.rb +1 -1
  20. data/lib/sidekiq_unique_jobs/lock/until_and_while_executing.rb +1 -1
  21. data/lib/sidekiq_unique_jobs/lock/until_executed.rb +1 -1
  22. data/lib/sidekiq_unique_jobs/lock/until_executing.rb +1 -1
  23. data/lib/sidekiq_unique_jobs/lock/until_expired.rb +1 -1
  24. data/lib/sidekiq_unique_jobs/lock/validator.rb +3 -2
  25. data/lib/sidekiq_unique_jobs/lock/while_executing.rb +2 -2
  26. data/lib/sidekiq_unique_jobs/lock/while_executing_reject.rb +1 -1
  27. data/lib/sidekiq_unique_jobs/lock_args.rb +5 -5
  28. data/lib/sidekiq_unique_jobs/lock_config.rb +3 -1
  29. data/lib/sidekiq_unique_jobs/lock_digest.rb +1 -1
  30. data/lib/sidekiq_unique_jobs/lock_info.rb +1 -1
  31. data/lib/sidekiq_unique_jobs/lock_timeout.rb +1 -1
  32. data/lib/sidekiq_unique_jobs/lock_ttl.rb +1 -1
  33. data/lib/sidekiq_unique_jobs/locksmith.rb +2 -2
  34. data/lib/sidekiq_unique_jobs/logging.rb +1 -1
  35. data/lib/sidekiq_unique_jobs/logging/middleware_context.rb +2 -2
  36. data/lib/sidekiq_unique_jobs/lua/delete_by_digest.lua +1 -1
  37. data/lib/sidekiq_unique_jobs/lua/lock.lua +1 -2
  38. data/lib/sidekiq_unique_jobs/lua/reap_orphans.lua +8 -7
  39. data/lib/sidekiq_unique_jobs/lua/shared/_find_digest_in_process_set.lua +9 -2
  40. data/lib/sidekiq_unique_jobs/middleware.rb +1 -58
  41. data/lib/sidekiq_unique_jobs/middleware/client.rb +1 -1
  42. data/lib/sidekiq_unique_jobs/middleware/server.rb +1 -1
  43. data/lib/sidekiq_unique_jobs/normalizer.rb +1 -1
  44. data/lib/sidekiq_unique_jobs/on_conflict.rb +1 -1
  45. data/lib/sidekiq_unique_jobs/on_conflict/log.rb +1 -1
  46. data/lib/sidekiq_unique_jobs/on_conflict/null_strategy.rb +1 -1
  47. data/lib/sidekiq_unique_jobs/on_conflict/raise.rb +1 -1
  48. data/lib/sidekiq_unique_jobs/on_conflict/reject.rb +1 -1
  49. data/lib/sidekiq_unique_jobs/on_conflict/replace.rb +10 -9
  50. data/lib/sidekiq_unique_jobs/on_conflict/reschedule.rb +2 -2
  51. data/lib/sidekiq_unique_jobs/on_conflict/strategy.rb +1 -1
  52. data/lib/sidekiq_unique_jobs/options_with_fallback.rb +1 -1
  53. data/lib/sidekiq_unique_jobs/orphans/lua_reaper.rb +2 -2
  54. data/lib/sidekiq_unique_jobs/orphans/manager.rb +41 -5
  55. data/lib/sidekiq_unique_jobs/orphans/null_reaper.rb +24 -0
  56. data/lib/sidekiq_unique_jobs/orphans/observer.rb +2 -2
  57. data/lib/sidekiq_unique_jobs/orphans/reaper.rb +15 -1
  58. data/lib/sidekiq_unique_jobs/orphans/ruby_reaper.rb +10 -3
  59. data/lib/sidekiq_unique_jobs/redis.rb +1 -1
  60. data/lib/sidekiq_unique_jobs/redis/entity.rb +10 -4
  61. data/lib/sidekiq_unique_jobs/redis/hash.rb +1 -1
  62. data/lib/sidekiq_unique_jobs/redis/list.rb +1 -1
  63. data/lib/sidekiq_unique_jobs/redis/set.rb +1 -1
  64. data/lib/sidekiq_unique_jobs/redis/sorted_set.rb +1 -1
  65. data/lib/sidekiq_unique_jobs/redis/string.rb +1 -1
  66. data/lib/sidekiq_unique_jobs/rspec/matchers.rb +2 -2
  67. data/lib/sidekiq_unique_jobs/rspec/matchers/have_valid_sidekiq_options.rb +2 -2
  68. data/lib/sidekiq_unique_jobs/script.rb +1 -1
  69. data/lib/sidekiq_unique_jobs/script/caller.rb +2 -2
  70. data/lib/sidekiq_unique_jobs/sidekiq_unique_ext.rb +5 -5
  71. data/lib/sidekiq_unique_jobs/sidekiq_unique_jobs.rb +2 -2
  72. data/lib/sidekiq_unique_jobs/sidekiq_worker_methods.rb +2 -2
  73. data/lib/sidekiq_unique_jobs/testing.rb +2 -1
  74. data/lib/sidekiq_unique_jobs/timing.rb +1 -1
  75. data/lib/sidekiq_unique_jobs/unlockable.rb +1 -1
  76. data/lib/sidekiq_unique_jobs/update_version.rb +1 -1
  77. data/lib/sidekiq_unique_jobs/upgrade_locks.rb +1 -1
  78. data/lib/sidekiq_unique_jobs/version.rb +1 -1
  79. data/lib/sidekiq_unique_jobs/version_check.rb +1 -1
  80. data/lib/sidekiq_unique_jobs/web.rb +8 -9
  81. data/lib/sidekiq_unique_jobs/web/helpers.rb +1 -1
  82. metadata +26 -11
  83. data/lib/sidekiq_unique_jobs/profiler.rb +0 -55
@@ -1,5 +1,3 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "sidekiq_unique_jobs"
4
-
5
- SidekiqUniqueJobs::Middleware.configure
@@ -4,7 +4,7 @@ module SidekiqUniqueJobs
4
4
  #
5
5
  # Class BatchDelete provides batch deletion of digests
6
6
  #
7
- # @author Mikael Henriksson <mikael@zoolutions.se>
7
+ # @author Mikael Henriksson <mikael@mhenrixon.com>
8
8
  #
9
9
  class BatchDelete
10
10
  #
@@ -4,7 +4,7 @@ module SidekiqUniqueJobs
4
4
  #
5
5
  # Class Changelogs provides access to the changelog entries
6
6
  #
7
- # @author Mikael Henriksson <mikael@zoolutions.se>
7
+ # @author Mikael Henriksson <mikael@mhenrixon.com>
8
8
  #
9
9
  class Changelog < Redis::SortedSet
10
10
  def initialize
@@ -36,7 +36,7 @@ module SidekiqUniqueJobs
36
36
  #
37
37
  def entries(pattern: "*", count: nil)
38
38
  options = {}
39
- options[:match] = pattern if pattern
39
+ options[:match] = pattern
40
40
  options[:count] = count if count
41
41
 
42
42
  redis do |conn|
@@ -6,7 +6,7 @@ module SidekiqUniqueJobs
6
6
  #
7
7
  # Command line interface for unique jobs
8
8
  #
9
- # @author Mikael Henriksson <mikael@zoolutions.se>
9
+ # @author Mikael Henriksson <mikael@mhenrixon.com>
10
10
  #
11
11
  class Cli < Thor
12
12
  # :nodoc:
@@ -6,7 +6,7 @@ module SidekiqUniqueJobs
6
6
  :lock_timeout,
7
7
  :lock_ttl,
8
8
  :enabled,
9
- :unique_prefix,
9
+ :lock_prefix,
10
10
  :logger,
11
11
  :locks,
12
12
  :strategies,
@@ -127,7 +127,7 @@ module SidekiqUniqueJobs
127
127
  # default_lock_timeout: 0,
128
128
  # default_lock_ttl: nil,
129
129
  # enabled: true,
130
- # unique_prefix: "uniquejobs",
130
+ # lock_prefix: "uniquejobs",
131
131
  # logger: #<Sidekiq::Logger:0x00007f81e096b0e0 @level=1 ...>,
132
132
  # locks: {
133
133
  # around_perform: SidekiqUniqueJobs::Lock::WhileExecuting,
@@ -3,7 +3,7 @@
3
3
  module SidekiqUniqueJobs
4
4
  # Shared module for dealing with redis connections
5
5
  #
6
- # @author Mikael Henriksson <mikael@zoolutions.se>
6
+ # @author Mikael Henriksson <mikael@mhenrixon.com>
7
7
  module Connection
8
8
  def self.included(base)
9
9
  base.send(:extend, self)
@@ -3,7 +3,7 @@
3
3
  #
4
4
  # Module with constants to avoid string duplication
5
5
  #
6
- # @author Mikael Henriksson <mikael@zoolutions.se>
6
+ # @author Mikael Henriksson <mikael@mhenrixon.com>
7
7
  #
8
8
  module SidekiqUniqueJobs
9
9
  ARGS ||= "args"
@@ -11,6 +11,7 @@ module SidekiqUniqueJobs
11
11
  AT ||= "at"
12
12
  CHANGELOGS ||= "uniquejobs:changelog"
13
13
  CLASS ||= "class"
14
+ CREATED_AT ||= "created_at"
14
15
  DEAD_VERSION ||= "uniquejobs:dead"
15
16
  DIGESTS ||= "uniquejobs:digests"
16
17
  ERRORS ||= "errors"
@@ -19,6 +20,7 @@ module SidekiqUniqueJobs
19
20
  LIVE_VERSION ||= "uniquejobs:live"
20
21
  LOCK ||= "lock"
21
22
  LOCK_ARGS ||= "lock_args"
23
+ LOCK_ARGS_METHOD ||= "lock_args_method"
22
24
  LOCK_DIGEST ||= "lock_digest"
23
25
  LOCK_EXPIRATION ||= "lock_expiration"
24
26
  LOCK_INFO ||= "lock_info"
@@ -31,6 +33,7 @@ module SidekiqUniqueJobs
31
33
  ON_CLIENT_CONFLICT ||= "on_client_conflict"
32
34
  ON_CONFLICT ||= "on_conflict"
33
35
  ON_SERVER_CONFLICT ||= "on_server_conflict"
36
+ PAYLOAD ||= "payload"
34
37
  PROCESSES ||= "processes"
35
38
  QUEUE ||= "queue"
36
39
  RETRY ||= "retry"
@@ -43,6 +46,7 @@ module SidekiqUniqueJobs
43
46
  UNIQUE_ACROSS_QUEUES ||= "unique_across_queues"
44
47
  UNIQUE_ACROSS_WORKERS ||= "unique_across_workers"
45
48
  UNIQUE_ARGS ||= "unique_args"
49
+ UNIQUE_ARGS_METHOD ||= "unique_args_method"
46
50
  UNIQUE_DIGEST ||= "unique_digest"
47
51
  UNIQUE_PREFIX ||= "unique_prefix"
48
52
  UNIQUE_REAPER ||= "uniquejobs:reaper"
@@ -4,7 +4,7 @@ module SidekiqUniqueJobs
4
4
  #
5
5
  # Class Changelogs provides access to the changelog entries
6
6
  #
7
- # @author Mikael Henriksson <mikael@zoolutions.se>
7
+ # @author Mikael Henriksson <mikael@mhenrixon.com>
8
8
  #
9
9
  class Digests < Redis::SortedSet
10
10
  #
@@ -78,7 +78,7 @@ module SidekiqUniqueJobs
78
78
  def entries(pattern: SCAN_PATTERN, count: DEFAULT_COUNT)
79
79
  options = {}
80
80
  options[:match] = pattern
81
- options[:count] = count if count
81
+ options[:count] = count
82
82
 
83
83
  result = redis { |conn| conn.zscan_each(key, **options).to_a }
84
84
 
@@ -4,14 +4,14 @@ module SidekiqUniqueJobs
4
4
  #
5
5
  # Base class for all exceptions raised from the gem
6
6
  #
7
- # @author Mikael Henriksson <mikael@zoolutions.se>
7
+ # @author Mikael Henriksson <mikael@mhenrixon.com>
8
8
  #
9
9
  class UniqueJobsError < ::RuntimeError
10
10
  end
11
11
 
12
12
  # Error raised when a Lua script fails to execute
13
13
  #
14
- # @author Mikael Henriksson <mikael@zoolutions.se>
14
+ # @author Mikael Henriksson <mikael@mhenrixon.com>
15
15
  class Conflict < UniqueJobsError
16
16
  def initialize(item)
17
17
  super("Item with the key: #{item[LOCK_DIGEST]} is already scheduled or processing")
@@ -21,7 +21,7 @@ module SidekiqUniqueJobs
21
21
  #
22
22
  # Error raised when trying to add a duplicate lock
23
23
  #
24
- # @author Mikael Henriksson <mikael@zoolutions.se>
24
+ # @author Mikael Henriksson <mikael@mhenrixon.com>
25
25
  #
26
26
  class DuplicateLock < UniqueJobsError
27
27
  end
@@ -29,7 +29,7 @@ module SidekiqUniqueJobs
29
29
  #
30
30
  # Error raised when trying to add a duplicate stragegy
31
31
  #
32
- # @author Mikael Henriksson <mikael@zoolutions.se>
32
+ # @author Mikael Henriksson <mikael@mhenrixon.com>
33
33
  #
34
34
  class DuplicateStrategy < UniqueJobsError
35
35
  end
@@ -37,7 +37,7 @@ module SidekiqUniqueJobs
37
37
  #
38
38
  # Error raised when an invalid argument is given
39
39
  #
40
- # @author Mikael Henriksson <mikael@zoolutions.se>
40
+ # @author Mikael Henriksson <mikael@mhenrixon.com>
41
41
  #
42
42
  class InvalidArgument < UniqueJobsError
43
43
  end
@@ -45,7 +45,7 @@ module SidekiqUniqueJobs
45
45
  #
46
46
  # Raised when a workers configuration is invalid
47
47
  #
48
- # @author Mikael Henriksson <mikael@zoolutions.se>
48
+ # @author Mikael Henriksson <mikael@mhenrixon.com>
49
49
  #
50
50
  class InvalidWorker < UniqueJobsError
51
51
  def initialize(lock_config)
@@ -58,7 +58,7 @@ module SidekiqUniqueJobs
58
58
 
59
59
  # Error raised when a Lua script fails to execute
60
60
  #
61
- # @author Mikael Henriksson <mikael@zoolutions.se>
61
+ # @author Mikael Henriksson <mikael@mhenrixon.com>
62
62
  class InvalidUniqueArguments < UniqueJobsError
63
63
  def initialize(options)
64
64
  given = options[:given]
@@ -79,7 +79,7 @@ module SidekiqUniqueJobs
79
79
  #
80
80
  # Raised when a workers configuration is invalid
81
81
  #
82
- # @author Mikael Henriksson <mikael@zoolutions.se>
82
+ # @author Mikael Henriksson <mikael@mhenrixon.com>
83
83
  #
84
84
  class NotUniqueWorker < UniqueJobsError
85
85
  def initialize(options)
@@ -89,7 +89,7 @@ module SidekiqUniqueJobs
89
89
 
90
90
  # Error raised from {OptionsWithFallback#lock_class}
91
91
  #
92
- # @author Mikael Henriksson <mikael@zoolutions.se>
92
+ # @author Mikael Henriksson <mikael@mhenrixon.com>
93
93
  class UnknownLock < UniqueJobsError
94
94
  end
95
95
  end
@@ -3,7 +3,7 @@
3
3
  module SidekiqUniqueJobs
4
4
  # Utility class to append uniqueness to the sidekiq job hash
5
5
  #
6
- # @author Mikael Henriksson <mikael@zoolutions.se>
6
+ # @author Mikael Henriksson <mikael@mhenrixon.com>
7
7
  module Job
8
8
  extend self
9
9
 
@@ -52,7 +52,7 @@ module SidekiqUniqueJobs
52
52
  end
53
53
 
54
54
  def add_lock_prefix(item)
55
- item[LOCK_PREFIX] ||= SidekiqUniqueJobs.config.unique_prefix
55
+ item[LOCK_PREFIX] ||= SidekiqUniqueJobs.config.lock_prefix
56
56
  end
57
57
  end
58
58
  end
@@ -3,7 +3,7 @@
3
3
  module SidekiqUniqueJobs
4
4
  # Handles loading and dumping of json
5
5
  #
6
- # @author Mikael Henriksson <mikael@zoolutions.se>
6
+ # @author Mikael Henriksson <mikael@mhenrixon.com>
7
7
  module JSON
8
8
  module_function
9
9
 
@@ -3,7 +3,7 @@
3
3
  module SidekiqUniqueJobs
4
4
  # Key class wraps logic dealing with various lock keys
5
5
  #
6
- # @author Mikael Henriksson <mikael@zoolutions.se>
6
+ # @author Mikael Henriksson <mikael@mhenrixon.com>
7
7
  class Key
8
8
  #
9
9
  # @!attribute [r] digest
@@ -4,7 +4,7 @@ module SidekiqUniqueJobs
4
4
  #
5
5
  # Class Lock provides access to information about a lock
6
6
  #
7
- # @author Mikael Henriksson <mikael@zoolutions.se>
7
+ # @author Mikael Henriksson <mikael@mhenrixon.com>
8
8
  #
9
9
  class Lock # rubocop:disable Metrics/ClassLength
10
10
  # includes "SidekiqUniqueJobs::Connection"
@@ -5,7 +5,7 @@ module SidekiqUniqueJobs
5
5
  # Abstract base class for locks
6
6
  #
7
7
  # @abstract
8
- # @author Mikael Henriksson <mikael@zoolutions.se>
8
+ # @author Mikael Henriksson <mikael@mhenrixon.com>
9
9
  class BaseLock
10
10
  include SidekiqUniqueJobs::Logging
11
11
 
@@ -5,7 +5,7 @@ module SidekiqUniqueJobs
5
5
  #
6
6
  # Validates the sidekiq options for the Sidekiq client process
7
7
  #
8
- # @author Mikael Henriksson <mikael@zoolutions.se>
8
+ # @author Mikael Henriksson <mikael@mhenrixon.com>
9
9
  #
10
10
  class ClientValidator
11
11
  #
@@ -5,7 +5,7 @@ module SidekiqUniqueJobs
5
5
  #
6
6
  # Validates the sidekiq options for the Sidekiq server process
7
7
  #
8
- # @author Mikael Henriksson <mikael@zoolutions.se>
8
+ # @author Mikael Henriksson <mikael@mhenrixon.com>
9
9
  #
10
10
  class ServerValidator
11
11
  #
@@ -11,7 +11,7 @@ module SidekiqUniqueJobs
11
11
  # See {#lock} for more information about the client.
12
12
  # See {#execute} for more information about the server
13
13
  #
14
- # @author Mikael Henriksson <mikael@zoolutions.se>
14
+ # @author Mikael Henriksson <mikael@mhenrixon.com>
15
15
  class UntilAndWhileExecuting < BaseLock
16
16
  # Executes in the Sidekiq server process
17
17
  # @yield to the worker class perform method
@@ -6,7 +6,7 @@ module SidekiqUniqueJobs
6
6
  # - Locks on perform_in or perform_async
7
7
  # - Unlocks after yielding to the worker's perform method
8
8
  #
9
- # @author Mikael Henriksson <mikael@zoolutions.se>
9
+ # @author Mikael Henriksson <mikael@mhenrixon.com>
10
10
  class UntilExecuted < BaseLock
11
11
  OK ||= "OK"
12
12
 
@@ -6,7 +6,7 @@ module SidekiqUniqueJobs
6
6
  # - Locks on perform_in or perform_async
7
7
  # - Unlocks before yielding to the worker's perform method
8
8
  #
9
- # @author Mikael Henriksson <mikael@zoolutions.se>
9
+ # @author Mikael Henriksson <mikael@mhenrixon.com>
10
10
  class UntilExecuting < BaseLock
11
11
  # Executes in the Sidekiq server process
12
12
  # @yield to the worker class perform method
@@ -5,7 +5,7 @@ module SidekiqUniqueJobs
5
5
  #
6
6
  # UntilExpired locks until the job expires
7
7
  #
8
- # @author Mikael Henriksson <mikael@zoolutions.se>
8
+ # @author Mikael Henriksson <mikael@mhenrixon.com>
9
9
  #
10
10
  class UntilExpired < UntilExecuted
11
11
  end
@@ -5,14 +5,15 @@ module SidekiqUniqueJobs
5
5
  #
6
6
  # Validator base class to avoid some duplication
7
7
  #
8
- # @author Mikael Henriksson <mikael@zoolutions.se>
8
+ # @author Mikael Henriksson <mikael@mhenrixon.com>
9
9
  #
10
10
  class Validator
11
11
  #
12
12
  # @return [Hash] a hash mapping of deprecated keys and their new value
13
13
  DEPRECATED_KEYS = {
14
14
  UNIQUE.to_sym => LOCK.to_sym,
15
- UNIQUE_ARGS.to_sym => LOCK_ARGS.to_sym,
15
+ UNIQUE_ARGS.to_sym => LOCK_ARGS_METHOD.to_sym,
16
+ LOCK_ARGS.to_sym => LOCK_ARGS_METHOD.to_sym,
16
17
  UNIQUE_PREFIX.to_sym => LOCK_PREFIX.to_sym,
17
18
  }.freeze
18
19
 
@@ -9,7 +9,7 @@ module SidekiqUniqueJobs
9
9
  # See {#lock} for more information about the client.
10
10
  # See {#execute} for more information about the server
11
11
  #
12
- # @author Mikael Henriksson <mikael@zoolutions.se>
12
+ # @author Mikael Henriksson <mikael@mhenrixon.com>
13
13
  class WhileExecuting < BaseLock
14
14
  RUN_SUFFIX ||= ":RUN"
15
15
 
@@ -43,7 +43,7 @@ module SidekiqUniqueJobs
43
43
  end
44
44
  end
45
45
  ensure
46
- locksmith.unlock
46
+ locksmith.unlock!
47
47
  end
48
48
 
49
49
  private
@@ -9,7 +9,7 @@ module SidekiqUniqueJobs
9
9
  # See {#lock} for more information about the client.
10
10
  # See {#execute} for more information about the server
11
11
  #
12
- # @author Mikael Henriksson <mikael@zoolutions.se>
12
+ # @author Mikael Henriksson <mikael@mhenrixon.com>
13
13
  class WhileExecutingReject < WhileExecuting
14
14
  # Overridden with a forced {OnConflict::Reject} strategy
15
15
  # @return [OnConflict::Reject] a reject strategy
@@ -3,7 +3,7 @@
3
3
  module SidekiqUniqueJobs
4
4
  # Handles uniqueness of sidekiq arguments
5
5
  #
6
- # @author Mikael Henriksson <mikael@zoolutions.se>
6
+ # @author Mikael Henriksson <mikael@mhenrixon.com>
7
7
  class LockArgs
8
8
  include SidekiqUniqueJobs::Logging
9
9
  include SidekiqUniqueJobs::SidekiqWorkerMethods
@@ -97,8 +97,8 @@ module SidekiqUniqueJobs
97
97
  end
98
98
 
99
99
  # The method to use for filtering unique arguments
100
- def lock_args_method # rubocop:disable Metrics/CyclomaticComplexity
101
- @lock_args_method ||= worker_options[LOCK_ARGS] || worker_options[UNIQUE_ARGS]
100
+ def lock_args_method
101
+ @lock_args_method ||= worker_options.slice(LOCK_ARGS_METHOD, UNIQUE_ARGS_METHOD).values.first
102
102
  @lock_args_method ||= :lock_args if worker_method_defined?(:lock_args)
103
103
  @lock_args_method ||= :unique_args if worker_method_defined?(:unique_args)
104
104
  @lock_args_method ||= default_lock_args_method
@@ -106,8 +106,8 @@ module SidekiqUniqueJobs
106
106
 
107
107
  # The global worker options defined in Sidekiq directly
108
108
  def default_lock_args_method
109
- default_worker_options[LOCK_ARGS] ||
110
- default_worker_options[UNIQUE_ARGS]
109
+ default_worker_options[LOCK_ARGS_METHOD] ||
110
+ default_worker_options[UNIQUE_ARGS_METHOD]
111
111
  end
112
112
 
113
113
  #
@@ -5,7 +5,7 @@ module SidekiqUniqueJobs
5
5
  # Gathers all configuration for a lock
6
6
  # which helps reduce the amount of instance variables
7
7
  #
8
- # @author Mikael Henriksson <mikael@zoolutions.se>
8
+ # @author Mikael Henriksson <mikael@mhenrixon.com>
9
9
  #
10
10
  class LockConfig
11
11
  #
@@ -98,6 +98,8 @@ module SidekiqUniqueJobs
98
98
  # @return [String]
99
99
  #
100
100
  def errors_as_string
101
+ return if valid?
102
+
101
103
  @errors_as_string ||= begin
102
104
  error_msg = +"\t"
103
105
  error_msg << errors.map { |key, val| "#{key}: :#{val}" }.join("\n\t")
@@ -5,7 +5,7 @@ require "openssl"
5
5
  module SidekiqUniqueJobs
6
6
  # Handles uniqueness of sidekiq arguments
7
7
  #
8
- # @author Mikael Henriksson <mikael@zoolutions.se>
8
+ # @author Mikael Henriksson <mikael@mhenrixon.com>
9
9
  class LockDigest
10
10
  include SidekiqUniqueJobs::Logging
11
11
  include SidekiqUniqueJobs::JSON
@@ -4,7 +4,7 @@ module SidekiqUniqueJobs
4
4
  #
5
5
  # Class Info provides information about a lock
6
6
  #
7
- # @author Mikael Henriksson <mikael@zoolutions.se>
7
+ # @author Mikael Henriksson <mikael@mhenrixon.com>
8
8
  #
9
9
  class LockInfo < Redis::String
10
10
  #
@@ -3,7 +3,7 @@
3
3
  module SidekiqUniqueJobs
4
4
  # Calculates timeout and expiration
5
5
  #
6
- # @author Mikael Henriksson <mikael@zoolutions.se>
6
+ # @author Mikael Henriksson <mikael@mhenrixon.com>
7
7
  class LockTimeout
8
8
  # includes "SidekiqUniqueJobs::SidekiqWorkerMethods"
9
9
  # @!parse include SidekiqUniqueJobs::SidekiqWorkerMethods