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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 31b6b1d2dfe3070a63ed755c287ae3b744a42bf16fc57d62dcbc28569e8adeed
4
- data.tar.gz: 7ab79f81effb0e8da6ee01efea3cb10920f601a5a007d6c55b784983b190f1b3
3
+ metadata.gz: a05ca311e09076da7e5fdb4cab4dc9100f2c43f63fd4607b263f23511c694aee
4
+ data.tar.gz: 27808a1eb26baa6729e176ca9d0be90b885cd0f48f75c52b5148296d9b9a7583
5
5
  SHA512:
6
- metadata.gz: f8e90f264c6027a3107313569d2d394724bde9a7e30fd1a9b57cafff248bafc8c0405b99018a126e6d7c94bdddda8ec803b080b4fbcb4f5e1b2abceb68f2d02a
7
- data.tar.gz: e7935969ea9bfca9f67b6d133220e6355b264fca916bb003ce8e3e1c0134d77c1d2de59c162623ed783b19fd3c27faeab204a8984c72e3f79967ece531957b24
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: 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
- def configured_shard_ids
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
@@ -3,7 +3,7 @@
3
3
  module SwitchmanInstJobs
4
4
  module GuardRail
5
5
  module ClassMethods
6
- def activate(env, &block)
6
+ def activate(env, &)
7
7
  if ::ActiveRecord::Migration.open_migrations.positive?
8
8
  yield
9
9
  else
@@ -21,7 +21,7 @@ module SwitchmanInstJobs
21
21
  @validation_callbacks = []
22
22
  end
23
23
 
24
- def transaction_on(shards, &block)
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, &block)
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: shard, target_shard: ::Switchman::Shard.find(target_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: target_shard,
175
- source_shard: source_shard,
174
+ target_shard:,
175
+ source_shard:,
176
176
  scope: jobs_scope,
177
- batch_size: 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: DateTime.now,
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: target_shard,
270
- source_shard: 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: 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: 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: 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: id).update_all(next_in_strand: true)
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: 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(*args, &block)
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(*args, &block)
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.to_i.seconds.ago }) do
103
+ @timed_cache ||= TimedCache.new(-> { 60.seconds.ago }) do
104
104
  ::Switchman::Shard.clear_cache
105
105
  end
106
106
  @timed_cache.clear
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SwitchmanInstJobs
4
- VERSION = "4.0.17"
4
+ VERSION = "4.1.0"
5
5
  end
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.17
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-02-13 00:00:00.000000000 Z
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: '6.1'
53
+ version: '7.0'
54
54
  - - "<"
55
55
  - !ruby/object:Gem::Version
56
- version: '7.2'
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: '6.1'
63
+ version: '7.0'
64
64
  - - "<"
65
65
  - !ruby/object:Gem::Version
66
- version: '7.2'
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.0'
174
+ version: '3.1'
371
175
  required_rubygems_version: !ruby/object:Gem::Requirement
372
176
  requirements:
373
177
  - - ">="