sidekiq-unique-jobs 7.0.0.beta24 → 7.0.0.beta29

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 (79) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +121 -23
  3. data/README.md +55 -35
  4. data/lib/sidekiq_unique_jobs/batch_delete.rb +1 -1
  5. data/lib/sidekiq_unique_jobs/changelog.rb +1 -1
  6. data/lib/sidekiq_unique_jobs/cli.rb +3 -1
  7. data/lib/sidekiq_unique_jobs/config.rb +2 -2
  8. data/lib/sidekiq_unique_jobs/connection.rb +1 -1
  9. data/lib/sidekiq_unique_jobs/constants.rb +5 -1
  10. data/lib/sidekiq_unique_jobs/digests.rb +1 -1
  11. data/lib/sidekiq_unique_jobs/exceptions.rb +9 -9
  12. data/lib/sidekiq_unique_jobs/job.rb +5 -5
  13. data/lib/sidekiq_unique_jobs/json.rb +1 -1
  14. data/lib/sidekiq_unique_jobs/key.rb +1 -1
  15. data/lib/sidekiq_unique_jobs/lock.rb +1 -1
  16. data/lib/sidekiq_unique_jobs/lock/base_lock.rb +1 -1
  17. data/lib/sidekiq_unique_jobs/lock/client_validator.rb +1 -1
  18. data/lib/sidekiq_unique_jobs/lock/server_validator.rb +1 -1
  19. data/lib/sidekiq_unique_jobs/lock/until_and_while_executing.rb +1 -1
  20. data/lib/sidekiq_unique_jobs/lock/until_executed.rb +1 -1
  21. data/lib/sidekiq_unique_jobs/lock/until_executing.rb +1 -1
  22. data/lib/sidekiq_unique_jobs/lock/until_expired.rb +1 -1
  23. data/lib/sidekiq_unique_jobs/lock/validator.rb +3 -2
  24. data/lib/sidekiq_unique_jobs/lock/while_executing.rb +2 -2
  25. data/lib/sidekiq_unique_jobs/lock/while_executing_reject.rb +1 -1
  26. data/lib/sidekiq_unique_jobs/lock_args.rb +5 -5
  27. data/lib/sidekiq_unique_jobs/lock_config.rb +1 -1
  28. data/lib/sidekiq_unique_jobs/lock_digest.rb +2 -2
  29. data/lib/sidekiq_unique_jobs/lock_info.rb +1 -1
  30. data/lib/sidekiq_unique_jobs/lock_timeout.rb +1 -1
  31. data/lib/sidekiq_unique_jobs/lock_ttl.rb +1 -1
  32. data/lib/sidekiq_unique_jobs/locksmith.rb +2 -2
  33. data/lib/sidekiq_unique_jobs/logging.rb +1 -1
  34. data/lib/sidekiq_unique_jobs/logging/middleware_context.rb +2 -2
  35. data/lib/sidekiq_unique_jobs/lua/delete_by_digest.lua +1 -1
  36. data/lib/sidekiq_unique_jobs/middleware.rb +16 -4
  37. data/lib/sidekiq_unique_jobs/middleware/client.rb +1 -1
  38. data/lib/sidekiq_unique_jobs/middleware/server.rb +1 -1
  39. data/lib/sidekiq_unique_jobs/normalizer.rb +1 -1
  40. data/lib/sidekiq_unique_jobs/on_conflict.rb +1 -1
  41. data/lib/sidekiq_unique_jobs/on_conflict/log.rb +1 -1
  42. data/lib/sidekiq_unique_jobs/on_conflict/null_strategy.rb +1 -1
  43. data/lib/sidekiq_unique_jobs/on_conflict/raise.rb +1 -1
  44. data/lib/sidekiq_unique_jobs/on_conflict/reject.rb +1 -1
  45. data/lib/sidekiq_unique_jobs/on_conflict/replace.rb +1 -1
  46. data/lib/sidekiq_unique_jobs/on_conflict/reschedule.rb +1 -1
  47. data/lib/sidekiq_unique_jobs/on_conflict/strategy.rb +1 -1
  48. data/lib/sidekiq_unique_jobs/options_with_fallback.rb +1 -1
  49. data/lib/sidekiq_unique_jobs/orphans/lua_reaper.rb +1 -1
  50. data/lib/sidekiq_unique_jobs/orphans/manager.rb +35 -4
  51. data/lib/sidekiq_unique_jobs/orphans/null_reaper.rb +24 -0
  52. data/lib/sidekiq_unique_jobs/orphans/observer.rb +2 -2
  53. data/lib/sidekiq_unique_jobs/orphans/reaper.rb +5 -1
  54. data/lib/sidekiq_unique_jobs/orphans/ruby_reaper.rb +4 -2
  55. data/lib/sidekiq_unique_jobs/profiler.rb +1 -1
  56. data/lib/sidekiq_unique_jobs/redis.rb +1 -1
  57. data/lib/sidekiq_unique_jobs/redis/entity.rb +1 -1
  58. data/lib/sidekiq_unique_jobs/redis/hash.rb +1 -1
  59. data/lib/sidekiq_unique_jobs/redis/list.rb +1 -1
  60. data/lib/sidekiq_unique_jobs/redis/set.rb +1 -1
  61. data/lib/sidekiq_unique_jobs/redis/sorted_set.rb +1 -1
  62. data/lib/sidekiq_unique_jobs/redis/string.rb +1 -1
  63. data/lib/sidekiq_unique_jobs/rspec/matchers.rb +2 -2
  64. data/lib/sidekiq_unique_jobs/rspec/matchers/have_valid_sidekiq_options.rb +2 -2
  65. data/lib/sidekiq_unique_jobs/script.rb +1 -1
  66. data/lib/sidekiq_unique_jobs/script/caller.rb +2 -2
  67. data/lib/sidekiq_unique_jobs/sidekiq_unique_ext.rb +5 -5
  68. data/lib/sidekiq_unique_jobs/sidekiq_unique_jobs.rb +2 -2
  69. data/lib/sidekiq_unique_jobs/sidekiq_worker_methods.rb +2 -2
  70. data/lib/sidekiq_unique_jobs/testing.rb +2 -1
  71. data/lib/sidekiq_unique_jobs/timing.rb +1 -1
  72. data/lib/sidekiq_unique_jobs/unlockable.rb +1 -1
  73. data/lib/sidekiq_unique_jobs/update_version.rb +1 -1
  74. data/lib/sidekiq_unique_jobs/upgrade_locks.rb +1 -1
  75. data/lib/sidekiq_unique_jobs/version.rb +1 -1
  76. data/lib/sidekiq_unique_jobs/version_check.rb +1 -1
  77. data/lib/sidekiq_unique_jobs/web.rb +5 -12
  78. data/lib/sidekiq_unique_jobs/web/helpers.rb +1 -1
  79. metadata +19 -6
