switchman-inst-jobs 4.0.17 → 4.1.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/lib/switchman_inst_jobs/delayed/backend/base.rb +2 -4
- data/lib/switchman_inst_jobs/guard_rail.rb +1 -1
- data/lib/switchman_inst_jobs/jobs_migrator.rb +15 -15
- data/lib/switchman_inst_jobs/new_relic.rb +2 -2
- data/lib/switchman_inst_jobs/switchman/shard.rb +1 -1
- data/lib/switchman_inst_jobs/version.rb +1 -1
- metadata +7 -203
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a05ca311e09076da7e5fdb4cab4dc9100f2c43f63fd4607b263f23511c694aee
|
4
|
+
data.tar.gz: 27808a1eb26baa6729e176ca9d0be90b885cd0f48f75c52b5148296d9b9a7583
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ea7694250731e90416a1b826b7728600ecd299da0f704434ec06d81b3c0ade0012f29f06a9f7e78b1cf727f39a3e5052547fbe3d5d8683ac54ae804ea37e0de1
|
7
|
+
data.tar.gz: 3ef9c702ae77152b6576ed21828dbd97388bd1d1f87efcc104ead778bb9503f129ad5515cab5fafa6371bc96026d2f18ab3c0f818fe4d92bada28b082156c02d
|
@@ -21,7 +21,7 @@ module SwitchmanInstJobs
|
|
21
21
|
::Switchman::Shard.periodic_clear_shard_cache
|
22
22
|
current_shard = options[:current_shard] || ::Switchman::Shard.current
|
23
23
|
enqueue_options = options.merge(
|
24
|
-
current_shard:
|
24
|
+
current_shard:
|
25
25
|
)
|
26
26
|
enqueue_job = -> { ::GuardRail.activate(:primary) { super(object, **enqueue_options) } }
|
27
27
|
|
@@ -48,9 +48,7 @@ module SwitchmanInstJobs
|
|
48
48
|
end
|
49
49
|
end
|
50
50
|
|
51
|
-
|
52
|
-
::SwitchmanInstJobs::Delayed::Settings.configured_shard_ids
|
53
|
-
end
|
51
|
+
delegate :configured_shard_ids, to: :"::SwitchmanInstJobs::Delayed::Settings"
|
54
52
|
|
55
53
|
def processes_locked_locally
|
56
54
|
shard_ids = configured_shard_ids
|
@@ -21,7 +21,7 @@ module SwitchmanInstJobs
|
|
21
21
|
@validation_callbacks = []
|
22
22
|
end
|
23
23
|
|
24
|
-
def transaction_on(shards, &
|
24
|
+
def transaction_on(shards, &)
|
25
25
|
return yield if shards.empty?
|
26
26
|
|
27
27
|
shard = shards.pop
|
@@ -29,7 +29,7 @@ module SwitchmanInstJobs
|
|
29
29
|
shard.activate(::Delayed::Backend::ActiveRecord::AbstractJob) do
|
30
30
|
::Delayed::Job.transaction do
|
31
31
|
current_shard.activate(::Delayed::Backend::ActiveRecord::AbstractJob) do
|
32
|
-
transaction_on(shards, &
|
32
|
+
transaction_on(shards, &)
|
33
33
|
end
|
34
34
|
end
|
35
35
|
end
|
@@ -37,7 +37,7 @@ module SwitchmanInstJobs
|
|
37
37
|
|
38
38
|
def migrate_shards(shard_map)
|
39
39
|
source_shards = Set[]
|
40
|
-
target_shards = Hash.new([])
|
40
|
+
target_shards = Hash.new([].freeze)
|
41
41
|
shard_map.each do |(shard, target_shard)|
|
42
42
|
shard = ::Switchman::Shard.find(shard) unless shard.is_a?(::Switchman::Shard)
|
43
43
|
source_shards << shard.delayed_jobs_shard.id
|
@@ -45,7 +45,7 @@ module SwitchmanInstJobs
|
|
45
45
|
target_shards[target_shard] += [shard.id]
|
46
46
|
|
47
47
|
@validation_callbacks&.each do |proc|
|
48
|
-
proc.call(shard
|
48
|
+
proc.call(shard:, target_shard: ::Switchman::Shard.find(target_shard))
|
49
49
|
end
|
50
50
|
end
|
51
51
|
|
@@ -171,10 +171,10 @@ module SwitchmanInstJobs
|
|
171
171
|
# 4) is taken care of here, by leaving next_in_strand alone and
|
172
172
|
# it should execute on the new shard
|
173
173
|
batch_move_jobs(
|
174
|
-
target_shard
|
175
|
-
source_shard
|
174
|
+
target_shard:,
|
175
|
+
source_shard:,
|
176
176
|
scope: jobs_scope,
|
177
|
-
batch_size:
|
177
|
+
batch_size:
|
178
178
|
) do |job, new_job|
|
179
179
|
# This ensures jobs enqueued on the old jobs shard run before jobs on the new jobs queue
|
180
180
|
new_job.strand_order_override = job.strand_order_override - 1
|
@@ -190,7 +190,7 @@ module SwitchmanInstJobs
|
|
190
190
|
all_scope = ::Delayed::Job.shard(source_shard).where("strand IS NOT NULL OR singleton IS NOT NULL")
|
191
191
|
|
192
192
|
singleton_blocker_additional_kwargs = {
|
193
|
-
locked_at:
|
193
|
+
locked_at: Time.now.utc,
|
194
194
|
locked_by: ::Delayed::Backend::Base::ON_HOLD_BLOCKER
|
195
195
|
}
|
196
196
|
|
@@ -266,10 +266,10 @@ module SwitchmanInstJobs
|
|
266
266
|
shard_map = build_shard_map(scope, source_shard)
|
267
267
|
shard_map.each do |(target_shard, source_shard_ids)|
|
268
268
|
batch_move_jobs(
|
269
|
-
target_shard
|
270
|
-
source_shard
|
269
|
+
target_shard:,
|
270
|
+
source_shard:,
|
271
271
|
scope: scope.where(shard_id: source_shard_ids).where(locked_by: nil),
|
272
|
-
batch_size:
|
272
|
+
batch_size:
|
273
273
|
)
|
274
274
|
end
|
275
275
|
end
|
@@ -291,7 +291,7 @@ module SwitchmanInstJobs
|
|
291
291
|
end
|
292
292
|
|
293
293
|
def unblock_strand!(strand, new_parallelism: nil)
|
294
|
-
job_scope = ::Delayed::Job.where(strand:
|
294
|
+
job_scope = ::Delayed::Job.where(strand:)
|
295
295
|
raise JobsBlockedError if blocked_by_migrator?(job_scope)
|
296
296
|
|
297
297
|
::Delayed::Job.transaction do
|
@@ -321,7 +321,7 @@ module SwitchmanInstJobs
|
|
321
321
|
end
|
322
322
|
|
323
323
|
def unblock_singleton!(singleton)
|
324
|
-
job_scope = ::Delayed::Job.where(strand: nil, singleton:
|
324
|
+
job_scope = ::Delayed::Job.where(strand: nil, singleton:)
|
325
325
|
raise JobsBlockedError if blocked_by_migrator?(job_scope)
|
326
326
|
|
327
327
|
::Delayed::Job.transaction do
|
@@ -334,7 +334,7 @@ module SwitchmanInstJobs
|
|
334
334
|
if next_in_strand
|
335
335
|
0
|
336
336
|
elsif id
|
337
|
-
::Delayed::Job.where(id:
|
337
|
+
::Delayed::Job.where(id:).update_all(next_in_strand: true)
|
338
338
|
end
|
339
339
|
end
|
340
340
|
end
|
@@ -403,7 +403,7 @@ module SwitchmanInstJobs
|
|
403
403
|
@before_move_callbacks&.each do |proc|
|
404
404
|
proc.call(
|
405
405
|
old_job: job,
|
406
|
-
new_job:
|
406
|
+
new_job:
|
407
407
|
)
|
408
408
|
end
|
409
409
|
new_job
|
@@ -6,14 +6,14 @@ module SwitchmanInstJobs
|
|
6
6
|
module NewRelicJobInvoker
|
7
7
|
include ::NewRelic::Agent::Instrumentation::ControllerInstrumentation if defined?(::NewRelic)
|
8
8
|
|
9
|
-
def invoke_job(
|
9
|
+
def invoke_job(...)
|
10
10
|
options = {
|
11
11
|
category: NR_TRANSACTION_CATEGORY,
|
12
12
|
path: tag
|
13
13
|
}
|
14
14
|
|
15
15
|
perform_action_with_newrelic_trace(options) do
|
16
|
-
super(
|
16
|
+
super(...)
|
17
17
|
end
|
18
18
|
end
|
19
19
|
end
|
@@ -100,7 +100,7 @@ module SwitchmanInstJobs
|
|
100
100
|
|
101
101
|
def periodic_clear_shard_cache
|
102
102
|
# TODO: make this configurable
|
103
|
-
@timed_cache ||= TimedCache.new(-> { 60.
|
103
|
+
@timed_cache ||= TimedCache.new(-> { 60.seconds.ago }) do
|
104
104
|
::Switchman::Shard.clear_cache
|
105
105
|
end
|
106
106
|
@timed_cache.clear
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: switchman-inst-jobs
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.0
|
4
|
+
version: 4.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bryan Petty
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2025-
|
11
|
+
date: 2025-03-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: inst-jobs
|
@@ -50,20 +50,20 @@ dependencies:
|
|
50
50
|
requirements:
|
51
51
|
- - ">="
|
52
52
|
- !ruby/object:Gem::Version
|
53
|
-
version: '
|
53
|
+
version: '7.0'
|
54
54
|
- - "<"
|
55
55
|
- !ruby/object:Gem::Version
|
56
|
-
version: '
|
56
|
+
version: '8.0'
|
57
57
|
type: :runtime
|
58
58
|
prerelease: false
|
59
59
|
version_requirements: !ruby/object:Gem::Requirement
|
60
60
|
requirements:
|
61
61
|
- - ">="
|
62
62
|
- !ruby/object:Gem::Version
|
63
|
-
version: '
|
63
|
+
version: '7.0'
|
64
64
|
- - "<"
|
65
65
|
- !ruby/object:Gem::Version
|
66
|
-
version: '
|
66
|
+
version: '8.0'
|
67
67
|
- !ruby/object:Gem::Dependency
|
68
68
|
name: switchman
|
69
69
|
requirement: !ruby/object:Gem::Requirement
|
@@ -84,202 +84,6 @@ dependencies:
|
|
84
84
|
- - "<"
|
85
85
|
- !ruby/object:Gem::Version
|
86
86
|
version: '5.0'
|
87
|
-
- !ruby/object:Gem::Dependency
|
88
|
-
name: bundler
|
89
|
-
requirement: !ruby/object:Gem::Requirement
|
90
|
-
requirements:
|
91
|
-
- - ">="
|
92
|
-
- !ruby/object:Gem::Version
|
93
|
-
version: '0'
|
94
|
-
type: :development
|
95
|
-
prerelease: false
|
96
|
-
version_requirements: !ruby/object:Gem::Requirement
|
97
|
-
requirements:
|
98
|
-
- - ">="
|
99
|
-
- !ruby/object:Gem::Version
|
100
|
-
version: '0'
|
101
|
-
- !ruby/object:Gem::Dependency
|
102
|
-
name: byebug
|
103
|
-
requirement: !ruby/object:Gem::Requirement
|
104
|
-
requirements:
|
105
|
-
- - ">="
|
106
|
-
- !ruby/object:Gem::Version
|
107
|
-
version: '0'
|
108
|
-
type: :development
|
109
|
-
prerelease: false
|
110
|
-
version_requirements: !ruby/object:Gem::Requirement
|
111
|
-
requirements:
|
112
|
-
- - ">="
|
113
|
-
- !ruby/object:Gem::Version
|
114
|
-
version: '0'
|
115
|
-
- !ruby/object:Gem::Dependency
|
116
|
-
name: diplomat
|
117
|
-
requirement: !ruby/object:Gem::Requirement
|
118
|
-
requirements:
|
119
|
-
- - "~>"
|
120
|
-
- !ruby/object:Gem::Version
|
121
|
-
version: 2.5.1
|
122
|
-
type: :development
|
123
|
-
prerelease: false
|
124
|
-
version_requirements: !ruby/object:Gem::Requirement
|
125
|
-
requirements:
|
126
|
-
- - "~>"
|
127
|
-
- !ruby/object:Gem::Version
|
128
|
-
version: 2.5.1
|
129
|
-
- !ruby/object:Gem::Dependency
|
130
|
-
name: newrelic_rpm
|
131
|
-
requirement: !ruby/object:Gem::Requirement
|
132
|
-
requirements:
|
133
|
-
- - ">="
|
134
|
-
- !ruby/object:Gem::Version
|
135
|
-
version: '0'
|
136
|
-
type: :development
|
137
|
-
prerelease: false
|
138
|
-
version_requirements: !ruby/object:Gem::Requirement
|
139
|
-
requirements:
|
140
|
-
- - ">="
|
141
|
-
- !ruby/object:Gem::Version
|
142
|
-
version: '0'
|
143
|
-
- !ruby/object:Gem::Dependency
|
144
|
-
name: pg
|
145
|
-
requirement: !ruby/object:Gem::Requirement
|
146
|
-
requirements:
|
147
|
-
- - "~>"
|
148
|
-
- !ruby/object:Gem::Version
|
149
|
-
version: '1.0'
|
150
|
-
type: :development
|
151
|
-
prerelease: false
|
152
|
-
version_requirements: !ruby/object:Gem::Requirement
|
153
|
-
requirements:
|
154
|
-
- - "~>"
|
155
|
-
- !ruby/object:Gem::Version
|
156
|
-
version: '1.0'
|
157
|
-
- !ruby/object:Gem::Dependency
|
158
|
-
name: pry
|
159
|
-
requirement: !ruby/object:Gem::Requirement
|
160
|
-
requirements:
|
161
|
-
- - "~>"
|
162
|
-
- !ruby/object:Gem::Version
|
163
|
-
version: '0'
|
164
|
-
type: :development
|
165
|
-
prerelease: false
|
166
|
-
version_requirements: !ruby/object:Gem::Requirement
|
167
|
-
requirements:
|
168
|
-
- - "~>"
|
169
|
-
- !ruby/object:Gem::Version
|
170
|
-
version: '0'
|
171
|
-
- !ruby/object:Gem::Dependency
|
172
|
-
name: rake
|
173
|
-
requirement: !ruby/object:Gem::Requirement
|
174
|
-
requirements:
|
175
|
-
- - "~>"
|
176
|
-
- !ruby/object:Gem::Version
|
177
|
-
version: '13'
|
178
|
-
type: :development
|
179
|
-
prerelease: false
|
180
|
-
version_requirements: !ruby/object:Gem::Requirement
|
181
|
-
requirements:
|
182
|
-
- - "~>"
|
183
|
-
- !ruby/object:Gem::Version
|
184
|
-
version: '13'
|
185
|
-
- !ruby/object:Gem::Dependency
|
186
|
-
name: rspec
|
187
|
-
requirement: !ruby/object:Gem::Requirement
|
188
|
-
requirements:
|
189
|
-
- - "~>"
|
190
|
-
- !ruby/object:Gem::Version
|
191
|
-
version: '3.10'
|
192
|
-
type: :development
|
193
|
-
prerelease: false
|
194
|
-
version_requirements: !ruby/object:Gem::Requirement
|
195
|
-
requirements:
|
196
|
-
- - "~>"
|
197
|
-
- !ruby/object:Gem::Version
|
198
|
-
version: '3.10'
|
199
|
-
- !ruby/object:Gem::Dependency
|
200
|
-
name: rspec-rails
|
201
|
-
requirement: !ruby/object:Gem::Requirement
|
202
|
-
requirements:
|
203
|
-
- - "~>"
|
204
|
-
- !ruby/object:Gem::Version
|
205
|
-
version: '5.0'
|
206
|
-
type: :development
|
207
|
-
prerelease: false
|
208
|
-
version_requirements: !ruby/object:Gem::Requirement
|
209
|
-
requirements:
|
210
|
-
- - "~>"
|
211
|
-
- !ruby/object:Gem::Version
|
212
|
-
version: '5.0'
|
213
|
-
- !ruby/object:Gem::Dependency
|
214
|
-
name: rubocop-inst
|
215
|
-
requirement: !ruby/object:Gem::Requirement
|
216
|
-
requirements:
|
217
|
-
- - "~>"
|
218
|
-
- !ruby/object:Gem::Version
|
219
|
-
version: '1'
|
220
|
-
type: :development
|
221
|
-
prerelease: false
|
222
|
-
version_requirements: !ruby/object:Gem::Requirement
|
223
|
-
requirements:
|
224
|
-
- - "~>"
|
225
|
-
- !ruby/object:Gem::Version
|
226
|
-
version: '1'
|
227
|
-
- !ruby/object:Gem::Dependency
|
228
|
-
name: rubocop-rails
|
229
|
-
requirement: !ruby/object:Gem::Requirement
|
230
|
-
requirements:
|
231
|
-
- - "~>"
|
232
|
-
- !ruby/object:Gem::Version
|
233
|
-
version: '2.10'
|
234
|
-
type: :development
|
235
|
-
prerelease: false
|
236
|
-
version_requirements: !ruby/object:Gem::Requirement
|
237
|
-
requirements:
|
238
|
-
- - "~>"
|
239
|
-
- !ruby/object:Gem::Version
|
240
|
-
version: '2.10'
|
241
|
-
- !ruby/object:Gem::Dependency
|
242
|
-
name: rubocop-rake
|
243
|
-
requirement: !ruby/object:Gem::Requirement
|
244
|
-
requirements:
|
245
|
-
- - "~>"
|
246
|
-
- !ruby/object:Gem::Version
|
247
|
-
version: '0.6'
|
248
|
-
type: :development
|
249
|
-
prerelease: false
|
250
|
-
version_requirements: !ruby/object:Gem::Requirement
|
251
|
-
requirements:
|
252
|
-
- - "~>"
|
253
|
-
- !ruby/object:Gem::Version
|
254
|
-
version: '0.6'
|
255
|
-
- !ruby/object:Gem::Dependency
|
256
|
-
name: rubocop-rspec
|
257
|
-
requirement: !ruby/object:Gem::Requirement
|
258
|
-
requirements:
|
259
|
-
- - "~>"
|
260
|
-
- !ruby/object:Gem::Version
|
261
|
-
version: '2.4'
|
262
|
-
type: :development
|
263
|
-
prerelease: false
|
264
|
-
version_requirements: !ruby/object:Gem::Requirement
|
265
|
-
requirements:
|
266
|
-
- - "~>"
|
267
|
-
- !ruby/object:Gem::Version
|
268
|
-
version: '2.4'
|
269
|
-
- !ruby/object:Gem::Dependency
|
270
|
-
name: simplecov
|
271
|
-
requirement: !ruby/object:Gem::Requirement
|
272
|
-
requirements:
|
273
|
-
- - "~>"
|
274
|
-
- !ruby/object:Gem::Version
|
275
|
-
version: '0.21'
|
276
|
-
type: :development
|
277
|
-
prerelease: false
|
278
|
-
version_requirements: !ruby/object:Gem::Requirement
|
279
|
-
requirements:
|
280
|
-
- - "~>"
|
281
|
-
- !ruby/object:Gem::Version
|
282
|
-
version: '0.21'
|
283
87
|
description:
|
284
88
|
email:
|
285
89
|
- bpetty@instructure.com
|
@@ -367,7 +171,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
367
171
|
requirements:
|
368
172
|
- - ">="
|
369
173
|
- !ruby/object:Gem::Version
|
370
|
-
version: '3.
|
174
|
+
version: '3.1'
|
371
175
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
372
176
|
requirements:
|
373
177
|
- - ">="
|