sidekiq-grouping 1.1.0 → 1.3.0
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 +4 -4
- data/.github/workflows/lint.yml +37 -0
- data/.github/workflows/test.yml +49 -0
- data/.gitignore +1 -0
- data/.rubocop.yml +31 -3
- data/Appraisals +12 -0
- data/README.md +3 -1
- data/bin/console +8 -0
- data/gemfiles/sidekiq_6.0.gemfile +7 -0
- data/gemfiles/sidekiq_6.5.gemfile +7 -0
- data/gemfiles/sidekiq_7.0.gemfile +7 -0
- data/lefthook.yml +20 -0
- data/lib/sidekiq/grouping/batch.rb +29 -19
- data/lib/sidekiq/grouping/config.rb +34 -22
- data/lib/sidekiq/grouping/flusher.rb +48 -36
- data/lib/sidekiq/grouping/flusher_observer.rb +16 -10
- data/lib/sidekiq/grouping/middleware.rb +27 -14
- data/lib/sidekiq/grouping/redis.rb +53 -30
- data/lib/sidekiq/grouping/redis_dispatcher.rb +29 -0
- data/lib/sidekiq/grouping/version.rb +3 -1
- data/lib/sidekiq/grouping/web.rb +10 -5
- data/lib/sidekiq/grouping.rb +36 -30
- data/sidekiq-grouping.gemspec +14 -7
- data/spec/modules/batch_spec.rb +110 -80
- data/spec/modules/redis_spec.rb +23 -26
- data/spec/spec_helper.rb +16 -6
- data/spec/support/test_workers.rb +7 -10
- metadata +68 -21
- data/.travis.yml +0 -18
data/spec/spec_helper.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
$LOAD_PATH << "." unless $LOAD_PATH.include?(".")
|
2
4
|
|
3
5
|
require "rubygems"
|
@@ -7,6 +9,7 @@ require "simplecov"
|
|
7
9
|
require "sidekiq"
|
8
10
|
require "rspec-sidekiq"
|
9
11
|
require "support/test_workers"
|
12
|
+
require "pry"
|
10
13
|
|
11
14
|
SimpleCov.start do
|
12
15
|
add_filter "spec"
|
@@ -15,8 +18,10 @@ end
|
|
15
18
|
require "sidekiq/grouping"
|
16
19
|
|
17
20
|
Sidekiq::Grouping.logger = nil
|
18
|
-
Sidekiq.
|
19
|
-
|
21
|
+
Sidekiq.configure_client do |config|
|
22
|
+
config.redis = { db: 1 }
|
23
|
+
config.logger = nil
|
24
|
+
end
|
20
25
|
|
21
26
|
RSpec::Sidekiq.configure do |config|
|
22
27
|
config.clear_all_enqueued_jobs = true
|
@@ -28,14 +33,19 @@ RSpec.configure do |config|
|
|
28
33
|
config.run_all_when_everything_filtered = true
|
29
34
|
config.filter_run :focus
|
30
35
|
|
31
|
-
config.before
|
36
|
+
config.before do
|
32
37
|
Sidekiq.redis do |conn|
|
33
|
-
|
34
|
-
|
38
|
+
if Sidekiq::VERSION[0].to_i >= 7
|
39
|
+
keys = conn.call("KEYS", "*batching*")
|
40
|
+
keys.each { |key| conn.call("DEL", key) }
|
41
|
+
else
|
42
|
+
keys = conn.keys "*batching*"
|
43
|
+
keys.each { |key| conn.del key }
|
44
|
+
end
|
35
45
|
end
|
36
46
|
end
|
37
47
|
|
38
|
-
config.after
|
48
|
+
config.after do
|
39
49
|
Timecop.return
|
40
50
|
end
|
41
51
|
end
|
@@ -1,8 +1,9 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
class RegularWorker
|
2
4
|
include Sidekiq::Worker
|
3
5
|
|
4
|
-
def perform(foo)
|
5
|
-
end
|
6
|
+
def perform(foo); end
|
6
7
|
end
|
7
8
|
|
8
9
|
class BatchedSizeWorker
|
@@ -10,8 +11,7 @@ class BatchedSizeWorker
|
|
10
11
|
|
11
12
|
sidekiq_options queue: :batched_size, batch_flush_size: 3, batch_size: 2
|
12
13
|
|
13
|
-
def perform(foo)
|
14
|
-
end
|
14
|
+
def perform(foo); end
|
15
15
|
end
|
16
16
|
|
17
17
|
class BatchedIntervalWorker
|
@@ -19,8 +19,7 @@ class BatchedIntervalWorker
|
|
19
19
|
|
20
20
|
sidekiq_options queue: :batched_interval, batch_flush_interval: 3600
|
21
21
|
|
22
|
-
def perform(foo)
|
23
|
-
end
|
22
|
+
def perform(foo); end
|
24
23
|
end
|
25
24
|
|
26
25
|
class BatchedBothWorker
|
@@ -30,8 +29,7 @@ class BatchedBothWorker
|
|
30
29
|
queue: :batched_both, batch_flush_interval: 3600, batch_flush_size: 3
|
31
30
|
)
|
32
31
|
|
33
|
-
def perform(foo)
|
34
|
-
end
|
32
|
+
def perform(foo); end
|
35
33
|
end
|
36
34
|
|
37
35
|
class BatchedUniqueArgsWorker
|
@@ -41,6 +39,5 @@ class BatchedUniqueArgsWorker
|
|
41
39
|
queue: :batched_unique_args, batch_flush_size: 3, batch_unique: true
|
42
40
|
)
|
43
41
|
|
44
|
-
def perform(foo)
|
45
|
-
end
|
42
|
+
def perform(foo); end
|
46
43
|
end
|
metadata
CHANGED
@@ -1,15 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sidekiq-grouping
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Victor Sokolov
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-12-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: appraisal
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
13
27
|
- !ruby/object:Gem::Dependency
|
14
28
|
name: bundler
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -24,6 +38,20 @@ dependencies:
|
|
24
38
|
- - ">"
|
25
39
|
- !ruby/object:Gem::Version
|
26
40
|
version: '1.5'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: pry
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
27
55
|
- !ruby/object:Gem::Dependency
|
28
56
|
name: rake
|
29
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -53,7 +81,7 @@ dependencies:
|
|
53
81
|
- !ruby/object:Gem::Version
|
54
82
|
version: '0'
|
55
83
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
84
|
+
name: rspec-sidekiq
|
57
85
|
requirement: !ruby/object:Gem::Requirement
|
58
86
|
requirements:
|
59
87
|
- - ">="
|
@@ -67,7 +95,7 @@ dependencies:
|
|
67
95
|
- !ruby/object:Gem::Version
|
68
96
|
version: '0'
|
69
97
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
98
|
+
name: rubocop
|
71
99
|
requirement: !ruby/object:Gem::Requirement
|
72
100
|
requirements:
|
73
101
|
- - ">="
|
@@ -81,7 +109,7 @@ dependencies:
|
|
81
109
|
- !ruby/object:Gem::Version
|
82
110
|
version: '0'
|
83
111
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
112
|
+
name: rubocop-rspec
|
85
113
|
requirement: !ruby/object:Gem::Requirement
|
86
114
|
requirements:
|
87
115
|
- - ">="
|
@@ -95,7 +123,7 @@ dependencies:
|
|
95
123
|
- !ruby/object:Gem::Version
|
96
124
|
version: '0'
|
97
125
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
126
|
+
name: simplecov
|
99
127
|
requirement: !ruby/object:Gem::Requirement
|
100
128
|
requirements:
|
101
129
|
- - ">="
|
@@ -109,13 +137,13 @@ dependencies:
|
|
109
137
|
- !ruby/object:Gem::Version
|
110
138
|
version: '0'
|
111
139
|
- !ruby/object:Gem::Dependency
|
112
|
-
name:
|
140
|
+
name: timecop
|
113
141
|
requirement: !ruby/object:Gem::Requirement
|
114
142
|
requirements:
|
115
143
|
- - ">="
|
116
144
|
- !ruby/object:Gem::Version
|
117
145
|
version: '0'
|
118
|
-
type: :
|
146
|
+
type: :development
|
119
147
|
prerelease: false
|
120
148
|
version_requirements: !ruby/object:Gem::Requirement
|
121
149
|
requirements:
|
@@ -123,19 +151,19 @@ dependencies:
|
|
123
151
|
- !ruby/object:Gem::Version
|
124
152
|
version: '0'
|
125
153
|
- !ruby/object:Gem::Dependency
|
126
|
-
name:
|
154
|
+
name: activesupport
|
127
155
|
requirement: !ruby/object:Gem::Requirement
|
128
156
|
requirements:
|
129
157
|
- - ">="
|
130
158
|
- !ruby/object:Gem::Version
|
131
|
-
version:
|
159
|
+
version: '0'
|
132
160
|
type: :runtime
|
133
161
|
prerelease: false
|
134
162
|
version_requirements: !ruby/object:Gem::Requirement
|
135
163
|
requirements:
|
136
164
|
- - ">="
|
137
165
|
- !ruby/object:Gem::Version
|
138
|
-
version:
|
166
|
+
version: '0'
|
139
167
|
- !ruby/object:Gem::Dependency
|
140
168
|
name: concurrent-ruby
|
141
169
|
requirement: !ruby/object:Gem::Requirement
|
@@ -150,26 +178,47 @@ dependencies:
|
|
150
178
|
- - ">="
|
151
179
|
- !ruby/object:Gem::Version
|
152
180
|
version: '0'
|
181
|
+
- !ruby/object:Gem::Dependency
|
182
|
+
name: sidekiq
|
183
|
+
requirement: !ruby/object:Gem::Requirement
|
184
|
+
requirements:
|
185
|
+
- - ">="
|
186
|
+
- !ruby/object:Gem::Version
|
187
|
+
version: 3.4.2
|
188
|
+
type: :runtime
|
189
|
+
prerelease: false
|
190
|
+
version_requirements: !ruby/object:Gem::Requirement
|
191
|
+
requirements:
|
192
|
+
- - ">="
|
193
|
+
- !ruby/object:Gem::Version
|
194
|
+
version: 3.4.2
|
153
195
|
description:
|
154
196
|
email:
|
155
197
|
- gzigzigzeo@gmail.com
|
156
|
-
executables:
|
198
|
+
executables:
|
199
|
+
- console
|
157
200
|
extensions: []
|
158
201
|
extra_rdoc_files: []
|
159
202
|
files:
|
203
|
+
- ".github/workflows/lint.yml"
|
204
|
+
- ".github/workflows/test.yml"
|
160
205
|
- ".gitignore"
|
161
206
|
- ".rubocop.yml"
|
162
|
-
- ".travis.yml"
|
163
207
|
- Appraisals
|
164
208
|
- Gemfile
|
165
209
|
- LICENSE.txt
|
166
210
|
- README.md
|
167
211
|
- Rakefile
|
212
|
+
- bin/console
|
168
213
|
- gemfiles/sidekiq_4.0.gemfile
|
169
214
|
- gemfiles/sidekiq_4.1.gemfile
|
170
215
|
- gemfiles/sidekiq_4.2.gemfile
|
171
216
|
- gemfiles/sidekiq_5.0.gemfile
|
217
|
+
- gemfiles/sidekiq_6.0.gemfile
|
218
|
+
- gemfiles/sidekiq_6.5.gemfile
|
219
|
+
- gemfiles/sidekiq_7.0.gemfile
|
172
220
|
- gemfiles/sidekiq_master.gemfile
|
221
|
+
- lefthook.yml
|
173
222
|
- lib/sidekiq/grouping.rb
|
174
223
|
- lib/sidekiq/grouping/batch.rb
|
175
224
|
- lib/sidekiq/grouping/config.rb
|
@@ -177,6 +226,7 @@ files:
|
|
177
226
|
- lib/sidekiq/grouping/flusher_observer.rb
|
178
227
|
- lib/sidekiq/grouping/middleware.rb
|
179
228
|
- lib/sidekiq/grouping/redis.rb
|
229
|
+
- lib/sidekiq/grouping/redis_dispatcher.rb
|
180
230
|
- lib/sidekiq/grouping/version.rb
|
181
231
|
- lib/sidekiq/grouping/views/index.erb
|
182
232
|
- lib/sidekiq/grouping/web.rb
|
@@ -189,7 +239,8 @@ files:
|
|
189
239
|
homepage: http://github.com/gzigzigzeo/sidekiq-grouping
|
190
240
|
licenses:
|
191
241
|
- MIT
|
192
|
-
metadata:
|
242
|
+
metadata:
|
243
|
+
rubygems_mfa_required: 'true'
|
193
244
|
post_install_message:
|
194
245
|
rdoc_options: []
|
195
246
|
require_paths:
|
@@ -198,19 +249,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
198
249
|
requirements:
|
199
250
|
- - ">="
|
200
251
|
- !ruby/object:Gem::Version
|
201
|
-
version:
|
252
|
+
version: 2.7.0
|
202
253
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
203
254
|
requirements:
|
204
255
|
- - ">="
|
205
256
|
- !ruby/object:Gem::Version
|
206
257
|
version: '0'
|
207
258
|
requirements: []
|
208
|
-
rubygems_version: 3.
|
259
|
+
rubygems_version: 3.3.19
|
209
260
|
signing_key:
|
210
261
|
specification_version: 4
|
211
262
|
summary: Allows identical sidekiq jobs to be processed with a single background call
|
212
|
-
test_files:
|
213
|
-
- spec/modules/batch_spec.rb
|
214
|
-
- spec/modules/redis_spec.rb
|
215
|
-
- spec/spec_helper.rb
|
216
|
-
- spec/support/test_workers.rb
|
263
|
+
test_files: []
|
data/.travis.yml
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
language: ruby
|
2
|
-
rvm:
|
3
|
-
- 2.2
|
4
|
-
- 2.3.1
|
5
|
-
- 2.4
|
6
|
-
- 2.5
|
7
|
-
|
8
|
-
cache: bundler
|
9
|
-
|
10
|
-
services:
|
11
|
-
- redis-server
|
12
|
-
|
13
|
-
gemfile:
|
14
|
-
- gemfiles/sidekiq_4.0.gemfile
|
15
|
-
- gemfiles/sidekiq_4.1.gemfile
|
16
|
-
- gemfiles/sidekiq_4.2.gemfile
|
17
|
-
- gemfiles/sidekiq_5.0.gemfile
|
18
|
-
- gemfiles/sidekiq_master.gemfile
|