inst-jobs 2.0.0 → 3.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.
Files changed (108) hide show
  1. checksums.yaml +4 -4
  2. data/db/migrate/20101216224513_create_delayed_jobs.rb +9 -7
  3. data/db/migrate/20110531144916_cleanup_delayed_jobs_indexes.rb +8 -13
  4. data/db/migrate/20110610213249_optimize_delayed_jobs.rb +8 -8
  5. data/db/migrate/20110831210257_add_delayed_jobs_next_in_strand.rb +25 -25
  6. data/db/migrate/20120510004759_delayed_jobs_delete_trigger_lock_for_update.rb +4 -8
  7. data/db/migrate/20120531150712_drop_psql_jobs_pop_fn.rb +1 -3
  8. data/db/migrate/20120607164022_delayed_jobs_use_advisory_locks.rb +11 -15
  9. data/db/migrate/20120607181141_index_jobs_on_locked_by.rb +1 -1
  10. data/db/migrate/20120608191051_add_jobs_run_at_index.rb +2 -2
  11. data/db/migrate/20120927184213_change_delayed_jobs_handler_to_text.rb +1 -1
  12. data/db/migrate/20140505215510_copy_failed_jobs_original_id.rb +2 -3
  13. data/db/migrate/20150807133223_add_max_concurrent_to_jobs.rb +9 -13
  14. data/db/migrate/20151210162949_improve_max_concurrent.rb +4 -8
  15. data/db/migrate/20161206323555_add_back_default_string_limits_jobs.rb +3 -2
  16. data/db/migrate/20181217155351_speed_up_max_concurrent_triggers.rb +13 -17
  17. data/db/migrate/20200330230722_add_id_to_get_delayed_jobs_index.rb +8 -8
  18. data/db/migrate/20200824222232_speed_up_max_concurrent_delete_trigger.rb +72 -77
  19. data/db/migrate/20200825011002_add_strand_order_override.rb +93 -97
  20. data/db/migrate/20210809145804_add_n_strand_index.rb +12 -0
  21. data/db/migrate/20210812210128_add_singleton_column.rb +200 -0
  22. data/db/migrate/20210917232626_add_delete_conflicting_singletons_before_unlock_trigger.rb +27 -0
  23. data/db/migrate/20210928174754_fix_singleton_condition_in_before_insert.rb +56 -0
  24. data/db/migrate/20210929204903_update_conflicting_singleton_function_to_use_index.rb +27 -0
  25. data/db/migrate/20211101190934_update_after_delete_trigger_for_singleton_index.rb +137 -0
  26. data/db/migrate/20211207094200_update_after_delete_trigger_for_singleton_transition_cases.rb +171 -0
  27. data/db/migrate/20211220112800_fix_singleton_race_condition_insert.rb +59 -0
  28. data/db/migrate/20211220113000_fix_singleton_race_condition_delete.rb +207 -0
  29. data/db/migrate/20220127091200_fix_singleton_unique_constraint.rb +31 -0
  30. data/db/migrate/20220128084800_update_insert_trigger_for_singleton_unique_constraint_change.rb +60 -0
  31. data/db/migrate/20220128084900_update_delete_trigger_for_singleton_unique_constraint_change.rb +209 -0
  32. data/db/migrate/20220203063200_remove_old_singleton_index.rb +31 -0
  33. data/db/migrate/20220328152900_add_failed_jobs_indicies.rb +12 -0
  34. data/exe/inst_jobs +3 -2
  35. data/lib/delayed/backend/active_record.rb +226 -168
  36. data/lib/delayed/backend/base.rb +119 -72
  37. data/lib/delayed/batch.rb +11 -9
  38. data/lib/delayed/cli.rb +98 -84
  39. data/lib/delayed/core_ext/kernel.rb +4 -2
  40. data/lib/delayed/daemon.rb +70 -74
  41. data/lib/delayed/job_tracking.rb +26 -25
  42. data/lib/delayed/lifecycle.rb +28 -23
  43. data/lib/delayed/log_tailer.rb +17 -17
  44. data/lib/delayed/logging.rb +13 -16
  45. data/lib/delayed/message_sending.rb +43 -52
  46. data/lib/delayed/performable_method.rb +6 -8
  47. data/lib/delayed/periodic.rb +72 -68
  48. data/lib/delayed/plugin.rb +2 -4
  49. data/lib/delayed/pool.rb +205 -168
  50. data/lib/delayed/rails_reloader_plugin.rb +30 -0
  51. data/lib/delayed/server/helpers.rb +6 -6
  52. data/lib/delayed/server.rb +51 -54
  53. data/lib/delayed/settings.rb +96 -81
  54. data/lib/delayed/testing.rb +21 -22
  55. data/lib/delayed/version.rb +1 -1
  56. data/lib/delayed/work_queue/in_process.rb +21 -17
  57. data/lib/delayed/work_queue/parent_process/client.rb +55 -53
  58. data/lib/delayed/work_queue/parent_process/server.rb +245 -207
  59. data/lib/delayed/work_queue/parent_process.rb +52 -53
  60. data/lib/delayed/worker/consul_health_check.rb +32 -33
  61. data/lib/delayed/worker/health_check.rb +35 -27
  62. data/lib/delayed/worker/null_health_check.rb +3 -1
  63. data/lib/delayed/worker/process_helper.rb +11 -12
  64. data/lib/delayed/worker.rb +257 -244
  65. data/lib/delayed/yaml_extensions.rb +12 -10
  66. data/lib/delayed_job.rb +37 -37
  67. data/lib/inst-jobs.rb +1 -1
  68. data/spec/active_record_job_spec.rb +152 -139
  69. data/spec/delayed/cli_spec.rb +7 -7
  70. data/spec/delayed/daemon_spec.rb +10 -9
  71. data/spec/delayed/message_sending_spec.rb +16 -9
  72. data/spec/delayed/periodic_spec.rb +14 -21
  73. data/spec/delayed/server_spec.rb +38 -38
  74. data/spec/delayed/settings_spec.rb +26 -25
  75. data/spec/delayed/work_queue/in_process_spec.rb +8 -9
  76. data/spec/delayed/work_queue/parent_process/client_spec.rb +17 -12
  77. data/spec/delayed/work_queue/parent_process/server_spec.rb +118 -42
  78. data/spec/delayed/work_queue/parent_process_spec.rb +21 -23
  79. data/spec/delayed/worker/consul_health_check_spec.rb +37 -50
  80. data/spec/delayed/worker/health_check_spec.rb +60 -52
  81. data/spec/delayed/worker_spec.rb +53 -24
  82. data/spec/sample_jobs.rb +45 -15
  83. data/spec/shared/delayed_batch.rb +74 -67
  84. data/spec/shared/delayed_method.rb +143 -102
  85. data/spec/shared/performable_method.rb +39 -38
  86. data/spec/shared/shared_backend.rb +801 -440
  87. data/spec/shared/testing.rb +14 -14
  88. data/spec/shared/worker.rb +157 -149
  89. data/spec/shared_jobs_specs.rb +13 -13
  90. data/spec/spec_helper.rb +57 -56
  91. metadata +183 -103
  92. data/lib/delayed/backend/redis/bulk_update.lua +0 -50
  93. data/lib/delayed/backend/redis/destroy_job.lua +0 -2
  94. data/lib/delayed/backend/redis/enqueue.lua +0 -29
  95. data/lib/delayed/backend/redis/fail_job.lua +0 -5
  96. data/lib/delayed/backend/redis/find_available.lua +0 -3
  97. data/lib/delayed/backend/redis/functions.rb +0 -59
  98. data/lib/delayed/backend/redis/get_and_lock_next_available.lua +0 -17
  99. data/lib/delayed/backend/redis/includes/jobs_common.lua +0 -203
  100. data/lib/delayed/backend/redis/job.rb +0 -535
  101. data/lib/delayed/backend/redis/set_running.lua +0 -5
  102. data/lib/delayed/backend/redis/tickle_strand.lua +0 -2
  103. data/spec/gemfiles/42.gemfile +0 -7
  104. data/spec/gemfiles/50.gemfile +0 -7
  105. data/spec/gemfiles/51.gemfile +0 -7
  106. data/spec/gemfiles/52.gemfile +0 -7
  107. data/spec/gemfiles/60.gemfile +0 -7
  108. data/spec/redis_job_spec.rb +0 -148
