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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3bdebcffb191581b743a334926d45c01184fbe0a58a906741b0f7f73118375bc
4
- data.tar.gz: fdc7e1c5c74cd0f5beef00a61d62daaf3bf91d2ca631248a7a2a7382f3d420d9
3
+ metadata.gz: 3a381933e56413c64769a9ccd2eaf1c8fd632dcf82cf95c7986ebb10cdb2b3d3
4
+ data.tar.gz: e1fc2eec65dd2d698d5637bf977a8a6f15f535ad6cca12118e56b329a454b6aa
5
5
  SHA512:
6
- metadata.gz: 443633226e38e35bf47be09f548b9bdc1aea188f7c74244b32d8cbbd6b18cac0fd04bffac8540f075e3cc18cd737937f7049a16cc39a363be4fea6cfc9097471
7
- data.tar.gz: c479df41fa2326aef35d02771336c17ba5ce956aa1c006769b1a67f4282e716c161d723cfd479178f24bbc21b5fdf6183e656a867d3221cf8753d21c7b800cbd
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.3).](https://github.com/collectiveidea/delayed_job_active_record/tree/v4.1.3)**
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
  [![Gem Version](https://img.shields.io/gem/v/delayed_job_active_record.svg)](https://rubygems.org/gems/delayed_job_active_record)
9
- [![Build Status](https://img.shields.io/travis/collectiveidea/delayed_job_active_record.svg)](https://travis-ci.org/collectiveidea/delayed_job_active_record)
10
- [![Dependency Status](https://img.shields.io/gemnasium/collectiveidea/delayed_job_active_record.svg)](https://gemnasium.com/collectiveidea/delayed_job_active_record)
11
- [![Code Climate](https://img.shields.io/codeclimate/github/collectiveidea/delayed_job_active_record.svg)](https://codeclimate.com/github/collectiveidea/delayed_job_active_record)
9
+ ![CI](https://github.com/collectiveidea/delayed_job_active_record/workflows/CI/badge.svg)
12
10
  [![Coverage Status](https://img.shields.io/coveralls/collectiveidea/delayed_job_active_record.svg)](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", "< 5.3"]
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.3"
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
- ready_scope.limit(worker.read_ahead).detect do |job|
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,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "active_record"
2
4
  require "delayed_job"
3
5
  require "delayed/backend/active_record"
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "generators/delayed_job/delayed_job_generator"
2
4
  require "generators/delayed_job/next_migration_version"
3
5
  require "rails/generators/migration"
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module DelayedJob
2
4
  module NextMigrationVersion
3
5
  # while methods have moved around this has been the implementation
@@ -1,6 +1,6 @@
1
1
  class CreateDelayedJobs < ActiveRecord::Migration<%= migration_version %>
2
2
  def self.up
3
- create_table :delayed_jobs, force: true do |table|
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
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "generators/delayed_job/delayed_job_generator"
2
4
  require "generators/delayed_job/next_migration_version"
3
5
  require "rails/generators/migration"
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.3
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: 2018-04-13 00:00:00.000000000 Z
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: '5.3'
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: '5.3'
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
- rubyforge_project:
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