sidekiq-unique-jobs 7.0.4 → 7.0.9

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of sidekiq-unique-jobs might be problematic. Click here for more details.

checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: aab43f8fb0d477540bebf25b5534283a5f10fe87c25eac87037f11bfde4fa98a
4
- data.tar.gz: dba2ab4c7c822d121f4444718cba553e414408b5bdecc58e487106eb7ce1880a
3
+ metadata.gz: 935557852bee165ab73356ac080c4ac1cddcb218db752703f40d016dc9aadf01
4
+ data.tar.gz: 47e95549bc6c9b7784619c971c727a536abc0db2b5aac69aeb6a1f9de7cce4e9
5
5
  SHA512:
6
- metadata.gz: d99a98ac9974fb5157fa84beb792925d31b776b0e7b2e23de0da662bfeab8f590fe48d457015f8b4e09e50288a31b7c8cd90a1f274d463f5b0e14cd54bb28977
7
- data.tar.gz: 31138ccbf59317525ba4d785f0b080c55b42077921428b7f01765a2be470f9141648be5e6bfb060fc15e5d233a5b79476333a5af2fc2c71e2a541abf3d72c7f3
6
+ metadata.gz: e42873abe4b4e8b6628f381c8c2047827e9564a98cbdbacb3117486236d72e8348d1b7fe6a53d6afe99da4d084fed2b04437cad6d1f6e559100de4d624ba5482
7
+ data.tar.gz: 3a6577108d8f90f6bea64d825b54c253ffc150969930fa723acad63db98dfe7c3cf425d42f6902e82b71a8dc483ba588afc0fa3549d8066c8bc73ddf9522a108
data/CHANGELOG.md CHANGED
@@ -1,5 +1,70 @@
1
1
  # Changelog
2
2
 
