From 3ea94e6bdea81908de4b6b45033d4cdb1103cc8c Mon Sep 17 00:00:00 2001 From: Matt Ruzicka Date: Thu, 30 Apr 2015 15:59:15 -0500 Subject: [PATCH] Set process_limits before limits Swap the order because setting limits before process_limits makes the queue.limit_changed? conditional in #set return true and so process_limits don't get set. It looks like this bug was introduced with commit 84ef650ea9bc5d7ec4bb288a594ae8b9bbeff34e --- lib/sidekiq/limit_fetch/queues.rb | 2 +- spec/sidekiq/limit_fetch/queues_spec.rb | 15 +++++++++++---- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/lib/sidekiq/limit_fetch/queues.rb b/lib/sidekiq/limit_fetch/queues.rb index 3d14608..7365078 100644 --- a/lib/sidekiq/limit_fetch/queues.rb +++ b/lib/sidekiq/limit_fetch/queues.rb @@ -9,8 +9,8 @@ class Sidekiq::LimitFetch options[:strict] ? strict_order! : weighted_order! - set :limit, options[:limits] set :process_limit, options[:process_limits] + set :limit, options[:limits] set_blocks options[:blocking] end diff --git a/spec/sidekiq/limit_fetch/queues_spec.rb b/spec/sidekiq/limit_fetch/queues_spec.rb index 0282221..de8c64d 100644 --- a/spec/sidekiq/limit_fetch/queues_spec.rb +++ b/spec/sidekiq/limit_fetch/queues_spec.rb @@ -3,16 +3,18 @@ require 'spec_helper' RSpec.describe Sidekiq::LimitFetch::Queues do subject { described_class.new options } - let(:queues) { %w[queue1 queue2] } - let(:limits) {{ 'queue1' => 3 }} - let(:strict) { true } - let(:blocking) {} + let(:queues) { %w[queue1 queue2] } + let(:limits) {{ 'queue1' => 3 }} + let(:strict) { true } + let(:blocking) {} + let(:process_limits) {{ 'queue2' => 3 }} let(:options) do { queues: queues, limits: limits, strict: strict, blocking: blocking, + process_limits: process_limits, namespace: Sidekiq::LimitFetch::Redis.determine_namespace } end @@ -82,6 +84,11 @@ RSpec.describe Sidekiq::LimitFetch::Queues do expect(Sidekiq::Queue['queue2'].limit).not_to be end + it 'should set process_limits' do + subject + expect(Sidekiq::Queue['queue2'].process_limit).to eq 3 + end + context 'without strict flag' do let(:strict) { false }