data/spec/spec_helper.rb CHANGED
@@ -1,105 +1,106 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'delayed_job'
4
- require 'delayed/testing'
3
+ require "delayed_job"
4
+ require "delayed/testing"
5
5
 
6
- require 'database_cleaner'
7
- require 'rack/test'
8
- require 'test_after_commit' if ::Rails.version < '5'
9
- require 'timecop'
10
- require 'pry'
11
- require 'byebug'
6
+ require "database_cleaner"
7
+ require "fileutils"
8
+ require "rack/test"
9
+ require "timecop"
10
+ require "webmock/rspec"
12
11
 
13
- RSpec.configure do |config|
12
+ require "pry"
13
+ require "byebug"
14
14
 
15
+ RSpec.configure do |config|
15
16
  config.expect_with(:rspec) do |c|
16
- c.syntax = [:should, :expect]
17
+ c.syntax = %i[should expect]
17
18
  end
18
19
 
19
20
  config.before(:suite) do
20
21
  DatabaseCleaner.strategy = :transaction
21
22
  DatabaseCleaner.clean_with(:truncation)
23
+ WebMock.disable_net_connect!
22
24
  end
23
25
 
24
- config.before(:each) do |example|
25
- if Delayed::Backend::Redis::Job.redis
26
- Delayed::Backend::Redis::Job.redis.flushdb
27
- end
28
- DatabaseCleaner.strategy = (example.metadata[:sinatra] || example.metadata[:non_transactional]) ?
29
- :truncation : :transaction
26
+ config.before do |example|
27
+ DatabaseCleaner.strategy = if example.metadata[:sinatra] || example.metadata[:non_transactional]
28
+ :truncation
29
+ else
30
+ :transaction
31
+ end
30
32
  DatabaseCleaner.start
