switchman-inst-jobs 4.1.0 → 4.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a05ca311e09076da7e5fdb4cab4dc9100f2c43f63fd4607b263f23511c694aee
4
- data.tar.gz: 27808a1eb26baa6729e176ca9d0be90b885cd0f48f75c52b5148296d9b9a7583
3
+ metadata.gz: 469e2aadfc5975a5a52eff1f92550e0d811bd30962cc25346f287e829ec88e7c
4
+ data.tar.gz: 10956f8da4d2662236a7ef61a092e6cd568e46886729428025625f8a17fc2ce9
5
5
  SHA512:
6
- metadata.gz: ea7694250731e90416a1b826b7728600ecd299da0f704434ec06d81b3c0ade0012f29f06a9f7e78b1cf727f39a3e5052547fbe3d5d8683ac54ae804ea37e0de1
7
- data.tar.gz: 3ef9c702ae77152b6576ed21828dbd97388bd1d1f87efcc104ead778bb9503f129ad5515cab5fafa6371bc96026d2f18ab3c0f818fe4d92bada28b082156c02d
6
+ metadata.gz: aa941c70362bbe2c61b0cb155110fd6e9905af1720f8925fbe80eb990ffc242d1788873b19e273b914e0a1b56c4346984a3ae9e3486454f2304c826d13bb42b7
7
+ data.tar.gz: 777f46f0ed99fa7f2a298ce6c839f5be066fb5a1a553833d80527d20c1925e7a119411ecea6e6b6c0fad205920d1e9bcea9b2850f1295938cf31b02f9b74d659
@@ -1,6 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "set"
4
3
  require "parallel"
5
4
 
6
5
  module SwitchmanInstJobs
@@ -230,14 +229,16 @@ module SwitchmanInstJobs
230
229
  blocked_shard_ids = blocked_shards.pluck(:id)
231
230
  query = lambda { |column, scope|
232
231
  ::Delayed::Job
233
- .where(id: ::Delayed::Job.select("DISTINCT ON (#{column}) id")
234
- .where(scope)
232
+ .where(id: ::Delayed::Job
233
+ .with(all_col: ::Delayed::Job.and(scope).distinct.select(column))
234
+ .with(blocked_col: ::Delayed::Job.from("all_col").select(column).where.not(
235
+ ::Delayed::Job.select(1)
236
+ .where(next_in_strand: true).or(::Delayed::Job.where(source: "JobsMigrator::StrandBlocker"))
237
+ .where("#{column} = all_col.#{column}").arel.exists
238
+ ))
239
+ .select("DISTINCT ON (#{column}) id")
235
240
  .where.not(shard_id: blocked_shard_ids)
236
- .where(
237
- ::Delayed::Job.select(1).from("#{::Delayed::Job.quoted_table_name} dj2")
238
- .where("dj2.next_in_strand = true OR dj2.source = 'JobsMigrator::StrandBlocker'")
239
- .where("dj2.#{column} = delayed_jobs.#{column}").arel.exists.not
240
- )
241
+ .where({ column => ::Delayed::Job.from("blocked_col").select(column) })
241
242
  .order(column, :strand_order_override, :id)).limit(batch_size)
242
243
  }
243
244
 
@@ -249,12 +250,13 @@ module SwitchmanInstJobs
249
250
  # batches
250
251
 
251
252
  loop do
252
- break if query.call(:strand, "strand IS NOT NULL").update_all(next_in_strand: true).zero?
253
+ break if query.call(:strand, ::Delayed::Job.where.not(strand: nil)).update_all(next_in_strand: true).zero?
253
254
  end
254
255
 
255
256
  loop do
256
257
  break if query.call(:singleton,
257
- "strand IS NULL AND singleton IS NOT NULL").update_all(next_in_strand: true).zero?
258
+ ::Delayed::Job.where(strand: nil)
259
+ .where.not(singleton: nil)).update_all(next_in_strand: true).zero?
258
260
  end
259
261
  end
260
262
  end
@@ -347,8 +349,8 @@ module SwitchmanInstJobs
347
349
 
348
350
  private
349
351
 
350
- def create_blocker_job(**kwargs)
351
- first_job = ::Delayed::Job.create!(**kwargs, next_in_strand: false)
352
+ def create_blocker_job(**)
353
+ first_job = ::Delayed::Job.create!(**, next_in_strand: false)
352
354
  first_job.payload_object = ::Delayed::PerformableMethod.new(Kernel, :sleep, args: [0])
353
355
  first_job.tag = "Kernel.sleep"
354
356
  first_job.source = "JobsMigrator::StrandBlocker"
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SwitchmanInstJobs
4
- VERSION = "4.1.0"
4
+ VERSION = "4.3.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.1.0
4
+ version: 4.3.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-03-24 00:00:00.000000000 Z
11
+ date: 2025-08-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: inst-jobs
@@ -53,7 +53,7 @@ dependencies:
53
53
  version: '7.0'
54
54
  - - "<"
55
55
  - !ruby/object:Gem::Version
56
- version: '8.0'
56
+ version: '8.1'
57
57
  type: :runtime
58
58
  prerelease: false
59
59
  version_requirements: !ruby/object:Gem::Requirement
@@ -63,7 +63,7 @@ dependencies:
63
63
  version: '7.0'
64
64
  - - "<"
65
65
  - !ruby/object:Gem::Version
66
- version: '8.0'
66
+ version: '8.1'
67
67
  - !ruby/object:Gem::Dependency
68
68
  name: switchman
69
69
  requirement: !ruby/object:Gem::Requirement
@@ -171,7 +171,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
171
171
  requirements:
172
172
  - - ">="
173
173
  - !ruby/object:Gem::Version
174
- version: '3.1'
174
+ version: '3.2'
175
175
  required_rubygems_version: !ruby/object:Gem::Requirement
176
176
  requirements:
177
177
  - - ">="