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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b1220e8680f9582d2cddf183688e3a1417679eda0f3be0295b795c786ad77d48
4
- data.tar.gz: c7302965fc700ca799eca0ee350a63b959b0382f90d570c3340caf7d7dfbce4e
3
+ metadata.gz: 23907e878fe79db850040f46e6a3f73be3f2e318356ec9d56bbc0f99e2b196fa
4
+ data.tar.gz: 13abbf06f1321ab517df519412b317b6d359d4c89e4b8c22fc9c3dbc46c6bd0c
5
5
  SHA512:
6
- metadata.gz: cfcc33a8ba102433229a9c6146484618c04eb6b1b5afe691520d863c5a0f10a6e671b399946deda24bb4365ec21968ebd21dda8952503bcef51deb3bb103cd59
7
- data.tar.gz: b89b70d7e26781126ff5cbfa72546acb974923d9142113b1f06462268896d3ee3ee5c12da995aa8442b43aaf84401e587062514ee57946da81cd932cf5167620
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
- return reschedule_and_return(job, queue_name, 'queue') unless queue_slot_available?(queue_name, job)
16
- return reschedule_and_return(job, queue_name, 'job') unless job_slot_available?(job_class, job['args'], job)
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 reschedule_and_return(job, queue_name, type)
54
- msg = type == 'queue' ? 'Queue limit reached' : 'Job throttling limit reached'
55
- Sidekiq::QueueThrottled.logger.info "#{msg} for #{queue_name}, rescheduling job"
56
- reschedule_job(job, queue_name)
57
- nil
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
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Sidekiq
4
4
  module QueueThrottled
5
- VERSION = '1.1.5'
5
+ VERSION = '1.2.0'
6
6
  end
7
7
  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] | passed | 0.0019 seconds |
