inst-jobs 3.3.0 → 3.3.2

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: 282216250dfa2cf11cfa998ec9e8ce24762e7ddc20ff3e13c22b96a8668f4467
4
- data.tar.gz: a10e92b7516307691b30049f33be79b4a550e97b7382e594111b936f0dba993f
3
+ metadata.gz: 66e746a245b7b6285d8be89085060e790b35b1890f886bce7ccd8fe69aba6123
4
+ data.tar.gz: 2e537eab47f0c65a4670f3a5230274d20068687a968739d88f01eb5cfb1b0037
5
5
  SHA512:
6
- metadata.gz: 4048809794dc713e8bcfda0f747f0a5a1f0ae5e394a553a549ed9aadffeb98357fbf0050ef2d2e7e7cd858afa3bf0b6003121f4802245f2c6a361f4ca05923e6
7
- data.tar.gz: f03c66624ecbaaf575787ef197377d0d0d57c1e0be878ec76570c2f6f9f54ecc119f5da5c6228ea141bea89bf323b607ad47e6c989327e2a570dd97b0a004291
6
+ metadata.gz: daae66931ebd4d17f2c578f2a85ee793fad01cdf048ae43332c5884b2596d800d250c503ca4431d036cc4ff95edd7b885394c8a7745a46ea6861260e1437b98c
7
+ data.tar.gz: 787c0db4e6dc7e14188dfbe3be2b9603275e89a50372ca93b49d302573cf6cec2e67ff9982e472107dc6b4510d7d631686781839e3f60433c1088d9dfcaec52d
@@ -23,6 +23,7 @@ module Delayed
23
23
  # Contains the work object as a YAML field.
24
24
  class Job < AbstractJob
25
25
  include Delayed::Backend::Base
26
+
26
27
  self.table_name = :delayed_jobs
27
28
 
28
29
  attr_accessor :enqueue_result
@@ -633,6 +634,7 @@ module Delayed
633
634
 
634
635
  class Failed < Job
635
636
  include Delayed::Backend::Base
637
+
636
638
  self.table_name = :failed_jobs
637
639
 
638
640
  def self.cleanup_old_jobs(before_date, batch_size: 10_000)
@@ -654,6 +656,7 @@ module Delayed
654
656
  end
655
657
  self.requeued_job_id = job.id
656
658
  save!
659
+ logger.info("Requeued #{Delayed::Logging.log_job(job, :long)}")
657
660
  JobTracking.job_created(job)
658
661
  job
659
662
  end
@@ -31,7 +31,7 @@ module Delayed
31
31
  # :priority, :run_at, :queue, :strand, :singleton
32
32
  # Example: Delayed::Job.enqueue(object, priority: 0, run_at: time, queue: queue)
