unique_job 0.3.2.pre → 0.4.3

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: ae29717a10f707ecb27c4ee636e28fc13c7b113ac48cf1837f353c5c2cceee39
4
- data.tar.gz: 8a0da599c02f6935a80717afa2e9dcf387722fa768b5b5593323b4041e483402
3
+ metadata.gz: 6d4face3e0849052a2927072c56bf46be03935a30396a753cd77b1e7eaf7f712
4
+ data.tar.gz: 8ef8a5cfc6300c524ba994c4a3f1376e3b3f3858618a155bf2919131bed3de3c
5
5
  SHA512:
6
- metadata.gz: 9e173de697ab852500f66d3fe0dc938ae1d0883ab8cf7b0f0d918043af38490936e3d7917da2ce38deac90f4f68131758eb5d6e001691014465536b2acaacab9
7
- data.tar.gz: f17a814a35307b00a4ae7b3347bb7c33690e6db4baa678964fa94db7022505fd6cb5f12d25d7f7c8b8ca3a8ff3f4a3278e2eff400a0ec84e6e1781321dc03be9
6
+ metadata.gz: 144457fd0ad603ed99e494070837c8b2cb30505a0bc0048a48ea9087026de410391a78a0c82a5e3c886777d04e8fa632324a4c4c73690310572108f0fbf4761f
7
+ data.tar.gz: 9396809dd975fee4a0a7447aa7ba53f1054b07356bda808d6c36344be3e8bf7dc431cb5916d5fdf9df2f7cc668bd464157d583ac2e338df5adcb686254ac3750
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ -fd
2
+ --require spec_helper
data/Gemfile CHANGED
@@ -4,4 +4,4 @@ source "https://rubygems.org"
4
4
  gemspec
5
5
 
6
6
  gem "rake", "~> 12.0"
7
- gem "minitest", "~> 5.0"
7
+ gem "rspec"
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- unique_job (0.3.2.pre)
4
+ unique_job (0.4.3)
5
5
  redis
6
6
  sidekiq (> 6.0, < 7.0)
7
7
 
@@ -9,10 +9,23 @@ GEM
9
9
  remote: https://rubygems.org/
10
10
  specs:
11
11
  connection_pool (2.2.3)
12
- minitest (5.14.2)
12
+ diff-lcs (1.4.4)
13
13
  rack (2.2.3)
14
14
  rake (12.3.3)
15
15
  redis (4.2.2)
16
+ rspec (3.10.0)
17
+ rspec-core (~> 3.10.0)
18
+ rspec-expectations (~> 3.10.0)
19
+ rspec-mocks (~> 3.10.0)
20
+ rspec-core (3.10.1)
21
+ rspec-support (~> 3.10.0)
22
+ rspec-expectations (3.10.1)
23
+ diff-lcs (>= 1.2.0, < 2.0)
24
+ rspec-support (~> 3.10.0)
25
+ rspec-mocks (3.10.2)
26
+ diff-lcs (>= 1.2.0, < 2.0)
27
+ rspec-support (~> 3.10.0)
28
+ rspec-support (3.10.3)
16
29
  sidekiq (6.1.2)
17
30
  connection_pool (>= 2.2.2)
18
31
  rack (~> 2.0)
@@ -22,8 +35,8 @@ PLATFORMS
22
35
  ruby
23
36
 
24
37
  DEPENDENCIES
25
- minitest (~> 5.0)
26
38
  rake (~> 12.0)
39
+ rspec
27
40
  unique_job!
28
41
 
29
42
  BUNDLED WITH
@@ -42,8 +42,15 @@ module UniqueJob
42
42
  class << self
43
43
  attr_accessor :redis_options
44
44
 
45
+ MX = Mutex.new
46
+
45
47
  def redis
46
- @redis ||= Redis.new(redis_options)
48
+ MX.synchronize do
49
+ unless @redis
50
+ @redis = Redis.new(redis_options)
51
+ end
52
+ end
53
+ @redis
47
54
  end
48
55
  end
49
56
 
@@ -60,7 +67,7 @@ module UniqueJob
60
67
  super(*args, &blk)
61
68
  rescue => e
62
69
  elapsed = Time.now - start
63
- logger.warn "Rescue all errors in #{self.class}##{method_name} #{e.inspect} elapsed=#{sprintf("%.3f sec", elapsed)}"
70
+ logger.warn "[UniqueJob] Rescue all errors in #{self.class}##{method_name} #{e.inspect} elapsed=#{sprintf("%.3f sec", elapsed)}"
64
71
  logger.debug { e.backtrace.join("\n") }
65
72
  nil
66
73
  end
@@ -10,10 +10,7 @@ module UniqueJob
10
10
  unique_key = worker.unique_key(*args)
11
11
  logger.debug { "[UniqueJob] Calculate unique key worker=#{worker.class} key=#{unique_key}" }
12
12
 
13
- if unique_key.nil? || unique_key.to_s.empty?
14
- logger.warn { "[UniqueJob] Don't check a job with a blank key worker=#{worker.class} key=#{unique_key}" }
15
- yield
16
- elsif check_uniqueness(worker, unique_key.to_s)
13
+ if check_uniqueness(worker, unique_key)
17
14
  yield
18
15
  else
19
16
  logger.debug { "[UniqueJob] Duplicate job skipped worker=#{worker.class} key=#{unique_key}" }
@@ -25,13 +22,18 @@ module UniqueJob
25
22
  end
26
23
  end
27
24
 
28
- def check_uniqueness(worker, unique_key)
25
+ def check_uniqueness(worker, key)
26
+ if key.nil? || key.to_s.empty?
27
+ logger.warn { "[UniqueJob] Don't check a job with a blank key worker=#{worker.class} key=#{key}" }
28
+ return false
29
+ end
30
+
29
31
  history = job_history(worker)
30
32
 
31
- if history.exists?(unique_key)
33
+ if history.exists?(key)
32
34
  false
33
35
  else
34
- history.add(unique_key)
36
+ history.add(key)
35
37
  true
36
38
  end
37
39
  end
@@ -1,3 +1,3 @@
1
1
  module UniqueJob
2
- VERSION = "0.3.2.pre"
2
+ VERSION = "0.4.3"
3
3
  end
data/lib/unique_job.rb CHANGED
@@ -1,3 +1,5 @@
1
+ require 'redis'
2
+
1
3
  require "unique_job/client_middleware"
2
4
  require "unique_job/job_history"
3
5
  require "unique_job/server_middleware"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: unique_job
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.2.pre
4
+ version: 0.4.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - ts-3156
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-11-25 00:00:00.000000000 Z
11
+ date: 2021-12-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sidekiq
@@ -52,6 +52,7 @@ extensions: []
52
52
  extra_rdoc_files: []
53
53
  files:
54
54
  - ".gitignore"
55
+ - ".rspec"
55
56
  - ".ruby-version"
56
57
  - ".travis.yml"
57
58
  - CODE_OF_CONDUCT.md
@@ -88,9 +89,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
88
89
  version: 2.3.0
89
90
  required_rubygems_version: !ruby/object:Gem::Requirement
90
91
  requirements:
91
- - - ">"
92
+ - - ">="
92
93
  - !ruby/object:Gem::Version
93
- version: 1.3.1
94
+ version: '0'
94
95
  requirements: []
95
96
  rubygems_version: 3.1.6
96
97
  signing_key: