sidekiq-clutch 2.1.1 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8a79d553989453b6f6bdb859e2c6a0484ed1d3fdc6992dfa0aa80b79810fa4c2
4
- data.tar.gz: 06d6490367f6ed9ad7d1e616128f6a6498242637786e66d8724bea4735718f89
3
+ metadata.gz: b1aeadb1bf712264c64a2770ac20cfcf779af8ab29ed120b40dd1730e30b28d0
4
+ data.tar.gz: 3cda98c60d5bb023b220320ea11a15e941ede2bf44df4625677e7950286a2176
5
5
  SHA512:
6
- metadata.gz: 7a80caa3060acfcdb7f5cb3c4497261030c4f07cc1d528bbe078e6c3bb434117ad031d342f3940eaab59de9afb3b39d117a516933d92d3dd17475bea3c56d10d
7
- data.tar.gz: ad2c11c85514d5cace032bace89031d2994be6cad8533bffaf1d498d869bdea9eb1dbb4f157e93c393b9ec3b72e3bbfebdb06d3fdc099ea02d41a032d98ecb5d
6
+ metadata.gz: 2b2e5468e6162b849245fbdba40fda75e96de6ad91757aba4cdc537ef7d5188a5abdcd37163d38f0e3c1b44dc2610654e14145cf0cebebec17f0bbfd1f238ad2
7
+ data.tar.gz: 8e10d8416293f4ef95df375612b8dbd9b023fae01301e90e2c229f4522125b4ddd8cd50f281f4bcc15e6a6f2af8d6c7f47fe1eafc293024655320901b4ec8b16
data/.circleci/config.yml CHANGED
@@ -3,8 +3,8 @@ jobs:
3
3
  build:
4
4
  parallelism: 1
5
5
  docker:
6
- - image: circleci/ruby:2.5
7
- - image: redis:3.2
6
+ - image: cimg/ruby:3.3
7
+ - image: redis:8.0-M03-alpine
8
8
  steps:
9
9
  - checkout
10
10
  - run: gem install bundler
data/.envrc ADDED
@@ -0,0 +1,6 @@
1
+ # Automatically sets up your devbox environment whenever you cd into this
2
+ # directory via our direnv integration:
3
+
4
+ if command -v devbox 2>&1 >/dev/null && [[ -z "$DISABLE_DEVBOX_DIRENV" ]]; then
5
+ eval "$(devbox generate direnv --print-envrc)"
6
+ fi
data/CHANGELOG.md CHANGED
@@ -1,3 +1,14 @@
1
+ # 3.0.0 - Feb 19, 2025
2
+
3
+ * CHORE: Remove old-style job handling code
4
+ This would only be breaking if you have ongoing batches
5
+ that haven't yet completed (unlikely).
6
+
7
+ # 2.1.2 - Feb 18, 2025
8
+
9
+ * FIX: Don't leave orphaned redis keys laying around
10
+ * CHANGE: Prefix redis keys for easier identification
11
+
1
12
  # 2.1.1 - Sep 14, 2021
2
13
 
3
14
  * FIX: Call correct clean up method when legacy jobs are finished