33
33
  def enqueue(object,
34
- priority: default_priority,
34
+ priority: nil,
35
35
  run_at: nil,
36
36
  expires_at: nil,
37
37
  queue: Delayed::Settings.queue,
@@ -44,6 +44,7 @@ module Delayed
44
44
  raise ArgumentError, "Cannot enqueue items which do not respond to perform"
45
45
  end
46
46
 
47
+ priority ||= default_priority
47
48
  strand ||= singleton if Settings.infer_strand_from_singleton
48
49
 
49
50
  kwargs = Settings.default_job_options.merge(kwargs)
@@ -112,7 +113,12 @@ module Delayed
112
113
  end
113
114
  end
114
115
 
115
- JobTracking.job_created(job)
116
+ if job.id
117
+ logger.info("Created #{Delayed::Logging.log_job(job, :long)}")
118
+ JobTracking.job_created(job)
119
+ else
120
+ logger.info("Dropped #{Delayed::Logging.log_job(job, :long)}")
121
+ end
116
122
 
117
123
  job
118
124
  end
@@ -204,7 +210,7 @@ module Delayed
204
210
 
205
211
  unless pid
206
212
  job_pid = $1.to_i
207
- running = Process.kill(0, job_pid) rescue false
213
+ running = Delayed::Util.process_running?(job_pid)
208
214
  end
209
215
 
210
216
  if running
@@ -12,8 +12,8 @@ module Delayed
12
12
  end
13
13
 
14
14
  def status(print: true, pid: self.pid)
15
- alive = pid && (Process.kill(0, pid) rescue false) && :running
16
- alive ||= :draining if pid && Process.kill(0, -pid) rescue false
15
+ alive = pid && Delayed::Util.process_running?(pid) && :running
16
+ alive ||= :draining if pid && Delayed::Util.process_running?(-pid)
17
17
  if alive
18
18
  puts "Delayed jobs #{alive}, pool PID: #{pid}" if print
19
19
  elsif print && print != :alive
@@ -24,6 +24,18 @@ module Delayed
24
24
  end
25
25
  end
26
26
 
27
+ def self.log_job(job, format = :short)
28
+ id_format = job.id ? " (id=#{job.id})" : ""
29
+
30
+ case format
31
+ when :long
32
+ "#{job.full_name}#{id_format} #{Settings.job_detailed_log_format.call(job)}"
33
+ else
34
+ "#{job.full_name}#{id_format} #{Settings.job_short_log_format.call(job)}".strip
35
+ end
36
+ end
37
+
38
+ delegate :log_job, to: :"Delayed::Logging"
27
39
  delegate :logger, to: :"Delayed::Logging"
28
40
 
29
41
  def say(message, level = :debug)
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Delayed
4
+ module Util
5
+ def self.process_running?(pid)
6
+ Process.kill(0, pid)
7
+ true
8
+ rescue Errno::ESRCH
9
+ false
10
+ end
11
+ end
12
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Delayed
4
- VERSION = "3.3.0"
4
+ VERSION = "3.3.2"
5
5
  end
@@ -9,6 +9,7 @@ module Delayed
9
9
  attr_reader :clients, :listen_socket
10
10
 
11
11
  include Delayed::Logging
12
+
12
13
  SIGNALS = %i[INT TERM QUIT].freeze
13
14
 
14
15
  def initialize(listen_socket, parent_pid: nil, config: Settings.parent_process)
@@ -5,11 +5,11 @@ module Delayed
5
5
  class NullHealthCheck < HealthCheck
6
6
  self.type_name = :none
7
7
 
8
- def start
8
+ def start # rubocop:disable Naming/PredicateMethod
9
9
  true
10
10
  end
11
11
 
12
- def stop
12
+ def stop # rubocop:disable Naming/PredicateMethod
13
13
  true
14
14
  end
15
15
 
@@ -20,6 +20,7 @@ module Delayed
20
20
 
21
21
  class Worker
22
22
  include Delayed::Logging
23
+
23
24
  SIGNALS = %i[INT TERM QUIT].freeze
24
25
 
25
26
  attr_reader :config, :queue_name, :min_priority, :max_priority, :work_queue
@@ -223,7 +224,7 @@ module Delayed
223
224
  end
224
225
  job.destroy
225
226
  end
226
- logger.info("Completed #{log_job(job, :short)} #{format("%.0fms", (runtime * 1000))}")
227
+ logger.info("Completed #{log_job(job, :short)} #{format("%.0fms", runtime * 1000)}")
227
228
  end
228
229
  rescue ::Delayed::RetriableError => e
229
230
  can_retry = job.attempts + 1 < job.inferred_max_attempts
@@ -272,15 +273,6 @@ module Delayed
272
273
  Process.pid
273
274
  end
274
275
 
275
- def log_job(job, format = :short)
276
- case format
277
- when :long
278
- "#{job.full_name} #{Settings.job_detailed_log_format.call(job)}"
279
- else
280
- "#{job.full_name} #{Settings.job_short_log_format.call(job)}".strip
281
- end
282
- end
283
-
284
276
  # set up the session context information, so that it gets logged with the job log lines
285
277
  # also set up a unique tmpdir, which will get removed at the end of the job.
286
278
  def configure_for_job(job)
data/lib/delayed_job.rb CHANGED
@@ -40,6 +40,7 @@ require "delayed/periodic"
40
40
  require "delayed/plugin"
41
41
  require "delayed/pool"
42
42
  require "delayed/worker"
43
+ require "delayed/util"
43
44
 
44
45
  require "delayed/worker/health_check"
45
46
  require "delayed/worker/consul_health_check"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: inst-jobs
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.3.0
4
+ version: 3.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Cody Cutrer
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: exe
12
12
  cert_chain: []
13
- date: 2025-08-22 00:00:00.000000000 Z
13
+ date: 2025-10-20 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activerecord
@@ -116,258 +116,6 @@ dependencies:
116
116
  - - ">="
117
117
  - !ruby/object:Gem::Version
118
118
  version: '6.0'
119
- - !ruby/object:Gem::Dependency
120
- name: bump
121
- requirement: !ruby/object:Gem::Requirement
122
- requirements:
123
- - - ">="
124
- - !ruby/object:Gem::Version
125
- version: '0'
126
- type: :development
127
- prerelease: false
128
- version_requirements: !ruby/object:Gem::Requirement
129
- requirements:
130
- - - ">="
131
- - !ruby/object:Gem::Version
132
- version: '0'
133
- - !ruby/object:Gem::Dependency
134
- name: database_cleaner
135
- requirement: !ruby/object:Gem::Requirement
136
- requirements:
137
- - - "~>"
138
- - !ruby/object:Gem::Version
139
- version: '2.0'
140
- type: :development
141
- prerelease: false
142
- version_requirements: !ruby/object:Gem::Requirement
143
- requirements:
144
- - - "~>"
145
- - !ruby/object:Gem::Version
146
- version: '2.0'
147
- - !ruby/object:Gem::Dependency
148
- name: database_cleaner-active_record
149
- requirement: !ruby/object:Gem::Requirement
150
- requirements:
151
- - - "~>"
152
- - !ruby/object:Gem::Version
153
- version: '2.0'
154
- type: :development
155
- prerelease: false
156
- version_requirements: !ruby/object:Gem::Requirement
157
- requirements:
158
- - - "~>"
159
- - !ruby/object:Gem::Version
160
- version: '2.0'
161
- - !ruby/object:Gem::Dependency
162
- name: debug
163
- requirement: !ruby/object:Gem::Requirement
164
- requirements:
165
- - - ">="
166
- - !ruby/object:Gem::Version
167
- version: '0'
168
- type: :development
169
- prerelease: false
170
- version_requirements: !ruby/object:Gem::Requirement
171
- requirements:
172
- - - ">="
173
- - !ruby/object:Gem::Version
174
- version: '0'
175
- - !ruby/object:Gem::Dependency
176
- name: diplomat
177
- requirement: !ruby/object:Gem::Requirement
178
- requirements:
179
- - - "~>"
180
- - !ruby/object:Gem::Version
181
- version: 2.6.3
182
- type: :development
183
- prerelease: false
184
- version_requirements: !ruby/object:Gem::Requirement
185
- requirements:
186
- - - "~>"
187
- - !ruby/object:Gem::Version
188
- version: 2.6.3
189
- - !ruby/object:Gem::Dependency
190
- name: mutex_m
191
- requirement: !ruby/object:Gem::Requirement
192
- requirements:
193
- - - ">="
194
- - !ruby/object:Gem::Version
195
- version: '0'
196
- type: :development
197
- prerelease: false
198
- version_requirements: !ruby/object:Gem::Requirement
199
- requirements:
200
- - - ">="
201
- - !ruby/object:Gem::Version
202
- version: '0'
203
- - !ruby/object:Gem::Dependency
204
- name: pg
205
- requirement: !ruby/object:Gem::Requirement
206
- requirements:
207
- - - ">="
208
- - !ruby/object:Gem::Version
209
- version: '0'
210
- type: :development
211
- prerelease: false
212
- version_requirements: !ruby/object:Gem::Requirement
213
- requirements:
214
- - - ">="
215
- - !ruby/object:Gem::Version
216
- version: '0'
217
- - !ruby/object:Gem::Dependency
218
- name: rack-test
219
- requirement: !ruby/object:Gem::Requirement
220
- requirements:
221
- - - ">="
222
- - !ruby/object:Gem::Version
223
- version: '0'
224
- type: :development
225
- prerelease: false
226
- version_requirements: !ruby/object:Gem::Requirement
227
- requirements:
228
- - - ">="
229
- - !ruby/object:Gem::Version
230
- version: '0'
231
- - !ruby/object:Gem::Dependency
232
- name: rake
233
- requirement: !ruby/object:Gem::Requirement
234
- requirements:
235
- - - ">="
236
- - !ruby/object:Gem::Version
237
- version: '0'
238
- type: :development
239
- prerelease: false
240
- version_requirements: !ruby/object:Gem::Requirement
241
- requirements:
242
- - - ">="
243
- - !ruby/object:Gem::Version
244
- version: '0'
245
- - !ruby/object:Gem::Dependency
246
- name: rspec
247
- requirement: !ruby/object:Gem::Requirement
248
- requirements:
249
- - - "~>"
250
- - !ruby/object:Gem::Version
251
- version: '3.10'
252
- type: :development
253
- prerelease: false
254
- version_requirements: !ruby/object:Gem::Requirement
255
- requirements:
256
- - - "~>"
257
- - !ruby/object:Gem::Version
258
- version: '3.10'
259
- - !ruby/object:Gem::Dependency
260
- name: rubocop-inst
261
- requirement: !ruby/object:Gem::Requirement
262
- requirements:
263
- - - "~>"
264
- - !ruby/object:Gem::Version
265
- version: '1'
266
- type: :development
267
- prerelease: false
268
- version_requirements: !ruby/object:Gem::Requirement
269
- requirements:
270
- - - "~>"
271
- - !ruby/object:Gem::Version
272
- version: '1'
273
- - !ruby/object:Gem::Dependency
274
- name: rubocop-rails
275
- requirement: !ruby/object:Gem::Requirement
276
- requirements:
277
- - - "~>"
278
- - !ruby/object:Gem::Version
279
- version: '2.11'
280
- type: :development
281
- prerelease: false
282
- version_requirements: !ruby/object:Gem::Requirement
283
- requirements:
284
- - - "~>"
285
- - !ruby/object:Gem::Version
286
- version: '2.11'
287
- - !ruby/object:Gem::Dependency
288
- name: rubocop-rake
289
- requirement: !ruby/object:Gem::Requirement
290
- requirements:
291
- - - "~>"
292
- - !ruby/object:Gem::Version
293
- version: '0.6'
294
- type: :development
295
- prerelease: false
296
- version_requirements: !ruby/object:Gem::Requirement
297
- requirements:
298
- - - "~>"
299
- - !ruby/object:Gem::Version
300
- version: '0.6'
301
- - !ruby/object:Gem::Dependency
302
- name: rubocop-rspec
303
- requirement: !ruby/object:Gem::Requirement
304
- requirements:
305
- - - "~>"
306
- - !ruby/object:Gem::Version
307
- version: '3.0'
308
- type: :development
309
- prerelease: false
310
- version_requirements: !ruby/object:Gem::Requirement
311
- requirements:
312
- - - "~>"
313
- - !ruby/object:Gem::Version
314
- version: '3.0'
315
- - !ruby/object:Gem::Dependency
316
- name: sinatra
317
- requirement: !ruby/object:Gem::Requirement
318
- requirements:
319
- - - ">="
320
- - !ruby/object:Gem::Version
321
- version: '0'
322
- type: :development
323
- prerelease: false
324
- version_requirements: !ruby/object:Gem::Requirement
325
- requirements:
326
- - - ">="
327
- - !ruby/object:Gem::Version
328
- version: '0'
329
- - !ruby/object:Gem::Dependency
330
- name: sinatra-contrib
331
- requirement: !ruby/object:Gem::Requirement
332
- requirements:
333
- - - "~>"
334
- - !ruby/object:Gem::Version
335
- version: '3.1'
336
- type: :development
337
- prerelease: false
338
- version_requirements: !ruby/object:Gem::Requirement
339
- requirements:
340
- - - "~>"
341
- - !ruby/object:Gem::Version
342
- version: '3.1'
343
- - !ruby/object:Gem::Dependency
344
- name: timecop
345
- requirement: !ruby/object:Gem::Requirement
346
- requirements:
347
- - - "~>"
348
- - !ruby/object:Gem::Version
349
- version: '0.9'
350
- type: :development
351
- prerelease: false
352
- version_requirements: !ruby/object:Gem::Requirement
353
- requirements:
354
- - - "~>"
355
- - !ruby/object:Gem::Version
356
- version: '0.9'
357
- - !ruby/object:Gem::Dependency
358
- name: webmock
359
- requirement: !ruby/object:Gem::Requirement
360
- requirements:
361
- - - ">="
362
- - !ruby/object:Gem::Version
363
- version: '0'
364
- type: :development
365
- prerelease: false
366
- version_requirements: !ruby/object:Gem::Requirement
367
- requirements:
368
- - - ">="
369
- - !ruby/object:Gem::Version
370
- version: '0'
371
119
  description:
372
120
  email:
373
121
  - cody@instructure.com
@@ -444,6 +192,7 @@ files:
444
192
  - lib/delayed/server/views/layout.erb
445
193
  - lib/delayed/settings.rb
446
194
  - lib/delayed/testing.rb
195
+ - lib/delayed/util.rb
447
196
  - lib/delayed/version.rb
448
197
  - lib/delayed/work_queue/in_process.rb
449
198
  - lib/delayed/work_queue/parent_process.rb