31
33
  end
32
34
 
33
- config.after(:each) do
35
+ config.after do
34
36
  DatabaseCleaner.clean
35
37
  end
36
38
  end
37
39
 
38
40
  module NoYamlDump
39
- def encode_with(coder)
40
- end
41
+ def encode_with(coder); end
41
42
  end
42
43
  # example groups are often the sender, and if we try to serialize them,
43
44
  # the resultant object is then encoded in the sender, and then we serialize
44
45
  # again, and it just keeps getting bigger and bigger and bigger...
45
46
  RSpec::Core::ExampleGroup.include(NoYamlDump)
46
47
 
47
- ENV['TEST_ENV_NUMBER'] ||= '1'
48
- ENV['TEST_DB_HOST'] ||= 'localhost'
49
- ENV['TEST_DB_DATABASE'] ||= "inst-jobs-test-#{ENV['TEST_ENV_NUMBER']}"
50
- ENV['TEST_REDIS_CONNECTION'] ||= 'redis://localhost:6379/'
51
-
52
- Delayed::Backend::Redis::Job.redis = Redis.new(url: ENV['TEST_REDIS_CONNECTION'])
53
- Delayed::Backend::Redis::Job.redis.select ENV['TEST_ENV_NUMBER']
48
+ ENV["TEST_ENV_NUMBER"] ||= "1"
49
+ ENV["TEST_DB_HOST"] ||= "localhost"
50
+ ENV["TEST_DB_DATABASE"] ||= "inst-jobs-test-#{ENV.fetch('TEST_ENV_NUMBER', nil)}"
54
51
 
55
52
  connection_config = {
56
53
  adapter: :postgresql,
57
- host: ENV['TEST_DB_HOST'].presence,
58
- encoding: 'utf8',
59
- username: ENV['TEST_DB_USERNAME'],
60
- database: ENV['TEST_DB_DATABASE'],
54
+ host: ENV["TEST_DB_HOST"].presence,
55
+ encoding: "utf8",
56
+ username: ENV.fetch("TEST_DB_USERNAME", nil),
57
+ database: ENV.fetch("TEST_DB_DATABASE", nil),
58
+ min_messages: "notice",
59
+ # Ensure the pool is big enough the deadlock tests don't get starved for connections by rails instead
60
+ pool: 20
61
61
  }
62
62
 
63
- if ::Rails.version < '5'
64
- class ActiveRecord::Migration
65
- class << self
66
- def [](_version); self; end
67
- end
68
- end
69
- end
70
-
71
63
  def migrate(file)
72
- if ::Rails.version < '5.2'
73
- ActiveRecord::Migrator.migrate(file)
74
- elsif ::Rails.version >= '6'
75
- ActiveRecord::MigrationContext.new(file, ActiveRecord::SchemaMigration).migrate
76
- else
77
- ActiveRecord::MigrationContext.new(file).migrate
78
- end
64
+ ActiveRecord::MigrationContext.new(file, ActiveRecord::SchemaMigration).migrate
79
65
  end
80
66
 
81
- # create the test db if it does not exist, to help out wwtd
82
- ActiveRecord::Base.establish_connection(connection_config.merge(database: 'postgres'))
67
+ # create the test db if it does not exist
68
+ ActiveRecord::Base.establish_connection(connection_config.merge(database: "postgres"))
83
69
  begin
