delayed_job_active_record 4.1.3 → 4.1.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3bdebcffb191581b743a334926d45c01184fbe0a58a906741b0f7f73118375bc
4
- data.tar.gz: fdc7e1c5c74cd0f5beef00a61d62daaf3bf91d2ca631248a7a2a7382f3d420d9
3
+ metadata.gz: 1799d6d0f6301b5285da09c332bfe6abeb6cfb60b410a29e93f94a99aa0313b7
4
+ data.tar.gz: a1b0adfed07a2a7f47603390156688e193aed7bcc187184c9812b72e182fb859
5
5
  SHA512:
6
- metadata.gz: 443633226e38e35bf47be09f548b9bdc1aea188f7c74244b32d8cbbd6b18cac0fd04bffac8540f075e3cc18cd737937f7049a16cc39a363be4fea6cfc9097471
7
- data.tar.gz: c479df41fa2326aef35d02771336c17ba5ce956aa1c006769b1a67f4282e716c161d723cfd479178f24bbc21b5fdf6183e656a867d3221cf8753d21c7b800cbd
6
+ metadata.gz: c17b88c4d64f8698405c1cf9918b887baecbd2366d42a71d4d02879227d339aba4de0ba3419fc3a4cc0272b193769709efb86fd95f251a08afa4e9c00d07ac58
7
+ data.tar.gz: 9d8bc65f7e959d71264c8d46d2cff8c2409a975755be9c5a9f0387d033bf1054d76c20e56a0dd685f7556b9cde282dd7c76818f733c9ad9e28fc9e7cbaa67da1
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.5).](https://github.com/collectiveidea/delayed_job_active_record/tree/v4.1.5)**
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.5"
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
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Delayed
4
+ module Backend
5
+ module ActiveRecord
6
+ class Railtie < ::Rails::Railtie
7
+ config.after_initialize do
8
+ require "delayed/backend/active_record"
9
+ Delayed::Worker.backend = :active_record
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -1,5 +1,12 @@
1
- require "active_record"
1
+ # frozen_string_literal: true
2
+
2
3
  require "delayed_job"
3
- require "delayed/backend/active_record"
4
4
 
5
- Delayed::Worker.backend = :active_record
5
+ if defined?(Rails::Railtie)
6
+ require "delayed/backend/active_record/railtie"
7
+ else
8
+ require "active_record"
9
+ require "delayed/backend/active_record"
10
+
11
+ Delayed::Worker.backend = :active_record
12
+ end
@@ -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.5
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: 2020-12-09 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
@@ -67,6 +67,7 @@ files:
67
67
  - README.md
68
68
  - delayed_job_active_record.gemspec
69
69
  - lib/delayed/backend/active_record.rb
70
+ - lib/delayed/backend/active_record/railtie.rb
70
71
  - lib/delayed_job_active_record.rb
71
72
  - lib/generators/delayed_job/active_record_generator.rb
72
73
  - lib/generators/delayed_job/next_migration_version.rb
@@ -92,8 +93,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
92
93
  - !ruby/object:Gem::Version
93
94
  version: '0'
94
95
  requirements: []
95
- rubyforge_project:
96
- rubygems_version: 2.7.6
96
+ rubygems_version: 3.0.3
97
97
  signing_key:
98
98
  specification_version: 4
99
99
  summary: ActiveRecord backend for DelayedJob