1
0
Fork 0
mirror of https://github.com/mperham/sidekiq.git synced 2022-11-09 13:52:34 -05:00

Merge branch 'master' into 6-0

This commit is contained in:
Mike Perham 2019-03-06 09:16:49 -08:00
commit a21e020669
6 changed files with 73 additions and 54 deletions

View file

@ -27,7 +27,8 @@ HEAD
--------- ---------
- Better handling of malformed job arguments in payload [#4095] - Better handling of malformed job arguments in payload [#4095]
- add back in bootstap's dropdown css component [#4099, urkle] - Restore bootstap's dropdown css component [#4099, urkle]
- Allow `Sidekiq::Worker#set` to be chained
5.2.5 5.2.5
--------- ---------

View file

@ -4,7 +4,7 @@
Please see [http://sidekiq.org/](http://sidekiq.org/) for more details and how to buy. Please see [http://sidekiq.org/](http://sidekiq.org/) for more details and how to buy.
HEAD 1.8.1
------------- -------------
- Fix excessive lock reclaims with concurrent limiter [#4105] - Fix excessive lock reclaims with concurrent limiter [#4105]

View file

@ -65,7 +65,7 @@ def handle_signal(launcher, sig)
# http://jira.codehaus.org/browse/JRUBY-4637 # http://jira.codehaus.org/browse/JRUBY-4637
raise Interrupt raise Interrupt
when 'TERM' when 'TERM'
# Heroku sends TERM and then waits 10 seconds for process to exit. # Heroku sends TERM and then waits 30 seconds for process to exit.
raise Interrupt raise Interrupt
when 'TSTP' when 'TSTP'
Sidekiq.logger.info "Received TSTP, no longer accepting new work" Sidekiq.logger.info "Received TSTP, no longer accepting new work"

View file

@ -46,6 +46,11 @@ module Sidekiq
@opts = opts @opts = opts
end end
def set(options)
@opts.merge!(options)
self
end
def perform_async(*args) def perform_async(*args)
@klass.client_push(@opts.merge('args' => args, 'class' => @klass)) @klass.client_push(@opts.merge('args' => args, 'class' => @klass))
end end

View file

@ -238,57 +238,6 @@ describe Sidekiq::Client do
end end
end end
describe 'Sidekiq::Worker#set' do
class SetWorker
include Sidekiq::Worker
sidekiq_options :queue => :foo, 'retry' => 12
end
def setup
Sidekiq.redis {|c| c.flushdb }
end
it 'can be memoized' do
q = Sidekiq::Queue.new('bar')
assert_equal 0, q.size
set = SetWorker.set(queue: :bar, foo: 'qaaz')
set.perform_async(1)
set.perform_async(1)
set.perform_async(1)
set.perform_async(1)
assert_equal 4, q.size
assert_equal 4, q.map{|j| j['jid'] }.uniq.size
set.perform_in(10, 1)
end
it 'allows option overrides' do
q = Sidekiq::Queue.new('bar')
assert_equal 0, q.size
assert SetWorker.set(queue: :bar).perform_async(1)
job = q.first
assert_equal 'bar', job['queue']
assert_equal 12, job['retry']
end
it 'handles symbols and strings' do
q = Sidekiq::Queue.new('bar')
assert_equal 0, q.size
assert SetWorker.set('queue' => 'bar', :retry => 11).perform_async(1)
job = q.first
assert_equal 'bar', job['queue']
assert_equal 11, job['retry']
q.clear
assert SetWorker.perform_async(1)
assert_equal 0, q.size
q = Sidekiq::Queue.new('foo')
job = q.first
assert_equal 'foo', job['queue']
assert_equal 12, job['retry']
end
end
describe 'class attribute race conditions' do describe 'class attribute race conditions' do
new_class = -> { new_class = -> {
Class.new do Class.new do

64
test/test_worker.rb Normal file
View file

@ -0,0 +1,64 @@
require_relative 'helper'
describe Sidekiq::Worker do
describe '#set' do
class SetWorker
include Sidekiq::Worker
sidekiq_options :queue => :foo, 'retry' => 12
end
def setup
Sidekiq.redis {|c| c.flushdb }
end
it 'can be memoized' do
q = Sidekiq::Queue.new('bar')
assert_equal 0, q.size
set = SetWorker.set(queue: :bar, foo: 'qaaz')
set.perform_async(1)
set.perform_async(1)
set.perform_async(1)
set.perform_async(1)
assert_equal 4, q.size
assert_equal 4, q.map{|j| j['jid'] }.uniq.size
set.perform_in(10, 1)
end
it 'allows option overrides' do
q = Sidekiq::Queue.new('bar')
assert_equal 0, q.size
assert SetWorker.set(queue: :bar).perform_async(1)
job = q.first
assert_equal 'bar', job['queue']
assert_equal 12, job['retry']
end
it 'handles symbols and strings' do
q = Sidekiq::Queue.new('bar')
assert_equal 0, q.size
assert SetWorker.set('queue' => 'bar', :retry => 11).perform_async(1)
job = q.first
assert_equal 'bar', job['queue']
assert_equal 11, job['retry']
q.clear
assert SetWorker.perform_async(1)
assert_equal 0, q.size
q = Sidekiq::Queue.new('foo')
job = q.first
assert_equal 'foo', job['queue']
assert_equal 12, job['retry']
end
it 'allows multiple calls' do
SetWorker.set(queue: :foo).set(bar: 'xyz').perform_async
q = Sidekiq::Queue.new('foo')
job = q.first
assert_equal 'foo', job['queue']
assert_equal 'xyz', job['bar']
end
end
end