84
70
  ActiveRecord::Base.connection.create_database(connection_config[:database])
85
71
  rescue ActiveRecord::StatementInvalid
72
+ nil
86
73
  end
87
74
  ActiveRecord::Base.establish_connection(connection_config)
88
- # TODO reset db and migrate again, to test migrations
75
+
76
+ # we need to ensure this callback is called for activerecord-pg-extensions,
77
+ # which isn't running because we're not using Rails to setup the database
78
+ ActiveRecord::PGExtensions::Railtie.run_initializers
79
+
80
+ # TODO: reset db and migrate again, to test migrations
89
81
 
90
82
  migrate("db/migrate")
91
83
  migrate("spec/migrate")
92
84
  Delayed::Backend::ActiveRecord::Job.reset_column_information
93
85
  Delayed::Backend::ActiveRecord::Job::Failed.reset_column_information
94
86
 
95
- Time.zone = 'UTC'
96
- Rails.logger = Logger.new(nil)
87
+ Time.zone = "UTC" # rubocop:disable Rails/TimeZoneAssignment
88
+ FileUtils.mkdir_p("tmp")
89
+ ActiveRecord::Base.logger = Rails.logger = Logger.new("tmp/test.log")
97
90
 
98
91
  # Purely useful for test cases...
99
92
  class Story < ActiveRecord::Base
100
- def tell; text; end
101
- def whatever(n, _); tell*n; end
102
- def whatever_else(n, _); tell*n; end
93
+ def tell
94
+ text
95
+ end
96
+
97
+ def whatever(times, _)
98
+ tell * times
99
+ end
100
+
101
+ def whatever_else(times, _)
102
+ tell * times
103
+ end
103
104
 
104
105
  handle_asynchronously :whatever
105
106
  handle_asynchronously :whatever_else, queue: "testqueue"
@@ -122,7 +123,7 @@ module MyReverser
122
123
  end
123
124
 
124
125
  def change_setting(klass, setting_name, value)
125
- old_val = klass.class_variable_get(:"@@#{setting_name}")
126
+ old_val = klass.send(setting_name)
126
127
  klass.send("#{setting_name}=", value)
127
128
  yield
128
129
  ensure
@@ -133,5 +134,5 @@ def run_job(job)
133
134
  Delayed::Testing.run_job(job)
134
135
  end
135
136
 
136
- require File.expand_path('../sample_jobs', __FILE__)
137
- require File.expand_path('../shared_jobs_specs', __FILE__)
137
+ require_relative "sample_jobs"
138
+ require_relative "shared_jobs_specs"
metadata CHANGED
@@ -1,15 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: inst-jobs
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 3.1.0
5
5
  platform: ruby
6
6
  authors:
7
- - Tobias Luetke
8
- - Brian Palmer
7
+ - Cody Cutrer
8
+ - Ethan Vizitei
9
+ - Jacob Burroughs
9
10
  autorequire:
10
11
  bindir: exe
11
12
  cert_chain: []
12
- date: 2020-12-07 00:00:00.000000000 Z
13
+ date: 2022-05-09 00:00:00.000000000 Z
13
14
  dependencies:
14
15
  - !ruby/object:Gem::Dependency
15
16
  name: activerecord
@@ -17,28 +18,42 @@ dependencies:
17
18
  requirements:
18
19
  - - ">="
19
20
  - !ruby/object:Gem::Version
20
- version: '4.2'
21
+ version: '6.0'
21
22
  type: :runtime
22
23
  prerelease: false
23
24
  version_requirements: !ruby/object:Gem::Requirement
24
25
  requirements:
25
26
  - - ">="
26
27
  - !ruby/object:Gem::Version
27
- version: '4.2'
28
+ version: '6.0'
29
+ - !ruby/object:Gem::Dependency
30
+ name: activerecord-pg-extensions
31
+ requirement: !ruby/object:Gem::Requirement
32
+ requirements:
33
+ - - "~>"
34
+ - !ruby/object:Gem::Version
35
+ version: 0.4.4
36
+ type: :runtime
37
+ prerelease: false
38
+ version_requirements: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - "~>"
41
+ - !ruby/object:Gem::Version
42
+ version: 0.4.4
28
43
  - !ruby/object:Gem::Dependency
29
44
  name: activesupport
30
45
  requirement: !ruby/object:Gem::Requirement
31
46
  requirements:
32
47
  - - ">="
33
48
  - !ruby/object:Gem::Version
34
- version: '4.2'
49
+ version: '6.0'
35
50
  type: :runtime
