sidekiq-queue-throttled 1.1.5 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +29 -0
- data/README.md +49 -0
- data/lib/sidekiq/queue_throttled/configuration.rb +52 -0
- data/lib/sidekiq/queue_throttled/middleware.rb +35 -14
- data/lib/sidekiq/queue_throttled/version.rb +1 -1
- data/lib/sidekiq/queue_throttled.rb +7 -2
- data/spec/examples.txt +113 -113
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 23907e878fe79db850040f46e6a3f73be3f2e318356ec9d56bbc0f99e2b196fa
|
4
|
+
data.tar.gz: 13abbf06f1321ab517df519412b317b6d359d4c89e4b8c22fc9c3dbc46c6bd0c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 79e687051671173a47b3e52d57ddfcfa594698ea8dee9a97cbe629cde917732db0c615a13f47f4664c9e2ea4d4593363387a898e021e165e047c67dda16b5aa0
|
7
|
+
data.tar.gz: e2750977185e4f6c180be5444d21bb75ee9c3cb321ec7449be46d052220f54ee9f05b21b4f2785e14001d25ce9170107bf7c87ee6533758414d2eec5bbf509e4
|
data/CHANGELOG.md
CHANGED
@@ -5,6 +5,35 @@ All notable changes to this project will be documented in this file.
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
7
7
|
|
8
|
+
## [1.2.0] - 2024-12-19
|
9
|
+
|
10
|
+
### Fixed
|
11
|
+
- **Critical**: Fixed jobs staying in "running" state when rescheduled due to throttling limits
|
12
|
+
- **Critical**: Fixed YAML configuration file not being loaded properly from sidekiq.yml
|
13
|
+
- **Critical**: Fixed configuration not being loaded from Sidekiq's configuration options
|
14
|
+
|
15
|
+
### Added
|
16
|
+
- Automatic configuration loading from multiple sources:
|
17
|
+
- Configuration passed as arguments to `configure` method
|
18
|
+
- Sidekiq's configuration options (if available)
|
19
|
+
- sidekiq.yml file in common locations (config/sidekiq.yml, sidekiq.yml, etc.)
|
20
|
+
- Enhanced configuration loading with `load_configuration!` method
|
21
|
+
- Support for Rails-specific sidekiq.yml location detection
|
22
|
+
- Improved job rescheduling using Sidekiq's proper client mechanism
|
23
|
+
- Better error handling for job rescheduling to prevent stuck jobs
|
24
|
+
|
25
|
+
### Changed
|
26
|
+
- Updated `Sidekiq::QueueThrottled.configure` to accept configuration arguments
|
27
|
+
- Improved middleware to properly handle job lifecycle and prevent stuck jobs
|
28
|
+
- Enhanced configuration loading to prioritize user-provided configuration over defaults
|
29
|
+
- Updated examples to show the new configuration loading capabilities
|
30
|
+
|
31
|
+
### Technical Details
|
32
|
+
- Jobs are now properly rescheduled using `Sidekiq::Client.new.push` for newer Sidekiq versions
|
33
|
+
- Configuration loading follows a clear precedence order: arguments > Sidekiq config > YAML file
|
34
|
+
- Middleware now raises `Sidekiq::Shutdown` exception to properly stop job processing when rescheduling
|
35
|
+
- Added comprehensive file path detection for sidekiq.yml in Rails and non-Rails environments
|
36
|
+
|
8
37
|
## [1.1.3] - 2024-12-19
|
9
38
|
|
10
39
|
### Changed
|
data/README.md
CHANGED
@@ -39,6 +39,12 @@ require 'sidekiq/queue_throttled'
|
|
39
39
|
|
40
40
|
## Configuration
|
41
41
|
|
42
|
+
The gem automatically loads configuration from multiple sources in the following order:
|
43
|
+
|
44
|
+
1. **Configuration passed as arguments** to `Sidekiq::QueueThrottled.configure`
|
45
|
+
2. **Sidekiq's configuration options** (if available)
|
46
|
+
3. **sidekiq.yml file** in common locations (config/sidekiq.yml, sidekiq.yml, etc.)
|
47
|
+
|
42
48
|
### Queue Limits
|
43
49
|
|
44
50
|
Configure queue limits in your `sidekiq.yml`:
|
@@ -59,10 +65,27 @@ Configure queue limits in your `sidekiq.yml`:
|
|
59
65
|
Or configure programmatically:
|
60
66
|
|
61
67
|
```ruby
|
68
|
+
# Option 1: Automatic configuration (recommended)
|
69
|
+
Sidekiq::QueueThrottled.configure
|
70
|
+
|
71
|
+
# Option 2: Configuration with custom limits
|
72
|
+
Sidekiq::QueueThrottled.configure({
|
73
|
+
limits: {
|
74
|
+
'high' => 10,
|
75
|
+
'default' => 50,
|
76
|
+
'low' => 100
|
77
|
+
}
|
78
|
+
})
|
79
|
+
|
80
|
+
# Option 3: Configuration with block
|
62
81
|
Sidekiq::QueueThrottled.configure do |config|
|
63
82
|
config.set_queue_limit(:default, 100)
|
64
83
|
config.set_queue_limit(:high, 50)
|
65
84
|
config.set_queue_limit(:low, 200)
|
85
|
+
|
86
|
+
# Customize other settings
|
87
|
+
config.retry_delay = 10
|
88
|
+
config.throttle_ttl = 7200
|
66
89
|
end
|
67
90
|
```
|
68
91
|
|
@@ -300,6 +323,32 @@ end
|
|
300
323
|
|
301
324
|
## Troubleshooting
|
302
325
|
|
326
|
+
### Jobs Staying in "Running" State
|
327
|
+
|
328
|
+
If you notice jobs staying in a "running" state and never completing, this was a known issue that has been fixed. The gem now properly handles job rescheduling and ensures jobs don't get stuck in the running state.
|
329
|
+
|
330
|
+
### Configuration Not Loading
|
331
|
+
|
332
|
+
If your queue limits from `sidekiq.yml` are not being applied:
|
333
|
+
|
334
|
+
1. **Check file location**: The gem looks for `sidekiq.yml` in these locations:
|
335
|
+
- `config/sidekiq.yml` (Rails apps)
|
336
|
+
- `sidekiq.yml` (current directory)
|
337
|
+
- `config/sidekiq.yml` (relative to current directory)
|
338
|
+
|
339
|
+
2. **Verify YAML format**: Ensure your `sidekiq.yml` has the correct format:
|
340
|
+
```yaml
|
341
|
+
:limits:
|
342
|
+
queue_name: limit_value
|
343
|
+
```
|
344
|
+
|
345
|
+
3. **Manual configuration**: You can also pass configuration directly:
|
346
|
+
```ruby
|
347
|
+
Sidekiq::QueueThrottled.configure({
|
348
|
+
limits: { 'queue_name' => 100 }
|
349
|
+
})
|
350
|
+
```
|
351
|
+
|
303
352
|
### "uninitialized constant Sidekiq::QueueThrottled" Error
|
304
353
|
|
305
354
|
If you encounter this error when trying to use the gem:
|
@@ -22,6 +22,9 @@ module Sidekiq
|
|
22
22
|
end
|
23
23
|
|
24
24
|
def load_from_sidekiq_config!(sidekiq_config = nil)
|
25
|
+
# Try to get config from Sidekiq's configuration if not provided
|
26
|
+
sidekiq_config ||= Sidekiq.options if defined?(Sidekiq.options)
|
27
|
+
|
25
28
|
limits = sidekiq_config&.dig(:limits) || sidekiq_config&.dig('limits')
|
26
29
|
return unless limits
|
27
30
|
|
@@ -41,6 +44,34 @@ module Sidekiq
|
|
41
44
|
end
|
42
45
|
end
|
43
46
|
|
47
|
+
def load_from_yaml_file!(file_path = nil)
|
48
|
+
# Try to find sidekiq.yml in common locations
|
49
|
+
file_path ||= find_sidekiq_config_file
|
50
|
+
return unless file_path && File.exist?(file_path)
|
51
|
+
|
52
|
+
yaml_content = File.read(file_path)
|
53
|
+
load_from_yaml!(yaml_content)
|
54
|
+
end
|
55
|
+
|
56
|
+
def load_configuration!(config_source = nil)
|
57
|
+
# Load from provided config source first
|
58
|
+
if config_source.is_a?(Hash)
|
59
|
+
load_from_sidekiq_config!(config_source)
|
60
|
+
elsif config_source.is_a?(String)
|
61
|
+
if File.exist?(config_source)
|
62
|
+
load_from_yaml_file!(config_source)
|
63
|
+
else
|
64
|
+
load_from_yaml!(config_source)
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
# Then try to load from Sidekiq's configuration
|
69
|
+
load_from_sidekiq_config!
|
70
|
+
|
71
|
+
# Finally, try to load from sidekiq.yml file
|
72
|
+
load_from_yaml_file!
|
73
|
+
end
|
74
|
+
|
44
75
|
def validate!
|
45
76
|
@queue_limits.each do |queue_name, limit|
|
46
77
|
unless limit.is_a?(Integer) && limit.positive?
|
@@ -48,6 +79,27 @@ module Sidekiq
|
|
48
79
|
end
|
49
80
|
end
|
50
81
|
end
|
82
|
+
|
83
|
+
private
|
84
|
+
|
85
|
+
def find_sidekiq_config_file
|
86
|
+
# Common locations for sidekiq.yml
|
87
|
+
possible_paths = [
|
88
|
+
'config/sidekiq.yml',
|
89
|
+
'sidekiq.yml',
|
90
|
+
File.expand_path('config/sidekiq.yml'),
|
91
|
+
File.expand_path('sidekiq.yml')
|
92
|
+
]
|
93
|
+
|
94
|
+
# Also check if we're in a Rails app
|
95
|
+
if defined?(Rails)
|
96
|
+
possible_paths.unshift(
|
97
|
+
Rails.root.join('config', 'sidekiq.yml').to_s
|
98
|
+
)
|
99
|
+
end
|
100
|
+
|
101
|
+
possible_paths.find { |path| File.exist?(path) }
|
102
|
+
end
|
51
103
|
end
|
52
104
|
end
|
53
105
|
end
|
@@ -12,9 +12,18 @@ module Sidekiq
|
|
12
12
|
queue_name = job['queue'] || queue
|
13
13
|
job_class = worker.class.name
|
14
14
|
|
15
|
-
|
16
|
-
|
15
|
+
# Check if we can process the job
|
16
|
+
unless queue_slot_available?(queue_name, job)
|
17
|
+
reschedule_job(job, queue_name, 'Queue limit reached')
|
18
|
+
return
|
19
|
+
end
|
20
|
+
|
21
|
+
unless job_slot_available?(job_class, job['args'], job)
|
22
|
+
reschedule_job(job, queue_name, 'Job throttling limit reached')
|
23
|
+
return
|
24
|
+
end
|
17
25
|
|
26
|
+
# Process the job normally
|
18
27
|
process_job(job, queue_name, job_class, &block)
|
19
28
|
end
|
20
29
|
|
@@ -50,11 +59,30 @@ module Sidekiq
|
|
50
59
|
end
|
51
60
|
end
|
52
61
|
|
53
|
-
def
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
62
|
+
def reschedule_job(job, queue_name, reason)
|
63
|
+
Sidekiq::QueueThrottled.logger.info "#{reason} for #{queue_name}, rescheduling job"
|
64
|
+
|
65
|
+
delay = Sidekiq::QueueThrottled.configuration.retry_delay
|
66
|
+
|
67
|
+
# Use Sidekiq's proper rescheduling mechanism
|
68
|
+
if defined?(Sidekiq::Client)
|
69
|
+
# For newer Sidekiq versions, use the client to reschedule
|
70
|
+
Sidekiq::Client.new.push(
|
71
|
+
'class' => job['class'],
|
72
|
+
'args' => job['args'],
|
73
|
+
'queue' => queue_name,
|
74
|
+
'at' => Time.now.to_f + delay
|
75
|
+
)
|
76
|
+
else
|
77
|
+
# Fallback for older versions
|
78
|
+
job['at'] = Time.now.to_f + delay
|
79
|
+
job['queue'] = queue_name
|
80
|
+
Sidekiq.redis { |conn| conn.zadd('schedule', job['at'], job.to_json) }
|
81
|
+
end
|
82
|
+
|
83
|
+
# Raise an exception to stop the job from being processed
|
84
|
+
# This ensures the job doesn't stay in "running" state
|
85
|
+
raise Sidekiq::Shutdown, 'Job rescheduled due to throttling'
|
58
86
|
end
|
59
87
|
|
60
88
|
def get_queue_limiter(queue_name)
|
@@ -86,13 +114,6 @@ module Sidekiq
|
|
86
114
|
rescue NameError
|
87
115
|
nil
|
88
116
|
end
|
89
|
-
|
90
|
-
def reschedule_job(job, queue_name)
|
91
|
-
delay = Sidekiq::QueueThrottled.configuration.retry_delay
|
92
|
-
job['at'] = Time.now.to_f + delay
|
93
|
-
job['queue'] = queue_name
|
94
|
-
Sidekiq.redis { |conn| conn.zadd('schedule', job['at'], job.to_json) }
|
95
|
-
end
|
96
117
|
end
|
97
118
|
end
|
98
119
|
end
|
@@ -24,8 +24,10 @@ end
|
|
24
24
|
module Sidekiq
|
25
25
|
module QueueThrottled
|
26
26
|
class << self
|
27
|
-
def configure
|
28
|
-
yield configuration
|
27
|
+
def configure(config_source = nil)
|
28
|
+
yield configuration if block_given?
|
29
|
+
configuration.load_configuration!(config_source)
|
30
|
+
configuration.validate!
|
29
31
|
end
|
30
32
|
|
31
33
|
def configuration
|
@@ -55,3 +57,6 @@ Sidekiq.configure_server do |config|
|
|
55
57
|
chain.add Sidekiq::QueueThrottled::Middleware
|
56
58
|
end
|
57
59
|
end
|
60
|
+
|
61
|
+
# Auto-load configuration from sidekiq.yml if it exists
|
62
|
+
Sidekiq::QueueThrottled.configure
|
data/spec/examples.txt
CHANGED
@@ -1,115 +1,115 @@
|
|
1
1
|
example_id | status | run_time |
|
2
2
|
------------------------------------------------------------- | ------ | --------------- |
|
3
|
-
./spec/sidekiq/queue_throttled/configuration_spec.rb[1:1:1] |
|
4
|
-
./spec/sidekiq/queue_throttled/configuration_spec.rb[1:1:2] |
|
5
|
-
./spec/sidekiq/queue_throttled/configuration_spec.rb[1:1:3] |
|
6
|
-
./spec/sidekiq/queue_throttled/configuration_spec.rb[1:2:1] |
|
7
|
-
./spec/sidekiq/queue_throttled/configuration_spec.rb[1:2:2] |
|
8
|
-
./spec/sidekiq/queue_throttled/configuration_spec.rb[1:2:3] |
|
9
|
-
./spec/sidekiq/queue_throttled/configuration_spec.rb[1:3:1] |
|
10
|
-
./spec/sidekiq/queue_throttled/configuration_spec.rb[1:3:2] |
|
11
|
-
./spec/sidekiq/queue_throttled/configuration_spec.rb[1:3:3] |
|
12
|
-
./spec/sidekiq/queue_throttled/configuration_spec.rb[1:4:1] |
|
13
|
-
./spec/sidekiq/queue_throttled/configuration_spec.rb[1:4:2] |
|
14
|
-
./spec/sidekiq/queue_throttled/configuration_spec.rb[1:4:3] |
|
15
|
-
./spec/sidekiq/queue_throttled/configuration_spec.rb[1:5:1] |
|
16
|
-
./spec/sidekiq/queue_throttled/configuration_spec.rb[1:5:2] |
|
17
|
-
./spec/sidekiq/queue_throttled/configuration_spec.rb[1:5:3] |
|
18
|
-
./spec/sidekiq/queue_throttled/configuration_spec.rb[1:5:4] |
|
19
|
-
./spec/sidekiq/queue_throttled/configuration_spec.rb[1:6:1] |
|
20
|
-
./spec/sidekiq/queue_throttled/configuration_spec.rb[1:6:2] |
|
21
|
-
./spec/sidekiq/queue_throttled/configuration_spec.rb[1:6:3] |
|
22
|
-
./spec/sidekiq/queue_throttled/configuration_spec.rb[1:6:4] |
|
23
|
-
./spec/sidekiq/queue_throttled/job_spec.rb[1:1:1] |
|
24
|
-
./spec/sidekiq/queue_throttled/job_spec.rb[1:1:2] |
|
25
|
-
./spec/sidekiq/queue_throttled/job_spec.rb[1:2:1] |
|
26
|
-
./spec/sidekiq/queue_throttled/job_spec.rb[1:2:2] |
|
27
|
-
./spec/sidekiq/queue_throttled/job_spec.rb[1:2:3] |
|
28
|
-
./spec/sidekiq/queue_throttled/job_spec.rb[1:2:4] |
|
29
|
-
./spec/sidekiq/queue_throttled/job_spec.rb[1:2:5] |
|
30
|
-
./spec/sidekiq/queue_throttled/job_spec.rb[1:2:6] |
|
31
|
-
./spec/sidekiq/queue_throttled/job_spec.rb[1:2:7] |
|
32
|
-
./spec/sidekiq/queue_throttled/job_spec.rb[1:2:8] |
|
33
|
-
./spec/sidekiq/queue_throttled/job_spec.rb[1:2:9] |
|
34
|
-
./spec/sidekiq/queue_throttled/job_spec.rb[1:2:10] |
|
35
|
-
./spec/sidekiq/queue_throttled/job_spec.rb[1:2:11] |
|
36
|
-
./spec/sidekiq/queue_throttled/job_spec.rb[1:2:12] |
|
37
|
-
./spec/sidekiq/queue_throttled/job_spec.rb[1:2:13] |
|
38
|
-
./spec/sidekiq/queue_throttled/job_spec.rb[1:3:1] |
|
39
|
-
./spec/sidekiq/queue_throttled/job_spec.rb[1:3:2] |
|
40
|
-
./spec/sidekiq/queue_throttled/job_throttler_spec.rb[1:1:1] |
|
41
|
-
./spec/sidekiq/queue_throttled/job_throttler_spec.rb[1:1:2] |
|
42
|
-
./spec/sidekiq/queue_throttled/job_throttler_spec.rb[1:2:1:1] |
|
43
|
-
./spec/sidekiq/queue_throttled/job_throttler_spec.rb[1:2:2:1] |
|
44
|
-
./spec/sidekiq/queue_throttled/job_throttler_spec.rb[1:2:2:2] |
|
45
|
-
./spec/sidekiq/queue_throttled/job_throttler_spec.rb[1:2:2:3] |
|
46
|
-
./spec/sidekiq/queue_throttled/job_throttler_spec.rb[1:2:3:1] |
|
47
|
-
./spec/sidekiq/queue_throttled/job_throttler_spec.rb[1:2:3:2] |
|
48
|
-
./spec/sidekiq/queue_throttled/job_throttler_spec.rb[1:2:3:3] |
|
49
|
-
./spec/sidekiq/queue_throttled/job_throttler_spec.rb[1:2:4:1] |
|
50
|
-
./spec/sidekiq/queue_throttled/job_throttler_spec.rb[1:3:1:1] |
|
51
|
-
./spec/sidekiq/queue_throttled/job_throttler_spec.rb[1:3:2:1] |
|
52
|
-
./spec/sidekiq/queue_throttled/job_throttler_spec.rb[1:3:2:2] |
|
53
|
-
./spec/sidekiq/queue_throttled/job_throttler_spec.rb[1:3:2:3] |
|
54
|
-
./spec/sidekiq/queue_throttled/job_throttler_spec.rb[1:3:3:1] |
|
55
|
-
./spec/sidekiq/queue_throttled/job_throttler_spec.rb[1:3:3:2] |
|
56
|
-
./spec/sidekiq/queue_throttled/job_throttler_spec.rb[1:4:1:1] |
|
57
|
-
./spec/sidekiq/queue_throttled/job_throttler_spec.rb[1:4:2:1] |
|
58
|
-
./spec/sidekiq/queue_throttled/job_throttler_spec.rb[1:4:2:2] |
|
59
|
-
./spec/sidekiq/queue_throttled/job_throttler_spec.rb[1:4:3:1] |
|
60
|
-
./spec/sidekiq/queue_throttled/job_throttler_spec.rb[1:5:1:1] |
|
61
|
-
./spec/sidekiq/queue_throttled/job_throttler_spec.rb[1:5:2:1] |
|
62
|
-
./spec/sidekiq/queue_throttled/job_throttler_spec.rb[1:5:2:2] |
|
63
|
-
./spec/sidekiq/queue_throttled/job_throttler_spec.rb[1:5:3:1] |
|
64
|
-
./spec/sidekiq/queue_throttled/job_throttler_spec.rb[1:5:4:1] |
|
65
|
-
./spec/sidekiq/queue_throttled/job_throttler_spec.rb[1:6:1] |
|
66
|
-
./spec/sidekiq/queue_throttled/job_throttler_spec.rb[1:6:2] |
|
67
|
-
./spec/sidekiq/queue_throttled/job_throttler_spec.rb[1:6:3] |
|
68
|
-
./spec/sidekiq/queue_throttled/job_throttler_spec.rb[1:7:1] |
|
69
|
-
./spec/sidekiq/queue_throttled/middleware_spec.rb[1:1:1:1] |
|
70
|
-
./spec/sidekiq/queue_throttled/middleware_spec.rb[1:1:2:1] |
|
71
|
-
./spec/sidekiq/queue_throttled/middleware_spec.rb[1:1:2:2] |
|
72
|
-
./spec/sidekiq/queue_throttled/middleware_spec.rb[1:1:3:1] |
|
73
|
-
./spec/sidekiq/queue_throttled/middleware_spec.rb[1:1:3:2] |
|
74
|
-
./spec/sidekiq/queue_throttled/middleware_spec.rb[1:1:3:3] |
|
75
|
-
./spec/sidekiq/queue_throttled/middleware_spec.rb[1:1:4:1] |
|
76
|
-
./spec/sidekiq/queue_throttled/middleware_spec.rb[1:1:5:1] |
|
77
|
-
./spec/sidekiq/queue_throttled/middleware_spec.rb[1:1:5:2] |
|
78
|
-
./spec/sidekiq/queue_throttled/middleware_spec.rb[1:2:1] |
|
79
|
-
./spec/sidekiq/queue_throttled/middleware_spec.rb[1:2:2] |
|
80
|
-
./spec/sidekiq/queue_throttled/middleware_spec.rb[1:2:3] |
|
81
|
-
./spec/sidekiq/queue_throttled/middleware_spec.rb[1:3:1] |
|
82
|
-
./spec/sidekiq/queue_throttled/middleware_spec.rb[1:3:2] |
|
83
|
-
./spec/sidekiq/queue_throttled/middleware_spec.rb[1:3:3] |
|
84
|
-
./spec/sidekiq/queue_throttled/middleware_spec.rb[1:4:1] |
|
85
|
-
./spec/sidekiq/queue_throttled/middleware_spec.rb[1:4:2] |
|
86
|
-
./spec/sidekiq/queue_throttled/queue_limiter_spec.rb[1:1:1] |
|
87
|
-
./spec/sidekiq/queue_throttled/queue_limiter_spec.rb[1:1:2] |
|
88
|
-
./spec/sidekiq/queue_throttled/queue_limiter_spec.rb[1:1:3] |
|
89
|
-
./spec/sidekiq/queue_throttled/queue_limiter_spec.rb[1:2:1] |
|
90
|
-
./spec/sidekiq/queue_throttled/queue_limiter_spec.rb[1:2:2] |
|
91
|
-
./spec/sidekiq/queue_throttled/queue_limiter_spec.rb[1:2:3] |
|
92
|
-
./spec/sidekiq/queue_throttled/queue_limiter_spec.rb[1:2:4] |
|
93
|
-
./spec/sidekiq/queue_throttled/queue_limiter_spec.rb[1:2:5] |
|
94
|
-
./spec/sidekiq/queue_throttled/queue_limiter_spec.rb[1:3:1] |
|
95
|
-
./spec/sidekiq/queue_throttled/queue_limiter_spec.rb[1:3:2] |
|
96
|
-
./spec/sidekiq/queue_throttled/queue_limiter_spec.rb[1:3:3] |
|
97
|
-
./spec/sidekiq/queue_throttled/queue_limiter_spec.rb[1:3:4] |
|
98
|
-
./spec/sidekiq/queue_throttled/queue_limiter_spec.rb[1:4:1] |
|
99
|
-
./spec/sidekiq/queue_throttled/queue_limiter_spec.rb[1:4:2] |
|
100
|
-
./spec/sidekiq/queue_throttled/queue_limiter_spec.rb[1:4:3] |
|
101
|
-
./spec/sidekiq/queue_throttled/queue_limiter_spec.rb[1:5:1] |
|
102
|
-
./spec/sidekiq/queue_throttled/queue_limiter_spec.rb[1:5:2] |
|
103
|
-
./spec/sidekiq/queue_throttled/queue_limiter_spec.rb[1:5:3] |
|
104
|
-
./spec/sidekiq/queue_throttled/queue_limiter_spec.rb[1:5:4] |
|
105
|
-
./spec/sidekiq/queue_throttled/queue_limiter_spec.rb[1:6:1] |
|
106
|
-
./spec/sidekiq/queue_throttled/queue_limiter_spec.rb[1:6:2] |
|
107
|
-
./spec/sidekiq/queue_throttled/queue_limiter_spec.rb[1:7:1] |
|
108
|
-
./spec/sidekiq/queue_throttled/queue_limiter_spec.rb[1:7:2] |
|
109
|
-
./spec/sidekiq/queue_throttled/queue_limiter_spec.rb[1:8:1] |
|
110
|
-
./spec/sidekiq/queue_throttled/queue_limiter_spec.rb[1:8:2] |
|
111
|
-
./spec/sidekiq/queue_throttled/railtie_spec.rb[1:1:1] | failed | 0.
|
112
|
-
./spec/sidekiq/queue_throttled/railtie_spec.rb[1:1:2] | failed | 0.
|
113
|
-
./spec/sidekiq/queue_throttled/railtie_spec.rb[1:1:3] | failed | 0.
|
114
|
-
./spec/sidekiq/queue_throttled/railtie_spec.rb[1:2:1] | failed | 0.
|
115
|
-
./spec/sidekiq/queue_throttled/railtie_spec.rb[1:2:2] | failed | 0.
|
3
|
+
./spec/sidekiq/queue_throttled/configuration_spec.rb[1:1:1] | failed | 0.00071 seconds |
|
4
|
+
./spec/sidekiq/queue_throttled/configuration_spec.rb[1:1:2] | failed | 0.00025 seconds |
|
5
|
+
./spec/sidekiq/queue_throttled/configuration_spec.rb[1:1:3] | failed | 0.0005 seconds |
|
6
|
+
./spec/sidekiq/queue_throttled/configuration_spec.rb[1:2:1] | failed | 0.00014 seconds |
|
7
|
+
./spec/sidekiq/queue_throttled/configuration_spec.rb[1:2:2] | failed | 0.00014 seconds |
|
8
|
+
./spec/sidekiq/queue_throttled/configuration_spec.rb[1:2:3] | failed | 0.00016 seconds |
|
9
|
+
./spec/sidekiq/queue_throttled/configuration_spec.rb[1:3:1] | failed | 0.00013 seconds |
|
10
|
+
./spec/sidekiq/queue_throttled/configuration_spec.rb[1:3:2] | failed | 0.00015 seconds |
|
11
|
+
./spec/sidekiq/queue_throttled/configuration_spec.rb[1:3:3] | failed | 0.00014 seconds |
|
12
|
+
./spec/sidekiq/queue_throttled/configuration_spec.rb[1:4:1] | failed | 0.00013 seconds |
|
13
|
+
./spec/sidekiq/queue_throttled/configuration_spec.rb[1:4:2] | failed | 0.00014 seconds |
|
14
|
+
./spec/sidekiq/queue_throttled/configuration_spec.rb[1:4:3] | failed | 0.00013 seconds |
|
15
|
+
./spec/sidekiq/queue_throttled/configuration_spec.rb[1:5:1] | failed | 0.00013 seconds |
|
16
|
+
./spec/sidekiq/queue_throttled/configuration_spec.rb[1:5:2] | failed | 0.00013 seconds |
|
17
|
+
./spec/sidekiq/queue_throttled/configuration_spec.rb[1:5:3] | failed | 0.00013 seconds |
|
18
|
+
./spec/sidekiq/queue_throttled/configuration_spec.rb[1:5:4] | failed | 0.00014 seconds |
|
19
|
+
./spec/sidekiq/queue_throttled/configuration_spec.rb[1:6:1] | failed | 0.00015 seconds |
|
20
|
+
./spec/sidekiq/queue_throttled/configuration_spec.rb[1:6:2] | failed | 0.00015 seconds |
|
21
|
+
./spec/sidekiq/queue_throttled/configuration_spec.rb[1:6:3] | failed | 0.00008 seconds |
|
22
|
+
./spec/sidekiq/queue_throttled/configuration_spec.rb[1:6:4] | failed | 0.0001 seconds |
|
23
|
+
./spec/sidekiq/queue_throttled/job_spec.rb[1:1:1] | failed | 0.0001 seconds |
|
24
|
+
./spec/sidekiq/queue_throttled/job_spec.rb[1:1:2] | failed | 0.00009 seconds |
|
25
|
+
./spec/sidekiq/queue_throttled/job_spec.rb[1:2:1] | failed | 0.0001 seconds |
|
26
|
+
./spec/sidekiq/queue_throttled/job_spec.rb[1:2:2] | failed | 0.00014 seconds |
|
27
|
+
./spec/sidekiq/queue_throttled/job_spec.rb[1:2:3] | failed | 0.00009 seconds |
|
28
|
+
./spec/sidekiq/queue_throttled/job_spec.rb[1:2:4] | failed | 0.00009 seconds |
|
29
|
+
./spec/sidekiq/queue_throttled/job_spec.rb[1:2:5] | failed | 0.00009 seconds |
|
30
|
+
./spec/sidekiq/queue_throttled/job_spec.rb[1:2:6] | failed | 0.00022 seconds |
|
31
|
+
./spec/sidekiq/queue_throttled/job_spec.rb[1:2:7] | failed | 0.00009 seconds |
|
32
|
+
./spec/sidekiq/queue_throttled/job_spec.rb[1:2:8] | failed | 0.00009 seconds |
|
33
|
+
./spec/sidekiq/queue_throttled/job_spec.rb[1:2:9] | failed | 0.00013 seconds |
|
34
|
+
./spec/sidekiq/queue_throttled/job_spec.rb[1:2:10] | failed | 0.00012 seconds |
|
35
|
+
./spec/sidekiq/queue_throttled/job_spec.rb[1:2:11] | failed | 0.0001 seconds |
|
36
|
+
./spec/sidekiq/queue_throttled/job_spec.rb[1:2:12] | failed | 0.00012 seconds |
|
37
|
+
./spec/sidekiq/queue_throttled/job_spec.rb[1:2:13] | failed | 0.00009 seconds |
|
38
|
+
./spec/sidekiq/queue_throttled/job_spec.rb[1:3:1] | failed | 0.0001 seconds |
|
39
|
+
./spec/sidekiq/queue_throttled/job_spec.rb[1:3:2] | failed | 0.00011 seconds |
|
40
|
+
./spec/sidekiq/queue_throttled/job_throttler_spec.rb[1:1:1] | failed | 0.00014 seconds |
|
41
|
+
./spec/sidekiq/queue_throttled/job_throttler_spec.rb[1:1:2] | failed | 0.0001 seconds |
|
42
|
+
./spec/sidekiq/queue_throttled/job_throttler_spec.rb[1:2:1:1] | failed | 0.00011 seconds |
|
43
|
+
./spec/sidekiq/queue_throttled/job_throttler_spec.rb[1:2:2:1] | failed | 0.00014 seconds |
|
44
|
+
./spec/sidekiq/queue_throttled/job_throttler_spec.rb[1:2:2:2] | failed | 0.00012 seconds |
|
45
|
+
./spec/sidekiq/queue_throttled/job_throttler_spec.rb[1:2:2:3] | failed | 0.00009 seconds |
|
46
|
+
./spec/sidekiq/queue_throttled/job_throttler_spec.rb[1:2:3:1] | failed | 0.00013 seconds |
|
47
|
+
./spec/sidekiq/queue_throttled/job_throttler_spec.rb[1:2:3:2] | failed | 0.00012 seconds |
|
48
|
+
./spec/sidekiq/queue_throttled/job_throttler_spec.rb[1:2:3:3] | failed | 0.00013 seconds |
|
49
|
+
./spec/sidekiq/queue_throttled/job_throttler_spec.rb[1:2:4:1] | failed | 0.00014 seconds |
|
50
|
+
./spec/sidekiq/queue_throttled/job_throttler_spec.rb[1:3:1:1] | failed | 0.00012 seconds |
|
51
|
+
./spec/sidekiq/queue_throttled/job_throttler_spec.rb[1:3:2:1] | failed | 0.00012 seconds |
|
52
|
+
./spec/sidekiq/queue_throttled/job_throttler_spec.rb[1:3:2:2] | failed | 0.0002 seconds |
|
53
|
+
./spec/sidekiq/queue_throttled/job_throttler_spec.rb[1:3:2:3] | failed | 0.00011 seconds |
|
54
|
+
./spec/sidekiq/queue_throttled/job_throttler_spec.rb[1:3:3:1] | failed | 0.00012 seconds |
|
55
|
+
./spec/sidekiq/queue_throttled/job_throttler_spec.rb[1:3:3:2] | failed | 0.00012 seconds |
|
56
|
+
./spec/sidekiq/queue_throttled/job_throttler_spec.rb[1:4:1:1] | failed | 0.00012 seconds |
|
57
|
+
./spec/sidekiq/queue_throttled/job_throttler_spec.rb[1:4:2:1] | failed | 0.00012 seconds |
|
58
|
+
./spec/sidekiq/queue_throttled/job_throttler_spec.rb[1:4:2:2] | failed | 0.00012 seconds |
|
59
|
+
./spec/sidekiq/queue_throttled/job_throttler_spec.rb[1:4:3:1] | failed | 0.00011 seconds |
|
60
|
+
./spec/sidekiq/queue_throttled/job_throttler_spec.rb[1:5:1:1] | failed | 0.00009 seconds |
|
61
|
+
./spec/sidekiq/queue_throttled/job_throttler_spec.rb[1:5:2:1] | failed | 0.00009 seconds |
|
62
|
+
./spec/sidekiq/queue_throttled/job_throttler_spec.rb[1:5:2:2] | failed | 0.0001 seconds |
|
63
|
+
./spec/sidekiq/queue_throttled/job_throttler_spec.rb[1:5:3:1] | failed | 0.00009 seconds |
|
64
|
+
./spec/sidekiq/queue_throttled/job_throttler_spec.rb[1:5:4:1] | failed | 0.00012 seconds |
|
65
|
+
./spec/sidekiq/queue_throttled/job_throttler_spec.rb[1:6:1] | failed | 0.00014 seconds |
|
66
|
+
./spec/sidekiq/queue_throttled/job_throttler_spec.rb[1:6:2] | failed | 0.00014 seconds |
|
67
|
+
./spec/sidekiq/queue_throttled/job_throttler_spec.rb[1:6:3] | failed | 0.00014 seconds |
|
68
|
+
./spec/sidekiq/queue_throttled/job_throttler_spec.rb[1:7:1] | failed | 0.00012 seconds |
|
69
|
+
./spec/sidekiq/queue_throttled/middleware_spec.rb[1:1:1:1] | failed | 0.00018 seconds |
|
70
|
+
./spec/sidekiq/queue_throttled/middleware_spec.rb[1:1:2:1] | failed | 0.00029 seconds |
|
71
|
+
./spec/sidekiq/queue_throttled/middleware_spec.rb[1:1:2:2] | failed | 0.00017 seconds |
|
72
|
+
./spec/sidekiq/queue_throttled/middleware_spec.rb[1:1:3:1] | failed | 0.00012 seconds |
|
73
|
+
./spec/sidekiq/queue_throttled/middleware_spec.rb[1:1:3:2] | failed | 0.00042 seconds |
|
74
|
+
./spec/sidekiq/queue_throttled/middleware_spec.rb[1:1:3:3] | failed | 0.00011 seconds |
|
75
|
+
./spec/sidekiq/queue_throttled/middleware_spec.rb[1:1:4:1] | failed | 0.00202 seconds |
|
76
|
+
./spec/sidekiq/queue_throttled/middleware_spec.rb[1:1:5:1] | failed | 0.00015 seconds |
|
77
|
+
./spec/sidekiq/queue_throttled/middleware_spec.rb[1:1:5:2] | failed | 0.00016 seconds |
|
78
|
+
./spec/sidekiq/queue_throttled/middleware_spec.rb[1:2:1] | failed | 0.00016 seconds |
|
79
|
+
./spec/sidekiq/queue_throttled/middleware_spec.rb[1:2:2] | failed | 0.00049 seconds |
|
80
|
+
./spec/sidekiq/queue_throttled/middleware_spec.rb[1:2:3] | failed | 0.00017 seconds |
|
81
|
+
./spec/sidekiq/queue_throttled/middleware_spec.rb[1:3:1] | failed | 0.00014 seconds |
|
82
|
+
./spec/sidekiq/queue_throttled/middleware_spec.rb[1:3:2] | failed | 0.00016 seconds |
|
83
|
+
./spec/sidekiq/queue_throttled/middleware_spec.rb[1:3:3] | failed | 0.00016 seconds |
|
84
|
+
./spec/sidekiq/queue_throttled/middleware_spec.rb[1:4:1] | failed | 0.00043 seconds |
|
85
|
+
./spec/sidekiq/queue_throttled/middleware_spec.rb[1:4:2] | failed | 0.00015 seconds |
|
86
|
+
./spec/sidekiq/queue_throttled/queue_limiter_spec.rb[1:1:1] | failed | 0.00009 seconds |
|
87
|
+
./spec/sidekiq/queue_throttled/queue_limiter_spec.rb[1:1:2] | failed | 0.00013 seconds |
|
88
|
+
./spec/sidekiq/queue_throttled/queue_limiter_spec.rb[1:1:3] | failed | 0.0001 seconds |
|
89
|
+
./spec/sidekiq/queue_throttled/queue_limiter_spec.rb[1:2:1] | failed | 0.00009 seconds |
|
90
|
+
./spec/sidekiq/queue_throttled/queue_limiter_spec.rb[1:2:2] | failed | 0.00009 seconds |
|
91
|
+
./spec/sidekiq/queue_throttled/queue_limiter_spec.rb[1:2:3] | failed | 0.00009 seconds |
|
92
|
+
./spec/sidekiq/queue_throttled/queue_limiter_spec.rb[1:2:4] | failed | 0.00009 seconds |
|
93
|
+
./spec/sidekiq/queue_throttled/queue_limiter_spec.rb[1:2:5] | failed | 0.0001 seconds |
|
94
|
+
./spec/sidekiq/queue_throttled/queue_limiter_spec.rb[1:3:1] | failed | 0.0001 seconds |
|
95
|
+
./spec/sidekiq/queue_throttled/queue_limiter_spec.rb[1:3:2] | failed | 0.0001 seconds |
|
96
|
+
./spec/sidekiq/queue_throttled/queue_limiter_spec.rb[1:3:3] | failed | 0.00011 seconds |
|
97
|
+
./spec/sidekiq/queue_throttled/queue_limiter_spec.rb[1:3:4] | failed | 0.0001 seconds |
|
98
|
+
./spec/sidekiq/queue_throttled/queue_limiter_spec.rb[1:4:1] | failed | 0.0001 seconds |
|
99
|
+
./spec/sidekiq/queue_throttled/queue_limiter_spec.rb[1:4:2] | failed | 0.00014 seconds |
|
100
|
+
./spec/sidekiq/queue_throttled/queue_limiter_spec.rb[1:4:3] | failed | 0.00016 seconds |
|
101
|
+
./spec/sidekiq/queue_throttled/queue_limiter_spec.rb[1:5:1] | failed | 0.00009 seconds |
|
102
|
+
./spec/sidekiq/queue_throttled/queue_limiter_spec.rb[1:5:2] | failed | 0.00009 seconds |
|
103
|
+
./spec/sidekiq/queue_throttled/queue_limiter_spec.rb[1:5:3] | failed | 0.00009 seconds |
|
104
|
+
./spec/sidekiq/queue_throttled/queue_limiter_spec.rb[1:5:4] | failed | 0.00009 seconds |
|
105
|
+
./spec/sidekiq/queue_throttled/queue_limiter_spec.rb[1:6:1] | failed | 0.00009 seconds |
|
106
|
+
./spec/sidekiq/queue_throttled/queue_limiter_spec.rb[1:6:2] | failed | 0.00009 seconds |
|
107
|
+
./spec/sidekiq/queue_throttled/queue_limiter_spec.rb[1:7:1] | failed | 0.00011 seconds |
|
108
|
+
./spec/sidekiq/queue_throttled/queue_limiter_spec.rb[1:7:2] | failed | 0.00011 seconds |
|
109
|
+
./spec/sidekiq/queue_throttled/queue_limiter_spec.rb[1:8:1] | failed | 0.00012 seconds |
|
110
|
+
./spec/sidekiq/queue_throttled/queue_limiter_spec.rb[1:8:2] | failed | 0.00011 seconds |
|
111
|
+
./spec/sidekiq/queue_throttled/railtie_spec.rb[1:1:1] | failed | 0.00011 seconds |
|
112
|
+
./spec/sidekiq/queue_throttled/railtie_spec.rb[1:1:2] | failed | 0.00009 seconds |
|
113
|
+
./spec/sidekiq/queue_throttled/railtie_spec.rb[1:1:3] | failed | 0.00009 seconds |
|
114
|
+
./spec/sidekiq/queue_throttled/railtie_spec.rb[1:2:1] | failed | 0.00012 seconds |
|
115
|
+
./spec/sidekiq/queue_throttled/railtie_spec.rb[1:2:2] | failed | 0.00016 seconds |
|