delayed 0.7.1 → 0.7.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: 223856c2ccfb73e2f42eed3da86e70b0a819a575028ca1d0ddbebe0fc757c1d6
4
- data.tar.gz: b8d496dbd42774fcb7a5528cb4969b15a87cebd2c59899ad8dafa86438279874
3
+ metadata.gz: ea752ae23dd7aee646bcd0be946a7e414c328c4323dc4a2f34d0ee2106c36364
4
+ data.tar.gz: 6b2509d426b6e7dd25340fde6a3ff4ccfea88fbf15d53d91a1724629ff21c170
5
5
  SHA512:
6
- metadata.gz: 5770b2945b0ff2e2a5f80a5cad81c8dd506c41519897e19ad29f973b57250891f3aa31c2d57135f69c960de12ea0724ad4bfa2bc68f445be6699851177a67b5e
7
- data.tar.gz: 89dbae3fb440d8cef88ed57131131ca7d3081b8039f772b6d88ebbd09332f7ffa9a2cfe09e5505d5c422ce69b82ae8344bf79d475022aa454594e87ef559e1d6
6
+ metadata.gz: 015dd62d37946fd70411776f89a6d96850b76a1f3d54a280d38ff82d816b0ab0532b673309ace4882575b443a9ce1244e8a053a82d25413d2217213d3c72284f
7
+ data.tar.gz: 5dcd12088fb0bbe76abe2559a35aa53a6b90155fe22dd992033b31f12f63b0d572ec8ba2b87d2ad418837dc25ebaeecd1a558108e8cf74f08081c11435ddcafb
@@ -101,7 +101,12 @@ module Delayed
101
101
  pool = Concurrent::FixedThreadPool.new(jobs.length)
102
102
  jobs.each do |job|
103
103
  pool.post do
104
- success.increment if run_job(job)
104
+ self.class.lifecycle.run_callbacks(:thread, self, job) do
105
+ success.increment if perform(job)
106
+ end
107
+ rescue Exception => e # rubocop:disable Lint/RescueException
108
+ job_say job, "Job thread crashed with #{e.class.name}: #{e.message}", 'error'
109
+ job.error = e
105
110
  end
106
111
  end
107
112
 
@@ -117,12 +122,8 @@ module Delayed
117
122
  [success.value, total - success.value]
118
123
  end
119
124
 
120
- def run_thread_callbacks(job, &block)
121
- self.class.lifecycle.run_callbacks(:thread, self, job, &block)
122
- end
123
-
124
- def run(job)
125
- run_thread_callbacks(job) do
125
+ def perform(job)
126
+ self.class.lifecycle.run_callbacks(:perform, self, job) do
126
127
  metadata = {
127
128
  status: 'RUNNING',
128
129
  name: job.name,
@@ -209,10 +210,6 @@ module Delayed
209
210
  reschedule(job)
210
211
  end
211
212
 
212
- def run_job(job)
213
- self.class.lifecycle.run_callbacks(:perform, self, job) { run(job) }
214
- end
215
-
216
213
  # The backend adapter may return either a list or a single job
217
214
  # In some backends, this can be controlled with the `max_claims` config
218
215
  # Either way, we map this to an array of job instances
data/lib/delayed.rb CHANGED
@@ -42,8 +42,8 @@ module Delayed
42
42
  mattr_accessor(:default_log_level) { 'info'.freeze }
43
43
  mattr_accessor(:plugins) do
44
44
  [
45
- Delayed::Plugins::Instrumentation,
46
45
  Delayed::Plugins::Connection,
46
+ Delayed::Plugins::Instrumentation,
47
47
  ]
48
48
  end
49
49
 
@@ -533,7 +533,7 @@ describe Delayed::Job do
533
533
  it 'fails after Worker.max_run_time' do
534
534
  Delayed::Worker.max_run_time = 1.second
535
535
  job = described_class.create payload_object: LongRunningJob.new
536
- worker.run(job)
536
+ worker.perform(job)
537
537
  expect(job.error).not_to be_nil
538
538
  expect(job.reload.last_error).to match(/expired/)
539
539
  expect(job.reload.last_error).to match(/Delayed::Worker\.max_run_time is only 1 second/)
@@ -558,7 +558,7 @@ describe Delayed::Job do
558
558
 
559
559
  it 'records last_error when destroy_failed_jobs = false, max_attempts = 1' do
560
560
  Delayed::Worker.max_attempts = 1
561
- worker.run(@job)
561
+ worker.perform(@job)
562
562
  @job.reload
563
563
  expect(@job.error).not_to be_nil
564
564
  expect(@job.last_error).to match(/did not work/)
@@ -580,7 +580,7 @@ describe Delayed::Job do
580
580
 
581
581
  it 're-schedules jobs with handler provided time if present' do
582
582
  job = described_class.enqueue(CustomRescheduleJob.new(99.minutes))
583
- worker.run(job)
583
+ worker.perform(job)
584
584
  job.reload
585
585
 
586
586
  expect((described_class.db_time_now + 99.minutes - job.run_at).abs).to be < 1
@@ -590,7 +590,7 @@ describe Delayed::Job do
590
590
  error_with_nil_message = StandardError.new
591
591
  expect(error_with_nil_message).to receive(:message).twice.and_return(nil)
592
592
  expect(@job).to receive(:invoke_job).and_raise error_with_nil_message
593
- expect { worker.run(@job) }.not_to raise_error
593
+ expect { worker.perform(@job) }.not_to raise_error
594
594
  end
595
595
  end
596
596
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: delayed
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.1
4
+ version: 0.7.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nathan Griffith
@@ -18,7 +18,7 @@ authors:
18
18
  - Tobias Lütke
19
19
  bindir: bin
20
20
  cert_chain: []
21
- date: 2025-01-24 00:00:00.000000000 Z
21
+ date: 2025-04-02 00:00:00.000000000 Z
22
22
  dependencies:
23
23
  - !ruby/object:Gem::Dependency
24
24
  name: activerecord
@@ -137,7 +137,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
137
137
  - !ruby/object:Gem::Version
138
138
  version: '0'
139
139
  requirements: []
140
- rubygems_version: 3.6.2
140
+ rubygems_version: 3.6.6
141
141
  specification_version: 4
142
142
  summary: a multi-threaded, SQL-driven ActiveJob backend used at Betterment to process
143
143
  millions of background jobs per day