@@ -5,7 +5,7 @@ module SidekiqUniqueJobs
5
5
  #
6
6
  # Class SortedSet provides convenient access to redis sorted sets
7
7
  #
8
- # @author Mikael Henriksson <mikael@zoolutions.se>
8
+ # @author Mikael Henriksson <mikael@mhenrixon.com>
9
9
  #
10
10
  class SortedSet < Entity
11
11
  #
@@ -5,7 +5,7 @@ module SidekiqUniqueJobs
5
5
  #
6
6
  # Class String provides convenient access to redis strings
7
7
  #
8
- # @author Mikael Henriksson <mikael@zoolutions.se>
8
+ # @author Mikael Henriksson <mikael@mhenrixon.com>
9
9
  #
10
10
  class String < Entity
11
11
  #
@@ -4,13 +4,13 @@ module SidekiqUniqueJobs
4
4
  #
5
5
  # We all know what the hell RSpec is no?
6
6
  #
7
- # @author Mikael Henriksson <mikael@zoolutions.se>
7
+ # @author Mikael Henriksson <mikael@mhenrixon.com>
8
8
  #
9
9
  module RSpec
10
10
  #
11
11
  # Module Matchers provides RSpec matcher for your workers
12
12
  #
13
- # @author Mikael Henriksson <mikael@zoolutions.se>
13
+ # @author Mikael Henriksson <mikael@mhenrixon.com>
14
14
  #
15
15
  module Matchers
16
16
  end
@@ -5,13 +5,13 @@ module SidekiqUniqueJobs
5
5
  #
6
6
  # Module Matchers provides RSpec matcher for your workers
7
7
  #
8
- # @author Mikael Henriksson <mikael@zoolutions.se>
8
+ # @author Mikael Henriksson <mikael@mhenrixon.com>
9
9
  #
10
10
  module Matchers