3
+ ## [v7.0.8](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v7.0.8) (2021-04-14)
4
+
5
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v7.0.7...v7.0.8)
6
+
7
+ **Implemented enhancements:**
8
+
9
+ - Lock performance [\#595](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/595) ([mhenrixon](https://github.com/mhenrixon))
10
+ - Allow and test ruby 3.0 [\#587](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/587) ([mhenrixon](https://github.com/mhenrixon))
11
+
12
+ **Closed issues:**
13
+
14
+ - Question: where do orphaned locks come from? [\#592](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/592)
15
+ - upgrade\_v6\_lock : ERR wrong number of arguments for 'hmset' command [\#591](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/591)
16
+
17
+ **Merged pull requests:**
18
+
19
+ - Fix uniqueness examples url in documentation [\#596](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/596) ([sampatbadhe](https://github.com/sampatbadhe))
20
+
21
+ ## [v7.0.7](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v7.0.7) (2021-03-19)
22
+
23
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v7.0.6...v7.0.7)
24
+
25
+ **Fixed bugs:**
26
+
27
+ - Web filter param not working in pagination [\#584](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/584) ([mhenrixon](https://github.com/mhenrixon))
28
+
29
+ ## [v7.0.6](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v7.0.6) (2021-03-19)
30
+
31
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v7.0.5...v7.0.6)
32
+
33
+ **Fixed bugs:**
34
+
35
+ - Deprecation warning for redis behaviour change in 5.0 [\#579](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/579)
36
+ - Consider a match only when both values present [\#586](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/586) ([mhenrixon](https://github.com/mhenrixon))
37
+
38
+ **Closed issues:**
39
+
40
+ - Reaper: undefined method `delete\_suffix' for nil:NilClass [\#585](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/585)
41
+
42
+ ## [v7.0.5](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v7.0.5) (2021-03-18)
43
+
44
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v7.0.4...v7.0.5)
45
+
46
+ **Implemented enhancements:**
47
+
48
+ - Improve compatibility with redis-namespace [\#581](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/581) ([Wolfer](https://github.com/Wolfer))
49
+
50
+ **Fixed bugs:**
51
+
52
+ - RubyReaper treats runtime lock as orphan and delete it [\#580](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/580)
53
+ - Prefer conn.exists? when possible [\#583](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/583) ([mhenrixon](https://github.com/mhenrixon))
54
+ - Don't reap :RUN keys when active [\#582](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/582) ([mhenrixon](https://github.com/mhenrixon))
55
+
56
+ **Closed issues:**
57
+
58
+ - redis-namespace asks to use admistrative commands directly [\#578](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/578)
59
+
60
+ ## [v7.0.4](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v7.0.4) (2021-02-17)
61
+
62
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v7.0.3...v7.0.4)
63
+
64
+ **Fixed bugs:**
65
+
66
+ - Fix uninitialized scheduled task [\#577](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/577) ([ArturT](https://github.com/ArturT))
67
+
3
68
  ## [v7.0.3](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v7.0.3) (2021-02-17)
4
69
 
5
70
  [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v7.0.2...v7.0.3)
@@ -29,6 +94,7 @@
29
94
  - Jobs executing and immediately returning [\#418](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/418)
30
95
  - until\_and\_while\_executing + sidekiq retry mechanism [\#395](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/395)
31
96
  - Failed jobs waiting to be retried are not considered when fetching uniqueness [\#394](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/394)
97
+ - Fix that :PRIMED keys are seemingly not removed [\#574](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/574) ([mhenrixon](https://github.com/mhenrixon))
32
98
 
33
99
  **Closed issues:**
34
100
 
@@ -74,7 +140,6 @@
74
140
 
75
141
  - Race condition in ruby reaper [\#559](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/559)
76
142
  - Fix until and while executed and improve documentation [\#397](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/397)
77
- - Fix that :PRIMED keys are seemingly not removed [\#574](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/574) ([mhenrixon](https://github.com/mhenrixon))
78
143
  - Fix race condition to avoid reaping active jobs [\#563](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/563) ([mhenrixon](https://github.com/mhenrixon))
79
144
 
80
145
  **Closed issues:**
@@ -101,7 +166,7 @@
101
166
  **Fixed bugs:**
102
167
 
103
168
  - lock\_args does not work when you define the lock\_args argument and default lock\_args function at the same time. [\#548](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/548)
104
- - incorrect `:while\_executing` behavior [\#432](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/432)
169
+ - incorrect `:while_executing` behavior [\#432](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/432)
105
170
  - Fix active check for the worker hash [\#558](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/558) ([mhenrixon](https://github.com/mhenrixon))
106
171
  - Prefer lock\_prefix not unique\_prefix [\#554](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/554) ([mhenrixon](https://github.com/mhenrixon))
107
172
  - Fix issue 432 [\#552](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/552) ([mhenrixon](https://github.com/mhenrixon))
@@ -120,7 +185,7 @@
120
185
 
121
186
  **Closed issues:**
122
187
 
123
- - Documentation incorrect for `delete\_by\_digest` [\#547](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/547)
188
+ - Documentation incorrect for `delete_by_digest` [\#547](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/547)
124
189
  - Locked jobs after kill -9 with while\_executing lock [\#546](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/546)
125
190
 
126
191
  ## [v7.0.0.beta26](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v7.0.0.beta26) (2020-10-28)
@@ -140,15 +205,6 @@
140
205
 
141
206
  [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v7.0.0.beta25...v6.0.25)
142
207
 
143
- **Implemented enhancements:**
144
-
145
- - Support apartment [\#541](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/541) ([mhenrixon](https://github.com/mhenrixon))
146
- - Support both instance method and class method [\#528](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/528) ([mhenrixon](https://github.com/mhenrixon))
147
-
148
- **Fixed bugs:**
149
-
150
- - Fix 532 [\#549](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/549) ([mhenrixon](https://github.com/mhenrixon))
151
-
152
208
  ## [v7.0.0.beta25](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v7.0.0.beta25) (2020-10-26)
153
209
 
154
210
  [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v7.0.0.beta24...v7.0.0.beta25)
@@ -197,16 +253,11 @@
197
253
  **Fixed bugs:**
198
254
 
199
255
  - Ruby reaper incorrectly checks active jobs — removes every active lock as result [\#517](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/517)
200
- - Backport \#465 to 6.x series [\#520](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/520) ([replaid](https://github.com/replaid))
201
256
 
202
257
  ## [v7.0.0.beta22](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v7.0.0.beta22) (2020-06-12)
203
258
 
204
259
  [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v7.0.0.beta21...v7.0.0.beta22)
205
260
 
206
- **Implemented enhancements:**
207
-
208
- - Move dev-gems from gemspec to gemfile [\#512](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/512) ([mhenrixon](https://github.com/mhenrixon))
209
-
210
261
  **Fixed bugs:**
211
262
 
212
263
  - Infinite loop in ruby reaper [\#515](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/515)
@@ -219,6 +270,7 @@
219
270
  **Implemented enhancements:**
220
271
 
221
272
  - Move gems to gemfile [\#513](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/513) ([mhenrixon](https://github.com/mhenrixon))
273
+ - Move dev-gems from gemspec to gemfile [\#512](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/512) ([mhenrixon](https://github.com/mhenrixon))
222
274
 
223
275
  **Fixed bugs:**
224
276
 
@@ -274,21 +326,17 @@
274
326
 
275
327
  **Fixed bugs:**
276
328
 
277
- - Deprecate configuration options with `default\_` [\#504](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/504) ([mhenrixon](https://github.com/mhenrixon))
329
+ - Deprecate configuration options with `default_` [\#504](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/504) ([mhenrixon](https://github.com/mhenrixon))
278
330
  - Fix access to both server and client conflict [\#503](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/503) ([mhenrixon](https://github.com/mhenrixon))
279
331
 
280
332
  **Closed issues:**
281
333
 
282
- - V7 Beta 15 `on\_conflict:` with Hash does not work on server [\#499](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/499)
334
+ - V7 Beta 15 `on_conflict:` with Hash does not work on server [\#499](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/499)
283
335
 
284
336
  ## [v6.0.22](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v6.0.22) (2020-04-13)
285
337
 
286
338
  [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v7.0.0.beta15...v6.0.22)
287
339
 
288
- **Fixed bugs:**
289
-
290
- - \[LockType\] Allow overwriting default lock type at item level [\#497](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/497) ([EmmN](https://github.com/EmmN))
291
-
292
340
  ## [v7.0.0.beta15](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v7.0.0.beta15) (2020-04-10)
293
341
 
294
342
  [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v7.0.0.beta14...v7.0.0.beta15)
@@ -300,7 +348,7 @@
300
348
 
301
349
  **Fixed bugs:**
302
350
 
303
- - V7 - `on\_conflict:` no longer accepts a Hash [\#495](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/495)
351
+ - V7 - `on_conflict:` no longer accepts a Hash [\#495](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/495)
304
352
  - Brpoplpush::RedisScript::LuaError: WRONGTYPE Operation against a key holding the wrong kind of value [\#491](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/491)
305
353
  - Lua script bug [\#489](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/489)
306
354
  - Reaper will delete locks for running jobs [\#488](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/488)
@@ -320,10 +368,6 @@
320
368
 
321
369
  [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v7.0.0.beta13...v6.0.21)
322
370
 
323
- **Fixed bugs:**
324
-
325
- - Use thread-safe digest creation mechanism [\#484](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/484) ([mhenrixon](https://github.com/mhenrixon))
326
-
327
371
  ## [v7.0.0.beta13](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v7.0.0.beta13) (2020-03-26)
328
372
 
329
373
  [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v7.0.0.beta12...v7.0.0.beta13)
@@ -354,10 +398,6 @@
354
398
  - Please keep some recent versions on rubygems.org [\#478](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/478)
355
399
  - validate\_worker! throws error [\#466](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/466)
356
400
 
357
- **Merged pull requests:**
358
-
359
- - Allow v7 configuration to work [\#479](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/479) ([mhenrixon](https://github.com/mhenrixon))
360
-
361
401
  ## [v7.0.0.beta11](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v7.0.0.beta11) (2020-03-21)
362
402
 
363
403
  [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v7.0.0.beta10...v7.0.0.beta11)
@@ -375,6 +415,7 @@
375
415
  - Rename remaining unique\_\* keys to lock\_\* [\#475](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/475) ([mhenrixon](https://github.com/mhenrixon))
376
416
  - Split calculator into two separate [\#474](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/474) ([mhenrixon](https://github.com/mhenrixon))
377
417
  - Prepare for improving tests [\#473](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/473) ([mhenrixon](https://github.com/mhenrixon))
418
+ - Update gemspec: thor [\#465](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/465) ([masawo](https://github.com/masawo))
378
419
 
379
420
  **Fixed bugs:**
380
421
 
@@ -390,11 +431,6 @@
390
431
 
391
432
  [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v7.0.0.beta9...v6.0.19)
392
433
 
393
- **Fixed bugs:**
394
-
395
- - Fix access to lock [\#476](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/476) ([mhenrixon](https://github.com/mhenrixon))
396
- - Backport v7 fix for conflicts [\#461](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/461) ([mhenrixon](https://github.com/mhenrixon))
397
-
398
434
  ## [v7.0.0.beta9](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v7.0.0.beta9) (2019-12-04)
399
435
 
400
436
  [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v7.0.0.beta8...v7.0.0.beta9)
@@ -406,7 +442,7 @@
406
442
 
407
443
  **Closed issues:**
408
444
 
409
- - until\_and\_while\_executing with sidekiq pro `reliable\_scheduler!` [\#411](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/411)
445
+ - until\_and\_while\_executing with sidekiq pro `reliable_scheduler!` [\#411](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/411)
410
446
 
411
447
  ## [v7.0.0.beta8](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v7.0.0.beta8) (2019-11-28)
412
448
 
@@ -415,12 +451,11 @@
415
451
  **Implemented enhancements:**
416
452
 
417
453
  - Allow worker to configure client and server strategies separately [\#402](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/402)
418
- - Update gemspec: thor [\#465](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/465) ([masawo](https://github.com/masawo))
419
454
  - Separate client and server on\_conflict [\#462](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/462) ([mhenrixon](https://github.com/mhenrixon))
420
455
 
421
456
  **Fixed bugs:**
422
457
 
423
- - `while\_executing` has problems at low concurrency [\#384](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/384)
458
+ - `while_executing` has problems at low concurrency [\#384](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/384)
424
459
  - lock: :until\_and\_while\_executing not working for scheduled jobs [\#334](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/334)
425
460
 
426
461
  **Closed issues:**
@@ -457,7 +492,6 @@
457
492
  **Fixed bugs:**
458
493
 
459
494
  - Jobs not pushed when using sidekiq-status [\#412](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/412)
460
- - Fix sidekiq options [\#458](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/458) ([mhenrixon](https://github.com/mhenrixon))
461
495
 
462
496
  **Closed issues:**
463
497
 
@@ -487,18 +521,10 @@
487
521
 
488
522
  [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v6.0.16...v6.0.17)
489
523
 
490
- **Fixed bugs:**
491
-
492
- - Allow redis namespace to work with deletion [\#451](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/451) ([mhenrixon](https://github.com/mhenrixon))
493
-
494
524
  ## [v6.0.16](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v6.0.16) (2019-11-25)
495
525
 
496
526
  [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v7.0.0.beta4...v6.0.16)
497
527
 
498
- **Fixed bugs:**
499
-
500
- - Ensure runtime locks are removed [\#447](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/447) ([mhenrixon](https://github.com/mhenrixon))
501
-
502
528
  ## [v7.0.0.beta4](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v7.0.0.beta4) (2019-11-25)
503
529
 
504
530
  [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v7.0.0.beta3...v7.0.0.beta4)
@@ -539,7 +565,7 @@
539
565
 
540
566
  **Closed issues:**
541
567
 
542
- - incorrect `:until\_and\_while\_executing` behavior [\#424](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/424)
568
+ - incorrect `:until_and_while_executing` behavior [\#424](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/424)
543
569
 
544
570
  ## [v7.0.0.beta1](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v7.0.0.beta1) (2019-10-07)
545
571
 
@@ -577,14 +603,11 @@
577
603
  **Implemented enhancements:**
578
604
 
579
605
  - Lock both worker and queue [\#274](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/274)
580
- - Copy working setup from master [\#420](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/420) ([mhenrixon](https://github.com/mhenrixon))
581
606
 
582
607
  **Fixed bugs:**
583
608
 
584
609
  - Duplicate job was pushed \( v6.0.13 \) [\#414](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/414)
585
610
  - Constant SidekiqUniqueJobs::Web::Digests not found [\#396](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/396)
586
- - Include redis directory [\#430](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/430) ([mhenrixon](https://github.com/mhenrixon))
587
- - Fix v6 [\#428](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/428) ([mhenrixon](https://github.com/mhenrixon))
588
611
 
589
612
  **Closed issues:**
590
613
 
@@ -610,7 +633,7 @@
610
633
 
611
634
  **Closed issues:**
612
635
 
613
- - Unique args in combination with sidekiq cron contains `\_aj\_symbol\_keys` [\#363](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/363)
636
+ - Unique args in combination with sidekiq cron contains `_aj_symbol_keys` [\#363](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/363)
614
637
  - Low quality piece of shit [\#360](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/360)
615
638
  - Passthrough has been deprecated and will be removed in redis-namespace 2.0 [\#338](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/338)
616
639
 
@@ -639,6 +662,7 @@
639
662
  - Version 6: lets you schedule job with missing arguments [\#351](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/351)
640
663
  - Version 6 Ignores Jobs Enqueued in Version 5 [\#345](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/345)
641
664
  - Job will not enqueue even with no existing match [\#342](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/342)
665
+ - Convert v5 locks when needed [\#375](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/375) ([mhenrixon](https://github.com/mhenrixon))
642
666
 
643
667
  **Closed issues:**
644
668
 
@@ -672,10 +696,6 @@
672
696
  - John denisov add delete all button to web [\#370](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/370) ([mhenrixon](https://github.com/mhenrixon))
673
697
  - Various upgrades [\#366](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/366) ([mhenrixon](https://github.com/mhenrixon))
674
698
 
675
- **Fixed bugs:**
676
-
677
- - Convert v5 locks when needed [\#375](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/375) ([mhenrixon](https://github.com/mhenrixon))
678
-
679
699
  ## [v6.0.8](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v6.0.8) (2019-01-10)
680
700
 
681
701
  [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v6.0.7...v6.0.8)
@@ -702,7 +722,6 @@
702
722
  **Implemented enhancements:**
703
723
 
704
724
  - More integration tests [\#329](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/329) ([mhenrixon](https://github.com/mhenrixon))
705
- - Internal refactoring [\#318](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/318) ([mhenrixon](https://github.com/mhenrixon))
706
725
 
707
726
  **Fixed bugs:**
708
727
 
@@ -719,6 +738,7 @@
719
738
 
720
739
  - Do not build keys on lua scripts [\#348](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/348) ([pacoguzman](https://github.com/pacoguzman))
721
740
  - fix CHANGELOG syntax [\#344](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/344) ([timoschilling](https://github.com/timoschilling))
741
+ - Define Config class inside SidekiqUniqueJobs module [\#343](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/343) ([Slike9](https://github.com/Slike9))
722
742
  - fix readme testing section [\#333](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/333) ([edmartins](https://github.com/edmartins))
723
743
  - Fix typo in documentation \[ci-skip\] [\#327](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/327) ([mhenrixon](https://github.com/mhenrixon))
724
744
 
@@ -726,10 +746,6 @@
726
746
 
727
747
  [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v6.0.6...v5.0.11)
728
748
 
729
- **Fixed bugs:**
730
-
731
- - Always Remove Job ID from uniquejobs Hash [\#347](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/347) ([chadrschroeder](https://github.com/chadrschroeder))
732
-
733
749
  **Closed issues:**
734
750
 
735
751
  - concurrent-ruby 1.1.1 is causing this gem to break [\#340](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/340)
@@ -740,10 +756,6 @@
740
756
  - Confused with UntilExecuted documenation [\#326](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/326)
741
757
  - Job never requeued after raising unhandled error with until\_and\_while\_executing? [\#322](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/322)
742
758
 
743
- **Merged pull requests:**
744
-
745
- - Define Config class inside SidekiqUniqueJobs module [\#343](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/343) ([Slike9](https://github.com/Slike9))
746
-
747
759
  ## [v6.0.6](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v6.0.6) (2018-08-09)
748
760
 
749
761
  [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v6.0.5...v6.0.6)
@@ -751,6 +763,7 @@
751
763
  **Implemented enhancements:**
752
764
 
753
765
  - Adds coverage for job retries [\#321](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/321) ([mhenrixon](https://github.com/mhenrixon))
766
+ - Internal refactoring [\#318](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/318) ([mhenrixon](https://github.com/mhenrixon))
754
767
 
755
768
  **Closed issues:**
756
769
 
@@ -853,10 +866,6 @@
853
866
  - Document code [\#296](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/296) ([mhenrixon](https://github.com/mhenrixon))
854
867
  - Rename to `unique:` to `lock:` [\#295](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/295) ([mhenrixon](https://github.com/mhenrixon))
855
868
 
856
- **Fixed bugs:**
857
-
858
- - Don't unlock when worker raises an error [\#290](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/290) ([mhenrixon](https://github.com/mhenrixon))
859
-
860
869
  **Closed issues:**
861
870
 
862
871
  - Unique Job not work while play with crontab [\#294](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/294)
@@ -871,6 +880,10 @@
871
880
 
872
881
  [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v6.0.0.rc5...v6.0.0.rc6)
873
882
 
883
+ **Fixed bugs:**
884
+
885
+ - Don't unlock when worker raises an error [\#290](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/290) ([mhenrixon](https://github.com/mhenrixon))
886
+
874
887
  **Closed issues:**
875
888
 
876
889
  - Locking with retries [\#289](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/289)
@@ -904,7 +917,6 @@
904
917
  **Fixed bugs:**
905
918
 
906
919
  - Fix waiting for locks [\#284](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/284) ([mhenrixon](https://github.com/mhenrixon))
907
- - Drop jobs hash [\#282](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/282) ([mhenrixon](https://github.com/mhenrixon))
908
920
 
909
921
  ## [v6.0.0.rc2](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v6.0.0.rc2) (2018-06-26)
910
922
 
@@ -921,6 +933,7 @@
921
933
  - Duplicate jobs getting created [\#257](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/257)
922
934
  - Multiple non-unique jobs with until\_executed? [\#255](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/255)
923
935
  - :until\_executing not unlocking when starting to run [\#245](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/245)
936
+ - Drop jobs hash [\#282](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/282) ([mhenrixon](https://github.com/mhenrixon))
924
937
 
925
938
  **Closed issues:**
926
939
 
@@ -962,13 +975,6 @@
962
975
  - Code smells [\#275](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/275) ([mhenrixon](https://github.com/mhenrixon))
963
976
  - Reject while scheduling [\#273](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/273) ([mhenrixon](https://github.com/mhenrixon))
964
977
  - Improve testing [\#272](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/272) ([mhenrixon](https://github.com/mhenrixon))
965
-
966
- ## [v6.0.0.beta](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v6.0.0.beta) (2018-06-17)
967
-
968
- [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v5.0.10...v6.0.0.beta)
969
-
970
- **Implemented enhancements:**
971
-
972
978
  - Until and while executing [\#271](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/271) ([mhenrixon](https://github.com/mhenrixon))
973
979
  - Solidify master [\#270](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/270) ([mhenrixon](https://github.com/mhenrixon))
974
980
  - Minor adjustments [\#268](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/268) ([mhenrixon](https://github.com/mhenrixon))
@@ -979,25 +985,29 @@
979
985
 
980
986
  - Allow `jobs keys` to default to listing all keys [\#252](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/252) ([soundasleep](https://github.com/soundasleep))
981
987
 
988
+ **Merged pull requests:**
989
+
990
+ - Improve documentation [\#269](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/269) ([mhenrixon](https://github.com/mhenrixon))
991
+ - Remove unnecessary monkey patches for String [\#262](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/262) ([zormandi](https://github.com/zormandi))
992
+ - README \> While Executing: remove unnecessary word [\#260](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/260) ([TimCannady](https://github.com/TimCannady))
993
+ - Don't skip monkeypatches if ActiveSupport present [\#248](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/248) ([dleavitt](https://github.com/dleavitt))
994
+ - Better runtime locks [\#241](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/241) ([mhenrixon](https://github.com/mhenrixon))
995
+
996
+ ## [v6.0.0.beta](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v6.0.0.beta) (2018-06-17)
997
+
998
+ [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v5.0.10...v6.0.0.beta)
999
+
982
1000
  **Closed issues:**
983
1001
 
984
1002
  - Incomplete sentence in README [\#264](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/264)
985
1003
  - ActiveJob and Sidekiq::Worker [\#259](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/259)
986
1004
  - ActiveJob and Sidekiq::Worker [\#258](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/258)
987
- - Non-unique jobs can be added even when `sidekiq\_options unique: :until\_executed` [\#251](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/251)
1005
+ - Non-unique jobs can be added even when `sidekiq_options unique: :until_executed` [\#251](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/251)
988
1006
  - Trouble with "inline" mode [\#243](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/243)
989
1007
  - Sidekiq::Worker.set not working with sidekiq-unique-jobs [\#242](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/242)
990
1008
  - sidekiq-unique-job with ActiveJob [\#238](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/238)
991
1009
  - Deadlock using :while\_executing? [\#233](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/233)
992
1010
 
993
- **Merged pull requests:**
994
-
995
- - Improve documentation [\#269](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/269) ([mhenrixon](https://github.com/mhenrixon))
996
- - Remove unnecessary monkey patches for String [\#262](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/262) ([zormandi](https://github.com/zormandi))
997
- - README \> While Executing: remove unnecessary word [\#260](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/260) ([TimCannady](https://github.com/TimCannady))
998
- - Don't skip monkeypatches if ActiveSupport present [\#248](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/248) ([dleavitt](https://github.com/dleavitt))
999
- - Better runtime locks [\#241](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/241) ([mhenrixon](https://github.com/mhenrixon))
1000
-
1001
1011
  ## [v5.0.10](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v5.0.10) (2017-08-19)
1002
1012
 
1003
1013
  [Full Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v5.0.9...v5.0.10)
@@ -1199,7 +1209,6 @@
1199
1209
 
1200
1210
  - Seeing this error with latest version 4.0.12 [\#154](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/154)
1201
1211
  - Unique job showing weird behavior [\#153](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/153)
1202
- - Can't schedule a job from another job [\#151](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/151)
1203
1212
 
1204
1213
  ## [v4.0.12](https://github.com/mhenrixon/sidekiq-unique-jobs/tree/v4.0.12) (2015-12-15)
1205
1214
 
@@ -1207,8 +1216,9 @@
1207
1216
 
1208
1217
  **Closed issues:**
1209
1218
 
1219
+ - Can't schedule a job from another job [\#151](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/151)
1210
1220
  - perform\_in not working in version 4.0.9 [\#150](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/150)
1211
- - `unique: until\_and\_while\_executing` not working as expected [\#146](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/146)
1221
+ - `unique: until_and_while_executing` not working as expected [\#146](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/146)
1212
1222
  - while\_executing still runs duplicate tasks [\#136](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/136)
1213
1223
  - Version 4 Upgrade [\#133](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/133)
1214
1224
 
@@ -1349,7 +1359,7 @@
1349
1359
  - Testing [\#103](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/103)
1350
1360
  - Active Job [\#102](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/102)
1351
1361
  - Why is SidekiqUnique behaviour applied to regular Workers? [\#100](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/100)
1352
- - 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)
1362
+ - 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)
1353
1363
  - Scheduled jobs are not unlocked when deleted [\#97](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/97)
1354
1364
  - Testing functions should be moved out of production code [\#95](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/95)
1355
1365
  - Jobs can unlock mutexes they don't own [\#94](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/94)
@@ -1373,6 +1383,7 @@
1373
1383
  - Throttling jobs [\#39](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/39)
1374
1384
  - undefined method `get\_sidekiq\_options' for "MyScheduledWorker":String [\#27](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/27)
1375
1385
  - Crash handling [\#14](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/14)
1386
+ - Missing info from README [\#6](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/6)
1376
1387
 
1377
1388
  **Merged pull requests:**
1378
1389
 
@@ -1472,7 +1483,6 @@
1472
1483
  - What is the use case for the uniqueness window? [\#22](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/22)
1473
1484
  - clarification on unique\_args [\#20](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/20)
1474
1485
  - payload\_hash staying around [\#13](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/13)
1475
- - Missing info from README [\#6](https://github.com/mhenrixon/sidekiq-unique-jobs/issues/6)
1476
1486
 
1477
1487
  **Merged pull requests:**
1478
1488
 
@@ -1497,7 +1507,7 @@
1497
1507
 
1498
1508
  - Make unlock/yield order configurable. [\#21](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/21) ([endofunky](https://github.com/endofunky))
1499
1509
  - 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))
1500
- - 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))
1510
+ - 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))
1501
1511
  - Compatibility with Sidekiq 2.12.1 Scheduled Jobs [\#16](https://github.com/mhenrixon/sidekiq-unique-jobs/pull/16) ([lsimoneau](https://github.com/lsimoneau))
1502
1512
  - 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))
1503
1513
  - 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))
data/README.md CHANGED
@@ -1,4 +1,6 @@
1
- # SidekiqUniqueJobs [![Join the chat at https://gitter.im/mhenrixon/sidekiq-unique-jobs](https://badges.gitter.im/mhenrixon/sidekiq-unique-jobs.svg)](https://gitter.im/mhenrixon/sidekiq-unique-jobs?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) [![Build Status](https://travis-ci.org/mhenrixon/sidekiq-unique-jobs.svg?branch=master)](https://travis-ci.org/mhenrixon/sidekiq-unique-jobs) [![Code Climate](https://codeclimate.com/github/mhenrixon/sidekiq-unique-jobs.svg)](https://codeclimate.com/github/mhenrixon/sidekiq-unique-jobs) [![Test Coverage](https://codeclimate.com/github/mhenrixon/sidekiq-unique-jobs/badges/coverage.svg)](https://codeclimate.com/github/mhenrixon/sidekiq-unique-jobs/coverage)
1
+ # SidekiqUniqueJobs
2
+
3
+ [![Join the chat at https://gitter.im/mhenrixon/sidekiq-unique-jobs](https://badges.gitter.im/mhenrixon/sidekiq-unique-jobs.svg)](https://gitter.im/mhenrixon/sidekiq-unique-jobs?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) ![Build Status](https://github.com/mhenrixon/sidekiq-unique-jobs/actions/workflows/rspec.yml/badge.svg?branch=master) [![Code Climate](https://codeclimate.com/github/mhenrixon/sidekiq-unique-jobs.svg)](https://codeclimate.com/github/mhenrixon/sidekiq-unique-jobs) [![Test Coverage](https://codeclimate.com/github/mhenrixon/sidekiq-unique-jobs/badges/coverage.svg)](https://codeclimate.com/github/mhenrixon/sidekiq-unique-jobs/coverage)
2
4
 
3
5
  <!-- MarkdownTOC -->
4
6
 
@@ -905,11 +907,11 @@ end
905
907
 
906
908
  It is recommended to leave the uniqueness testing to the gem maintainers. If you care about how the gem is integration tested have a look at the following specs:
907
909
 
908
- - [spec/integration/sidekiq_unique_jobs/lock/until_and_while_executing_spec.rb](https://github.com/mhenrixon/sidekiq-unique-jobs/blob/master/spec/integration/sidekiq_unique_jobs/lock/until_and_while_executing_spec.rb)
909
- - [spec/integration/sidekiq_unique_jobs/lock/until_executed_spec.rb](https://github.com/mhenrixon/sidekiq-unique-jobs/blob/master/spec/integration/sidekiq_unique_jobs/lock/until_executed_spec.rb)
910
- - [spec/integration/sidekiq_unique_jobs/lock/until_expired_spec.rb](https://github.com/mhenrixon/sidekiq-unique-jobs/blob/master/spec/integration/sidekiq_unique_jobs/lock/until_expired_spec.rb)
911
- - [spec/integration/sidekiq_unique_jobs/lock/while_executing_reject_spec.rb](https://github.com/mhenrixon/sidekiq-unique-jobs/blob/master/spec/integration/sidekiq_unique_jobs/lock/while_executing_reject_spec.rb)
912
- - [spec/integration/sidekiq_unique_jobs/lock/while_executing_spec.rb](https://github.com/mhenrixon/sidekiq-unique-jobs/blob/master/spec/integration/sidekiq_unique_jobs/lock/while_executing_spec.rb)
910
+ - [spec/sidekiq_unique_jobs/lock/until_and_while_executing_spec.rb](https://github.com/mhenrixon/sidekiq-unique-jobs/blob/master/spec/sidekiq_unique_jobs/lock/until_and_while_executing_spec.rb)
911
+ - [spec/sidekiq_unique_jobs/lock/until_executed_spec.rb](https://github.com/mhenrixon/sidekiq-unique-jobs/blob/master/spec/sidekiq_unique_jobs/lock/until_executed_spec.rb)
912
+ - [spec/sidekiq_unique_jobs/lock/until_expired_spec.rb](https://github.com/mhenrixon/sidekiq-unique-jobs/blob/master/spec/sidekiq_unique_jobs/lock/until_expired_spec.rb)
913
+ - [spec/sidekiq_unique_jobs/lock/while_executing_reject_spec.rb](https://github.com/mhenrixon/sidekiq-unique-jobs/blob/master/spec/sidekiq_unique_jobs/lock/while_executing_reject_spec.rb)
914
+ - [spec/sidekiq_unique_jobs/lock/while_executing_spec.rb](https://github.com/mhenrixon/sidekiq-unique-jobs/blob/master/spec/sidekiq_unique_jobs/lock/while_executing_spec.rb)
913
915
 
914
916
  ## Contributing
915
917
 
@@ -68,8 +68,8 @@ module SidekiqUniqueJobs
68
68
  end
69
69
 
70
70
  [
71
- total_size,
72
- result[0], # next_cursor
71
+ total_size.to_i,
72
+ result[0].to_i, # next_cursor
73
73
  result[1].map { |entry| load_json(entry[0]) }, # entries
74
74
  ]
75
75
  end
@@ -104,8 +104,8 @@ module SidekiqUniqueJobs
104
104
  end
105
105
 
106
106
  [
107
- total_size,
108
- digests[0], # next_cursor
107
+ total_size.to_i,
108
+ digests[0].to_i, # next_cursor
109
109
  digests[1].map { |digest, score| Lock.new(digest, time: score) }, # entries
110
110
  ]
111
111
  end
@@ -124,7 +124,7 @@ module SidekiqUniqueJobs
124
124
  attr_reader :attempt
125
125
 
126
126
  def unlock_with_callback
127
- return log_warn("might need to be unlocked manually") unless unlock
127
+ return log_warn("Might need to be unlocked manually", item) unless unlock
128
128
 
129
129
  callback_safely
130
130
  item[JID]
@@ -134,7 +134,7 @@ module SidekiqUniqueJobs
134
134
  callback&.call
135
135
  item[JID]
136
136
  rescue StandardError
137
- log_warn("unlocked successfully but the #after_unlock callback failed!")
137
+ log_warn("Unlocked successfully but the #after_unlock callback failed!", item)
138
138
  raise
139
139
  end
140
140
 
@@ -21,7 +21,7 @@ module SidekiqUniqueJobs
21
21
  runtime_lock.execute { return yield }
22
22
  end
23
23
  else
24
- log_warn "couldn't unlock digest: #{item[LOCK_DIGEST]} #{item[JID]}"
24
+ log_warn("Couldn't unlock digest: #{item[LOCK_DIGEST]}, jid: #{item[JID]}")
25
25
  end
26
26
  end
27
27
 
@@ -30,7 +30,7 @@ module SidekiqUniqueJobs
30
30
  def lock_on_failure
31
31
  yield
32
32
  rescue Exception # rubocop:disable Lint/RescueException
33
- log_error("Runtime lock failed to execute job, restoring server lock")
33
+ log_error("Runtime lock failed to execute job, restoring server lock", item)
34
34
  lock
35
35
  raise
36
36
  end
@@ -58,7 +58,7 @@ module SidekiqUniqueJobs
58
58
 
59
59
  def initialize(job_hash = {})
60
60
  @type = job_hash[LOCK]&.to_sym
61
- @worker = job_hash[CLASS]
61
+ @worker = SidekiqUniqueJobs.constantize(job_hash[CLASS])
62
62
  @limit = job_hash.fetch(LOCK_LIMIT, 1)
63
63
  @timeout = job_hash.fetch(LOCK_TIMEOUT, 0)
64
64
  @ttl = job_hash.fetch(LOCK_TTL) { job_hash.fetch(LOCK_EXPIRATION, nil) }.to_i
@@ -71,6 +71,10 @@ module SidekiqUniqueJobs
71
71
  @on_server_conflict = job_hash[ON_SERVER_CONFLICT]
72
72
  end
73
73
 
74
+ def lock_info?
75
+ lock_info
76
+ end
77
+
74
78
  #
75
79
  # Indicate if timeout was set
76
80
  #
@@ -199,7 +199,7 @@ module SidekiqUniqueJobs
199
199
  def primed_async(conn)
200
200
  return yield if Concurrent::Promises
201
201
  .future(conn) { |red_con| pop_queued(red_con) }
202
- .value(drift(config.ttl))
202
+ .value(drift(config.pttl) / 1000) # Important to reduce time spent waiting
203
203
 
204
204
  warn_about_timeout
205
205
  end
@@ -220,7 +220,7 @@ module SidekiqUniqueJobs
220
220
  enqueue(conn) do
221
221
  primed_sync(conn) do
222
222
  locked_token = call_script(:lock, key.to_a, argv, conn)
223
- return yield if locked_token
223
+ return yield locked_token if locked_token
224
224
  end
225
225
  end
226
226
  end
@@ -235,7 +235,9 @@ module SidekiqUniqueJobs
235
235
  # @return [Object] whatever the block returns when lock was acquired
236
236
  #
237
237
  def primed_sync(conn)
238
- return yield if pop_queued(conn)
238
+ if (popped_jid = pop_queued(conn))
239
+ return yield popped_jid
240
+ end
239
241
 
240
242
  warn_about_timeout
241
243
  end
@@ -260,7 +262,7 @@ module SidekiqUniqueJobs
260
262
  #
261
263
  def brpoplpush(conn)
262
264
  # passing timeout 0 to brpoplpush causes it to block indefinitely
263
- conn.brpoplpush(key.queued, key.primed, timeout: config.timeout || 0)
265
+ conn.brpoplpush(key.queued, key.primed, timeout: config.timeout)
264
266
  end
265
267
 
266
268
  #
@@ -288,7 +290,7 @@ module SidekiqUniqueJobs
288
290
  return unless queued_token && (validity >= 0 || config.pttl.zero?)
289
291
 
290
292
  write_lock_info(conn)
291
- yield
293
+ yield queued_token
292
294
  end
293
295
 
294
296
  #
@@ -299,7 +301,7 @@ module SidekiqUniqueJobs
299
301
  # @return [void]
300
302
  #
301
303
  def write_lock_info(conn)
302
- return unless config.lock_info
304
+ return unless config.lock_info?
303
305
 
304
306
  conn.set(key.info, lock_info)
305
307
  end
@@ -315,7 +317,7 @@ module SidekiqUniqueJobs
315
317
  # Add 2 milliseconds to the drift to account for Redis expires
316
318
  # precision, which is 1 millisecond, plus 1 millisecond min drift
317
319
  # for small TTLs.
318
- (val.to_i * CLOCK_DRIFT_FACTOR).to_i + 2
320
+ (val.to_f * CLOCK_DRIFT_FACTOR).to_f + 2
319
321
  end
320
322
 
321
323
  #
@@ -340,7 +342,7 @@ module SidekiqUniqueJobs
340
342
  LIMIT => item[LOCK_LIMIT],
341
343
  TIMEOUT => item[LOCK_TIMEOUT],
342
344
  TTL => item[LOCK_TTL],
343
- LOCK => config.type,
345
+ TYPE => config.type,
344
346
  LOCK_ARGS => item[LOCK_ARGS],
345
347
  TIME => now_f,
346
348
  )
@@ -29,8 +29,9 @@ module SidekiqUniqueJobs
29
29
  #
30
30
  # @yield [String, Exception] the message or exception to use for log message
31
31
  #
32
- def log_debug(message_or_exception = nil, &block)
33
- logger.debug(message_or_exception, &block)
32
+ def log_debug(message_or_exception = nil, item = nil, &block)
33
+ message = build_message(message_or_exception, item)
34
+ logger.debug(message, &block)
34
35
  nil
35
36
  end
36
37
 
@@ -43,8 +44,9 @@ module SidekiqUniqueJobs
43
44
  #
44
45
  # @yield [String, Exception] the message or exception to use for log message
45
46
  #
46
- def log_info(message_or_exception = nil, &block)
47
- logger.info(message_or_exception, &block)
47
+ def log_info(message_or_exception = nil, item = nil, &block)
48
+ message = build_message(message_or_exception, item)
49
+ logger.info(message, &block)
48
50
  nil
49
51
  end
50
52
 
@@ -57,8 +59,9 @@ module SidekiqUniqueJobs
57
59
  #
58
60
  # @yield [String, Exception] the message or exception to use for log message
59
61
  #
60
- def log_warn(message_or_exception = nil, &block)
61
- logger.warn(message_or_exception, &block)
62
+ def log_warn(message_or_exception = nil, item = nil, &block)
63
+ message = build_message(message_or_exception, item)
64
+ logger.warn(message, &block)
62
65
  nil
63
66
  end
64
67
 
@@ -71,8 +74,9 @@ module SidekiqUniqueJobs
71
74
  #
72
75
  # @yield [String, Exception] the message or exception to use for log message
73
76
  #
74
- def log_error(message_or_exception = nil, &block)
75
- logger.error(message_or_exception, &block)
77
+ def log_error(message_or_exception = nil, item = nil, &block)
78
+ message = build_message(message_or_exception, item)
79
+ logger.error(message, &block)
76
80
  nil
77
81
  end
78
82
 
@@ -85,11 +89,27 @@ module SidekiqUniqueJobs
85
89
  #
86
90
  # @yield [String, Exception] the message or exception to use for log message
87
91
  #
88
- def log_fatal(message_or_exception = nil, &block)
89
- logger.fatal(message_or_exception, &block)
92
+ def log_fatal(message_or_exception = nil, item = nil, &block)
93
+ message = build_message(message_or_exception, item)
94
+ logger.fatal(message, &block)
90
95
  nil
91
96
  end
92
97
 
98
+ def build_message(message_or_exception, item = nil)
99
+ return nil if message_or_exception.nil?
100
+ return message_or_exception if item.nil?
101
+
102
+ message = message_or_exception.dup
103
+ details = item.slice(LOCK, QUEUE, CLASS, JID, LOCK_DIGEST).each_with_object([]) do |(key, value), memo|
104
+ memo << "#{key}=#{value}"
105
+ end
106
+ message << " ("
107
+ message << details.join(" ")
108
+ message << ")"
109
+
110
+ message
111
+ end
112
+
93
113
  #
94
114
  # Wraps the middleware logic with context aware logging
95
115
  #
@@ -172,7 +192,7 @@ module SidekiqUniqueJobs
172
192
  end
173
193
 
174
194
  def sidekiq_logger_context_method
175
- logger.method(:with_context) if logger_respond_to_with_context?
195
+ logger.method(:with_context) if logger_respond_to_with_context?
176
196
  end
177
197
 
178
198
  def sidekiq_logging_context_method
@@ -27,7 +27,7 @@ local function find_digest_in_process_set(digest, threshold)
27
27
  else
28
28
  for i = 1, #jobs, 2 do
29
29
  local jobstr = jobs[i +1]
30
- if string.find(jobstr, digest) then
30
+ if string.find(string.gsub(jobstr, ':RUN', ''), string.gsub(digest, ':RUN', '')) then
31
31
  log_debug("Found digest", digest, "in:", workers_key)
32
32
  found = true
33
33
  break
@@ -10,6 +10,7 @@ module SidekiqUniqueJobs
10
10
  # @author Mikael Henriksson <mikael@mhenrixon.com>
11
11
  #
12
12
  class RubyReaper < Reaper
13
+ RUN_SUFFIX = ":RUN"
13
14
  #
14
15
  # @!attribute [r] digests
15
16
  # @return [SidekiqUniqueJobs::Digests] digest collection
@@ -124,7 +125,12 @@ module SidekiqUniqueJobs
124
125
 
125
126
  procs.sort.each do |key|
126
127
  valid, workers = conn.pipelined do
127
- conn.exists(key)
128
+ # TODO: Remove the if statement in the future
129
+ if conn.respond_to?(:exists?)
130
+ conn.exists?(key)
131
+ else
132
+ conn.exists(key)
133
+ end
128
134
  conn.hgetall("#{key}:workers")
129
135
  end
130
136
 
@@ -136,7 +142,7 @@ module SidekiqUniqueJobs
136
142
 
137
143
  payload = safe_load_json(item[PAYLOAD])
138
144
 
139
- return true if payload[LOCK_DIGEST] == digest
145
+ return true if match?(digest, payload[LOCK_DIGEST])
140
146
  return true if considered_active?(payload[CREATED_AT])
141
147
  end
142
148
  end
@@ -145,6 +151,12 @@ module SidekiqUniqueJobs
145
151
  end
146
152
  end
147
153
 
154
+ def match?(key_one, key_two)
155
+ return false if key_one.nil? || key_two.nil?
156
+
157
+ key_one.delete_suffix(RUN_SUFFIX) == key_two.delete_suffix(RUN_SUFFIX)
158
+ end
159
+
148
160
  def considered_active?(time_f)
149
161
  (Time.now - reaper_timeout).to_f < time_f
150
162
  end
@@ -47,7 +47,13 @@ module SidekiqUniqueJobs
47
47
  #
48
48
  def exist?
49
49
  redis do |conn|
50
- value = conn.exists(key)
50
+ # TODO: Remove the if statement in the future
51
+ value =
52
+ if conn.respond_to?(:exists?)
53
+ conn.exists?(key)
54
+ else
55
+ conn.exists(key)
56
+ end
51
57
 
52
58
  return value if boolean?(value)
53
59
 
@@ -188,7 +188,7 @@ module SidekiqUniqueJobs
188
188
  # @return [String] a string like `5.0.2`
189
189
  #
190
190
  def fetch_redis_version
191
- redis { |conn| conn.info("server")["redis_version"] }
191
+ Sidekiq.redis_info["redis_version"]
192
192
  end
193
193
 
194
194
  #
@@ -236,4 +236,23 @@ module SidekiqUniqueJobs
236
236
  lock_config = validate_worker(options)
237
237
  raise InvalidWorker, lock_config unless lock_config.errors.empty?
238
238
  end
239
+
240
+ # Attempt to constantize a string worker_class argument, always
241
+ # failing back to the original argument when the constant can't be found
242
+ #
243
+ # @return [Sidekiq::Worker]
244
+ def constantize(str)
245
+ return str.class if str.is_a?(Sidekiq::Worker) # sidekiq v6.x
246
+ return str unless str.is_a?(String)
247
+ return Object.const_get(str) unless str.include?("::")
248
+
249
+ names = str.split("::")
250
+ names.shift if names.empty? || names.first.empty?
251
+
252
+ names.inject(Object) do |constant, name|
253
+ # the false flag limits search for name to under the constant namespace
254
+ # which mimics Rails' behaviour
255
+ constant.const_get(name, false)
256
+ end
257
+ end
239
258
  end
@@ -49,10 +49,7 @@ module SidekiqUniqueJobs
49
49
  #
50
50
  # @return [Sidekiq::Worker]
51
51
  def worker_class_constantize(klazz = @worker_class)
52
- return klazz.class if klazz.is_a?(Sidekiq::Worker) # sidekiq v6.x
53
- return klazz unless klazz.is_a?(String)
54
-
55
- Object.const_get(klazz)
52
+ SidekiqUniqueJobs.constantize(klazz)
56
53
  rescue NameError => ex
57
54
  case ex.message
58
55
  when /uninitialized constant/
@@ -3,5 +3,5 @@
3
3
  module SidekiqUniqueJobs
4
4
  #
5
5
  # @return [String] the current SidekiqUniqueJobs version
6
- VERSION = "7.0.4"
6
+ VERSION = "7.0.9"
7
7
  end
@@ -19,8 +19,11 @@ module SidekiqUniqueJobs
19
19
  @count = (params[:count] || 100).to_i
20
20
  @current_cursor = params[:cursor]
21
21
  @prev_cursor = params[:prev_cursor]
22
- @pagination = { pattern: @filter, cursor: @current_cursor, page_size: @count }
23
- @total_size, @next_cursor, @changelogs = changelog.page(**@pagination)
22
+ @total_size, @next_cursor, @changelogs = changelog.page(
23
+ cursor: @current_cursor,
24
+ pattern: @filter,
25
+ page_size: @count,
26
+ )
24
27
 
25
28
  erb(unique_template(:changelogs))
26
29
  end
@@ -36,8 +39,12 @@ module SidekiqUniqueJobs
36
39
  @count = (params[:count] || 100).to_i
37
40
  @current_cursor = params[:cursor]
38
41
  @prev_cursor = params[:prev_cursor]
39
- @pagination = { pattern: @filter, cursor: @current_cursor, page_size: @count }
40
- @total_size, @next_cursor, @locks = digests.page(**@pagination)
42
+
43
+ @total_size, @next_cursor, @locks = digests.page(
44
+ cursor: @current_cursor,
45
+ pattern: @filter,
46
+ page_size: @count,
47
+ )
41
48
 
42
49
  erb(unique_template(:locks))
43
50
  end
@@ -13,7 +13,9 @@ module SidekiqUniqueJobs
13
13
  VIEW_PATH = File.expand_path("../web/views", __dir__).freeze
14
14
  #
15
15
  # @return [Array<String>] safe params
16
- SAFE_CPARAMS = %w[cursor prev_cursor].freeze
16
+ SAFE_CPARAMS = %w[
17
+ filter count cursor prev_cursor poll direction
18
+ ].freeze
17
19
 
18
20
  extend self
19
21
 
@@ -67,10 +69,8 @@ module SidekiqUniqueJobs
67
69
  # @return [String] a url safe parameter string
68
70
  #
69
71
  def cparams(options)
70
- # stringify
71
- options.transform_keys(&:to_s)
72
-
73
- params.merge(options).map do |key, value|
72
+ stringified_options = options.transform_keys(&:to_s)
73
+ params.merge(stringified_options).map do |key, value|
74
74
  next unless SAFE_CPARAMS.include?(key)
75
75
 
76
76
  "#{key}=#{CGI.escape(value.to_s)}"
@@ -1,10 +1,10 @@
1
1
  <ul class="pagination pull-right flip">
2
2
  <% if @prev_cursor %>
3
- <li>
4
- <a href="<%= url %>?<%= cparams(cursor: @prev_cursor, prev_cursor: @next_cursor) %>">Previous <%= @count %></a>
5
- </li>
3
+ <li>
4
+ <a href="<%= url %>?<%= cparams(filter: @filter, cursor: @prev_cursor, prev_cursor: @next_cursor) %>">Previous <%= @count %></a>
5
+ </li>
6
6
  <% end %>
7
7
  <li>
8
- <a href="<%= url %>?<%= cparams(cursor: @next_cursor, prev_cursor: @current_cursor) %>">Next <%= @count %></a>
8
+ <a href="<%= url %>?<%= cparams(filter: @filter, cursor: @next_cursor, prev_cursor: @current_cursor) %>">Next <%= @count %></a>
9
9
  </li>
10
10
  </ul>
@@ -36,7 +36,7 @@
36
36
  </thead>
37
37
  <tbody>
38
38
  <% @changelogs.each do |changelog| %>
39
- <tr>
39
+ <tr class="changelog-row">
40
40
  <td><%= safe_relative_time(changelog["time"]) %></td>
41
41
  <td><%= changelog["digest"] %></td>
42
42
  <td><%= changelog["script"] %></td>
@@ -11,7 +11,7 @@
11
11
  <%= t('Filter') %>
12
12
  </button>
13
13
  </form>
14
- <% if @locks.any? && @total_size > @count.to_i %>
14
+ <% if @locks.any? && @total_size > @count %>
15
15
  <div class="col-sm-4">
16
16
  <%= erb unique_template(:_paging), locals: { url: "#{root_path}locks" } %>
17
17
  </div>
@@ -30,20 +30,22 @@
30
30
  </tr>
31
31
  </thead>
32
32
  <% @locks.each do |lock| %>
33
- <tr>
34
- <td>
35
- <form action="<%= root_path %>locks/<%= lock.key %>/delete" method="get">
36
- <%= csrf_tag %>
37
- <input name="lock" value="<%= h lock.key %>" type="hidden" />
38
- <input class="btn btn-danger btn-xs" type="submit" name="delete" value="<%= t('Delete') %>" data-confirm="<%= t('AreYouSure') %>" />
39
- </form>
40
- </td>
41
- <td><a href="<%= root_path %>locks/<%= lock.key %>"><%= lock.key %></a></td>
42
- <td><%= lock.info["lock"] %></th>
43
- <td><%= lock.locked.count %></td>
44
- <td><%= safe_relative_time(lock.created_at) %></td>
45
- </tr>
46
- <% end %>
33
+ <tbody>
34
+ <tr class="lock-row">
35
+ <td>
36
+ <form action="<%= root_path %>locks/<%= lock.key %>/delete" method="get">
37
+ <%= csrf_tag %>
38
+ <input name="lock" value="<%= h lock.key %>" type="hidden" />
39
+ <input class="btn btn-danger btn-xs" type="submit" name="delete" value="<%= t('Delete') %>" data-confirm="<%= t('AreYouSure') %>" />
40
+ </form>
41
+ </td>
42
+ <td><a href="<%= root_path %>locks/<%= lock.key %>"><%= lock.key %></a></td>
43
+ <td><%= lock.info["lock"] %></td>
44
+ <td><%= lock.locked.count %></td>
45
+ <td><%= safe_relative_time(lock.created_at) %></td>
46
+ </tr>
47
+ </tbody>
48
+ <% end %>
47
49
  </table>
48
50
  <form action="<%= root_path %>locks/delete_all" method="get">
49
51
  <input class="btn btn-danger btn-xs" type="submit" name="delete_all" value="<%= t('DeleteAll') %>" data-confirm="<%= t('AreYouSure') %>" />
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.4
4
+ version: 7.0.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mikael Henriksson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-02-17 00:00:00.000000000 Z
11
+ date: 2021-04-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: brpoplpush-redis_script
@@ -16,7 +16,7 @@ dependencies:
16
16
  requirements:
17
17
  - - ">"
18
18
  - !ruby/object:Gem::Version
19
- version: 0.0.0
19
+ version: 0.1.1
20
20
  - - "<="
21
21
  - !ruby/object:Gem::Version
22
22
  version: 2.0.0
@@ -26,7 +26,7 @@ dependencies:
26
26
  requirements:
27
27
  - - ">"
28
28
  - !ruby/object:Gem::Version
29
- version: 0.0.0
29
+ version: 0.1.1
30
30
  - - "<="
31
31
  - !ruby/object:Gem::Version
32
32
  version: 2.0.0
@@ -257,7 +257,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
257
257
  - !ruby/object:Gem::Version
258
258
  version: '0'
259
259
  requirements: []
260
- rubygems_version: 3.2.6
260
+ rubygems_version: 3.2.16
261
261
  signing_key:
262
262
  specification_version: 4
263
263
  summary: Sidekiq middleware that prevents duplicates jobs