data/devbox.json ADDED
@@ -0,0 +1,14 @@
1
+ {
2
+ "$schema": "https://raw.githubusercontent.com/jetify-com/devbox/0.14.0/.schema/devbox.schema.json",
3
+ "packages": ["ruby_3_3@latest"],
4
+ "shell": {
5
+ "init_hook": [
6
+ "echo 'Welcome to devbox!' > /dev/null"
7
+ ],
8
+ "scripts": {
9
+ "test": [
10
+ "echo \"Error: no test specified\" && exit 1"
11
+ ]
12
+ }
13
+ }
14
+ }
data/devbox.lock ADDED
@@ -0,0 +1,73 @@
1
+ {
2
+ "lockfile_version": "1",
3
+ "packages": {
4
+ "github:NixOS/nixpkgs/nixpkgs-unstable": {
5
+ "resolved": "github:NixOS/nixpkgs/632f04521e847173c54fa72973ec6c39a371211c?lastModified=1739863612&narHash=sha256-UbtgxplOhFcyjBcNbTVO8%2BHUHAl%2FWXFDOb6LvqShiZo%3D"
6
+ },
7
+ "ruby_3_3@latest": {
8
+ "last_modified": "2024-09-10T15:01:03Z",
9
+ "plugin_version": "0.0.2",
10
+ "resolved": "github:NixOS/nixpkgs/5ed627539ac84809c78b2dd6d26a5cebeb5ae269#ruby",
11
+ "source": "devbox-search",
12
+ "version": "3.3.4",
13
+ "systems": {
14
+ "aarch64-darwin": {
15
+ "outputs": [
16
+ {
17
+ "name": "out",
18
+ "path": "/nix/store/zsngi7cq7asxc6kb0lcmbyydasfrmai6-ruby-3.3.4",
19
+ "default": true
20
+ },
21
+ {
22
+ "name": "devdoc",
23
+ "path": "/nix/store/c0zmjmfw5pp00slwy842bd8zzy74pava-ruby-3.3.4-devdoc"
24
+ }
25
+ ],
26
+ "store_path": "/nix/store/zsngi7cq7asxc6kb0lcmbyydasfrmai6-ruby-3.3.4"
27
+ },
28
+ "aarch64-linux": {
29
+ "outputs": [
30
+ {
31
+ "name": "out",
32
+ "path": "/nix/store/8vri7d6b75gspvnfrdpqnagfi5bbvis9-ruby-3.3.4",
33
+ "default": true
34
+ },
35
+ {
36
+ "name": "devdoc",
37
+ "path": "/nix/store/bfrwr1n6pxd3hz31h589j317g290p0r5-ruby-3.3.4-devdoc"
38
+ }
39
+ ],
40
+ "store_path": "/nix/store/8vri7d6b75gspvnfrdpqnagfi5bbvis9-ruby-3.3.4"
41
+ },
42
+ "x86_64-darwin": {
43
+ "outputs": [
44
+ {
45
+ "name": "out",
46
+ "path": "/nix/store/hksac0axpx3savrgmy75rid3smv0d9nj-ruby-3.3.4",
47
+ "default": true
48
+ },
49
+ {
50
+ "name": "devdoc",
51
+ "path": "/nix/store/3564jxjgp9dk8vzjwb7i3fpzkpw74z3m-ruby-3.3.4-devdoc"
52
+ }
53
+ ],
54
+ "store_path": "/nix/store/hksac0axpx3savrgmy75rid3smv0d9nj-ruby-3.3.4"
55
+ },
56
+ "x86_64-linux": {
57
+ "outputs": [
58
+ {
59
+ "name": "out",
60
+ "path": "/nix/store/2vg3asd3rmhng3wqvp781a1q5dhrr4yn-ruby-3.3.4",
61
+ "default": true
62
+ },
63
+ {
64
+ "name": "devdoc",
65
+ "path": "/nix/store/2vgrf69lcz8ipawxipza3w7gsqdnbbnk-ruby-3.3.4-devdoc"
66
+ }
67
+ ],
68
+ "store_path": "/nix/store/2vg3asd3rmhng3wqvp781a1q5dhrr4yn-ruby-3.3.4"
69
+ }
70
+ }
71
+ }
72
+ }
73
+ }
@@ -1,5 +1,5 @@
1
1
  module Sidekiq
2
2
  class Clutch
3
- VERSION = '2.1.1'.freeze
3
+ VERSION = '3.0.0'.freeze
4
4
  end
5
5
  end
@@ -14,8 +14,8 @@ module Sidekiq
14
14
  end
15
15
 
16
16
  attr_reader :batch, :queue, :parallel_key
17
-
18
17
  attr_accessor :current_result_key, :on_failure
18
+ attr_writer :key_base
19
19
 
20
20
  def parallel
21
21
  @parallel_key = SecureRandom.uuid
@@ -72,8 +72,6 @@ module Sidekiq
72
72
  end
73
73
 
74
74
  def on_success(status, options)
75
- return on_success_legacy(status, options) if options['jobs']
76
-
77
75
  raise 'invariant: key_base is missing!' unless options['key_base']
78
76
  raise 'invariant: result_key_index is missing!' unless options['result_key_index']
79
77
 
@@ -87,8 +85,9 @@ module Sidekiq
87
85
  end
88
86
  parent_batch = Sidekiq::Batch.new(status.parent_bid)
89
87
  service = self.class.new(parent_batch)
88
+ service.key_base = @key_base
90
89
  service.jobs.raw = remaining_jobs
91
- service.current_result_key = "#{key_base}-#{options['result_key_index']}"
90
+ service.current_result_key = "#{key_base}:result-#{options['result_key_index']}"
92
91
  service.engage
93
92
  end
94
93
 
