switchman-inst-jobs 3.2.2 → 3.2.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 98c61abb5cfc89f0f020fdaf985b7dd97620813192052fa6859504d06b9d8394
4
- data.tar.gz: d57c6382a723425eb15abbcc7bcd62869b3a31defc15df1339e2d81ca656d8cd
3
+ metadata.gz: 14940745f93050077a1b203e0fe42aa6df0fb7ba8b4ffd79c009bddfec34012f
4
+ data.tar.gz: 1f98af701978926bd2d2d1e51889d322b578357ce2fd18fc2a6c95ebc6688a44
5
5
  SHA512:
6
- metadata.gz: 31f03b8c1ccb6d95e7824671728e78ddb362b326fb007509db9b543621b17f22179d097f383e43c2b233fe78a563eec09a4fddc6d4af872cc4554fa1f68a6e88
7
- data.tar.gz: 5a84c259b4dfe96df5d8cad336b0ba4555fb0f89e110d172f59fdbfeca0f090fed9ad9e1028d361cbf281997c6415dd6ae2e828de47d23b519706e624f580f46
6
+ metadata.gz: e181123386e69c8ac6756c97180e656e78ef32f706453352372f0592b16f1f95bd30d6c4ae4357c293d4739c8223d609630e5fe880460f51d06572567ef60b67
7
+ data.tar.gz: f4b541f47270c59db82e653055acd26c39161dd9a6c4866a8d7e1232484aeb592222c920cdd1b45914a8d08d53ef7369c20891c871bae290609c8f573faba9bc
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ class UpdateConflictingSingletonFunctionToUseIndex < ActiveRecord::Migration[5.2]
4
+ def up
5
+ execute(<<~SQL)
6
+ CREATE OR REPLACE FUNCTION #{connection.quote_table_name('delayed_jobs_before_unlock_delete_conflicting_singletons_row_fn')} () RETURNS trigger AS $$
7
+ BEGIN
8
+ DELETE FROM delayed_jobs WHERE id<>OLD.id AND singleton=OLD.singleton AND locked_by IS NULL;
9
+ RETURN NEW;
10
+ END;
11
+ $$ LANGUAGE plpgsql SET search_path TO #{::Switchman::Shard.current.name};
12
+ SQL
13
+ end
14
+
15
+ def down
16
+ execute(<<~SQL)
17
+ CREATE OR REPLACE FUNCTION #{connection.quote_table_name('delayed_jobs_before_unlock_delete_conflicting_singletons_row_fn')} () RETURNS trigger AS $$
18
+ BEGIN
19
+ IF EXISTS (SELECT 1 FROM delayed_jobs j2 WHERE j2.singleton=OLD.singleton) THEN
20
+ DELETE FROM delayed_jobs WHERE id<>OLD.id AND singleton=OLD.singleton;
21
+ END IF;
22
+ RETURN NEW;
23
+ END;
24
+ $$ LANGUAGE plpgsql SET search_path TO #{::Switchman::Shard.current.name};
25
+ SQL
26
+ end
27
+ end
@@ -277,7 +277,10 @@ module SwitchmanInstJobs
277
277
  connection = ::Delayed::Job.connection
278
278
  quoted_keys = keys.map { |k| connection.quote_column_name(k) }.join(', ')
279
279
 
280
- connection.execute "COPY #{::Delayed::Job.quoted_table_name} (#{quoted_keys}) FROM STDIN"
280
+ connection.execute 'DROP TABLE IF EXISTS delayed_jobs_bulk_copy'
281
+ connection.execute "CREATE TEMPORARY TABLE delayed_jobs_bulk_copy
282
+ (LIKE #{::Delayed::Job.quoted_table_name} INCLUDING DEFAULTS)"
283
+ connection.execute "COPY delayed_jobs_bulk_copy (#{quoted_keys}) FROM STDIN"
281
284
  records.map do |record|
282
285
  connection.raw_connection.put_copy_data("#{keys.map { |k| quote_text(record[k]) }.join("\t")}\n")
283
286
  end
@@ -289,6 +292,9 @@ module SwitchmanInstJobs
289
292
  rescue StandardError => e
290
293
  raise connection.send(:translate_exception, e, 'COPY FROM STDIN')
291
294
  end
295
+ connection.execute "INSERT INTO #{::Delayed::Job.quoted_table_name} (#{quoted_keys})
296
+ SELECT #{quoted_keys} FROM delayed_jobs_bulk_copy
297
+ ON CONFLICT (singleton) WHERE singleton IS NOT NULL AND locked_by IS NULL DO NOTHING"
292
298
  result.cmd_tuples
293
299
  end
294
300
 
@@ -1,3 +1,3 @@
1
1
  module SwitchmanInstJobs
2
- VERSION = '3.2.2'.freeze
2
+ VERSION = '3.2.4'.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: 3.2.2
4
+ version: 3.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bryan Petty
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-09-28 00:00:00.000000000 Z
11
+ date: 2021-10-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: inst-jobs
@@ -19,7 +19,7 @@ dependencies:
19
19
  version: 2.4.9
20
20
  - - "<"
21
21
  - !ruby/object:Gem::Version
22
- version: '3.0'
22
+ version: '4.0'
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
@@ -29,7 +29,7 @@ dependencies:
29
29
  version: 2.4.9
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
- version: '3.0'
32
+ version: '4.0'
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: parallel
35
35
  requirement: !ruby/object:Gem::Requirement
@@ -300,6 +300,7 @@ files:
300
300
  - db/migrate/20210812210128_add_singleton_column.rb
301
301
  - db/migrate/20210917232626_add_delete_conflicting_singletons_before_unlock_trigger.rb
302
302
  - db/migrate/20210928174754_fix_singleton_condition_in_before_insert.rb
303
+ - db/migrate/20210929204903_update_conflicting_singleton_function_to_use_index.rb
303
304
  - lib/switchman-inst-jobs.rb
304
305
  - lib/switchman_inst_jobs.rb
305
306
  - lib/switchman_inst_jobs/active_record/connection_adapters/postgresql_adapter.rb
@@ -339,7 +340,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
339
340
  - !ruby/object:Gem::Version
340
341
  version: '0'
341
342
  requirements: []
342
- rubygems_version: 3.2.24
343
+ rubygems_version: 3.1.4
343
344
  signing_key:
344
345
  specification_version: 4
345
346
  summary: Switchman and Instructure Jobs compatibility gem.