sidekiq 4.1.0 → 4.1.1

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of sidekiq might be problematic. Click here for more details.

checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a3977388ec259ea1ceaaecb66a201c6d84281060
4
- data.tar.gz: 66ea0b036b3a178b266013bbaef05cc602efe270
3
+ metadata.gz: f3831fb91606790c4912c4fb8d96a560e49aa9b5
4
+ data.tar.gz: 74e50d973aab4a58f00f7176ea640dd52f37e218
5
5
  SHA512:
6
- metadata.gz: 027e42c3e2952cf9851e2239cbcc8ac50f76a11137a78acb2bd8351845dd7c2f7455ff010fee6f70d36cf65bd827aa15579f3e654d01fe7d8663cb86b8a0b71e
7
- data.tar.gz: cd645448a7628606f7ca5403cd401ced5d618aab1122c386a9d34cd6cd8443d7b62c054462a532c3950e059a2eaf5543a992bce52e2a00908bf583b38d56b4ba
6
+ metadata.gz: b5b098a51e90fff82508ddfa1b565d1e06758e99de904870795919314987439231aeeb1b315212eed9dcc771a9464909fa437e6990b799e8c245c52506b66eee
7
+ data.tar.gz: e1a1ae8f6c3217333b69187041ac8e1c974ebc29aa862b9abab284ae312d8680d960191defb1e67d7a3e6ee95c9d9a924cfc308f5e96e06a38157e0e0dd45ebe
@@ -8,7 +8,6 @@ rvm:
8
8
  - 2.1.8
9
9
  - 2.2.4
10
10
  - 2.3.0
11
- - jruby
12
11
  - jruby-head
13
12
  - rbx-2
14
13
  matrix:
data/Changes.md CHANGED
@@ -1,5 +1,20 @@
1
1
  # Sidekiq Changes
2
2
 