11
11
  #
12
12
  # Class HaveValidSidekiqOptions validates the unique/lock configuration for a worker.
13
13
  #
14
- # @author Mikael Henriksson <mikael@zoolutions.se>
14
+ # @author Mikael Henriksson <mikael@mhenrixon.com>
15
15
  #
16
16
  class HaveValidSidekiqOptions
17
17
  attr_reader :worker, :lock_config, :sidekiq_options
@@ -3,7 +3,7 @@
3
3
  module SidekiqUniqueJobs
4
4
  # Interface to dealing with .lua files
5
5
  #
6
- # @author Mikael Henriksson <mikael@zoolutions.se>
6
+ # @author Mikael Henriksson <mikael@mhenrixon.com>
7
7
  module Script
8
8
  include Brpoplpush::RedisScript::DSL
9
9
 
@@ -3,12 +3,12 @@
3
3
  module SidekiqUniqueJobs
4
4
  # Interface to dealing with .lua files
5
5
  #
6
- # @author Mikael Henriksson <mikael@zoolutions.se>
6
+ # @author Mikael Henriksson <mikael@mhenrixon.com>
7
7
  module Script
8
8
  #
9
9
  # Module Caller provides the convenience method #call_script
10
10
  #
11
- # @author Mikael Henriksson <mikael@zoolutions.se>
11
+ # @author Mikael Henriksson <mikael@mhenrixon.com>
12
12
  #
13
13
  module Caller
14
14
  module_function
@@ -11,7 +11,7 @@ module Sidekiq
11
11
  #
12
12
  # Provides extensions for unlocking jobs that are removed and deleted
13
13
  #
14
- # @author Mikael Henriksson <mikael@zoolutions.se>
14
+ # @author Mikael Henriksson <mikael@mhenrixon.com>
15
15
  #
16
16
  module UniqueExtension
17
17
  #
@@ -48,7 +48,7 @@ module Sidekiq
48
48
  #
49
49
  # Provides extensions for unlocking jobs that are removed and deleted
50
50
  #
51
- # @author Mikael Henriksson <mikael@zoolutions.se>
51
+ # @author Mikael Henriksson <mikael@mhenrixon.com>
52
52
  #
53
53
  module UniqueExtension
54
54
  #
@@ -73,7 +73,7 @@ module Sidekiq
73
73
  #
74
74
  # Provides extensions for unlocking jobs that are removed and deleted
75
75
  #
76
- # @author Mikael Henriksson <mikael@zoolutions.se>
76
+ # @author Mikael Henriksson <mikael@mhenrixon.com>
77
77
  #
78
78
  module UniqueExtension
79
79
  #
@@ -93,7 +93,7 @@ module Sidekiq
93
93
  #
94
94
  # Provides extensions for unlocking jobs that are removed and deleted
95
95
  #
96
- # @author Mikael Henriksson <mikael@zoolutions.se>
96
+ # @author Mikael Henriksson <mikael@mhenrixon.com>
97
97
  #
98
98
  module UniqueExtension
99
99
  #
@@ -113,7 +113,7 @@ module Sidekiq
113
113
  #
114
114
  # Provides extensions for unlocking jobs that are removed and deleted
115
115
  #
116
- # @author Mikael Henriksson <mikael@zoolutions.se>
116
+ # @author Mikael Henriksson <mikael@mhenrixon.com>
117
117
  #
118
118
  module UniqueExtension
119
119
  #
@@ -3,7 +3,7 @@
3
3
  #
4
4
  # Contains configuration and utility methods that belongs top level
5
5
  #
6
- # @author Mikael Henriksson <mikael@zoolutions.se>
6
+ # @author Mikael Henriksson <mikael@mhenrixon.com>
7
7
  module SidekiqUniqueJobs
8
8
  include SidekiqUniqueJobs::Connection
9
9
  extend SidekiqUniqueJobs::JSON
@@ -168,7 +168,7 @@ module SidekiqUniqueJobs
168
168
  # @option options [Integer] :lock_timeout (default is 0)
169
169
  # @option options [Integer] :lock_ttl (default is 0)
170
170
  # @option options [true,false] :enabled (default is true)
171
- # @option options [String] :unique_prefix (default is 'uniquejobs')
171
+ # @option options [String] :lock_prefix (default is 'uniquejobs')
172
172
  # @option options [Logger] :logger (default is Sidekiq.logger)