36
51
  prerelease: false
37
52
  version_requirements: !ruby/object:Gem::Requirement
38
53
  requirements:
39
54
  - - ">="
40
55
  - !ruby/object:Gem::Version
41
- version: '4.2'
56
+ version: '6.0'
42
57
  - !ruby/object:Gem::Dependency
43
58
  name: after_transaction_commit
44
59
  requirement: !ruby/object:Gem::Requirement
@@ -60,75 +75,61 @@ dependencies:
60
75
  - !ruby/object:Gem::Version
61
76
  version: '3'
62
77
  - !ruby/object:Gem::Dependency
63
- name: railties
64
- requirement: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - ">="
67
- - !ruby/object:Gem::Version
68
- version: '4.2'
69
- type: :runtime
70
- prerelease: false
71
- version_requirements: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - ">="
74
- - !ruby/object:Gem::Version
75
- version: '4.2'
76
- - !ruby/object:Gem::Dependency
77
- name: redis
78
+ name: debug_inspector
78
79
  requirement: !ruby/object:Gem::Requirement
79
80
  requirements:
80
- - - ">"
81
+ - - "~>"
81
82
  - !ruby/object:Gem::Version
82
- version: '3.0'
83
+ version: '1.0'
83
84
  type: :runtime
84
85
  prerelease: false
85
86
  version_requirements: !ruby/object:Gem::Requirement
86
87
  requirements:
87
- - - ">"
88
+ - - "~>"
88
89
  - !ruby/object:Gem::Version
89
- version: '3.0'
90
+ version: '1.0'
90
91
  - !ruby/object:Gem::Dependency
91
- name: redis-scripting
92
+ name: fugit
92
93
  requirement: !ruby/object:Gem::Requirement
93
94
  requirements:
94
95
  - - "~>"
95
96
  - !ruby/object:Gem::Version
96
- version: 1.0.1
97
+ version: '1.3'
97
98
  type: :runtime
98
99
  prerelease: false
99
100
  version_requirements: !ruby/object:Gem::Requirement
100
101
  requirements:
101
102
  - - "~>"
102
103
  - !ruby/object:Gem::Version
103
- version: 1.0.1
104
+ version: '1.3'
104
105
  - !ruby/object:Gem::Dependency
105
- name: fugit
106
+ name: railties
106
107
  requirement: !ruby/object:Gem::Requirement
107
108
  requirements:
108
- - - "~>"
109
+ - - ">="
109
110
  - !ruby/object:Gem::Version
110
- version: '1.3'
111
+ version: '6.0'
111
112
  type: :runtime
112
113
  prerelease: false
113
114
  version_requirements: !ruby/object:Gem::Requirement
114
115
  requirements:
115
- - - "~>"
116
+ - - ">="
116
117
  - !ruby/object:Gem::Version
117
- version: '1.3'
118
+ version: '6.0'
118
119
  - !ruby/object:Gem::Dependency
119
- name: debug_inspector
120
+ name: appraisal
120
121
  requirement: !ruby/object:Gem::Requirement
121
122
  requirements:
122
123
  - - "~>"
123
124
  - !ruby/object:Gem::Version
124
- version: 0.0.3
125
- type: :runtime
125
+ version: '2.4'
126
+ type: :development
126
127
  prerelease: false
127
128
  version_requirements: !ruby/object:Gem::Requirement
128
129
  requirements:
129
130
  - - "~>"
130
131
  - !ruby/object:Gem::Version
131
- version: 0.0.3
132
+ version: '2.4'
132
133
  - !ruby/object:Gem::Dependency
133
134
  name: bump
134
135
  requirement: !ruby/object:Gem::Requirement
@@ -161,44 +162,58 @@ dependencies:
161
162
  name: database_cleaner
162
163
  requirement: !ruby/object:Gem::Requirement
163
164
  requirements:
164
- - - '='
165
+ - - "~>"
165
166
  - !ruby/object:Gem::Version
166
- version: 1.6.1
167
+ version: '2.0'
167
168
  type: :development
168
169
  prerelease: false
169
170
  version_requirements: !ruby/object:Gem::Requirement
170
171
  requirements:
171
- - - '='
172
+ - - "~>"
172
173
  - !ruby/object:Gem::Version
173
- version: 1.6.1
174
+ version: '2.0'
174
175
  - !ruby/object:Gem::Dependency
175
- name: imperium
176
+ name: database_cleaner-active_record
176
177
  requirement: !ruby/object:Gem::Requirement
177
178
  requirements:
178
- - - ">="
179
+ - - "~>"
179
180
  - !ruby/object:Gem::Version
180
- version: 0.5.2
181
+ version: '2.0'
181
182
  type: :development
182
183
  prerelease: false
183
184
  version_requirements: !ruby/object:Gem::Requirement
184
185
  requirements:
185
- - - ">="
186
+ - - "~>"
187
+ - !ruby/object:Gem::Version
188
+ version: '2.0'
189
+ - !ruby/object:Gem::Dependency
190
+ name: diplomat
191
+ requirement: !ruby/object:Gem::Requirement
192
+ requirements:
193
+ - - "~>"
194
+ - !ruby/object:Gem::Version
195
+ version: 2.5.1
196
+ type: :development
197
+ prerelease: false
198
+ version_requirements: !ruby/object:Gem::Requirement
199
+ requirements:
200
+ - - "~>"
186
201
  - !ruby/object:Gem::Version
187
- version: 0.5.2
202
+ version: 2.5.1
188
203
  - !ruby/object:Gem::Dependency
189
204
  name: pg
190
205
  requirement: !ruby/object:Gem::Requirement
191
206
  requirements:
192
- - - "<"
207
+ - - ">="
193
208
  - !ruby/object:Gem::Version
194
- version: '1.0'
209
+ version: '0'
195
210
  type: :development
196
211
  prerelease: false
197
212
  version_requirements: !ruby/object:Gem::Requirement
198
213
  requirements:
199
- - - "<"
214
+ - - ">="
200
215
  - !ruby/object:Gem::Version
201
- version: '1.0'
216
+ version: '0'
202
217
  - !ruby/object:Gem::Dependency
203
218
  name: pry
204
219
  requirement: !ruby/object:Gem::Requirement
@@ -261,14 +276,84 @@ dependencies:
261
276
  requirements:
262
277
  - - "~>"
263
278
  - !ruby/object:Gem::Version
264
- version: 3.8.0
279
+ version: '3.10'
280
+ type: :development
281
+ prerelease: false
282
+ version_requirements: !ruby/object:Gem::Requirement
283
+ requirements:
284
+ - - "~>"
285
+ - !ruby/object:Gem::Version
286
+ version: '3.10'
287
+ - !ruby/object:Gem::Dependency
288
+ name: rubocop
289
+ requirement: !ruby/object:Gem::Requirement
290
+ requirements:
291
+ - - "~>"
292
+ - !ruby/object:Gem::Version
293
+ version: '1.19'
294
+ type: :development
295
+ prerelease: false
296
+ version_requirements: !ruby/object:Gem::Requirement
297
+ requirements:
298
+ - - "~>"
299
+ - !ruby/object:Gem::Version
300
+ version: '1.19'
301
+ - !ruby/object:Gem::Dependency
302
+ name: rubocop-performance
303
+ requirement: !ruby/object:Gem::Requirement
304
+ requirements:
305
+ - - "~>"
306
+ - !ruby/object:Gem::Version
307
+ version: 1.12.0
308
+ type: :development
309
+ prerelease: false
310
+ version_requirements: !ruby/object:Gem::Requirement
311
+ requirements:
312
+ - - "~>"
313
+ - !ruby/object:Gem::Version
314
+ version: 1.12.0
315
+ - !ruby/object:Gem::Dependency
316
+ name: rubocop-rails
317
+ requirement: !ruby/object:Gem::Requirement
318
+ requirements:
319
+ - - "~>"
320
+ - !ruby/object:Gem::Version
321
+ version: '2.11'
265
322
  type: :development
266
323
  prerelease: false
267
324
  version_requirements: !ruby/object:Gem::Requirement
268
325
  requirements:
269
326
  - - "~>"
270
327
  - !ruby/object:Gem::Version
271
- version: 3.8.0
328
+ version: '2.11'
329
+ - !ruby/object:Gem::Dependency
330
+ name: rubocop-rake
331
+ requirement: !ruby/object:Gem::Requirement
332
+ requirements:
333
+ - - "~>"
334
+ - !ruby/object:Gem::Version
335
+ version: '0.6'
336
+ type: :development
337
+ prerelease: false
338
+ version_requirements: !ruby/object:Gem::Requirement
339
+ requirements:
340
+ - - "~>"
341
+ - !ruby/object:Gem::Version
342
+ version: '0.6'
343
+ - !ruby/object:Gem::Dependency
344
+ name: rubocop-rspec
345
+ requirement: !ruby/object:Gem::Requirement
346
+ requirements:
347
+ - - "~>"
348
+ - !ruby/object:Gem::Version
349
+ version: '2.4'
350
+ type: :development
351
+ prerelease: false
352
+ version_requirements: !ruby/object:Gem::Requirement
353
+ requirements:
354
+ - - "~>"
355
+ - !ruby/object:Gem::Version
356
+ version: '2.4'
272
357
  - !ruby/object:Gem::Dependency
