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 +4 -4
- data/lib/switchman_inst_jobs/jobs_migrator.rb +14 -12
- data/lib/switchman_inst_jobs/version.rb +1 -1
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 469e2aadfc5975a5a52eff1f92550e0d811bd30962cc25346f287e829ec88e7c
|
4
|
+
data.tar.gz: 10956f8da4d2662236a7ef61a092e6cd568e46886729428025625f8a17fc2ce9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
234
|
-
.
|
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,
|
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
|
-
|
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(**
|
351
|
-
first_job = ::Delayed::Job.create!(
|
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"
|
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.
|
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-
|
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.
|
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.
|
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.
|
174
|
+
version: '3.2'
|
175
175
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
176
176
|
requirements:
|
177
177
|
- - ">="
|