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
@@ -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.beta25
4
+ version: 7.0.0
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-10-26 00:00:00.000000000 Z
11
+ date: 2021-01-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: brpoplpush-redis_script
@@ -56,7 +56,7 @@ dependencies:
56
56
  requirements:
57
57
  - - ">="
58
58
  - !ruby/object:Gem::Version
59
- version: '4.0'
59
+ version: '5.0'
60
60
  - - "<"
61
61
  - !ruby/object:Gem::Version
62
62
  version: '7.0'
@@ -66,7 +66,7 @@ dependencies:
66
66
  requirements:
67
67
  - - ">="
68
68
  - !ruby/object:Gem::Version
69
- version: '4.0'
69
+ version: '5.0'
70
70
  - - "<"
71
71
  - !ruby/object:Gem::Version
72
72
  version: '7.0'
@@ -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,10 +173,10 @@ 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
179
- - lib/sidekiq_unique_jobs/profiler.rb
180
180
  - lib/sidekiq_unique_jobs/redis.rb
181
181
  - lib/sidekiq_unique_jobs/redis/entity.rb
182
182
  - lib/sidekiq_unique_jobs/redis/hash.rb
@@ -212,9 +212,24 @@ metadata:
212
212
  bug_tracker_uri: https://github.com/mhenrixon/sidekiq-unique-jobs/issues
213
213
  documentation_uri: https://mhenrixon.github.io/sidekiq-unique-jobs
214
214
  source_code_uri: https://github.com/mhenrixon/sidekiq-unique-jobs
215
- changelog_uri: https://github.com/mhenrixon/sidekiq-unique-jobs/CHANGELOG.md
215
+ changelog_uri: https://github.com/mhenrixon/sidekiq-unique-jobs/blob/master/CHANGELOG.md
216
216
  post_install_message: |
217
- This version deprecated the configuration options:
217
+ IMPORTANT!
218
+
219
+ Automatic configuration of the sidekiq middelware is no longer done.
220
+ Please see: https://github.com/mhenrixon/sidekiq-unique-jobs/blob/master/README.md#add-the-middleware
221
+
222
+ This version deprecated the following sidekiq_options
223
+
224
+ - sidekiq_options lock_args: :method_name
225
+
226
+ It is now configured with:
227
+
228
+ - sidekiq_options lock_args_method: :method_name
229
+
230
+ This is also true for `Sidekiq.default_worker_options`
231
+
232
+ We also deprecated the global configuration options:
218
233
  - default_lock_ttl
219
234
  - default_lock_ttl=
220
235
  - default_lock_timeout
@@ -235,11 +250,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
235
250
  version: 2.5.0
236
251
  required_rubygems_version: !ruby/object:Gem::Requirement
237
252
  requirements:
238
- - - ">"
253
+ - - ">="
239
254
  - !ruby/object:Gem::Version
240
- version: 1.3.1
255
+ version: '0'
241
256
  requirements: []
242
- rubygems_version: 3.0.3
257
+ rubygems_version: 3.2.4
243
258
  signing_key:
244
259
  specification_version: 4
245
260
  summary: Sidekiq middleware that prevents duplicates jobs
@@ -1,55 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module SidekiqUniqueJobs
4
- #
5
- # Class MethodProfiler provides method level profiling
6
- #
7
- # @author Mikael Henriksson <mikael@zoolutions.se>
8
- #
9
- class Profiler
10
- def self.patch(klass, methods, name) # rubocop:disable Metrics/MethodLength
11
- patches = methods.map do |method_name|
12
- <<~RUBY
13
- unless defined?(#{method_name}__mp_unpatched)
14
- alias_method :#{method_name}__mp_unpatched, :#{method_name}
15
- def #{method_name}(*args, &blk)
16
- unless prof = Thread.current[:_method_profiler]
17
- return #{method_name}__mp_unpatched(*args, &blk)
18
- end
19
- begin
20
- start = Process.clock_gettime(Process::CLOCK_MONOTONIC)
21
- #{method_name}__mp_unpatched(*args, &blk)
22
- ensure
23
- data = (prof[:#{name}] ||= {duration: 0.0, calls: 0})
24
- data[:duration] += Process.clock_gettime(Process::CLOCK_MONOTONIC) - start
25
- data[:calls] += 1
26
- end
27
- end
28
- end
29
- RUBY
30
- end.join("\n")
31
-
32
- klass.class_eval patches
33
- end
34
-
35
- def self.start
36
- Thread.current[:_method_profiler] = {
37
- __start: current_timestamp,
38
- }
39
- end
40
-
41
- def self.stop
42
- finish = current_timestamp
43
- return unless (data = Thread.current[:_method_profiler])
44
-
45
- Thread.current[:_method_profiler] = nil
46
- start = data.delete(:__start)
47
- data[:total_duration] = finish - start
48
- data
49
- end
50
-
51
- def self.current_timestamp
52
- Process.clock_gettime(Process::CLOCK_MONOTONIC)
53
- end
54
- end
55
- end