273
358
  name: sinatra
274
359
  requirement: !ruby/object:Gem::Requirement
@@ -303,31 +388,33 @@ dependencies:
303
388
  requirements:
304
389
  - - '='
305
390
  - !ruby/object:Gem::Version
306
- version: 0.7.1
391
+ version: 0.9.4
307
392
  type: :development
308
393
  prerelease: false
309
394
  version_requirements: !ruby/object:Gem::Requirement
310
395
  requirements:
311
396
  - - '='
312
397
  - !ruby/object:Gem::Version
313
- version: 0.7.1
398
+ version: 0.9.4
314
399
  - !ruby/object:Gem::Dependency
315
- name: wwtd
400
+ name: webmock
316
401
  requirement: !ruby/object:Gem::Requirement
317
402
  requirements:
318
- - - "~>"
403
+ - - ">="
319
404
  - !ruby/object:Gem::Version
320
- version: 1.4.0
405
+ version: '0'
321
406
  type: :development
322
407
  prerelease: false
323
408
  version_requirements: !ruby/object:Gem::Requirement
324
409
  requirements:
325
- - - "~>"
410
+ - - ">="
326
411
  - !ruby/object:Gem::Version
327
- version: 1.4.0
412
+ version: '0'
328
413
  description:
329
414
  email:
330
- - brianp@instructure.com
415
+ - cody@instructure.com
416
+ - evizitei@instructure.com
417
+ - jburroughs@instructure.com
331
418
  executables:
332
419
  - inst_jobs
333
420
  extensions: []
@@ -359,20 +446,23 @@ files:
359
446
  - db/migrate/20200330230722_add_id_to_get_delayed_jobs_index.rb
360
447
  - db/migrate/20200824222232_speed_up_max_concurrent_delete_trigger.rb
361
448
  - db/migrate/20200825011002_add_strand_order_override.rb
449
+ - db/migrate/20210809145804_add_n_strand_index.rb
450
+ - db/migrate/20210812210128_add_singleton_column.rb
451
+ - db/migrate/20210917232626_add_delete_conflicting_singletons_before_unlock_trigger.rb
452
+ - db/migrate/20210928174754_fix_singleton_condition_in_before_insert.rb
453
+ - db/migrate/20210929204903_update_conflicting_singleton_function_to_use_index.rb
454
+ - db/migrate/20211101190934_update_after_delete_trigger_for_singleton_index.rb
455
+ - db/migrate/20211207094200_update_after_delete_trigger_for_singleton_transition_cases.rb
456
+ - db/migrate/20211220112800_fix_singleton_race_condition_insert.rb
457
+ - db/migrate/20211220113000_fix_singleton_race_condition_delete.rb
458
+ - db/migrate/20220127091200_fix_singleton_unique_constraint.rb
459
+ - db/migrate/20220128084800_update_insert_trigger_for_singleton_unique_constraint_change.rb
460
+ - db/migrate/20220128084900_update_delete_trigger_for_singleton_unique_constraint_change.rb
461
+ - db/migrate/20220203063200_remove_old_singleton_index.rb
462
+ - db/migrate/20220328152900_add_failed_jobs_indicies.rb
362
463
  - exe/inst_jobs
363
464
  - lib/delayed/backend/active_record.rb
364
465
  - lib/delayed/backend/base.rb
365
- - lib/delayed/backend/redis/bulk_update.lua
366
- - lib/delayed/backend/redis/destroy_job.lua
367
- - lib/delayed/backend/redis/enqueue.lua
368
- - lib/delayed/backend/redis/fail_job.lua
369
- - lib/delayed/backend/redis/find_available.lua
370
- - lib/delayed/backend/redis/functions.rb
371
- - lib/delayed/backend/redis/get_and_lock_next_available.lua
372
- - lib/delayed/backend/redis/includes/jobs_common.lua
373
- - lib/delayed/backend/redis/job.rb
374
- - lib/delayed/backend/redis/set_running.lua
375
- - lib/delayed/backend/redis/tickle_strand.lua
376
466
  - lib/delayed/batch.rb
377
467
  - lib/delayed/cli.rb