173
173
  # @yield control to the caller when given block
174
174
  def configure(options = {})
@@ -3,7 +3,7 @@
3
3
  module SidekiqUniqueJobs
4
4
  # Module with convenience methods for the Sidekiq::Worker class
5
5
  #
6
- # @author Mikael Henriksson <mikael@zoolutions.se>
6
+ # @author Mikael Henriksson <mikael@mhenrixon.com>
7
7
  module SidekiqWorkerMethods
8
8
  # Avoids duplicating worker_class.respond_to? in multiple places
9
9
  # @return [true, false]
@@ -50,7 +50,7 @@ module SidekiqUniqueJobs
50
50
  # @return [Sidekiq::Worker]
51
51
  def worker_class_constantize(klazz = @worker_class)
52
52
  return klazz.class if klazz.is_a?(Sidekiq::Worker) # sidekiq v6.x
53
- return klazz unless klazz.is_a?(String)
53
+ return klazz unless klazz.is_a?(String)
54
54
 
55
55
  Object.const_get(klazz)
56
56
  rescue NameError => ex
@@ -93,7 +93,8 @@ module Sidekiq
93
93
  #
94
94
  def clear_all
95
95
  super
96
- SidekiqUniqueJobs::Digests.new.del(pattern: "*", count: 1_000)
96
+
97
+ SidekiqUniqueJobs::Digests.new.delete_by_pattern("*", count: 10_000)
97
98
  end
98
99
  end
99
100
 
@@ -3,7 +3,7 @@
3
3
  module SidekiqUniqueJobs
4
4
  # Handles timing of things
5
5
  #
6
- # @author Mikael Henriksson <mikael@zoolutions.se>
6
+ # @author Mikael Henriksson <mikael@mhenrixon.com>
7
7
  module Timing
8
8
  module_function
9
9
 
@@ -4,7 +4,7 @@ module SidekiqUniqueJobs
4
4
  # Utility module to help manage unique keys in redis.
5
5
  # Useful for deleting keys that for whatever reason wasn't deleted
6
6
  #
7
- # @author Mikael Henriksson <mikael@zoolutions.se>
7
+ # @author Mikael Henriksson <mikael@mhenrixon.com>
8
8
  module Unlockable
9
9
  module_function
10
10
 
@@ -4,7 +4,7 @@ module SidekiqUniqueJobs
4
4
  #
5
5
  # Class UpdateVersion sets the right version in redis
6
6
  #
7
- # @author Mikael Henriksson <mikael@zoolutions.se>
7
+ # @author Mikael Henriksson <mikael@mhenrixon.com>
8
8
  #
9
9
  class UpdateVersion
10
10
  #
@@ -4,7 +4,7 @@ module SidekiqUniqueJobs
4
4
  #
5
5
  # Upgrades locks between gem version upgrades
6
6
  #
7
- # @author Mikael Henriksson <mikael@zoolutions.se>
7
+ # @author Mikael Henriksson <mikael@mhenrixon.com>
8
8
  #
9
9
  class UpgradeLocks # rubocop:disable Metrics/ClassLength
10
10
  #
@@ -3,5 +3,5 @@
3
3
  module SidekiqUniqueJobs
4
4
  #
5
5
  # @return [String] the current SidekiqUniqueJobs version
6
- VERSION = "7.0.0.beta24"
6
+ VERSION = "7.0.0.beta29"
7
7
  end
@@ -4,7 +4,7 @@ module SidekiqUniqueJobs
4
4
  #
5
5
  # Handles checking if a version is compliant with given constraint
6
6
  #
7
- # @author Mikael Henriksson <mikael@zoolutions.se>
7
+ # @author Mikael Henriksson <mikael@mhenrixon.com>
8
8
  #
9
9
  class VersionCheck
10
10
  PATTERN = /(?<operator1>[<>=]+)?\s?(?<version1>(\d+.?)+)(\s+&&\s+)?(?<operator2>[<>=]+)?\s?(?<version2>(\d+.?)+)?/m.freeze # rubocop:disable Layout/LineLength, Lint/MixedRegexpCaptureTypes
@@ -1,18 +1,12 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- begin
4
- require "sidekiq/web"
5
- rescue LoadError
6
- # client-only usage
7
- end
8
-
9
3
  require_relative "web/helpers"
10
4
 
11
5
  module SidekiqUniqueJobs