@@ -100,26 +99,12 @@ module Sidekiq
100
99
 
101
100
  private
102
101
 
103
- # accept old style of passing job data, will be removed in 3.0
104
- def on_success_legacy(status, options)
105
- @key_base = options['result_key'].sub(/-\d+$/, '')
106
- if options['jobs'].empty?
107
- clean_up_temporary_keys
108
- return
109
- end
110
- parent_batch = Sidekiq::Batch.new(status.parent_bid)
111
- service = self.class.new(parent_batch)
112
- service.jobs.raw = options['jobs']
113
- service.current_result_key = options['result_key']
114
- service.engage
115
- end
116
-
117
102
  def key_base
118
- @key_base ||= SecureRandom.uuid
103
+ @key_base ||= "clutch:#{SecureRandom.uuid}"
119
104
  end
120
105
 
121
106
  def jobs_key
122
- "#{key_base}-jobs"
107
+ "#{key_base}:jobs"
123
108
  end
124
109
 
125
110
  def set_jobs_data_in_redis(data)
@@ -145,8 +130,6 @@ module Sidekiq
145
130
  def result_key_index(step)
146
131
  if step['result_key_index']
147
132
  step['result_key_index']
148
- elsif step['result_key'] # legacy style, will be removed in 3.0
149
- step['result_key'].split('-').last.to_i
150
133
  else
151
134
  raise "invariant: expected result_key_index passed in step; got: #{step.inspect}"
152
135
  end
@@ -154,7 +137,7 @@ module Sidekiq
154
137
 
155
138
  def enqueue_job(klass, params, result_key_index)
156
139
  job_options = Object.const_get(klass).sidekiq_options
157
- result_key = "#{key_base}-#{result_key_index}"
140
+ result_key = "#{key_base}:result-#{result_key_index}"
158
141
  options = {
159
142
  'class' => JobWrapper,
160
143
  'queue' => queue || job_options['queue'],
@@ -171,7 +154,7 @@ module Sidekiq
171
154
  redis.del(jobs_key)
172
155
  result_key_index = 1
173
156
  loop do
174
- result = redis.del("#{key_base}-#{result_key_index}")
157
+ result = redis.del("#{key_base}:result-#{result_key_index}")
175
158
  result_key_index += 1
176
159
  break if result == 0
177
160
  end
@@ -21,7 +21,6 @@ Gem::Specification.new do |spec|
21
21
 
22
22
  spec.add_dependency 'sidekiq', '>= 5.0.0'
23
23
 
24
- spec.add_development_dependency 'bundler', '~> 2.2.4'
25
24
  spec.add_development_dependency 'rake', '~> 13.0.1'
26
25
  spec.add_development_dependency 'rspec', '~> 3.9.0'
27
26
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sidekiq-clutch
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.1
4
+ version: 3.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tim Morgan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-09-14 00:00:00.000000000 Z
11
+ date: 1980-01-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sidekiq
@@ -24,20 +24,6 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: 5.0.0
27
- - !ruby/object:Gem::Dependency
28
- name: bundler
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - "~>"
32
- - !ruby/object:Gem::Version
33
- version: 2.2.4
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - "~>"
39
- - !ruby/object:Gem::Version
40
- version: 2.2.4
41
27
  - !ruby/object:Gem::Dependency
42
28
  name: rake
43
29
  requirement: !ruby/object:Gem::Requirement
@@ -75,6 +61,7 @@ extensions: []
75
61
  extra_rdoc_files: []
76
62
  files:
77
63
  - ".circleci/config.yml"
64
+ - ".envrc"
78
65
  - ".gitignore"
79
66
  - ".rspec"
80
67
  - ".rubocop.yml"
@@ -83,6 +70,8 @@ files:
83
70
  - LICENSE.txt
84
71
  - README.md
85
72
  - Rakefile
73
+ - devbox.json
74
+ - devbox.lock
86
75
  - lib/sidekiq/clutch.rb
87
76
  - lib/sidekiq/clutch/job_wrapper.rb
88
77
  - lib/sidekiq/clutch/jobs_collection.rb
@@ -108,7 +97,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
108
97
  - !ruby/object:Gem::Version
109
98
  version: '0'
110
99
  requirements: []
111
- rubygems_version: 3.1.6
100
+ rubygems_version: 3.5.16
112
101
  signing_key:
113
102
  specification_version: 4
114
103
  summary: An ergonomic wrapper API for Sidekiq Batches