378
468
  - lib/delayed/core_ext/kernel.rb
@@ -387,6 +477,7 @@ files:
387
477
  - lib/delayed/periodic.rb
388
478
  - lib/delayed/plugin.rb
389
479
  - lib/delayed/pool.rb
480
+ - lib/delayed/rails_reloader_plugin.rb
390
481
  - lib/delayed/server.rb
391
482
  - lib/delayed/server/helpers.rb
392
483
  - lib/delayed/server/public/css/app.css
@@ -422,13 +513,7 @@ files:
422
513
  - spec/delayed/worker/consul_health_check_spec.rb
423
514
  - spec/delayed/worker/health_check_spec.rb
424
515
  - spec/delayed/worker_spec.rb
425
- - spec/gemfiles/42.gemfile
426
- - spec/gemfiles/50.gemfile
427
- - spec/gemfiles/51.gemfile
428
- - spec/gemfiles/52.gemfile
429
- - spec/gemfiles/60.gemfile
430
516
  - spec/migrate/20140924140513_add_story_table.rb
431
- - spec/redis_job_spec.rb
432
517
  - spec/sample_jobs.rb
433
518
  - spec/shared/delayed_batch.rb
434
519
  - spec/shared/delayed_method.rb
@@ -440,7 +525,8 @@ files:
440
525
  - spec/spec_helper.rb
441
526
  homepage: https://github.com/instructure/inst-jobs
442
527
  licenses: []
443
- metadata: {}
528
+ metadata:
529
+ rubygems_mfa_required: 'true'
444
530
  post_install_message:
445
531
  rdoc_options: []
446
532
  require_paths:
@@ -456,38 +542,32 @@ required_rubygems_version: !ruby/object:Gem::Requirement
456
542
  - !ruby/object:Gem::Version
457
543
  version: '0'
458
544
  requirements: []
459
- rubygems_version: 3.0.3
545
+ rubygems_version: 3.1.6
460
546
  signing_key:
461
547
  specification_version: 4
462
548
  summary: Instructure-maintained fork of delayed_job
463
549
  test_files:
464
- - spec/sample_jobs.rb
465
- - spec/spec_helper.rb
466
- - spec/redis_job_spec.rb
467
- - spec/gemfiles/60.gemfile
468
- - spec/gemfiles/42.gemfile
469
- - spec/gemfiles/52.gemfile
470
- - spec/gemfiles/50.gemfile
471
- - spec/gemfiles/51.gemfile
472
- - spec/shared_jobs_specs.rb
473
- - spec/shared/performable_method.rb
474
- - spec/shared/testing.rb
475
- - spec/shared/delayed_batch.rb
476
- - spec/shared/worker.rb
477
- - spec/shared/delayed_method.rb
478
- - spec/shared/shared_backend.rb
479
- - spec/migrate/20140924140513_add_story_table.rb
480
- - spec/delayed/server_spec.rb
550
+ - spec/active_record_job_spec.rb
481
551
  - spec/delayed/cli_spec.rb
482
552
  - spec/delayed/daemon_spec.rb
483
- - spec/delayed/worker_spec.rb
484
- - spec/delayed/periodic_spec.rb
485
553
  - spec/delayed/message_sending_spec.rb
554
+ - spec/delayed/periodic_spec.rb
555
+ - spec/delayed/server_spec.rb
486
556
  - spec/delayed/settings_spec.rb
487
557
  - spec/delayed/work_queue/in_process_spec.rb
488
- - spec/delayed/work_queue/parent_process_spec.rb
489
558
  - spec/delayed/work_queue/parent_process/client_spec.rb
490
559
  - spec/delayed/work_queue/parent_process/server_spec.rb
491
- - spec/delayed/worker/health_check_spec.rb
560
+ - spec/delayed/work_queue/parent_process_spec.rb
492
561
  - spec/delayed/worker/consul_health_check_spec.rb
493
- - spec/active_record_job_spec.rb
562
+ - spec/delayed/worker/health_check_spec.rb
563
+ - spec/delayed/worker_spec.rb
564
+ - spec/migrate/20140924140513_add_story_table.rb
565
+ - spec/sample_jobs.rb
566
+ - spec/shared/delayed_batch.rb
567
+ - spec/shared/delayed_method.rb
568
+ - spec/shared/performable_method.rb
569
+ - spec/shared/shared_backend.rb
570
+ - spec/shared/testing.rb
571
+ - spec/shared/worker.rb
572
+ - spec/shared_jobs_specs.rb
573
+ - spec/spec_helper.rb