12
6
  # Utility module to help manage unique keys in redis.
13
7
  # Useful for deleting keys that for whatever reason wasn't deleted
14
8
  #
15
- # @author Mikael Henriksson <mikael@zoolutions.se>
9
+ # @author Mikael Henriksson <mikael@mhenrixon.com>
16
10
  module Web
17
11
  def self.registered(app) # rubocop:disable Metrics/MethodLength, Metrics/AbcSize
18
12
  app.helpers do
@@ -59,8 +53,7 @@ module SidekiqUniqueJobs
59
53
  end
60
54
  end
61
55
 
62
- if defined?(Sidekiq::Web)
63
- Sidekiq::Web.register SidekiqUniqueJobs::Web
64
- Sidekiq::Web.tabs["Locks"] = "locks"
65
- Sidekiq::Web.settings.locales << File.join(File.dirname(__FILE__), "locales")
66
- end
56
+ require "sidekiq/web" unless defined?(Sidekiq::Web)
57
+ Sidekiq::Web.register(SidekiqUniqueJobs::Web)
58
+ Sidekiq::Web.tabs["Locks"] = "locks"
59
+ Sidekiq::Web.settings.locales << File.join(File.dirname(__FILE__), "locales")
@@ -5,7 +5,7 @@ module SidekiqUniqueJobs
5
5
  #
6
6
  # Provides view helpers for the Sidekiq::Web extension
7
7
  #
8
- # @author Mikael Henriksson <mikael@zoolutions.se>
8
+ # @author Mikael Henriksson <mikael@mhenrixon.com>
9
9
  #
10
10
  module Helpers
11
11
  #
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.beta24
4
+ version: 7.0.0.beta29
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-09-27 00:00:00.000000000 Z
11
+ date: 2021-01-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: brpoplpush-redis_script
@@ -94,7 +94,7 @@ description: |
94
94
  Prevents simultaneous Sidekiq jobs with the same unique arguments to run.
95
95
  Highly configurable to suite your specific needs.
96
96
  email:
97
- - mikael@zoolutions.se
97
+ - mikael@mhenrixon.com
98
98
  executables:
99
99
  - uniquejobs
100
100
  extensions: []
@@ -173,6 +173,7 @@ files:
173
173
  - lib/sidekiq_unique_jobs/options_with_fallback.rb
174
174
  - lib/sidekiq_unique_jobs/orphans/lua_reaper.rb
175
175
  - lib/sidekiq_unique_jobs/orphans/manager.rb
176
+ - lib/sidekiq_unique_jobs/orphans/null_reaper.rb
176
177
  - lib/sidekiq_unique_jobs/orphans/observer.rb
177
178
  - lib/sidekiq_unique_jobs/orphans/reaper.rb
178
179
  - lib/sidekiq_unique_jobs/orphans/ruby_reaper.rb
@@ -212,9 +213,21 @@ metadata:
212
213
  bug_tracker_uri: https://github.com/mhenrixon/sidekiq-unique-jobs/issues
213
214
  documentation_uri: https://mhenrixon.github.io/sidekiq-unique-jobs
214
215
  source_code_uri: https://github.com/mhenrixon/sidekiq-unique-jobs
215
- changelog_uri: https://github.com/mhenrixon/sidekiq-unique-jobs/CHANGELOG.md
216
+ changelog_uri: https://github.com/mhenrixon/sidekiq-unique-jobs/blob/master/CHANGELOG.md
216
217
  post_install_message: |
217
- This version deprecated the configuration options:
218
+ IMPORTANT!
219
+
220
+ This version deprecated the following sidekiq_options
221
+
222
+ - sidekiq_options lock_args: :method_name
223
+
224
+ It is now configured with:
225
+
226
+ - sidekiq_options lock_args_method: :method_name
227
+
228
+ This is also true for `Sidekiq.default_worker_options`
229
+
230
+ We also deprecated the global configuration options:
218
231
  - default_lock_ttl
219
232
  - default_lock_ttl=
220
233
  - default_lock_timeout
@@ -239,7 +252,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
239
252
  - !ruby/object:Gem::Version
240
253
  version: 1.3.1
241
254
  requirements: []
242
- rubygems_version: 3.1.4
255
+ rubygems_version: 3.2.4
243
256
  signing_key:
244
257
  specification_version: 4
245
258
  summary: Sidekiq middleware that prevents duplicates jobs