sidekiq-unique-jobs 2.2.0 → 2.2.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-unique-jobs might be problematic. Click here for more details.

data/Gemfile CHANGED
@@ -5,9 +5,16 @@ gem 'celluloid'
5
5
  gem 'slim'
6
6
  gem 'sprockets'
7
7
  gem 'sass'
8
- gem 'rails', '3.2.6'
8
+ gem 'rails', '3.2.8'
9
9
  gem 'sqlite3'
10
10
 
11
11
  group :test do
12
12
  gem 'simplecov', :require => false
13
+ end
14
+
15
+ group :development do
16
+ gem 'pry'
17
+ gem 'pry-doc'
18
+ gem 'pry-stack_explorer'
19
+ gem 'pry-debugger'
13
20
  end
@@ -23,8 +23,11 @@ module SidekiqUniqueJobs
23
23
  if conn.get(payload_hash)
24
24
  conn.unwatch
25
25
  else
26
+ expires_at = HASH_KEY_EXPIRATION
27
+ expires_at = ((Time.at(item['at']) - Time.now.utc) * 24 * 60 * 60).to_i if item['at']
28
+
26
29
  unique = conn.multi do
27
- conn.setex(payload_hash, HASH_KEY_EXPIRATION, 1)
30
+ conn.setex(payload_hash, expires_at, 1)
28
31
  end
29
32
  end
30
33
  end
@@ -1,3 +1,3 @@
1
1
  module SidekiqUniqueJobs
2
- VERSION = "2.2.0"
2
+ VERSION = "2.2.1"
3
3
  end
data/test/helper.rb CHANGED
@@ -3,7 +3,7 @@ if ENV.has_key?("SIMPLECOV")
3
3
  require 'simplecov'
4
4
  SimpleCov.start
5
5
  end
6
-
6
+ require 'pry'
7
7
  require 'minitest/unit'
8
8
  require 'minitest/pride'
9
9
  require 'minitest/autorun'
@@ -1,6 +1,7 @@
1
1
  require 'helper'
2
2
  require 'sidekiq/worker'
3
3
  require "sidekiq-unique-jobs"
4
+ require 'sidekiq/scheduled'
4
5
 
5
6
  class TestClient < MiniTest::Unit::TestCase
6
7
  describe 'with real redis' do
@@ -12,6 +13,8 @@ class TestClient < MiniTest::Unit::TestCase
12
13
  class QueueWorker
13
14
  include Sidekiq::Worker
14
15
  sidekiq_options :queue => 'customqueue'
16
+ def perform(x)
17
+ end
15
18
  end
16
19
 
17
20
  it 'does not push duplicate messages when configured for unique only' do
@@ -25,5 +28,24 @@ class TestClient < MiniTest::Unit::TestCase
25
28
  10.times { Sidekiq::Client.push('class' => QueueWorker, 'args' => [1, 2]) }
26
29
  assert_equal 10, Sidekiq.redis {|c| c.llen("queue:customqueue") }
27
30
  end
31
+
32
+ # TODO: If anyone know of a better way to check that the expiration for scheduled
33
+ # jobs are set around the same time as the scheduled job itself feel free to improve.
34
+ it 'expires the payload_hash when a scheduled job is scheduled at' do
35
+ require 'active_support/all'
36
+ QueueWorker.sidekiq_options :unique => true
37
+
38
+ at = 15.minutes.from_now
39
+ expected_expires_at = (Time.at(at) - Time.now.utc).to_f
40
+
41
+ QueueWorker.perform_in(at, 'mike')
42
+ payload_hash = Digest::MD5.hexdigest(Sidekiq.dump_json(['mike']))
43
+
44
+ # deconstruct this into a time format we can use to get a decent delta for
45
+ actual_expires_at = Sidekiq.redis {|c| c.ttl(payload_hash).to_f / 24 / 60 / 60 }
46
+
47
+ assert_in_delta expected_expires_at, actual_expires_at, 0.05
48
+
49
+ end
28
50
  end
29
51
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sidekiq-unique-jobs
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.0
4
+ version: 2.2.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -160,7 +160,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
160
160
  version: '0'
161
161
  segments:
162
162
  - 0
163
- hash: 901520156680191383
163
+ hash: -556960269690268684
164
164
  required_rubygems_version: !ruby/object:Gem::Requirement
165
165
  none: false
166
166
  requirements:
@@ -169,7 +169,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
169
169
  version: '0'
170
170
  segments:
171
171
  - 0
172
- hash: 901520156680191383
172
+ hash: -556960269690268684
173
173
  requirements: []
174
174
  rubyforge_project:
175
175
  rubygems_version: 1.8.24
@@ -179,3 +179,4 @@ summary: The unique jobs that were removed from sidekiq
179
179
  test_files:
180
180
  - test/helper.rb
181
181
  - test/lib/sidekiq/test_client.rb
182
+ has_rdoc: