switchman-inst-jobs 4.0.5 → 4.0.8

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: d08a92d9006c02ccc63baced88bc83fa916a2c78f4634f6b4344de2807b2dc57
4
- data.tar.gz: 6ff57e36692acaea9e87cc15129e29e79d1963216c65c471ce3decb5cf600045
3
+ metadata.gz: b220157fed7508b8f0412dcb44e31af64ae36f7752d0b9740376c910be115fe6
4
+ data.tar.gz: b35f1e9f59dab46393e6ff037f9c05d6b8f107bfd9a811a943865f4334785515
5
5
  SHA512:
6
- metadata.gz: ae104486ac82a41356510c2793aeee3e883ee669192a72b694678b3c4800af9356308c4d938bd1f18432eecf4362897252c7ea7f13274b73c1050acab0fd6408
7
- data.tar.gz: f372dfe516b76b19c68c861574b3c24c50af8b9f0101f4a846dfa7722fc43e162e0b907e9270362ca0217cf543ed3eb0288baf65ce4158d8f7e7ccb92b9fde2f
6
+ metadata.gz: fda1eb1f28deca4430edf8a37ec4c3b10e5323aa854d5358e887aa971b5f2d4c5ff8660e8e08aee24b850358ed2084c1532d72c053dcccf4bf8f23a565038cd2
7
+ data.tar.gz: abf4cf28af1cea47c438ca5215d24dd5aac4978ccd14f3d7f9d9a91f8b1f1bdce05b96c159961c238afd20d4ef9383d51ef40d198c7e9294672716d3123b3b58
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ class AddFailedJobsIndicies < ActiveRecord::Migration[5.2]
4
+ disable_ddl_transaction!
5
+
6
+ def change
7
+ add_index :failed_jobs, :failed_at, algorithm: :concurrently
8
+ add_index :failed_jobs, :strand, where: 'strand IS NOT NULL', algorithm: :concurrently
9
+ add_index :failed_jobs, :singleton, where: 'singleton IS NOT NULL', algorithm: :concurrently
10
+ add_index :failed_jobs, :tag, algorithm: :concurrently
11
+ end
12
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ class AddRequeuedJobIdToFailedJobs < ActiveRecord::Migration[6.0]
4
+ def change
5
+ add_column :failed_jobs, :requeued_job_id, :integer, limit: 8
6
+ end
7
+ end
@@ -6,7 +6,9 @@ module SwitchmanInstJobs
6
6
  module ClassMethods
7
7
  def current_switchman_shard
8
8
  connected_to_stack.reverse_each do |hash|
9
- return hash[:switchman_shard] if hash[:switchman_shard] && hash[:klasses].include?(connection_classes)
9
+ if hash[:switchman_shard] && hash[:klasses].include?(connection_class_for_self)
10
+ return hash[:switchman_shard]
11
+ end
10
12
  end
11
13
 
12
14
  ::ActiveRecord::Base.current_switchman_shard.delayed_jobs_shard
@@ -14,7 +14,7 @@ module SwitchmanInstJobs
14
14
  module ClassMethods
15
15
  def enqueue(object, **options)
16
16
  ::Switchman::Shard.periodic_clear_shard_cache
17
- current_shard = ::Switchman::Shard.current
17
+ current_shard = options[:current_shard] || ::Switchman::Shard.current
18
18
  enqueue_options = options.merge(
19
19
  current_shard: current_shard
20
20
  )
@@ -4,6 +4,7 @@ module SwitchmanInstJobs
4
4
  def delay(sender: nil, synchronous: false, **enqueue_args)
5
5
  sender ||= __calculate_sender_for_delay
6
6
  synchronous ||= ::Switchman::DatabaseServer.creating_new_shard
7
+ enqueue_args[:current_shard] = ::Switchman::Shard.current
7
8
 
8
9
  super
9
10
  end
@@ -127,7 +127,13 @@ module SwitchmanInstJobs
127
127
  # the lock ensures the blocker always gets unlocked
128
128
  first = value_scope.where.not(locked_by: nil).next_in_strand_order.lock.first
129
129
  if first
130
- create_blocker_job(queue: first.queue, **{ column => value }, **blocker_job_kwargs)
130
+ create_blocker_job(
131
+ queue: first.queue,
132
+ shard_id: first.shard_id,
133
+ **{ column => value },
134
+ **blocker_job_kwargs
135
+ )
136
+
131
137
  # the rest of 3) is taken care of here
132
138
  # make sure that all the jobs moved over are NOT next in strand
133
139
  ::Delayed::Job.where(next_in_strand: true, locked_by: nil, **{ column => value }).
@@ -160,12 +166,15 @@ module SwitchmanInstJobs
160
166
  locked_by: ::Delayed::Backend::Base::ON_HOLD_BLOCKER
161
167
  }
162
168
 
169
+ quoted_function_name = ::Delayed::Job.connection.quote_table_name('half_md5_as_bigint')
163
170
  strand_advisory_lock_fn = lambda do |value|
164
- ::Delayed::Job.connection.execute("SELECT pg_advisory_xact_lock(half_md5_as_bigint('#{value}'))")
171
+ ::Delayed::Job.connection.execute("SELECT pg_advisory_xact_lock(#{quoted_function_name}('#{value}'))")
165
172
  end
166
173
 
