Skip to content

Commit 748b51b

Browse files
committed
Do not apply Sidekiq patch automatically
Deleting many items in the queue via Sidekiq Web UI results in timeouts because each job is being unlocked individually. Since this change Sidekiq API patch should be applied explicitly in Gemfile: ```ruby gem 'activejob-uniqueness', require: 'active_job/uniqueness/sidekiq_patch' ``` fixes #16
1 parent b9936a9 commit 748b51b

File tree

5 files changed

+24
-11
lines changed

5 files changed

+24
-11
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
99
- [#22](https://github.com/veeqo/activejob-uniqueness/pull/22) Test with ruby 3.0.1
1010

1111
### Changed
12+
- [#20](https://github.com/veeqo/activejob-uniqueness/pull/20) **Breaking** Sidekiq patch is not applied automatically anymore
1213
- [#21](https://github.com/veeqo/activejob-uniqueness/pull/21) Migrate from Travis to Github Actions
1314

1415
## [0.1.4](https://github.com/veeqo/activejob-uniqueness/compare/v0.1.3...v0.1.4) - 2020-09-22

README.md

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,11 @@ Add the `activejob-uniqueness` gem to your Gemfile.
2727
gem 'activejob-uniqueness'
2828
```
2929

30+
If you want jobs unlocking for Sidekiq Web UI, require the patch explicitly. [Read more](#sidekiq-api-support)
31+
```ruby
32+
gem 'activejob-uniqueness', require: 'active_job/uniqueness/sidekiq_patch'
33+
```
34+
3035
And run `bundle install` command.
3136

3237
## Configuration
@@ -119,9 +124,14 @@ gem install wwtd
119124
wwtd
120125
```
121126

122-
## Sidekiq adapter support
127+
## Sidekiq API support
123128

124-
ActiveJob::Uniqueness patches Sidekiq API to unset locks on jobs cleanup. Starting Sidekiq 5.1 job death also triggers locks cleanup.
129+
ActiveJob::Uniqueness supports Sidekiq API to unset job locks on queues cleanup (e.g. via Sidekiq Web UI). Starting Sidekiq 5.1 job death also triggers locks cleanup.
130+
Take into account that **[big queues clanup becomes much slower](https://github.com/veeqo/activejob-uniqueness/issues/16)** because each job is being unlocked individually. In order to activate Sidekiq API patch require it explicitly in your Gemfile:
131+
132+
```ruby
133+
gem 'activejob-uniqueness', require: 'active_job/uniqueness/sidekiq_patch'
134+
```
125135

126136
## Contributing
127137

lib/active_job/uniqueness.rb

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,6 @@
88
require 'active_job/uniqueness/log_subscriber'
99
require 'active_job/uniqueness/active_job_patch'
1010

11-
begin
12-
require 'sidekiq/api'
13-
rescue LoadError
14-
# ¯\_(ツ)_/¯
15-
else
16-
require 'active_job/uniqueness/sidekiq_patch'
17-
end
18-
1911
module ActiveJob
2012
module Uniqueness
2113
extend ActiveSupport::Autoload

lib/active_job/uniqueness/sidekiq_patch.rb

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
# frozen_string_literal: true
22

3+
require 'activejob/uniqueness'
4+
require 'sidekiq/api'
5+
36
module ActiveJob
47
module Uniqueness
58
def self.unlock_sidekiq_job!(job_data)

spec/spec_helper.rb

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,16 @@
11
# frozen_string_literal: true
22

33
require 'bundler/setup'
4-
require 'active_job/uniqueness'
54
require 'pry-byebug'
65

6+
begin
7+
require 'sidekiq/api'
8+
rescue LoadError
9+
require 'active_job/uniqueness'
10+
else
11+
require 'active_job/uniqueness/sidekiq_patch'
12+
end
13+
714
Dir['./spec/support/**/*.rb'].sort.each { |f| require f }
815

916
RSpec.configure do |config|

0 commit comments

Comments
 (0)