4
- ./spec/sidekiq/queue_throttled/configuration_spec.rb[1:1:2] | passed | 0.00016 seconds |
5
- ./spec/sidekiq/queue_throttled/configuration_spec.rb[1:1:3] | passed | 0.00017 seconds |
6
- ./spec/sidekiq/queue_throttled/configuration_spec.rb[1:2:1] | passed | 0.0001 seconds |
7
- ./spec/sidekiq/queue_throttled/configuration_spec.rb[1:2:2] | passed | 0.00017 seconds |
8
- ./spec/sidekiq/queue_throttled/configuration_spec.rb[1:2:3] | passed | 0.00057 seconds |
9
- ./spec/sidekiq/queue_throttled/configuration_spec.rb[1:3:1] | passed | 0.00016 seconds |
10
- ./spec/sidekiq/queue_throttled/configuration_spec.rb[1:3:2] | passed | 0.0001 seconds |
11
- ./spec/sidekiq/queue_throttled/configuration_spec.rb[1:3:3] | passed | 0.00098 seconds |
12
- ./spec/sidekiq/queue_throttled/configuration_spec.rb[1:4:1] | passed | 0.00046 seconds |
13
- ./spec/sidekiq/queue_throttled/configuration_spec.rb[1:4:2] | passed | 0.00045 seconds |
14
- ./spec/sidekiq/queue_throttled/configuration_spec.rb[1:4:3] | passed | 0.0121 seconds |
15
- ./spec/sidekiq/queue_throttled/configuration_spec.rb[1:5:1] | passed | 0.00082 seconds |
16
- ./spec/sidekiq/queue_throttled/configuration_spec.rb[1:5:2] | passed | 0.00016 seconds |
17
- ./spec/sidekiq/queue_throttled/configuration_spec.rb[1:5:3] | passed | 0.00021 seconds |
18
- ./spec/sidekiq/queue_throttled/configuration_spec.rb[1:5:4] | passed | 0.00016 seconds |
19
- ./spec/sidekiq/queue_throttled/configuration_spec.rb[1:6:1] | passed | 0.00014 seconds |
20
- ./spec/sidekiq/queue_throttled/configuration_spec.rb[1:6:2] | passed | 0.00016 seconds |
21
- ./spec/sidekiq/queue_throttled/configuration_spec.rb[1:6:3] | passed | 0.00013 seconds |
22
- ./spec/sidekiq/queue_throttled/configuration_spec.rb[1:6:4] | passed | 0.0001 seconds |
23
- ./spec/sidekiq/queue_throttled/job_spec.rb[1:1:1] | passed | 0.00056 seconds |
24
- ./spec/sidekiq/queue_throttled/job_spec.rb[1:1:2] | passed | 0.0002 seconds |
25
- ./spec/sidekiq/queue_throttled/job_spec.rb[1:2:1] | passed | 0.00014 seconds |
26
- ./spec/sidekiq/queue_throttled/job_spec.rb[1:2:2] | passed | 0.00013 seconds |
27
- ./spec/sidekiq/queue_throttled/job_spec.rb[1:2:3] | passed | 0.00013 seconds |
28
- ./spec/sidekiq/queue_throttled/job_spec.rb[1:2:4] | passed | 0.00019 seconds |
29
- ./spec/sidekiq/queue_throttled/job_spec.rb[1:2:5] | passed | 0.00012 seconds |
30
- ./spec/sidekiq/queue_throttled/job_spec.rb[1:2:6] | passed | 0.00012 seconds |
31
- ./spec/sidekiq/queue_throttled/job_spec.rb[1:2:7] | passed | 0.00011 seconds |
32
- ./spec/sidekiq/queue_throttled/job_spec.rb[1:2:8] | passed | 0.00014 seconds |
33
- ./spec/sidekiq/queue_throttled/job_spec.rb[1:2:9] | passed | 0.00011 seconds |
34
- ./spec/sidekiq/queue_throttled/job_spec.rb[1:2:10] | passed | 0.00013 seconds |
35
- ./spec/sidekiq/queue_throttled/job_spec.rb[1:2:11] | passed | 0.00011 seconds |
36
- ./spec/sidekiq/queue_throttled/job_spec.rb[1:2:12] | passed | 0.00013 seconds |
37
- ./spec/sidekiq/queue_throttled/job_spec.rb[1:2:13] | passed | 0.00013 seconds |
38
- ./spec/sidekiq/queue_throttled/job_spec.rb[1:3:1] | passed | 0.00073 seconds |
39
- ./spec/sidekiq/queue_throttled/job_spec.rb[1:3:2] | passed | 0.0015 seconds |
40
- ./spec/sidekiq/queue_throttled/job_throttler_spec.rb[1:1:1] | passed | 0.00014 seconds |
41
- ./spec/sidekiq/queue_throttled/job_throttler_spec.rb[1:1:2] | passed | 0.00016 seconds |
42
- ./spec/sidekiq/queue_throttled/job_throttler_spec.rb[1:2:1:1] | passed | 0.00017 seconds |
43
- ./spec/sidekiq/queue_throttled/job_throttler_spec.rb[1:2:2:1] | passed | 0.00024 seconds |
44
- ./spec/sidekiq/queue_throttled/job_throttler_spec.rb[1:2:2:2] | passed | 0.0009 seconds |
45
- ./spec/sidekiq/queue_throttled/job_throttler_spec.rb[1:2:2:3] | passed | 0.0007 seconds |
46
- ./spec/sidekiq/queue_throttled/job_throttler_spec.rb[1:2:3:1] | passed | 0.00026 seconds |
47
- ./spec/sidekiq/queue_throttled/job_throttler_spec.rb[1:2:3:2] | passed | 0.00076 seconds |
48
- ./spec/sidekiq/queue_throttled/job_throttler_spec.rb[1:2:3:3] | passed | 0.00075 seconds |
49
- ./spec/sidekiq/queue_throttled/job_throttler_spec.rb[1:2:4:1] | passed | 0.00061 seconds |
50
- ./spec/sidekiq/queue_throttled/job_throttler_spec.rb[1:3:1:1] | passed | 0.00013 seconds |
51
- ./spec/sidekiq/queue_throttled/job_throttler_spec.rb[1:3:2:1] | passed | 0.00046 seconds |
52
- ./spec/sidekiq/queue_throttled/job_throttler_spec.rb[1:3:2:2] | passed | 0.00071 seconds |
53
- ./spec/sidekiq/queue_throttled/job_throttler_spec.rb[1:3:2:3] | passed | 0.00078 seconds |
54
- ./spec/sidekiq/queue_throttled/job_throttler_spec.rb[1:3:3:1] | passed | 0.00037 seconds |
55
- ./spec/sidekiq/queue_throttled/job_throttler_spec.rb[1:3:3:2] | passed | 0.00068 seconds |
56
- ./spec/sidekiq/queue_throttled/job_throttler_spec.rb[1:4:1:1] | passed | 0.00012 seconds |
57
- ./spec/sidekiq/queue_throttled/job_throttler_spec.rb[1:4:2:1] | passed | 0.0006 seconds |
58
- ./spec/sidekiq/queue_throttled/job_throttler_spec.rb[1:4:2:2] | passed | 0.0051 seconds |
59
- ./spec/sidekiq/queue_throttled/job_throttler_spec.rb[1:4:3:1] | passed | 0.00011 seconds |
60
- ./spec/sidekiq/queue_throttled/job_throttler_spec.rb[1:5:1:1] | passed | 0.0006 seconds |
61
- ./spec/sidekiq/queue_throttled/job_throttler_spec.rb[1:5:2:1] | passed | 0.00056 seconds |
62
- ./spec/sidekiq/queue_throttled/job_throttler_spec.rb[1:5:2:2] | passed | 0.00024 seconds |
63
- ./spec/sidekiq/queue_throttled/job_throttler_spec.rb[1:5:3:1] | passed | 0.00048 seconds |
64
- ./spec/sidekiq/queue_throttled/job_throttler_spec.rb[1:5:4:1] | passed | 0.00051 seconds |
65
- ./spec/sidekiq/queue_throttled/job_throttler_spec.rb[1:6:1] | passed | 0.00092 seconds |
66
- ./spec/sidekiq/queue_throttled/job_throttler_spec.rb[1:6:2] | passed | 0.00057 seconds |
67
- ./spec/sidekiq/queue_throttled/job_throttler_spec.rb[1:6:3] | passed | 0.00045 seconds |
68
- ./spec/sidekiq/queue_throttled/job_throttler_spec.rb[1:7:1] | passed | 0.00121 seconds |
69
- ./spec/sidekiq/queue_throttled/middleware_spec.rb[1:1:1:1] | passed | 0.00052 seconds |
70
- ./spec/sidekiq/queue_throttled/middleware_spec.rb[1:1:2:1] | passed | 0.00054 seconds |
71
- ./spec/sidekiq/queue_throttled/middleware_spec.rb[1:1:2:2] | passed | 0.0011 seconds |
72
- ./spec/sidekiq/queue_throttled/middleware_spec.rb[1:1:3:1] | passed | 0.00114 seconds |
73
- ./spec/sidekiq/queue_throttled/middleware_spec.rb[1:1:3:2] | passed | 0.0028 seconds |
74
- ./spec/sidekiq/queue_throttled/middleware_spec.rb[1:1:3:3] | passed | 0.0016 seconds |
75
- ./spec/sidekiq/queue_throttled/middleware_spec.rb[1:1:4:1] | passed | 0.0012 seconds |
76
- ./spec/sidekiq/queue_throttled/middleware_spec.rb[1:1:5:1] | passed | 0.00116 seconds |
77
- ./spec/sidekiq/queue_throttled/middleware_spec.rb[1:1:5:2] | passed | 0.00146 seconds |
78
- ./spec/sidekiq/queue_throttled/middleware_spec.rb[1:2:1] | passed | 0.00013 seconds |
79
- ./spec/sidekiq/queue_throttled/middleware_spec.rb[1:2:2] | passed | 0.00014 seconds |
80
- ./spec/sidekiq/queue_throttled/middleware_spec.rb[1:2:3] | passed | 0.00013 seconds |
81
- ./spec/sidekiq/queue_throttled/middleware_spec.rb[1:3:1] | passed | 0.00013 seconds |
82
- ./spec/sidekiq/queue_throttled/middleware_spec.rb[1:3:2] | passed | 0.00018 seconds |
83
- ./spec/sidekiq/queue_throttled/middleware_spec.rb[1:3:3] | passed | 0.00018 seconds |
84
- ./spec/sidekiq/queue_throttled/middleware_spec.rb[1:4:1] | passed | 0.00052 seconds |
85
- ./spec/sidekiq/queue_throttled/middleware_spec.rb[1:4:2] | passed | 0.00094 seconds |
86
- ./spec/sidekiq/queue_throttled/queue_limiter_spec.rb[1:1:1] | passed | 0.00012 seconds |
87
- ./spec/sidekiq/queue_throttled/queue_limiter_spec.rb[1:1:2] | passed | 0.0001 seconds |
88
- ./spec/sidekiq/queue_throttled/queue_limiter_spec.rb[1:1:3] | passed | 0.0002 seconds |
89
- ./spec/sidekiq/queue_throttled/queue_limiter_spec.rb[1:2:1] | passed | 0.00067 seconds |
90
- ./spec/sidekiq/queue_throttled/queue_limiter_spec.rb[1:2:2] | passed | 0.001 seconds |
91
- ./spec/sidekiq/queue_throttled/queue_limiter_spec.rb[1:2:3] | passed | 0.0013 seconds |
92
- ./spec/sidekiq/queue_throttled/queue_limiter_spec.rb[1:2:4] | passed | 0.00281 seconds |
93
- ./spec/sidekiq/queue_throttled/queue_limiter_spec.rb[1:2:5] | passed | 0.00075 seconds |
94
- ./spec/sidekiq/queue_throttled/queue_limiter_spec.rb[1:3:1] | passed | 0.00038 seconds |
95
- ./spec/sidekiq/queue_throttled/queue_limiter_spec.rb[1:3:2] | passed | 0.00011 seconds |
96
- ./spec/sidekiq/queue_throttled/queue_limiter_spec.rb[1:3:3] | passed | 0.00016 seconds |
97
- ./spec/sidekiq/queue_throttled/queue_limiter_spec.rb[1:3:4] | passed | 0.00041 seconds |
98
- ./spec/sidekiq/queue_throttled/queue_limiter_spec.rb[1:4:1] | passed | 0.00016 seconds |
99
- ./spec/sidekiq/queue_throttled/queue_limiter_spec.rb[1:4:2] | passed | 0.00058 seconds |
100
- ./spec/sidekiq/queue_throttled/queue_limiter_spec.rb[1:4:3] | passed | 0.00063 seconds |
101
- ./spec/sidekiq/queue_throttled/queue_limiter_spec.rb[1:5:1] | passed | 0.00023 seconds |
102
- ./spec/sidekiq/queue_throttled/queue_limiter_spec.rb[1:5:2] | passed | 0.00067 seconds |
103
- ./spec/sidekiq/queue_throttled/queue_limiter_spec.rb[1:5:3] | passed | 0.0013 seconds |
104
- ./spec/sidekiq/queue_throttled/queue_limiter_spec.rb[1:5:4] | passed | 0.00024 seconds |
105
- ./spec/sidekiq/queue_throttled/queue_limiter_spec.rb[1:6:1] | passed | 0.00069 seconds |
106
- ./spec/sidekiq/queue_throttled/queue_limiter_spec.rb[1:6:2] | passed | 0.00158 seconds |
107
- ./spec/sidekiq/queue_throttled/queue_limiter_spec.rb[1:7:1] | passed | 0.00158 seconds |
108
- ./spec/sidekiq/queue_throttled/queue_limiter_spec.rb[1:7:2] | passed | 0.00131 seconds |
109
- ./spec/sidekiq/queue_throttled/queue_limiter_spec.rb[1:8:1] | passed | 0.00045 seconds |
110
- ./spec/sidekiq/queue_throttled/queue_limiter_spec.rb[1:8:2] | passed | 0.0008 seconds |
111
- ./spec/sidekiq/queue_throttled/railtie_spec.rb[1:1:1] | failed | 0.00014 seconds |
112
- ./spec/sidekiq/queue_throttled/railtie_spec.rb[1:1:2] | failed | 0.00011 seconds |
113
- ./spec/sidekiq/queue_throttled/railtie_spec.rb[1:1:3] | failed | 0.00011 seconds |
114
- ./spec/sidekiq/queue_throttled/railtie_spec.rb[1:2:1] | failed | 0.00128 seconds |
115
- ./spec/sidekiq/queue_throttled/railtie_spec.rb[1:2:2] | failed | 0.00021 seconds |
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 |
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sidekiq-queue-throttled
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.5
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Farid Mohammadi