delayed_job_active_record 4.1.3 → 4.1.6
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 +4 -4
- data/README.md +2 -4
- data/delayed_job_active_record.gemspec +4 -2
- data/lib/delayed/backend/active_record.rb +11 -3
- data/lib/delayed_job_active_record.rb +2 -0
- data/lib/generators/delayed_job/active_record_generator.rb +2 -0
- data/lib/generators/delayed_job/next_migration_version.rb +2 -0
- data/lib/generators/delayed_job/templates/migration.rb +1 -1
- data/lib/generators/delayed_job/upgrade_generator.rb +2 -0
- metadata +5 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3a381933e56413c64769a9ccd2eaf1c8fd632dcf82cf95c7986ebb10cdb2b3d3
|
4
|
+
data.tar.gz: e1fc2eec65dd2d698d5637bf977a8a6f15f535ad6cca12118e56b329a454b6aa
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e1c57c495800a0146ffa3955c4982ead69b8707ada1336e7f0e348ec47e55b5bfe9802ce0093a2ec553b70d90afed1251c74f3e50a27be338a5e9b2a17f6e054
|
7
|
+
data.tar.gz: a8fbf28854f9a699c72f20ea209a0630d1289c09c4fa93b23888a7d942bd1739640eeeabb80a4d1cb36fbe0c2d3562a869943ab13218ce4a9a294d1cbeb019f1
|
data/README.md
CHANGED
@@ -1,14 +1,12 @@
|
|
1
1
|
**If you're viewing this at https://github.com/collectiveidea/delayed_job_active_record,
|
2
2
|
you're reading the documentation for the master branch.
|
3
3
|
[View documentation for the latest release
|
4
|
-
(4.1.
|
4
|
+
(4.1.6).](https://github.com/collectiveidea/delayed_job_active_record/tree/v4.1.6)**
|
5
5
|
|
6
6
|
# DelayedJob ActiveRecord Backend
|
7
7
|
|
8
8
|
[](https://rubygems.org/gems/delayed_job_active_record)
|
9
|
-
|
10
|
-
[](https://gemnasium.com/collectiveidea/delayed_job_active_record)
|
11
|
-
[](https://codeclimate.com/github/collectiveidea/delayed_job_active_record)
|
9
|
+

|
12
10
|
[](https://coveralls.io/r/collectiveidea/delayed_job_active_record)
|
13
11
|
|
14
12
|
## Installation
|
@@ -1,5 +1,7 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
Gem::Specification.new do |spec|
|
2
|
-
spec.add_dependency "activerecord", [">= 3.0", "<
|
4
|
+
spec.add_dependency "activerecord", [">= 3.0", "< 6.2"]
|
3
5
|
spec.add_dependency "delayed_job", [">= 3.0", "< 5"]
|
4
6
|
spec.authors = ["Brian Ryckbost", "Matt Griffin", "Erik Michaels-Ober"]
|
5
7
|
spec.description = "ActiveRecord backend for Delayed::Job, originally authored by Tobias Lütke"
|
@@ -10,5 +12,5 @@ Gem::Specification.new do |spec|
|
|
10
12
|
spec.name = "delayed_job_active_record"
|
11
13
|
spec.require_paths = ["lib"]
|
12
14
|
spec.summary = "ActiveRecord backend for DelayedJob"
|
13
|
-
spec.version = "4.1.
|
15
|
+
spec.version = "4.1.6"
|
14
16
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require "active_record/version"
|
2
4
|
module Delayed
|
3
5
|
module Backend
|
@@ -13,6 +15,7 @@ module Delayed
|
|
13
15
|
if !(val == :optimized_sql || val == :default_sql)
|
14
16
|
raise ArgumentError, "allowed values are :optimized_sql or :default_sql"
|
15
17
|
end
|
18
|
+
|
16
19
|
@reserve_sql_strategy = val
|
17
20
|
end
|
18
21
|
end
|
@@ -51,7 +54,7 @@ module Delayed
|
|
51
54
|
|
52
55
|
def self.ready_to_run(worker_name, max_run_time)
|
53
56
|
where(
|
54
|
-
"(run_at <= ? AND (locked_at IS NULL OR locked_at < ?) OR locked_by = ?) AND failed_at IS NULL",
|
57
|
+
"((run_at <= ? AND (locked_at IS NULL OR locked_at < ?)) OR locked_by = ?) AND failed_at IS NULL",
|
55
58
|
db_time_now,
|
56
59
|
db_time_now - max_run_time,
|
57
60
|
worker_name
|
@@ -109,8 +112,11 @@ module Delayed
|
|
109
112
|
end
|
110
113
|
|
111
114
|
def self.reserve_with_scope_using_default_sql(ready_scope, worker, now)
|
112
|
-
# This is our old fashion, tried and true, but slower lookup
|
113
|
-
|
115
|
+
# This is our old fashion, tried and true, but possibly slower lookup
|
116
|
+
# Instead of reading the entire job record for our detect loop, we select only the id,
|
117
|
+
# and only read the full job record after we've successfully locked the job.
|
118
|
+
# This can have a noticable impact on large read_ahead configurations and large payload jobs.
|
119
|
+
ready_scope.limit(worker.read_ahead).select(:id).detect do |job|
|
114
120
|
count = ready_scope.where(id: job.id).update_all(locked_at: now, locked_by: worker.name)
|
115
121
|
count == 1 && job.reload
|
116
122
|
end
|
@@ -141,6 +147,7 @@ module Delayed
|
|
141
147
|
# UPDATE...LIMIT. It uses separate queries to lock and return the job
|
142
148
|
count = ready_scope.limit(1).update_all(locked_at: now, locked_by: worker.name)
|
143
149
|
return nil if count == 0
|
150
|
+
|
144
151
|
where(locked_at: now, locked_by: worker.name, failed_at: nil).first
|
145
152
|
end
|
146
153
|
|
@@ -154,6 +161,7 @@ module Delayed
|
|
154
161
|
sql = "UPDATE #{quoted_table_name} SET locked_at = ?, locked_by = ? WHERE id IN (#{subquery_sql})"
|
155
162
|
count = connection.execute(sanitize_sql([sql, now, worker.name]))
|
156
163
|
return nil if count == 0
|
164
|
+
|
157
165
|
# MSSQL JDBC doesn't support OUTPUT INSERTED.* for returning a result set, so query locked row
|
158
166
|
where(locked_at: now, locked_by: worker.name, failed_at: nil).first
|
159
167
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
class CreateDelayedJobs < ActiveRecord::Migration<%= migration_version %>
|
2
2
|
def self.up
|
3
|
-
create_table :delayed_jobs
|
3
|
+
create_table :delayed_jobs do |table|
|
4
4
|
table.integer :priority, default: 0, null: false # Allows some jobs to jump to the front of the queue
|
5
5
|
table.integer :attempts, default: 0, null: false # Provides for retries, but still fail eventually.
|
6
6
|
table.text :handler, null: false # YAML-encoded string of the object that will do work
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: delayed_job_active_record
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.1.
|
4
|
+
version: 4.1.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brian Ryckbost
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2021-03-26 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: activerecord
|
@@ -21,7 +21,7 @@ dependencies:
|
|
21
21
|
version: '3.0'
|
22
22
|
- - "<"
|
23
23
|
- !ruby/object:Gem::Version
|
24
|
-
version: '
|
24
|
+
version: '6.2'
|
25
25
|
type: :runtime
|
26
26
|
prerelease: false
|
27
27
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -31,7 +31,7 @@ dependencies:
|
|
31
31
|
version: '3.0'
|
32
32
|
- - "<"
|
33
33
|
- !ruby/object:Gem::Version
|
34
|
-
version: '
|
34
|
+
version: '6.2'
|
35
35
|
- !ruby/object:Gem::Dependency
|
36
36
|
name: delayed_job
|
37
37
|
requirement: !ruby/object:Gem::Requirement
|
@@ -92,8 +92,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
92
92
|
- !ruby/object:Gem::Version
|
93
93
|
version: '0'
|
94
94
|
requirements: []
|
95
|
-
|
96
|
-
rubygems_version: 2.7.6
|
95
|
+
rubygems_version: 3.0.3
|
97
96
|
signing_key:
|
98
97
|
specification_version: 4
|
99
98
|
summary: ActiveRecord backend for DelayedJob
|