3
+ 4.1.1
4
+ -----------
5
+
6
+ - Much better behavior when Redis disappears and comes back. [#2866]
7
+ - Update FR locale [dbachet]
8
+ - Don't fill logfile in case of Redis downtime [#2860]
9
+ - Allow definition of a global retries_exhausted handler. [#2807]
10
+ ```ruby
11
+ Sidekiq.configure_server do |config|
12
+ config.default_retries_exhausted = -> (job, ex) do
13
+ Sidekiq.logger.info "#{job['class']} job is now dead"
14
+ end
15
+ end
16
+ ```
17
+
3
18
  4.1.0
4
19
  -----------
5
20
 
@@ -3,6 +3,15 @@ Sidekiq Enterprise Changelog
3
3
 
4
4
  Please see [http://sidekiq.org/](http://sidekiq.org/) for more details and how to buy.
5
5
 
6
+ 1.2.1
7
+ -------------
8
+
9
+ - Multi-Process mode can now monitor the RSS memory of children and
10
+ restart any that grow too large. To limit children to 1GB each:
11
+ ```
12
+ MAXMEM_KB=1048576 COUNT=2 bundle exec sidekiqswarm ...
13
+ ```
14
+
6
15
  1.2.0
7
16
  -------------
8
17
 
@@ -3,7 +3,29 @@ Sidekiq Pro Changelog
3
3
 
4
4
  Please see [http://sidekiq.org/](http://sidekiq.org/) for more details and how to buy.
5
5
 
6
- HEAD
6
+ 3.0.6
7
+ ---------
8
+
9
+ - Fix race condition on reliable fetch shutdown
10
+
11
+ 3.0.5
12
+ ---------
13
+
14
+ - Statsd metrics now account for ActiveJob class names
15
+ - Allow reliable fetch internals to be overridden [jonhyman]
16
+
17
+ 3.0.4
18
+ ---------
19
+
20
+ - Queue pausing no longer requires reliable fetch. [#2786]
21
+
22
+ 3.0.3, 2.1.4
23
+ ------------
24
+
25
+ - Convert Lua-based `Sidekiq::Queue#delete_by_class` to Ruby-based, to
26
+ avoid O(N^2) performance and possible Redis failure. [#2806]
27
+
28
+ 3.0.2
7
29
  -----------
8
30
 
9
31
  - Make job registration with batch part of the atomic push so batch
data/README.md CHANGED
@@ -11,7 +11,7 @@ Simple, efficient background processing for Ruby.
11
11
 
12
12
  Sidekiq uses threads to handle many jobs at the same time in the
13
13
  same process. It does not require Rails but will integrate tightly with
14
- Rails 3/4 to make background processing dead simple.
14
+ Rails to make background processing dead simple.
15
15
 
16
16
  Sidekiq is compatible with Resque. It uses the exact same
17
17
  message format as Resque so it can integrate into an existing Resque processing farm.
@@ -31,10 +31,9 @@ DelayedJob 4.1.1 | - | - | 465 sec | 215 jobs/sec
31
31
  Requirements
32
32
  -----------------
33
33
 
34
- I test with the latest CRuby (2.2, 2.1 and 2.0) and JRuby versions (9k). Other versions/VMs
35
- are untested but might work fine. CRuby 1.9 is not supported.
34
+ Sidekiq supports CRuby 2.0+ and JRuby 9k.
36
35
 
37
- All Rails releases from 3.2 are officially supported.
36
+ All Rails releases >= 3.2 are officially supported.
38
37
 
39
38
  Redis 2.8 or greater is required. 3.0.3+ is recommended for large
40
39
  installations with thousands of worker threads.
@@ -63,23 +62,29 @@ features, a commercial-friendly license and allow you to support high
63
62
  quality open source development all at the same time. Please see the
64
63
  [Sidekiq](http://sidekiq.org/) homepage for more detail.
65
64
 
65
+ Subscribe to the **[quarterly newsletter](https://tinyletter.com/sidekiq)** to stay informed about the latest
66
+ features and changes to Sidekiq and its bigger siblings.
67
+
66
68
 
67
69
  Problems?
68
70
  -----------------
69
71
 
70
72
  **Please do not directly email any Sidekiq committers with questions or problems.** A community is best served when discussions are held in public.
71
73
 
72
- Please see the [sidekiq wiki](https://github.com/mperham/sidekiq/wiki) for the official documentation.
73
- [mperham/sidekiq on Gitter](https://gitter.im/mperham/sidekiq) is dedicated to this project,
74
- but bug reports or feature requests suggestions should still go through [issues on Github](https://github.com/mperham/sidekiq/issues). Release announcements are made to the [@sidekiq](https://twitter.com/sidekiq) Twitter account. **No support via Twitter.**
74
+ If you have a problem, please review the [FAQ](https://github.com/mperham/sidekiq/wiki/FAQ) and [Troubleshooting](https://github.com/mperham/sidekiq/wiki/Problems-and-Troubleshooting) wiki pages.
75
+ Searching the [issues](https://github.com/mperham/sidekiq/issues) for your problem is also a good idea.
75
76
 
76
- Every Friday morning is Sidekiq happy hour: I video chat and answer questions.
77
- See the [Sidekiq support page](http://sidekiq.org/support).
77
+ Useful resources:
78
78
 
79
- You may also find useful a [Reddit area](https://reddit.com/r/sidekiq) dedicated to Sidekiq discussion and [a Sidekiq tag](https://stackoverflow.com/questions/tagged/sidekiq) on Stack Overflow.
79
+ * Product documentation is in the [wiki](https://github.com/mperham/sidekiq/wiki).
80
+ * Release announcements are made to the [@sidekiq](https://twitter.com/sidekiq) Twitter account.
81
+ * Here's a [Reddit forum](https://reddit.com/r/sidekiq) dedicated to Sidekiq discussion
82
+ * The [Sidekiq tag](https://stackoverflow.com/questions/tagged/sidekiq) on Stack Overflow has lots of useful Q & A.
80
83
 
81
- If you have a problem, please review the [FAQ](https://github.com/mperham/sidekiq/wiki/FAQ) and [Troubleshooting](https://github.com/mperham/sidekiq/wiki/Problems-and-Troubleshooting) wiki pages. Searching the issues for your problem is also a good idea. If that doesn't help, feel free to email the Sidekiq mailing list, chat in Gitter, or open a new issue. StackOverflow or Reddit is the preferred place to ask questions on usage. If you are encountering what you think is a bug, please open an issue.
84
+ **No support via Twitter, 140 characters is not enough.**
82
85
 
86
+ Every Friday morning 9am Pacific is Sidekiq happy hour: I video chat and answer questions.
87
+ See the [Sidekiq support page](http://sidekiq.org/support).
83
88
 
84
89
  Thanks
85
90
  -----------------
@@ -1,6 +1,6 @@
1
1
  # encoding: utf-8
2
2
  require 'sidekiq/version'
3
- fail "Sidekiq #{Sidekiq::VERSION} does not support Ruby 1.9." if RUBY_PLATFORM != 'java' && RUBY_VERSION < '2.0.0'
3
+ fail "Sidekiq #{Sidekiq::VERSION} does not support Ruby versions below 2.0.0." if RUBY_PLATFORM != 'java' && RUBY_VERSION < '2.0.0'
4
4
 
5
5
  require 'sidekiq/logging'
6
6
  require 'sidekiq/client'
@@ -37,6 +37,14 @@ module Sidekiq
37
37
  'queue' => 'default'
38
38
  }
39
39
 
40
+ FAKE_INFO = {
41
+ "redis_version" => "9.9.9",
42
+ "uptime_in_days" => "9999",
43
+ "connected_clients" => "9999",
44
+ "used_memory_human" => "9P",
45
+ "used_memory_peak_human" => "9P"
46
+ }.freeze
47
+
40
48
  def self.❨╯°□°❩╯︵┻━┻
41
49
  puts "Calm down, yo."
42
50
  end
@@ -44,7 +52,6 @@ module Sidekiq
44
52
  def self.options
45
53
  @options ||= DEFAULTS.dup
46
54
  end
47
-
48
55
  def self.options=(opts)
49
56
  @options = opts
50
57
  end
@@ -91,6 +98,24 @@ module Sidekiq
91
98
  end
92
99
  end
93
100
 
101
+ def self.redis_info
102
+ redis do |conn|
103
+ begin
104
+ # admin commands can't go through redis-namespace starting
105
+ # in redis-namespace 2.0
106
+ if conn.respond_to?(:namespace)
107
+ conn.redis.info
108
+ else
109
+ conn.info
110
+ end
111
+ rescue Redis::CommandError => ex
112
+ #2850 return fake version when INFO command has (probably) been renamed
113
+ raise unless ex.message =~ /unknown command/
114
+ FAKE_INFO
115
+ end
116
+ end
117
+ end
118
+
94
119
  def self.redis_pool
95
120
  @redis ||= Sidekiq::RedisConnection.create
96
121
  end
@@ -132,15 +157,24 @@ module Sidekiq
132
157
  def self.default_worker_options=(hash)
133
158
  @default_worker_options = default_worker_options.merge(hash.stringify_keys)
134
159
  end
135
-
136
160
  def self.default_worker_options
137
161
  defined?(@default_worker_options) ? @default_worker_options : DEFAULT_WORKER_OPTIONS
138
162
  end
139
163
 
164
+ # Sidekiq.configure_server do |config|
165
+ # config.default_retries_exhausted = -> (job, ex) do
166
+ # end
167
+ # end
168
+ def self.default_retries_exhausted=(prok)
169
+ @default_retries_exhausted = prok
170
+ end
171
+ def self.default_retries_exhausted
172
+ @default_retries_exhausted
173
+ end
174
+
140
175
  def self.load_json(string)
141
176
  JSON.parse(string)
142
177
  end
143
-
144
178
  def self.dump_json(object)
145
179
  JSON.generate(object)
146
180
  end
@@ -148,7 +182,6 @@ module Sidekiq
148
182
  def self.logger
149
183
  Sidekiq::Logging.logger
150
184
  end
151
-
152
185
  def self.logger=(log)
153
186
  Sidekiq::Logging.logger = log
154
187
  end
@@ -65,12 +65,10 @@ module Sidekiq
65
65
  logger.info Sidekiq::LICENSE
66
66
  logger.info "Upgrade to Sidekiq Pro for more features and support: http://sidekiq.org" unless defined?(::Sidekiq::Pro)
67
67
 
68
- Sidekiq.redis do |conn|
69
- # touch the connection pool so it is created before we
70
- # fire startup and start multithreading.
71
- ver = conn.info['redis_version']
72
- raise "You are using Redis v#{ver}, Sidekiq requires Redis v2.8.0 or greater" if ver < '2.8'
73
- end
68
+ # touch the connection pool so it is created before we
69
+ # fire startup and start multithreading.
70
+ ver = Sidekiq.redis_info['redis_version']
71
+ raise "You are using Redis v#{ver}, Sidekiq requires Redis v2.8.0 or greater" if ver < '2.8'
74
72
 
75
73
  # Before this point, the process is initializing with just the main thread.
76
74
  # Starting here the process will now have multiple threads running.
@@ -1,5 +1,6 @@
1
1
  require 'time'
2
2
  require 'logger'
3
+ require 'fcntl'
3
4
 
4
5
  module Sidekiq
5
6
  module Logging
@@ -137,11 +137,10 @@ module Sidekiq
137
137
  end
138
138
 
139
139
  def retries_exhausted(worker, msg, exception)
140
- logger.debug { "Dropping message after hitting the retry maximum: #{msg}" }
140
+ logger.debug { "Retries exhausted for job" }
141
141
  begin
142
- if worker.sidekiq_retries_exhausted_block?
143
- worker.sidekiq_retries_exhausted_block.call(msg, exception)
144
- end
142
+ block = worker.sidekiq_retries_exhausted_block || Sidekiq.default_retries_exhausted
143
+ block.call(msg, exception) if block
145
144
  rescue => e
146
145
  handle_exception(e, { context: "Error calling retries_exhausted for #{worker.class}", job: msg })
147
146
  end
@@ -110,6 +110,7 @@ module Sidekiq
110
110
  end
111
111
  end
112
112
  sleep(1)
113
+ nil
113
114
  end
114
115
 
115
116
  def process(work)
@@ -44,7 +44,8 @@ module Sidekiq
44
44
  require 'redis/namespace'
45
45
  Redis::Namespace.new(namespace, :redis => client)
46
46
  rescue LoadError
47
- Sidekiq.logger.error("redis-namespace gem not included in Gemfile, cannot use namespace '#{namespace}'")
47
+ Sidekiq.logger.error("Your Redis configuration use the namespace '#{namespace}' but the redis-namespace gem not included in Gemfile." \
48
+ "Add the gem to your Gemfile in case you would like to keep using a namespace, otherwise remove the namespace parameter.")
48
49
  exit(-127)
49
50
  end
50
51
  else
@@ -77,7 +77,9 @@ module Sidekiq
77
77
  # Most likely a problem with redis networking.
78
78
  # Punt and try again at the next interval
79
79
  logger.error ex.message
80
- logger.error ex.backtrace.first
80
+ ex.backtrace.each do |bt|
81
+ logger.error(bt)
82
+ end
81
83
  end
82
84
  end
83
85
 
@@ -86,6 +88,13 @@ module Sidekiq
86
88
  def wait
87
89
  @sleeper.pop(random_poll_interval)
88
90
  rescue Timeout::Error
91
+ # expected
92
+ rescue => ex
93
+ # if poll_interval_average hasn't been calculated yet, we can
94
+ # raise an error trying to reach Redis.
95
+ logger.error ex.message
96
+ logger.error ex.backtrace.first
97
+ sleep 5
89
98
  end
90
99
 
91
100
  # Calculates a random interval that is ±50% the desired average.
@@ -57,19 +57,5 @@ module Sidekiq
57
57
  end
58
58
  arr.clear
59
59
  end
60
-
61
- def want_a_hertz_donut?
62
- # what's a hertz donut?
63
- # punch! Hurts, don't it?
64
- info = Sidekiq.redis {|c| c.info }
65
- if info['connected_clients'].to_i > 1000 && info['hz'].to_i >= 10
66
- Sidekiq.logger.warn { "Your Redis `hz` setting is too high at #{info['hz']}. See mperham/sidekiq#2431. Set it to 3 in #{info[:config_file]}" }
67
- true
68
- else
69
- Sidekiq.logger.debug { "Redis hz: #{info['hz']}. Client count: #{info['connected_clients']}" }
70
- false
71
- end
72
- end
73
-
74
60
  end
75
61
  end
@@ -1,3 +1,3 @@
1
1
  module Sidekiq
2
- VERSION = "4.1.0"
2
+ VERSION = "4.1.1"
3
3
  end
@@ -122,15 +122,7 @@ module Sidekiq
122
122
  end
123
123
 
124
124
  def redis_info
125
- Sidekiq.redis do |conn|
126
- # admin commands can't go through redis-namespace starting
127
- # in redis-namespace 2.0
128
- if conn.respond_to?(:namespace)
129
- conn.redis.info
130
- else
131
- conn.info
132
- end
133
- end
125
+ Sidekiq.redis_info
134
126
  end
135
127
 
136
128
  def root_path
@@ -309,18 +309,88 @@ class TestCli < Sidekiq::Test
309
309
  end
310
310
 
311
311
  describe 'misc' do
312
+ before do
313
+ @cli = Sidekiq::CLI.new
314
+ end
315
+
312
316
  it 'handles interrupts' do
313
- cli = Sidekiq::CLI.new
314
317
  assert_raises Interrupt do
315
- cli.handle_signal('INT')
318
+ @cli.handle_signal('INT')
316
319
  end
317
320
  assert_raises Interrupt do
318
- cli.handle_signal('TERM')
321
+ @cli.handle_signal('TERM')
319
322
  end
320
- cli.handle_signal('USR2')
321
- cli.handle_signal('TTIN')
322
323
  end
323
324
 
325
+ describe 'handles USR1 and USR2' do
326
+ before do
327
+ @tmp_log_path = '/tmp/sidekiq.log'
328
+ @cli.parse(['sidekiq', '-L', @tmp_log_path, '-r', './test/fake_env.rb'])
329
+ end
330
+
331
+ after do
332
+ File.unlink @tmp_log_path if File.exists? @tmp_log_path
333
+ end
334
+
335
+ it 'shuts down the worker' do
336
+ count = 0
337
+ Sidekiq.options[:lifecycle_events][:quiet] = [proc {
338
+ count += 1
339
+ }]
340
+ @cli.launcher = Sidekiq::Launcher.new(Sidekiq.options)
341
+ @cli.handle_signal('USR1')
342
+
343
+ assert_equal 1, count
344
+ end
345
+
346
+ it 'reopens logs' do
347
+ mock = MiniTest::Mock.new
348
+ # reopen_logs returns number of files reopened so mock that
349
+ mock.expect(:call, 1)
350
+
351
+ Sidekiq::Logging.stub(:reopen_logs, mock) do
352
+ @cli.handle_signal('USR2')
353
+ end
354
+ mock.verify
355
+ end
356
+ end
357
+
358
+ describe 'handles TTIN' do
359
+ before do
360
+ @tmp_log_path = '/tmp/sidekiq.log'
361
+ @cli.parse(['sidekiq', '-L', @tmp_log_path, '-r', './test/fake_env.rb'])
362
+ @mock_thread = MiniTest::Mock.new
363
+ @mock_thread.expect(:[], 'interrupt_test', ['label'])
364
+ end
365
+
366
+ after do
367
+ File.unlink @tmp_log_path if File.exists? @tmp_log_path
368
+ end
369
+
370
+ describe 'with backtrace' do
371
+ it 'logs backtrace' do
372
+ 2.times { @mock_thread.expect(:backtrace, ['something went wrong']) }
373
+
374
+ Thread.stub(:list, [@mock_thread]) do
375
+ @cli.handle_signal('TTIN')
376
+ assert_match(/something went wrong/, File.read(@tmp_log_path), "didn't include the log message")
377
+ end
378
+ end
379
+ end
380
+
381
+ describe 'without backtrace' do
382
+ it 'logs no backtrace available' do
383
+ @mock_thread.expect(:backtrace, nil)
384
+
385
+ Thread.stub(:list, [@mock_thread]) do
386
+ @cli.handle_signal('TTIN')
387
+ assert_match(/no backtrace available/, File.read(@tmp_log_path), "didn't include the log message")
388
+ end
389
+ end
390
+ end
391
+ end
392
+
393
+
324
394
  it 'can fire events' do
325
395
  count = 0
326
396
  Sidekiq.options[:lifecycle_events][:startup] = [proc {
@@ -7,11 +7,11 @@ class TestRetryExhausted < Sidekiq::Test
7
7
  class NewWorker
8
8
  include Sidekiq::Worker
9
9
 
10
- class_attribute :exhausted_called, :exhausted_message, :exhausted_exception
10
+ class_attribute :exhausted_called, :exhausted_job, :exhausted_exception
11
11
 
12
- sidekiq_retries_exhausted do |msg, e|
12
+ sidekiq_retries_exhausted do |job, e|
13
13
  self.exhausted_called = true
14
- self.exhausted_message = msg
14
+ self.exhausted_job = job
15
15
  self.exhausted_exception = e
16
16
  end
17
17
  end
@@ -19,18 +19,18 @@ class TestRetryExhausted < Sidekiq::Test
19
19
  class OldWorker
20
20
  include Sidekiq::Worker
21
21
 
22
- class_attribute :exhausted_called, :exhausted_message, :exhausted_exception
22
+ class_attribute :exhausted_called, :exhausted_job, :exhausted_exception
23
23
 
24
- sidekiq_retries_exhausted do |msg|
24
+ sidekiq_retries_exhausted do |job|
25
25
  self.exhausted_called = true
26
- self.exhausted_message = msg
26
+ self.exhausted_job = job
27
27
  end
28
28
  end
29
29
 
30
30
  def cleanup
31
31
  [NewWorker, OldWorker].each do |worker_class|
32
32
  worker_class.exhausted_called = nil
33
- worker_class.exhausted_message = nil
33
+ worker_class.exhausted_job = nil
34
34
  worker_class.exhausted_exception = nil
35
35
  end
36
36
  end
@@ -96,7 +96,7 @@ class TestRetryExhausted < Sidekiq::Test
96
96
  end
97
97
 
98
98
 
99
- it 'passes message and exception to retries exhausted block' do
99
+ it 'passes job and exception to retries exhausted block' do
100
100
  raised_error = assert_raises RuntimeError do
101
101
  handler.call(new_worker, job('retry_count' => 0, 'retry' => 1), 'default') do
102
102
  raise 'kerblammo!'
@@ -104,11 +104,11 @@ class TestRetryExhausted < Sidekiq::Test
104
104
  end
105
105
 
106
106
  assert new_worker.exhausted_called?
107
- assert_equal raised_error.message, new_worker.exhausted_message['error_message']
107
+ assert_equal raised_error.message, new_worker.exhausted_job['error_message']
108
108
  assert_equal raised_error, new_worker.exhausted_exception
109
109
  end
110
110
 
111
- it 'passes message to retries exhausted block' do
111
+ it 'passes job to retries exhausted block' do
112
112
  raised_error = assert_raises RuntimeError do
113
113
  handler.call(old_worker, job('retry_count' => 0, 'retry' => 1), 'default') do
114
114
  raise 'kerblammo!'
@@ -116,8 +116,34 @@ class TestRetryExhausted < Sidekiq::Test
116
116
  end
117
117
 
118
118
  assert old_worker.exhausted_called?
119
- assert_equal raised_error.message, old_worker.exhausted_message['error_message']
119
+ assert_equal raised_error.message, old_worker.exhausted_job['error_message']
120
120
  assert_equal nil, new_worker.exhausted_exception
121
121
  end
122
+
123
+ it 'allows a global default handler' do
124
+ begin
125
+ class Foobar
126
+ include Sidekiq::Worker
127
+ end
128
+
129
+ exhausted_job = nil
130
+ exhausted_exception = nil
131
+ Sidekiq.default_retries_exhausted = lambda do |job, ex|
132
+ exhausted_job = job
133
+ exhausted_exception = ex
134
+ end
135
+ f = Foobar.new
136
+ raised_error = assert_raises RuntimeError do
137
+ handler.call(f, job('retry_count' => 0, 'retry' => 1), 'default') do
138
+ raise 'kerblammo!'
139
+ end
140
+ end
141
+
142
+ assert exhausted_job
143
+ assert_equal raised_error, exhausted_exception
144
+ ensure
145
+ Sidekiq.default_retries_exhausted = nil
146
+ end
147
+ end
122
148
  end
123
149
  end
@@ -96,4 +96,11 @@ class TestSidekiq < Sidekiq::Test
96
96
  assert_equal counts[0] + 1, counts[1]
97
97
  end
98
98
  end
99
+
100
+ describe 'redis info' do
101
+ it 'calls the INFO command which returns at least redis_version' do
102
+ output = Sidekiq.redis_info
103
+ assert_includes output.keys, "redis_version"
104
+ end
105
+ end
99
106
  end
@@ -6,11 +6,7 @@ class TestUtil < Sidekiq::Test
6
6
  include Sidekiq::Util
7
7
  end
8
8
 
9
- def test_hertz_donut
10
- obj = Helpers.new
11
- output = capture_logging(Logger::DEBUG) do
12
- assert_equal false, obj.want_a_hertz_donut?
13
- end
14
- assert_includes output, "hz: 10"
9
+ def test_nothing_atm
10
+ assert true
15
11
  end
16
12
  end
@@ -33,6 +33,7 @@ cs:
33
33
  NextRetry: Další opakování
34
34
  RetryCount: Počet opakování
35
35
  RetryNow: Opakovat teď
36
+ Kill: Zabít
36
37
  LastRetry: Poslední opakování
37
38
  OriginallyFailed: Původně se nezdařilo
38
39
  AreYouSure: Jste si jisti?
@@ -61,8 +62,17 @@ cs:
61
62
  Failures: Selhání
62
63
  DeadJobs: Mrtvé úkoly
63
64
  NoDeadJobsFound: Nebyly nalezeny žádné mrtvé úkoly
64
- Dead: Mrtvý
65
+ Dead: Mrtvé
65
66
  Processes: Procesy
66
67
  Thread: Vlákno
67
68
  Threads: Vlákna
68
69
  Jobs: Úkoly
70
+ Paused: Pozastavené
71
+ Stop: Zastavit
72
+ Quiet: Ztišit
73
+ StopAll: Zastavit vše
74
+ QuietAll: Ztišit vše
75
+ PollingInterval: Interval obnovení
76
+ Plugins: Doplňky
77
+ NotYetEnqueued: Ještě nezařazeno
78
+ CreatedAt: Vytvořeno
@@ -6,12 +6,12 @@ fr:
6
6
  Namespace: Namespace
7
7
  Realtime: Temps réel
8
8
  History: Historique
9
- Busy: Occupées
9
+ Busy: En cours
10
10
  Processed: Traitées
11
11
  Failed: Échouées
12
- Scheduled: Planifiée
12
+ Scheduled: Planifiées
13
13
  Retries: Tentatives
14
- Enqueued: En queue
14
+ Enqueued: En attente
15
15
  Worker: Travailleur
16
16
  LivePoll: Temps réel
17
17
  StopPolling: Arrêt du temps réel
@@ -20,8 +20,8 @@ fr:
20
20
  Job: Tâche
21
21
  Arguments: Arguments
22
22
  Extras: Extras
23
- Started: Démarrées
24
- ShowAll: Montrer tout
23
+ Started: Démarrée
24
+ ShowAll: Tout montrer
25
25
  CurrentMessagesInQueue: Messages actuellement dans <span class='title'>%{queue}</span>
26
26
  Delete: Supprimer
27
27
  AddToQueue: Ajouter à la queue
@@ -35,7 +35,7 @@ fr:
35
35
  RetryNow: Réessayer maintenant
36
36
  Kill: Tuer
37
37
  LastRetry: Dernier essai
38
- OriginallyFailed: Échec originel
38
+ OriginallyFailed: Échec initial
39
39
  AreYouSure: Êtes-vous certain ?
40
40
  DeleteAll: Tout supprimer
41
41
  RetryAll: Tout réessayer
@@ -45,11 +45,11 @@ fr:
45
45
  ErrorMessage: Message d’erreur
46
46
  ErrorBacktrace: Backtrace d’erreur
47
47
  GoBack: ← Retour
48
- NoScheduledFound: Pas de tâches planifiées trouvées
48
+ NoScheduledFound: Aucune tâche planifiée n'a été trouvée
49
49
  When: Quand
50
50
  ScheduledJobs: Tâches planifiées
51
- idle: en attente
52
- active: actives
51
+ idle: inactif
52
+ active: actif
53
53
  Version: Version
54
54
  Connections: Connexions
55
55
  MemoryUsage: Mémoire utilisée
@@ -62,8 +62,17 @@ fr:
62
62
  Failures: Echecs
63
63
  DeadJobs: Tâches mortes
64
64
  NoDeadJobsFound: Aucune tâche morte n'a été trouvée
65
- Dead: Morte
65
+ Dead: Mortes
66
66
  Processes: Processus
67
67
  Thread: Thread
68
68
  Threads: Threads
69
69
  Jobs: Tâches
70
+ Paused: Mise en pause
71
+ Stop: Arrêter
72
+ Quiet: Clôturer
73
+ StopAll: Tout arrêter
74
+ QuietAll: Tout clôturer
75
+ PollingInterval: Interval de rafraîchissement
76
+ Plugins: Plugins
77
+ NotYetEnqueued: Pas encore en file d'attente
78
+ CreatedAt: Créée le
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sidekiq
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.1.0
4
+ version: 4.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Perham
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-01-28 00:00:00.000000000 Z
11
+ date: 2016-03-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: redis
@@ -167,13 +167,13 @@ executables:
167
167
  extensions: []
168
168
  extra_rdoc_files: []
169
169
  files:
170
+ - ".github/contributing.md"
170
171
  - ".gitignore"
171
172
  - ".travis.yml"
172
173
  - 3.0-Upgrade.md
173
174
  - 4.0-Upgrade.md
174
175
  - COMM-LICENSE
175
176
  - Changes.md
176
- - Contributing.md
177
177
  - Ent-Changes.md
178
178
  - Gemfile
179
179
  - LICENSE