sidekiq-unique-jobs 6.0.6 → 6.0.25

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 (113) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +768 -150
  3. data/README.md +123 -77
  4. data/bin/uniquejobs +2 -2
  5. data/lib/sidekiq-unique-jobs.rb +1 -1
  6. data/lib/sidekiq_unique_jobs/cli.rb +27 -12
  7. data/lib/sidekiq_unique_jobs/client/middleware.rb +8 -4
  8. data/lib/sidekiq_unique_jobs/constants.rb +29 -18
  9. data/lib/sidekiq_unique_jobs/digests.rb +34 -19
  10. data/lib/sidekiq_unique_jobs/job.rb +29 -0
  11. data/lib/sidekiq_unique_jobs/lock/base_lock.rb +14 -18
  12. data/lib/sidekiq_unique_jobs/lock/until_and_while_executing.rb +20 -4
  13. data/lib/sidekiq_unique_jobs/lock/until_executed.rb +7 -3
  14. data/lib/sidekiq_unique_jobs/lock/until_executing.rb +1 -1
  15. data/lib/sidekiq_unique_jobs/lock/until_expired.rb +1 -0
  16. data/lib/sidekiq_unique_jobs/lock/while_executing.rb +9 -3
  17. data/lib/sidekiq_unique_jobs/lock/while_executing_reject.rb +0 -8
  18. data/lib/sidekiq_unique_jobs/locksmith.rb +59 -32
  19. data/lib/sidekiq_unique_jobs/logging.rb +14 -0
  20. data/lib/sidekiq_unique_jobs/middleware.rb +26 -9
  21. data/lib/sidekiq_unique_jobs/normalizer.rb +1 -1
  22. data/lib/sidekiq_unique_jobs/on_conflict/raise.rb +1 -1
  23. data/lib/sidekiq_unique_jobs/on_conflict/reject.rb +3 -3
  24. data/lib/sidekiq_unique_jobs/on_conflict/replace.rb +7 -2
  25. data/lib/sidekiq_unique_jobs/on_conflict/strategy.rb +1 -1
  26. data/lib/sidekiq_unique_jobs/on_conflict.rb +12 -7
  27. data/lib/sidekiq_unique_jobs/options_with_fallback.rb +8 -8
  28. data/lib/sidekiq_unique_jobs/scripts.rb +38 -9
  29. data/lib/sidekiq_unique_jobs/server/middleware.rb +18 -6
  30. data/lib/sidekiq_unique_jobs/sidekiq_unique_ext.rb +1 -1
  31. data/lib/sidekiq_unique_jobs/sidekiq_unique_jobs.rb +88 -0
  32. data/lib/sidekiq_unique_jobs/sidekiq_worker_methods.rb +13 -4
  33. data/lib/sidekiq_unique_jobs/testing.rb +3 -3
  34. data/lib/sidekiq_unique_jobs/timeout/calculator.rb +2 -1
  35. data/lib/sidekiq_unique_jobs/timeout.rb +1 -1
  36. data/lib/sidekiq_unique_jobs/unique_args.rb +7 -4
  37. data/lib/sidekiq_unique_jobs/util.rb +8 -4
  38. data/lib/sidekiq_unique_jobs/version.rb +1 -1
  39. data/lib/sidekiq_unique_jobs/version_check.rb +95 -0
  40. data/lib/sidekiq_unique_jobs/web/helpers.rb +7 -6
  41. data/lib/sidekiq_unique_jobs/web/views/unique_digests.erb +4 -0
  42. data/lib/sidekiq_unique_jobs/web.rb +19 -12
  43. data/lib/sidekiq_unique_jobs.rb +33 -107
  44. data/lib/tasks/changelog.rake +23 -0
  45. data/redis/convert_legacy_lock.lua +13 -0
  46. data/redis/delete_by_digest.lua +10 -11
  47. data/redis/delete_job_by_digest.lua +6 -4
  48. data/redis/lock.lua +14 -10
  49. data/redis/unlock.lua +13 -11
  50. metadata +88 -108
  51. data/.codeclimate.yml +0 -35
  52. data/.csslintrc +0 -2
  53. data/.dockerignore +0 -4
  54. data/.editorconfig +0 -14
  55. data/.eslintignore +0 -1
  56. data/.eslintrc +0 -213
  57. data/.fasterer.yml +0 -23
  58. data/.github/ISSUE_TEMPLATE/bug_report.md +0 -31
  59. data/.github/ISSUE_TEMPLATE/feature_request.md +0 -17
  60. data/.gitignore +0 -26
  61. data/.reek.yml +0 -87
  62. data/.rspec +0 -2
  63. data/.rubocop.yml +0 -127
  64. data/.simplecov +0 -20
  65. data/.travis.yml +0 -49
  66. data/.yardopts +0 -7
  67. data/Appraisals +0 -25
  68. data/CODE_OF_CONDUCT.md +0 -74
  69. data/Gemfile +0 -24
  70. data/Guardfile +0 -55
  71. data/Rakefile +0 -12
  72. data/_config.yml +0 -1
  73. data/assets/unique_digests_1.png +0 -0
  74. data/assets/unique_digests_2.png +0 -0
  75. data/bin/bench +0 -20
  76. data/examples/another_unique_job.rb +0 -15
  77. data/examples/custom_queue_job.rb +0 -12
  78. data/examples/custom_queue_job_with_filter_method.rb +0 -13
  79. data/examples/custom_queue_job_with_filter_proc.rb +0 -16
  80. data/examples/expiring_job.rb +0 -12
  81. data/examples/inline_worker.rb +0 -12
  82. data/examples/just_a_worker.rb +0 -13
  83. data/examples/long_running_job.rb +0 -14
  84. data/examples/main_job.rb +0 -14
  85. data/examples/my_job.rb +0 -12
  86. data/examples/my_unique_job.rb +0 -15
  87. data/examples/my_unique_job_with_filter_method.rb +0 -21
  88. data/examples/my_unique_job_with_filter_proc.rb +0 -19
  89. data/examples/notify_worker.rb +0 -14
  90. data/examples/plain_class.rb +0 -13
  91. data/examples/simple_worker.rb +0 -15
  92. data/examples/spawn_simple_worker.rb +0 -12
  93. data/examples/test_class.rb +0 -9
  94. data/examples/unique_across_workers_job.rb +0 -20
  95. data/examples/unique_job_on_conflict_raise.rb +0 -14
  96. data/examples/unique_job_on_conflict_reject.rb +0 -14
  97. data/examples/unique_job_on_conflict_reschedule.rb +0 -14
  98. data/examples/unique_job_with_conditional_parameter.rb +0 -18
  99. data/examples/unique_job_with_filter_method.rb +0 -21
  100. data/examples/unique_job_with_nil_unique_args.rb +0 -20
  101. data/examples/unique_job_with_no_unique_args_method.rb +0 -16
  102. data/examples/unique_job_withthout_unique_args_parameter.rb +0 -18
  103. data/examples/unique_on_all_queues_job.rb +0 -16
  104. data/examples/until_and_while_executing_job.rb +0 -17
  105. data/examples/until_executed_2_job.rb +0 -24
  106. data/examples/until_executed_job.rb +0 -25
  107. data/examples/until_executing_job.rb +0 -11
  108. data/examples/until_expired_job.rb +0 -12
  109. data/examples/until_global_expired_job.rb +0 -12
  110. data/examples/while_executing_job.rb +0 -15
  111. data/examples/while_executing_reject_job.rb +0 -14
  112. data/examples/without_argument_job.rb +0 -13
  113. data/sidekiq-unique-jobs.gemspec +0 -42
data/CHANGELOG.md CHANGED
@@ -1,234 +1,852 @@
1
- ## v6.0.4
1
+ # Change Log
2
2
 
3
- - Prevent locks from stealing each other (#316)
3
+ ## [v6.0.12](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v6.0.12) (2019-02-28)
4
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v6.0.11...v6.0.12)
4
5
 