167
174
  singleton_advisory_lock_fn = lambda do |value|
168
- ::Delayed::Job.connection.execute("SELECT pg_advisory_xact_lock(half_md5_as_bigint('singleton:#{value}'))")
175
+ ::Delayed::Job.connection.execute(
176
+ "SELECT pg_advisory_xact_lock(#{quoted_function_name}('singleton:#{value}'))"
177
+ )
169
178
  end
170
179
 
171
180
  handler.call(strand_scope, :strand, {}, strand_advisory_lock_fn)
@@ -1,3 +1,3 @@
1
1
  module SwitchmanInstJobs
2
- VERSION = '4.0.5'.freeze
2
+ VERSION = '4.0.8'.freeze
3
3
  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.5
4
+ version: 4.0.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bryan Petty
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-02-23 00:00:00.000000000 Z
11
+ date: 2022-07-05 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: '6.1'
54
54
  - - "<"
55
55
  - !ruby/object:Gem::Version
56
- version: '6.2'
56
+ version: '7.1'
57
57
  type: :runtime
58
58
  prerelease: false
59
59
  version_requirements: !ruby/object:Gem::Requirement
@@ -63,27 +63,35 @@ dependencies:
63
63
  version: '6.1'
64
64
  - - "<"
65
65
  - !ruby/object:Gem::Version
66
- version: '6.2'
66
+ version: '7.1'
67
67
  - !ruby/object:Gem::Dependency
68
68
  name: switchman
69
69
  requirement: !ruby/object:Gem::Requirement
70
70
  requirements:
71
71
  - - "~>"
72
72
  - !ruby/object:Gem::Version
73
- version: '3.0'
74
- - - ">="
75
- - !ruby/object:Gem::Version
76
- version: 3.0.7
73
+ version: '3.1'
77
74
  type: :runtime
78
75
  prerelease: false
79
76
  version_requirements: !ruby/object:Gem::Requirement
80
77
  requirements:
81
78
  - - "~>"
82
79
  - !ruby/object:Gem::Version
83
- version: '3.0'
84
- - - ">="
80
+ version: '3.1'
81
+ - !ruby/object:Gem::Dependency
82
+ name: appraisal
83
+ requirement: !ruby/object:Gem::Requirement
84
+ requirements:
85
+ - - "~>"
86
+ - !ruby/object:Gem::Version
87
+ version: 2.3.0
88
+ type: :development
89
+ prerelease: false
90
+ version_requirements: !ruby/object:Gem::Requirement
91
+ requirements:
92
+ - - "~>"
85
93
  - !ruby/object:Gem::Version
86
- version: 3.0.7
94
+ version: 2.3.0
87
95
  - !ruby/object:Gem::Dependency
88
96
  name: bundler
89
97
  requirement: !ruby/object:Gem::Requirement
@@ -280,21 +288,7 @@ dependencies:
280
288
  - - "~>"
281
289
  - !ruby/object:Gem::Version
282
290
  version: '0.21'
283
- - !ruby/object:Gem::Dependency
284
- name: wwtd
285
- requirement: !ruby/object:Gem::Requirement
286
- requirements:
287
- - - "~>"
288
- - !ruby/object:Gem::Version
289
- version: '1.4'
290
- type: :development
291
- prerelease: false
292
- version_requirements: !ruby/object:Gem::Requirement
293
- requirements:
294
- - - "~>"
295
- - !ruby/object:Gem::Version
296
- version: '1.4'
297
- description:
291
+ description:
298
292
  email:
299
293
  - bpetty@instructure.com
300
294
  executables: []
@@ -344,6 +338,8 @@ files:
344
338
  - db/migrate/20220128084800_update_insert_trigger_for_singleton_unique_constraint_change.rb
345
339
  - db/migrate/20220128084900_update_delete_trigger_for_singleton_unique_constraint_change.rb
346
340
  - db/migrate/20220203063200_remove_old_singleton_index.rb
341
+ - db/migrate/20220328152900_add_failed_jobs_indicies.rb
342
+ - db/migrate/20220519204546_add_requeued_job_id_to_failed_jobs.rb
347
343
  - lib/switchman-inst-jobs.rb
348
344
  - lib/switchman_inst_jobs.rb
349
345
  - lib/switchman_inst_jobs/active_record/connection_adapters/postgresql_adapter.rb
@@ -371,7 +367,7 @@ licenses:
371
367
  metadata:
372
368
  allowed_push_host: https://rubygems.org
373
369
  rubygems_mfa_required: 'true'
374
- post_install_message:
370
+ post_install_message:
375
371
  rdoc_options: []
376
372
  require_paths:
377
373
  - lib
@@ -379,15 +375,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
379
375
  requirements:
380
376
  - - ">="
381
377
  - !ruby/object:Gem::Version
382
- version: '2.6'
378
+ version: '2.7'
383
379
  required_rubygems_version: !ruby/object:Gem::Requirement
384
380
  requirements:
385
381
  - - ">="
386
382
  - !ruby/object:Gem::Version
387
383
  version: '0'
388
384
  requirements: []
389
- rubygems_version: 3.1.4
390
- signing_key:
385
+ rubygems_version: 3.1.6
386
+ signing_key:
391
387
  specification_version: 4
392
388
  summary: Switchman and Instructure Jobs compatibility gem.
393
389
  test_files: []