5
- ## v6.0.3
6
+ **Fixed bugs:**
6
7
 
7
- - Fixes a few hickups (#315)
8
+ - we are receiving SidekiqUniqueJobs::ScriptError "Problem compiling convert\_legacy\_lock" after upgrading from 5.0.10 -\> 6.0.11 [\#377](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/377)
9
+ - Fix converting legacy locks [\#378](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/378) ([mhenrixon](https://github.com/mhenrixon))
8
10
 
9
- ## v6.0.2
11
+ ## [v6.0.11](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v6.0.11) (2019-02-24)
12
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v6.0.10...v6.0.11)
10
13
 
11
- - Fixes sidekiq web pagination of unique digests
12
- - Fixes lock_expiration usage (Lua doesn't support expire after persisting a key)
14
+ **Implemented enhancements:**
13
15
 
14
- ## v6.0.1
16
+ - Reduce leftover keys [\#374](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/374) ([mhenrixon](https://github.com/mhenrixon))
17
+ - Prepare for sidekiq 6 [\#373](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/373) ([mhenrixon](https://github.com/mhenrixon))
15
18
 
16
- - Remove unused method that causes conflict with sidekiq/web
19
+ **Fixed bugs:**
17
20
 
18
- ## v6.0.0
21
+ - Prevent memory leaks \(many locks stay in memory\) [\#368](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/368)
22
+ - :until\_and\_while\_executing not processing queued jobs after executing [\#355](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/355)
23
+ - Version 6: lets you schedule job with missing arguments [\#351](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/351)
24
+ - Version 6 Ignores Jobs Enqueued in Version 5 [\#345](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/345)
25
+ - Job will not enqueue even with no existing match [\#342](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/342)
26
+ - Convert v5 locks when needed [\#375](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/375) ([mhenrixon](https://github.com/mhenrixon))
27
+ - Reduce leftover keys [\#374](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/374) ([mhenrixon](https://github.com/mhenrixon))
19
28
 
20
- - Complete rewrite of the locking mechanism
21
- - Improved README
22
- - Improved reliability
23
- - Improved coverage
24
- - Removed a ton of default configuration
25
- - Removed support for ActiveJob
26
- - Added WhileExecutingReject `unique: :while_executing_reject`
27
- - Renamed `UntilTimeout` to `UntilExpired`
28
- - Removed concurrency for now (a0cff5bc42edbe7190d6ede7e7f845074d2d7af6)
29
- - Improved integration testing for locks
30
- - Totally delete the hash that was growing out of proportion
31
- - Adds a sidekiq web extension for viewing and deleting unique digests
32
- - Renamed the configuration `unique:` to `lock:` (still backwards compatible)
33
- - Added some very simplistic conflict strategies.
29
+ **Closed issues:**
34
30
 
35
- ## v5.1.0
31
+ - Infinite lock using until\_and\_while\_executing after sidekiq restart [\#361](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/361)
32
+ - getting a crash using lock\_expiration on v6.0.6 [\#350](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/350)
33
+ - Problem when job failed and is retrying [\#332](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/332)
36
34
 
37
- - Refactoring the runtime locks (WhileExecuting)
35
+ **Merged pull requests:**
38
36
 
39
- ## v5.0.10
37
+ - Clarify lock expiration in readme [\#376](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/376) ([mhenrixon](https://github.com/mhenrixon))
40
38
 
41
- - Cleans up test setup and make tests more readable
42
- - Allow raising all errors
43
- - Log previously hidden errors
44
- - Revert the changes of v5.0.5 (8a4b7648b8b0ee5d7dc1f5f5a036f41d52ad9a42)
45
- - Allow name errors in unique args method to be raised
39
+ ## [v6.0.10](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v6.0.10) (2019-02-23)
40
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v6.0.9...v6.0.10)
46
41
 
47
- ## v5.0.9
48
- - [#229](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/#229) Use HSCAN for expiring keys
49
- - [#232](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/#232) Fix testing helper
42
+ **Implemented enhancements:**
50
43
 
51
- ## v5.0.8
52
- - Fixes [#220](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/220)
44
+ - Log job silently complete [\#371](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/371) ([tadejm](https://github.com/tadejm))
53
45
 
54
- ## v5.0.7
55
- - Fixes [#218](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/218)
46
+ **Closed issues:**
56
47
 
57
- ## v5.0.6
58
- - Allow across worker uniquenes: See https://github.com/mhenrixon/sidekiq-unique-jobs/blob/master/spec/jobs/unique_acrosss_workers_job.rb for information
48
+ - Unsure of sane defaults [\#372](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/372)
59
49
 
60
- ## v5.0.5
61
- - Use a class level mutex for `while_executing`
50
+ ## [v6.0.9](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v6.0.9) (2019-02-11)
51
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v6.0.8...v6.0.9)
62
52
 
63
- ## v5.0.4
64
- - Fixes a problem with installing the gem
53
+ **Implemented enhancements:**
65
54
 
66
- ## v5.0.3
67
- - Removes test files and appraisals and such from the released gem version to speed up gem installs
55
+ - Delete all locks button [\#357](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/357)
56
+ - John denisov add delete all button to web [\#370](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/370) ([mhenrixon](https://github.com/mhenrixon))
57
+ - Various upgrades [\#366](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/366) ([mhenrixon](https://github.com/mhenrixon))
68
58
 
69
- ## v5.0.2
70
- - Added more helpful debug, warning and error messages for failures to collect unique arghuments
59
+ ## [v6.0.8](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v6.0.8) (2019-01-10)
60
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v6.0.7...v6.0.8)
71
61
 
72
- ## v5.0.1
62
+ **Fixed bugs:**
73
63
 
74
- - Added a command line util for cleaning out expired keys
75
- - Use `SidekiqUniqueJobs.logger` instead of spreading out `Sidekiq.logger` everywhere.
64
+ - Close \#359 [\#364](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/364) ([mhenrixon](https://github.com/mhenrixon))
76
65
 
77
- ## v5.0.0
66
+ **Closed issues:**
78
67
 
79
- - Only support Sidekiq >= 4
80
- - Removed overrides and support for older Sidekiq testing
81
- - Added coverage
68
+ - Automatic unlock of jobs [\#362](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/362)
69
+ - \(6.0.7\) `uniquejobs:{digest}:AVAILABLE` keys never expire [\#359](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/359)
70
+ - Strange behavior using strategy "reject" with "until\_executed" [\#358](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/358)
71
+ - Pinpointing issues with unique digests not being removed [\#353](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/353)
82
72
 
83
- ## v4.0.18
73
+ **Merged pull requests:**
84
74
 
85
- - Allow mock_redis to be used over redis
86
- - Fixes some locking inconsistencies
75
+ - update changelog [\#356](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/356) ([camallen](https://github.com/camallen))
87
76
 
88
- ## v4.0.17
77
+ ## [v6.0.7](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v6.0.7) (2018-11-29)
78
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v5.0.11...v6.0.7)
89
79
 
90
- - Always release lock in the lua script `release_lock.lua` and return success [#169](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/169)
80
+ **Fixed bugs:**
91
81
 
92
- ## v4.0.16
82
+ - Version 5: Job ID Hash Entries Not Removed if Unique Key Expires [\#346](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/346)
83
+ - Move the lpush last [\#354](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/354) ([mhenrixon](https://github.com/mhenrixon))
93
84
 
94
- - Allow run & queue lock timeout (expiration) to be different [#164](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/164)
95
- - Fix a bug with loading sidekiq test overrides ([#167](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/167)
85
+ **Closed issues:**
96
86
 
97
- ## v4.0.15
87
+ - First job never unlocks the lock / Endless waiting [\#352](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/352)
88
+ - Version 5&6: uniqueness not respected for Job without params [\#349](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/349)
98
89
 
99
- - Close [#156](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/156)
100
- - Close [#158](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/158)
101
- - Style fixes and some minor adjustments to the console/cmd line app
90
+ ## [v5.0.11](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v5.0.11) (2018-11-19)
91
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v6.0.6...v5.0.11)
102
92
 
103
- ## v4.0.13
93
+ **Implemented enhancements:**
104
94
 
105
- - Allow deleting locks by jid
95
+ - More integration tests [\#329](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/329) ([mhenrixon](https://github.com/mhenrixon))
106
96
 
107
- ## v4.0.12
97
+ **Fixed bugs:**
108
98
 
109
- - Allow jobs to be pushed to processing
110
- - Close [#150](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/150)
111
- - Close [#151](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/151)
112
- - Close [#146](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/146)
113
- - Close [#136](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/136)
114
- - Close [#133](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/133)
99
+ - Always Remove Job ID from uniquejobs Hash [\#347](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/347) ([chadrschroeder](https://github.com/chadrschroeder))
100
+ - Convert expiration time to integer [\#330](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/330) ([dareddov](https://github.com/dareddov))
115
101
 
116
- ## v4.0.11
102
+ **Closed issues:**
117
103
 
118
- - Always load forwardable [#152](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/152#issuecomment-164199978)
104
+ - concurrent-ruby 1.1.1 is causing this gem to break [\#340](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/340)
105
+ - lock remains after job not properly finish [\#339](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/339)
106
+ - Using a different Redis instance [\#337](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/337)
107
+ - Using :until\_and\_while\_executing not yielding expected results [\#336](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/336)
108
+ - "payload is not unique", but cannot find digest or scheduled job [\#335](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/335)
109
+ - Confused with UntilExecuted documenation [\#326](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/326)
110
+ - Job never requeued after raising unhandled error with until\_and\_while\_executing? [\#322](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/322)
119
111
 
120
- ## v4.0.10
112
+ **Merged pull requests:**
121
113
 
122
- - Fix [#152](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/152)
123
- - Minor improvement to internal esthetics
114
+ - Do not build keys on lua scripts [\#348](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/348) ([pacoguzman](https://github.com/pacoguzman))
115
+ - fix CHANGELOG syntax [\#344](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/344) ([timoschilling](https://github.com/timoschilling))
116
+ - Define Config class inside SidekiqUniqueJobs module [\#343](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/343) ([Slike9](https://github.com/Slike9))
117
+ - fix readme testing section [\#333](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/333) ([edmartins](https://github.com/edmartins))
118
+ - Fix typo in documentation \[ci-skip\] [\#327](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/327) ([mhenrixon](https://github.com/mhenrixon))
124
119
 
125
- ## v4.0.9
120
+ ## [v6.0.6](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v6.0.6) (2018-08-09)
121
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v6.0.5...v6.0.6)
126
122
 
127
- - Add command line and console extensions for removal of unique jobs (c292d87)
123
+ **Implemented enhancements:**
128
124
 
129
- ## v4.0.8
125
+ - Adds coverage for job retries [\#321](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/321) ([mhenrixon](https://github.com/mhenrixon))
126
+ - Internal refactoring [\#318](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/318) ([mhenrixon](https://github.com/mhenrixon))
130
127
 
131
- - Use unique arguments for the `WhileExecuting` lock ([#127](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/127)
132
- - Delicensed code ([#132](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/132)
133
- - Fix queuing unique jobs ([#138](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/138)
128
+ **Closed issues:**
134
129
 
135
- ## v4.0.7
130
+ - Unique UntilExecuted not working while the job is executing? [\#319](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/319)
136
131
 
137
- - Use unique arguments for the `WhileExecuting` lock ([#127](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/127)
138
- - See also https://github.com/mhenrixon/sidekiq-unique-jobs/releases/tag/v4.0.7
132
+ ## [v6.0.5](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v6.0.5) (2018-08-07)
133
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v6.0.4...v6.0.5)
139
134
 
140
- ## v4.0.6
135
+ **Fixed bugs:**
141
136
 
142
- - Removes enforced uniqueness for all jobs ([#127](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/127)
137
+ - Unlock instead of signal [\#317](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/317) ([mhenrixon](https://github.com/mhenrixon))
143
138
 
144
- ## v4.0.5
139
+ **Closed issues:**
145
140
 
146
- - Forces look for `Sidekiq::Testing` in Sidekiq without ancestors #129
141
+ - Why is lock\_timeout: nil VERY DANGEROUS? [\#313](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/313)
147
142
 
148
- ## v4.0.4
143
+ ## [v6.0.4](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v6.0.4) (2018-08-02)
144
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v6.0.3...v6.0.4)
149
145
 
150
- - Fix usage with active job
151
- - Get rid of unneeded configuration options `unique_args_enabled` (just use whatever unique argument that is configured).
146
+ **Fixed bugs:**
152
147
 
153
- ## v4.0.3
148
+ - Fix the broken expiration [\#316](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/316) ([mhenrixon](https://github.com/mhenrixon))
154
149
 
155
- - Remove `unique_lock` and use `unique: ` to set this like in `unique: :until_timeout`
156
- - Warn when using `unique: true` and suggest to change it to what we need with a fallback.
157
- - Create constants for hash keys to avoid having to fix spelling or for renaming keys only having to be done in one place and avoid having to type .freeze everywhere.
158
- - Move all explicit logic out from the server middle ware and make it just call execute on the instance of the lock class (prepare for allowing custom locking classes to be used).
159
- - Create a new job for scheduling jobs after it started executing but only allow one job to run at the same time.
150
+ **Closed issues:**
160
151
 
161
- ## v4.0.2
152
+ - Question about until\_timeout with 6.0.0 [\#303](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/303)
162
153
 
163
- - Fix a problem with an unresolved reference
154
+ ## [v6.0.3](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v6.0.3) (2018-08-02)
155
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v6.0.2...v6.0.3)
164
156
 
165
- ## v4.0.1
157
+ **Fixed bugs:**
166
158
 
167
- - Get rid of development dependency on active support (causing trouble with jruby)
159
+ - Enable replace strategy [\#315](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/315) ([mhenrixon](https://github.com/mhenrixon))
168
160
 
169
- ## v4.0.0
161
+ **Closed issues:**
170
162
 
171
- - Improved uniqueness handling (complete refactoring, upgrade with causion)
172
- - 100% breaking changes
163
+ - Sidekiq Web Pagination Broken [\#309](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/309)
173
164
 
174
- ## v3.0.15
165
+ **Merged pull requests:**
175
166
 
176
- - Jobs only ever unlock themselves now (see #96 & #94 for info) thanks @pik
177
- - Slight refactoring and internal renaming. Shouldn't affect anyone
178
- - Run locks as an alternative when you only need to prevent the same job running twice but want to be able to schedule it multiple times. See #99 (thanks @pik)
179
- - Fixes #90, #92, #93, #97, #98, #100, #101, #105
167
+ - Correct documentation typo \[ci skip\] [\#312](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/312) ([mhenrixon](https://github.com/mhenrixon))
180
168
 
181
- ## v3.0.14
169
+ ## [v6.0.2](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v6.0.2) (2018-08-01)
170
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v6.0.1...v6.0.2)
182
171
 
183
- - Improve uniqueness check performance thanks @mpherham
184
- - Remove locks in sidekiq fake testing mode
185
- - Do not unlock jobs when sidekiq is shutting down
172
+ **Fixed bugs:**
186
173
 
187
- ## v3.0.13
174
+ - Not unlocking automatically \(version 6.0.0rc5\) [\#293](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/293)
175
+ - Bug fixes [\#310](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/310) ([mhenrixon](https://github.com/mhenrixon))
188
176
 
189
- - Improved testing capabilities (testing uniqueness should not work better)
190
- - Configurable logging of duplicate payloads
191
- - Now requires `sidekiq_unique_ext` and `sidekiq/api` by default
192
- - Drop support for MRI 1.9 and sidekiq 2
177
+ ## [v6.0.1](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v6.0.1) (2018-07-31)
178
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v6.0.0...v6.0.1)
193
179
 
194
- ## v3.0.11
180
+ **Fixed bugs:**
195
181
 
196
- - Ensure threadsafety (thanks to adstage-david)
182
+ - :until\_executed is throwing errors and not requeuing the job. [\#256](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/256)
183
+ - Remove unused method [\#307](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/307) ([mhenrixon](https://github.com/mhenrixon))
197
184
 
198
- ## v3.0.9
199
- - Fixed that all jobs stopped processing
185
+ **Closed issues:**
200
186
 
201
- ## v3.0.8
187
+ - ArgumentError: sidekiq\_unique\_jobs/web breaks sidekiq Retries page [\#306](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/306)
188
+ - If the job dies, it doesn't remove the lock [\#304](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/304)
202
189
 
203
- - Unique extensions for Web GUI by @rickenharp. Uniqueness will now be removed when a job is.
190
+ **Merged pull requests:**
204
191
 
205
- ## v3.0.7
192
+ - Dead jobs [\#308](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/308) ([mhenrixon](https://github.com/mhenrixon))
193
+ - Fix require path for sidekiq\_unique\_jobs/web [\#305](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/305) ([soundasleep](https://github.com/soundasleep))
206
194
 
207
- - Internal refactoring
208
- - Improved coverage
209
- - Rubocop style validation
195
+ ## [v6.0.0](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v6.0.0) (2018-07-27)
196
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v6.0.0.rc8...v6.0.0)
210
197
 
211
- ## v3.0.5
198
+ ## [v6.0.0.rc8](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v6.0.0.rc8) (2018-07-24)
199
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v6.0.0.rc7...v6.0.0.rc8)
212
200
 
213
- - Fixed the different test modes (major thanks to @salrepe)
201
+ **Implemented enhancements:**
214
202
 
215
- ## v3.0.2
203
+ - Add RequeueWhileExecuting strategy [\#223](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/223)
204
+ - New feature: Replace original job if duplicate is added [\#177](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/177)
205
+ - Add a replace strategy for client locks [\#302](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/302) ([mhenrixon](https://github.com/mhenrixon))
216
206
 
217
- - Removed runtime dependency on mock_redis (add `gem 'mock_redis'` to your desired group to use it)
207
+ **Merged pull requests:**
218
208
 
219
- ## v2.7.0
209
+ - Add more details about testing uniqueness [\#301](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/301) ([mhenrixon](https://github.com/mhenrixon))
210
+ - Update README.md [\#300](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/300) ([pirj](https://github.com/pirj))
220
211
 
221
- - Use mock_redis when testing in fake mode
222
- - Replace minitest with rspec
223
- - Add codeclimate badge
224
- - Update travis with redis-server
212
+ ## [v6.0.0.rc7](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v6.0.0.rc7) (2018-07-23)
213
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v6.0.0.rc6...v6.0.0.rc7)
225
214
 
226
- ## v2.6.5
215
+ **Implemented enhancements:**
227
216
 
228
- - via @sax - possibility to set which arguments should be counted as unique - https://github.com/form26/sidekiq_unique_jobs/pull/12
229
- - via @eduardosasso - possibility to set which arguments should be counted as unique - https://github.com/form26/sidekiq_unique_jobs/pull/11
230
- - via @KensoDev - configuration of default expiration - https://github.com/form26/sidekiq_unique_jobs/pull/9
217
+ - Sidekiq web [\#297](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/297) ([mhenrixon](https://github.com/mhenrixon))
218
+ - Document code [\#296](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/296) ([mhenrixon](https://github.com/mhenrixon))
219
+ - Rename to `unique:` to `lock:` [\#295](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/295) ([mhenrixon](https://github.com/mhenrixon))
231
220
 
232
- ## v2.1.0
221
+ **Closed issues:**
233
222
 
234
- Extracted the unique jobs portion from sidekiq main repo since @mperham dropped support for it.
223
+ - Unique Job not work while play with crontab [\#294](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/294)
224
+ - Making the GEM compatible with Ruby \< 2.3 [\#291](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/291)
225
+
226
+ **Merged pull requests:**
227
+
228
+ - Adds changelog entry [\#299](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/299) ([mhenrixon](https://github.com/mhenrixon))
229
+ - Fix README [\#298](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/298) ([mhenrixon](https://github.com/mhenrixon))
230
+
231
+ ## [v6.0.0.rc6](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v6.0.0.rc6) (2018-07-15)
232
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v6.0.0.rc5...v6.0.0.rc6)
233
+
234
+ **Fixed bugs:**
235
+
236
+ - Don't unlock when worker raises an error [\#290](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/290) ([mhenrixon](https://github.com/mhenrixon))
237
+
238
+ **Closed issues:**
239
+
240
+ - Locking with retries [\#289](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/289)
241
+
242
+ **Merged pull requests:**
243
+
244
+ - Readme [\#288](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/288) ([mhenrixon](https://github.com/mhenrixon))
245
+
246
+ ## [v6.0.0.rc5](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v6.0.0.rc5) (2018-06-30)
247
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v6.0.0.rc4...v6.0.0.rc5)
248
+
249
+ **Fixed bugs:**
250
+
251
+ - bundle exec jobs console does not work [\#253](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/253)
252
+ - Rename command line binary [\#287](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/287) ([mhenrixon](https://github.com/mhenrixon))
253
+
254
+ ## [v6.0.0.rc4](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v6.0.0.rc4) (2018-06-30)
255
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v6.0.0.rc3...v6.0.0.rc4)
256
+
257
+ **Implemented enhancements:**
258
+
259
+ - Prepare for v6 [\#286](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/286) ([mhenrixon](https://github.com/mhenrixon))
260
+ - Only unlock not delete [\#285](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/285) ([mhenrixon](https://github.com/mhenrixon))
261
+
262
+ ## [v6.0.0.rc3](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v6.0.0.rc3) (2018-06-29)
263
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v6.0.0.rc2...v6.0.0.rc3)
264
+
265
+ **Fixed bugs:**
266
+
267
+ - Fix waiting for locks [\#284](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/284) ([mhenrixon](https://github.com/mhenrixon))
268
+
269
+ ## [v6.0.0.rc2](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v6.0.0.rc2) (2018-06-26)
270
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v6.0.0.rc1...v6.0.0.rc2)
271
+
272
+ **Implemented enhancements:**
273
+
274
+ - Within tests: workers enqueued in the future don't clear their unique locks after being drained/executed [\#254](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/254)
275
+ - Unexpected behavior with until\_executed [\#250](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/250)
276
+
277
+ **Fixed bugs:**
278
+
279
+ - Unique job needs to be unlocked manually? [\#261](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/261)
280
+ - Duplicate jobs getting created [\#257](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/257)
281
+ - Multiple non-unique jobs with until\_executed? [\#255](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/255)
282
+ - :until\_executing not unlocking when starting to run [\#245](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/245)
283
+ - Drop jobs hash [\#282](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/282) ([mhenrixon](https://github.com/mhenrixon))
284
+
285
+ **Closed issues:**
286
+
287
+ - Difference between :until\_and\_while\_executing vs :until\_executed is not clear [\#249](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/249)
288
+ - Deprecated Documentation [\#246](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/246)
289
+ - Are we meant to manually expire the unique jobs hash? [\#234](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/234)
290
+ - How :until\_executing works ? Run job only once and discard new jobs while another job is executing [\#226](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/226)
291
+
292
+ **Merged pull requests:**
293
+
294
+ - Remove some misleading information [\#283](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/283) ([mhenrixon](https://github.com/mhenrixon))
295
+
296
+ ## [v6.0.0.rc1](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v6.0.0.rc1) (2018-06-26)
297
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v6.0.0.beta2...v6.0.0.rc1)
298
+
299
+ **Implemented enhancements:**
300
+
301
+ - Legacy support [\#280](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/280)
302
+ - Adds legacy support [\#281](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/281) ([mhenrixon](https://github.com/mhenrixon))
303
+ - Adds guard-reek [\#279](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/279) ([mhenrixon](https://github.com/mhenrixon))
304
+ - Fix UntilExpired [\#278](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/278) ([mhenrixon](https://github.com/mhenrixon))
305
+
306
+ **Fixed bugs:**
307
+
308
+ - Fix UntilExpired [\#278](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/278) ([mhenrixon](https://github.com/mhenrixon))
309
+
310
+ ## [v6.0.0.beta2](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v6.0.0.beta2) (2018-06-25)
311
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v6.0.0.beta1...v6.0.0.beta2)
312
+
313
+ **Implemented enhancements:**
314
+
315
+ - Make locks more robust [\#277](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/277) ([mhenrixon](https://github.com/mhenrixon))
316
+ - Rename UntilTimeout -\> UntilExpired [\#276](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/276) ([mhenrixon](https://github.com/mhenrixon))
317
+
318
+ ## [v6.0.0.beta1](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v6.0.0.beta1) (2018-06-22)
319
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v6.0.0.beta...v6.0.0.beta1)
320
+
321
+ **Implemented enhancements:**
322
+
323
+ - Code smells [\#275](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/275) ([mhenrixon](https://github.com/mhenrixon))
324
+ - Reject while scheduling [\#273](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/273) ([mhenrixon](https://github.com/mhenrixon))
325
+ - Improve testing [\#272](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/272) ([mhenrixon](https://github.com/mhenrixon))
326
+
327
+ ## [v6.0.0.beta](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v6.0.0.beta) (2018-06-17)
328
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v5.0.10...v6.0.0.beta)
329
+
330
+ **Implemented enhancements:**
331
+
332
+ - Until and while executing [\#271](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/271) ([mhenrixon](https://github.com/mhenrixon))
333
+ - Solidify master [\#270](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/270) ([mhenrixon](https://github.com/mhenrixon))
334
+ - Minor adjustments [\#268](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/268) ([mhenrixon](https://github.com/mhenrixon))
335
+ - Use ruby 2.5.1 [\#267](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/267) ([mhenrixon](https://github.com/mhenrixon))
336
+ - Add explicit concurrent-ruby dependency. [\#265](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/265) ([brettburley](https://github.com/brettburley))
337
+
338
+ **Fixed bugs:**
339
+
340
+ - Allow `jobs keys` to default to listing all keys [\#252](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/252) ([soundasleep](https://github.com/soundasleep))
341
+
342
+ **Closed issues:**
343
+
344
+ - Incomplete sentence in README [\#264](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/264)
345
+ - ActiveJob and Sidekiq::Worker [\#259](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/259)
346
+ - ActiveJob and Sidekiq::Worker [\#258](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/258)
347
+ - Non-unique jobs can be added even when `sidekiq\_options unique: :until\_executed` [\#251](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/251)
348
+ - Trouble with "inline" mode [\#243](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/243)
349
+ - Sidekiq::Worker.set not working with sidekiq-unique-jobs [\#242](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/242)
350
+ - sidekiq-unique-job with ActiveJob [\#238](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/238)
351
+ - Deadlock using :while\_executing? [\#233](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/233)
352
+
353
+ **Merged pull requests:**
354
+
355
+ - Improve documentation [\#269](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/269) ([mhenrixon](https://github.com/mhenrixon))
356
+ - Remove unnecessary monkey patches for String [\#262](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/262) ([zormandi](https://github.com/zormandi))
357
+ - README \> While Executing: remove unnecessary word [\#260](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/260) ([TimCannady](https://github.com/TimCannady))
358
+ - Don't skip monkeypatches if ActiveSupport present [\#248](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/248) ([dleavitt](https://github.com/dleavitt))
359
+ - Better runtime locks [\#241](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/241) ([mhenrixon](https://github.com/mhenrixon))
360
+
361
+ ## [v5.0.10](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v5.0.10) (2017-08-19)
362
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v5.0.9...v5.0.10)
363
+
364
+ **Closed issues:**
365
+
366
+ - Version v5.0.5 might have introduced a breaking change in while\_executing and was not documented [\#230](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/230)
367
+ - String arguments not seen as unique [\#222](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/222)
368
+ - unique\_args method suppresses all `NameError` exceptions [\#219](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/219)
369
+
370
+ **Merged pull requests:**
371
+
372
+ - Various improvements [\#240](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/240) ([mhenrixon](https://github.com/mhenrixon))
373
+ - Fix: uninitialized constant CustomQueueJob on rspec [\#239](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/239) ([dalpo](https://github.com/dalpo))
374
+
375
+ ## [v5.0.9](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v5.0.9) (2017-07-06)
376
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v5.0.8...v5.0.9)
377
+
378
+ **Closed issues:**
379
+
380
+ - The work of several unique sidekiq tasks within one queue [\#225](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/225)
381
+ - Missing documentation on activejob usage [\#221](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/221)
382
+
383
+ **Merged pull requests:**
384
+
385
+ - Your testing lib is broken and don't permit to test uniqueness of jobs [\#232](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/232) ([keysen](https://github.com/keysen))
386
+ - Use hscan for Util\#expire [\#229](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/229) ([dmkc](https://github.com/dmkc))
387
+ - Fixed documentation example about unique\_args [\#228](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/228) ([andresakata](https://github.com/andresakata))
388
+ - Fix filename [\#224](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/224) ([ikataitsev](https://github.com/ikataitsev))
389
+
390
+ ## [v5.0.8](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v5.0.8) (2017-05-03)
391
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v5.0.7...v5.0.8)
392
+
393
+ **Closed issues:**
394
+
395
+ - Using JSON.parse in delete\_by\_value\_ext break compatiblity with other Sidekiq extensions [\#220](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/220)
396
+ - Is it possible to get the Job ID of original job? [\#217](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/217)
397
+
398
+ ## [v5.0.7](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v5.0.7) (2017-04-26)
399
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v5.0.6...v5.0.7)
400
+
401
+ **Closed issues:**
402
+
403
+ - Can't delete Sidekiq::Job after 5.0.1 [\#218](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/218)
404
+ - Uniqueness across workers [\#210](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/210)
405
+
406
+ ## [v5.0.6](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v5.0.6) (2017-04-23)
407
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v5.0.5...v5.0.6)
408
+
409
+ **Closed issues:**
410
+
411
+ - Different unique arguments depending on lock type [\#203](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/203)
412
+ - Strategy until\_and\_while\_executing not working properly [\#199](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/199)
413
+ - while\_executing working wrong [\#193](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/193)
414
+
415
+ ## [v5.0.5](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v5.0.5) (2017-04-23)
416
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v5.0.4...v5.0.5)
417
+
418
+ **Merged pull requests:**
419
+
420
+ - Fixed typo on README.md [\#216](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/216) ([jsantos](https://github.com/jsantos))
421
+
422
+ ## [v5.0.4](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v5.0.4) (2017-04-18)
423
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v5.0.3...v5.0.4)
424
+
425
+ ## [v5.0.3](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v5.0.3) (2017-04-18)
426
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v5.0.2...v5.0.3)
427
+
428
+ ## [v5.0.2](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v5.0.2) (2017-04-17)
429
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v5.0.1...v5.0.2)
430
+
431
+ **Closed issues:**
432
+
433
+ - Uniqueness should not survive Class.jobs.clear [\#214](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/214)
434
+ - when arguments are empty then unique\_args proc/method is not executed [\#201](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/201)
435
+
436
+ ## [v5.0.1](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v5.0.1) (2017-04-16)
437
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v5.0.0...v5.0.1)
438
+
439
+ **Closed issues:**
440
+
441
+ - Removing "uniquejobs" hash? [\#213](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/213)
442
+ - deprecation warnings with redis-namespace 2.0 [\#212](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/212)
443
+ - Unclear docs / examples for unique\_args [\#211](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/211)
444
+ - Jobs Console fails to launch [\#208](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/208)
445
+ - Util.del Redis::CommandError: ERR syntax error [\#207](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/207)
446
+ - version 4.0.19 [\#206](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/206)
447
+ - Job.delete does not remove lock in all circumstances [\#205](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/205)
448
+ - disappearing jobs - known issue in conjunction with other extensions? [\#202](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/202)
449
+ - Broken pipe @ io\_write - \<STDERR\> on sidekiq unique jobs [\#198](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/198)
450
+ - Doesn't play well with redis-namespace [\#196](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/196)
451
+ - SidekiqUniqueJobs::ScriptError [\#192](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/192)
452
+
453
+ **Merged pull requests:**
454
+
455
+ - Add the possibility to clear the hash [\#215](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/215) ([mhenrixon](https://github.com/mhenrixon))
456
+
457
+ ## [v5.0.0](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v5.0.0) (2017-04-08)
458
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v4.0.18...v5.0.0)
459
+
460
+ **Fixed bugs:**
461
+
462
+ - Can't enable testing with newer versions of sidekiq [\#175](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/175)
463
+ - strange behaviour [\#172](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/172)
464
+
465
+ **Closed issues:**
466
+
467
+ - Could not find a valid gem 'sidekiq-unique-jobs' \(= 3.0.15\) in any repository [\#197](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/197)
468
+ - `uniquejobs` hash doesn't get cleaned up [\#195](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/195)
469
+ - Code block under "Finer Control over Uniqueness" in your documentation might have the wrong option specified [\#191](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/191)
470
+ - not able to run test without live Redis [\#186](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/186)
471
+ - unique while not sucessfully completed? [\#185](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/185)
472
+ - Duplicate jobs when using :until\_and\_while\_executing [\#181](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/181)
473
+ - unique: :while\_executing doesn't remove lock when the Sidekiq node running the job shuts down and terminates the job prematurely [\#170](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/170)
474
+ - :while\_executing appears to be broken [\#159](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/159)
475
+ - Using ":until\_executing, :until\_executed, :until\_timeout, :until\_and\_while\_executing" all break Sidekiq::Testing [\#157](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/157)
476
+ - Way to remove lock in application code [\#147](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/147)
477
+
478
+ **Merged pull requests:**
479
+
480
+ - Increase sleep delay in WhileExecuting\#synchronize [\#204](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/204) ([dsander](https://github.com/dsander))
481
+ - Ensure job ID removed from uniquejobs hash [\#200](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/200) ([carlosmartinez](https://github.com/carlosmartinez))
482
+ - unique args need to be an array [\#194](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/194) ([pboling](https://github.com/pboling))
483
+
484
+ ## [v4.0.18](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v4.0.18) (2016-07-24)
485
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v4.0.17...v4.0.18)
486
+
487
+ **Closed issues:**
488
+
489
+ - ArgumentError: wrong number of arguments \(given 1, expected 2\) [\#190](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/190)
490
+ - Should be note on document only works on production mode [\#189](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/189)
491
+ - SidekiqUniqueJobs::ScriptError: release\_lock.lua NOSCRIPT No matching script. [\#187](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/187)
492
+ - sidekiq-unique-jobs kills sidekiq in production [\#183](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/183)
493
+ - Parameters turn into String [\#182](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/182)
494
+ - You really helped me today [\#180](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/180)
495
+ - 4.0.17 config [\#171](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/171)
496
+ - Problem with releasing uniquejobs locks after timeout expires [\#169](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/169)
497
+ - NOSCRIPT No matching script. Please use EVAL. [\#168](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/168)
498
+ - Broken compatibility with Sidekiq 3.4 [\#140](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/140)
499
+
500
+ **Merged pull requests:**
501
+
502
+ - missed space [\#188](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/188) ([TheBigSadowski](https://github.com/TheBigSadowski))
503
+ - Convert unless if to just 1 if [\#179](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/179) ([otzy007](https://github.com/otzy007))
504
+ - fix for \#168. Handle the NOSCRIPT by sending the script again [\#178](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/178) ([otzy007](https://github.com/otzy007))
505
+ - Fixed gitter badge link [\#176](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/176) ([andrew](https://github.com/andrew))
506
+
507
+ ## [v4.0.17](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v4.0.17) (2016-03-02)
508
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v4.0.16...v4.0.17)
509
+
510
+ **Closed issues:**
511
+
512
+ - No place where I can say "Thank you" for all contributors [\#165](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/165)
513
+
514
+ ## [v4.0.16](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v4.0.16) (2016-02-17)
515
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v4.0.15...v4.0.16)
516
+
517
+ **Merged pull requests:**
518
+
519
+ - Fix for sidekiq delete failing for version 3.4.x [\#167](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/167) ([theprogrammerin](https://github.com/theprogrammerin))
520
+ - Run lock timeout configurable [\#164](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/164) ([Slania](https://github.com/Slania))
521
+
522
+ ## [v4.0.15](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v4.0.15) (2016-02-16)
523
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v4.0.13...v4.0.15)
524
+
525
+ **Closed issues:**
526
+
527
+ - Until timeout question [\#163](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/163)
528
+ - Error when run rspec [\#162](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/162)
529
+ - Unique job keys never dissapear [\#161](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/161)
530
+ - Uniqueness breaks jobs [\#160](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/160)
531
+ - Too many open files [\#155](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/155)
532
+
533
+ **Merged pull requests:**
534
+
535
+ - Add a Gitter chat badge to README.md [\#166](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/166) ([gitter-badger](https://github.com/gitter-badger))
536
+ - Fix test overrides. [\#158](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/158) ([benseligman](https://github.com/benseligman))
537
+ - Remove wrong Server::Middleware\#worker\_class override [\#156](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/156) ([vkuznetsov](https://github.com/vkuznetsov))
538
+
539
+ ## [v4.0.13](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v4.0.13) (2015-12-16)
540
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v4.0.12...v4.0.13)
541
+
542
+ **Closed issues:**
543
+
544
+ - Seeing this error with latest version 4.0.12 [\#154](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/154)
545
+ - Unique job showing weird behavior [\#153](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/153)
546
+
547
+ ## [v4.0.12](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v4.0.12) (2015-12-15)
548
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v4.0.11...v4.0.12)
549
+
550
+ **Closed issues:**
551
+
552
+ - Can't schedule a job from another job [\#151](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/151)
553
+ - perform\_in not working in version 4.0.9 [\#150](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/150)
554
+ - `unique: until\_and\_while\_executing` not working as expected [\#146](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/146)
555
+ - while\_executing still runs duplicate tasks [\#136](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/136)
556
+ - Version 4 Upgrade [\#133](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/133)
557
+
558
+ ## [v4.0.11](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v4.0.11) (2015-12-12)
559
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v4.0.10...v4.0.11)
560
+
561
+ **Closed issues:**
562
+
563
+ - Release a new version for Ruby \< 2.1 compatability [\#152](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/152)
564
+
565
+ ## [v4.0.10](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v4.0.10) (2015-12-12)
566
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v4.0.9...v4.0.10)
567
+
568
+ **Closed issues:**
569
+
570
+ - Until Executed is taking waiting for unique\_expiration [\#149](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/149)
571
+ - Until Executed vs Unique Until And While Executing is confusing in README [\#148](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/148)
572
+ - sidekiq-unique-jobs not enabled from sidekiq workers [\#131](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/131)
573
+
574
+ ## [v4.0.9](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v4.0.9) (2015-11-14)
575
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v4.0.8...v4.0.9)
576
+
577
+ **Closed issues:**
578
+
579
+ - Error when using unique\_args in 4.0.8 [\#145](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/145)
580
+ - Ignore lock when jobs spawned from another sidekiq worker [\#142](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/142)
581
+ - Two Rails apps on the same server, but only one Sidekiq instances is working correctly [\#141](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/141)
582
+ - ActiveRecord::RecordNotDestroyed: Failed to destroy the record [\#139](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/139)
583
+
584
+ ## [v4.0.8](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v4.0.8) (2015-10-31)
585
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v4.0.7...v4.0.8)
586
+
587
+ **Closed issues:**
588
+
589
+ - Jobs not getting queued in v4 [\#138](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/138)
590
+ - Unique args being considered? [\#137](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/137)
591
+ - No mention how to test in README [\#135](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/135)
592
+ - License Difference [\#132](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/132)
593
+
594
+ **Merged pull requests:**
595
+
596
+ - Calculate worker's unique args when a proc or a symbol is specified [\#143](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/143) ([zeqfreed](https://github.com/zeqfreed))
597
+ - Fix markdown link formatting [\#134](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/134) ([thbar](https://github.com/thbar))
598
+
599
+ ## [v4.0.7](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v4.0.7) (2015-10-14)
600
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v4.0.6...v4.0.7)
601
+
602
+ **Closed issues:**
603
+
604
+ - docs clarification [\#130](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/130)
605
+ - 4.\* is hurting background job workers performance [\#127](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/127)
606
+
607
+ ## [v4.0.6](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v4.0.6) (2015-10-14)
608
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v4.0.5...v4.0.6)
609
+
610
+ **Closed issues:**
611
+
612
+ - NameError: uninitialized constant SidekiqUniqueJobs::RunLockFailed [\#126](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/126)
613
+
614
+ ## [v4.0.5](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v4.0.5) (2015-10-13)
615
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v4.0.4...v4.0.5)
616
+
617
+ **Closed issues:**
618
+
619
+ - Rails + Sidekiq will go bezerk after sidekiq-unique-jobs testing check. [\#128](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/128)
620
+ - NoMethodError: undefined method `to\_sym' for true:TrueClass [\#125](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/125)
621
+ - Redis::CommandError: ERR unknown command 'eval' [\#124](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/124)
622
+
623
+ **Merged pull requests:**
624
+
625
+ - Forces to look for testing namespace in Sidekiq and not his ancestors [\#129](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/129) ([antek-drzewiecki](https://github.com/antek-drzewiecki))
626
+ - Fix outdated phrasing and add test coverage to readme [\#123](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/123) ([albertyw](https://github.com/albertyw))
627
+
628
+ ## [v4.0.4](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v4.0.4) (2015-10-09)
629
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v4.0.3...v4.0.4)
630
+
631
+ **Closed issues:**
632
+
633
+ - Active job with unique args doesn't work [\#120](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/120)
634
+ - 4.0.1 =\> job no longer unique [\#117](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/117)
635
+ - Update Changelog and Tags [\#115](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/115)
636
+
637
+ ## [v4.0.3](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v4.0.3) (2015-10-08)
638
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v4.0.2...v4.0.3)
639
+
640
+ **Closed issues:**
641
+
642
+ - unique\_unlock\_order - never option [\#122](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/122)
643
+ - Run 1 job and queue 1 [\#121](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/121)
644
+ - unique\_lock vs unique\_locks typo [\#119](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/119)
645
+ - 4.0.2 commited but not released to rubygems? [\#118](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/118)
646
+
647
+ ## [v4.0.2](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v4.0.2) (2015-10-06)
648
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/4.0.1...v4.0.2)
649
+
650
+ ## [4.0.1](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/4.0.1) (2015-10-06)
651
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v4.0.0...4.0.1)
652
+
653
+ **Closed issues:**
654
+
655
+ - Don't work with perform\_in [\#114](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/114)
656
+ - 3.0.15 apparently breaks inline testing [\#113](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/113)
657
+ - sidekiq\_unique record in Redis is not cleaned when foreman process is killed [\#112](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/112)
658
+ - Can't ensure unique job simultaneously. [\#111](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/111)
659
+ - Job considered as duplicate after completion only in production [\#110](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/110)
660
+ - Gem requires Redis 2.6+? [\#109](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/109)
661
+ - unable to re-schedule job at specific time [\#108](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/108)
662
+ - Documentation Not Clear [\#78](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/78)
663
+ - Runtime uniqueness when using :before\_yield as unlock order [\#72](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/72)
664
+ - Using with sidekiq delayed extensions [\#45](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/45)
665
+
666
+ **Merged pull requests:**
667
+
668
+ - Clean up version 4 upgrade instructions [\#116](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/116) ([albertyw](https://github.com/albertyw))
669
+
670
+ ## [v4.0.0](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v4.0.0) (2015-10-05)
671
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v3.0.11...v4.0.0)
672
+
673
+ **Implemented enhancements:**
674
+
675
+ - Duplicated Jobs With Nested Sidekiq Workers [\#10](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/10)
676
+
677
+ **Closed issues:**
678
+
679
+ - 3.0.14 Error: ERR wrong number of arguments for 'set' command \(Redis::CommandError\) [\#104](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/104)
680
+ - Testing [\#103](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/103)
681
+ - Active Job [\#102](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/102)
682
+ - Why is SidekiqUnique behaviour applied to regular Workers? [\#100](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/100)
683
+ - Confusing behavior when trying to `\[1,2,3\].each { |n| SomeJob.perform\_in\(n.seconds.from\_now, n\) }` never running, logging as duplicate value [\#98](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/98)
684
+ - Scheduled jobs are not unlocked when deleted [\#97](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/97)
685
+ - Testing functions should be moved out of production code [\#95](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/95)
686
+ - Jobs can unlock mutexes they don't own [\#94](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/94)
687
+ - Jobs scheduled in the future are never run [\#93](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/93)
688
+ - perform\_at and perform\_async do not unique if perform\_at is in the future. [\#91](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/91)
689
+ - Latest release is breaking [\#90](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/90)
690
+ - Optimize Redis usage [\#89](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/89)
691
+ - Unique jobs sets Sidekiq testing to inline! mode [\#88](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/88)
692
+ - Test suite unclear on what happens when duplicate job is attempted [\#84](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/84)
693
+ - Change log level to info rather than warn [\#80](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/80)
694
+ - Jobs are unlocked if they fail and are retried [\#77](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/77)
695
+ - Usage of sidekiq-unique-jobs with activejob [\#76](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/76)
696
+ - If a job is deleted from the enqueued list, it's still unique and new jobs can't be added. [\#74](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/74)
697
+ - Incorrect README re: uniqueness time? [\#73](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/73)
698
+ - Sidekiq::Testing inline detection assumes you're always using inline testing [\#71](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/71)
699
+ - unique\_args\_enabled has been deprecated, nothing in readme [\#70](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/70)
700
+ - The second job does not run, even if it has different arguments [\#69](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/69)
701
+ - Jobs not being executed anymore?? [\#65](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/65)
702
+ - mock\_redis and the mess [\#62](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/62)
703
+ - What is the exact behavior? [\#47](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/47)
704
+ - Throttling jobs [\#39](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/39)
705
+ - undefined method `get\_sidekiq\_options' for "MyScheduledWorker":String [\#27](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/27)
706
+ - Crash handling [\#14](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/14)
707
+ - Missing info from README [\#6](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/6)
708
+
709
+ **Merged pull requests:**
710
+
711
+ - Allow job with jid matching unique lock to pass unique check [\#105](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/105) ([deltaroe](https://github.com/deltaroe))
712
+ - Prevent Jobs from deleting mutexes they don't own [\#96](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/96) ([pik](https://github.com/pik))
713
+ - Add after unlock hook [\#92](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/92) ([HParker](https://github.com/HParker))
714
+ - Do not unlock on sidekiq shutdown [\#87](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/87) ([deltaroe](https://github.com/deltaroe))
715
+ - Remove no-op code, protect global space from test code [\#86](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/86) ([stevenjonescgm](https://github.com/stevenjonescgm))
716
+ - Remove unique lock when executing and clearing jobs in sidekiq fake mode [\#83](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/83) ([crberube](https://github.com/crberube))
717
+ - Fix tests. Tests with latest sidekiq versions and ruby versions [\#82](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/82) ([simonoff](https://github.com/simonoff))
718
+ - Duplicate Payload logging configuration [\#81](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/81) ([jprincipe](https://github.com/jprincipe))
719
+ - output log if not unique [\#79](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/79) ([sonots](https://github.com/sonots))
720
+ - Checking Sidekiq::Testing.inline? on testing strategy and connector [\#75](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/75) ([Draiken](https://github.com/Draiken))
721
+
722
+ ## [v3.0.11](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v3.0.11) (2014-12-15)
723
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v3.0.10...v3.0.11)
724
+
725
+ **Closed issues:**
726
+
727
+ - ConnectionPool used incorrectly - causes deadlocks [\#66](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/66)
728
+ - undefined `configuration` when using .configure [\#64](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/64)
729
+
730
+ **Merged pull requests:**
731
+
732
+ - Use ConnectionPool blocks to ensure exclusive connection. Closes \#66. [\#67](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/67) ([adstage-david](https://github.com/adstage-david))
733
+
734
+ ## [v3.0.10](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v3.0.10) (2014-11-19)
735
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v3.0.9...v3.0.10)
736
+
737
+ **Closed issues:**
738
+
739
+ - LoadError: cannot load such file -- mock\_redis [\#60](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/60)
740
+ - The deprecation message is unclear and unnecessary [\#59](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/59)
741
+
742
+ **Merged pull requests:**
743
+
744
+ - Added method name to depreciation warning message [\#61](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/61) ([jamesbowles](https://github.com/jamesbowles))
745
+
746
+ ## [v3.0.9](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v3.0.9) (2014-11-05)
747
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v3.0.3...v3.0.9)
748
+
749
+ **Closed issues:**
750
+
751
+ - sidekiq-unique-jobs prevents not unique jobs creation event with sidekiq inline test mode [\#58](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/58)
752
+ - mock redis dependency [\#55](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/55)
753
+ - Unique key inconsistency between server and client [\#48](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/48)
754
+ - Example Test using Sidekiq::Testing.inline [\#44](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/44)
755
+ - Will a second job lose if the job is already queued, or is already scheduled? [\#43](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/43)
756
+ - Can you update the change log? [\#42](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/42)
757
+
758
+ **Merged pull requests:**
759
+
760
+ - Refactoring connectors to use them in client and server [\#56](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/56) ([salrepe](https://github.com/salrepe))
761
+ - Fix dependency error in inline testing connector [\#54](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/54) ([salrepe](https://github.com/salrepe))
762
+ - Add extension to Sidekiq API that is uniqueness-aware [\#52](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/52) ([rickenharp](https://github.com/rickenharp))
763
+
764
+ ## [v3.0.3](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v3.0.3) (2014-11-03)
765
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v3.0.2...v3.0.3)
766
+
767
+ **Closed issues:**
768
+
769
+ - is mock\_redis really a runtime dependency? [\#46](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/46)
770
+
771
+ **Merged pull requests:**
772
+
773
+ - Unlock testing inline jobs like normal ones [\#53](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/53) ([salrepe](https://github.com/salrepe))
774
+ - Declare mock\_redis as development dependency instead of runtime one [\#51](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/51) ([phuongnd08](https://github.com/phuongnd08))
775
+
776
+ ## [v3.0.2](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v3.0.2) (2014-06-08)
777
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v3.0.1...v3.0.2)
778
+
779
+ **Closed issues:**
780
+
781
+ - Add unique job key to the message json [\#40](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/40)
782
+
783
+ **Merged pull requests:**
784
+
785
+ - Add the unique hash to the message for use by the workers. [\#41](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/41) ([sullimander](https://github.com/sullimander))
786
+
787
+ ## [v3.0.1](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v3.0.1) (2014-06-08)
788
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v2.7.0...v3.0.1)
789
+
790
+ **Closed issues:**
791
+
792
+ - Support for sidekiq 3? [\#34](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/34)
793
+ - Short jobs are not unique for the given time window [\#33](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/33)
794
+ - Not all sidekiq:sidekiq\_unique keys are removed from Redis [\#31](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/31)
795
+ - What does uniqueness mean in case of this gem? [\#30](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/30)
796
+ - Server middleware removes payload hash key before expiration [\#26](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/26)
797
+ - Lock remains when running with Sidekiq::Testing.inline! [\#23](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/23)
798
+ - What is the use case for the uniqueness window? [\#22](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/22)
799
+ - clarification on unique\_args [\#20](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/20)
800
+ - payload\_hash staying around [\#13](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/13)
801
+
802
+ **Merged pull requests:**
803
+
804
+ - Fix repo URLs for badges [\#38](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/38) ([felixbuenemann](https://github.com/felixbuenemann))
805
+ - Clarify README about unique expiration [\#36](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/36) ([spacemunkay](https://github.com/spacemunkay))
806
+ - Add option to make jobs unique on all queues [\#32](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/32) ([robinmessage](https://github.com/robinmessage))
807
+ - Fix homepage in gemspec [\#29](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/29) ([tmaier](https://github.com/tmaier))
808
+
809
+ ## [v2.7.0](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v2.7.0) (2013-11-24)
810
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v2.3.2...v2.7.0)
811
+
812
+ **Closed issues:**
813
+
814
+ - Sidekiq tests failed when sidekiq-unique-jobs is used [\#24](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/24)
815
+ - Redis not mocked in testing [\#18](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/18)
816
+ - Scheduled Unique Jobs Not Being Enqueued [\#15](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/15)
817
+ - Retries duplicates unique jobs [\#5](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/5)
818
+ - Middleware not added to chain? [\#2](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/2)
819
+
820
+ **Merged pull requests:**
821
+
822
+ - Make unlock/yield order configurable. [\#21](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/21) ([endofunky](https://github.com/endofunky))
823
+ - Rely on Sidekiq's String\#constantize extension instead of rolling our own [\#19](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/19) ([disbelief](https://github.com/disbelief))
824
+ - Attempt to constantize String `worker\_class` arguments passed to client middleware [\#17](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/17) ([disbelief](https://github.com/disbelief))
825
+ - Compatibility with Sidekiq 2.12.1 Scheduled Jobs [\#16](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/16) ([lsimoneau](https://github.com/lsimoneau))
826
+ - Allow worker to specify which arguments to include in uniquing hash [\#12](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/12) ([sax](https://github.com/sax))
827
+ - Add support for unique when using Sidekiq's delay function [\#11](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/11) ([eduardosasso](https://github.com/eduardosasso))
828
+ - Adding the unique prefix option [\#8](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/8) ([KensoDev](https://github.com/KensoDev))
829
+ - Remove unnecessary log messages [\#7](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/7) ([marclennox](https://github.com/marclennox))
830
+
831
+ ## [v2.3.2](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v2.3.2) (2012-09-27)
832
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v2.2.1...v2.3.2)
833
+
834
+ **Closed issues:**
835
+
836
+ - Scheduled workers [\#1](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/1)
837
+
838
+ **Merged pull requests:**
839
+
840
+ - Fix multiple bugs, cleaned up dependencies, and added a feature [\#4](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/4) ([kemper-blinq](https://github.com/kemper-blinq))
841
+ - Dependency on sidekiq 2.2.0 and up [\#3](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/3) ([philostler](https://github.com/philostler))
842
+
843
+ ## [v2.2.1](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v2.2.1) (2012-08-19)
844
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v2.2.0...v2.2.1)
845
+
846
+ ## [v2.2.0](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v2.2.0) (2012-08-19)
847
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v2.1.0...v2.2.0)
848
+
849
+ ## [v2.1.0](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v2.1.0) (2012-08-07)
850
+
851
+
852
+ \* *This Change Log was automatically generated by [github_changelog_generator](https://github.com/skywinder/Github-Changelog-Generator)*