workhorse 1.2.4 → 1.2.5
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/.github/workflows/ruby.yml +36 -0
- data/CHANGELOG.md +7 -0
- data/LICENSE +1 -1
- data/README.md +9 -4
- data/VERSION +1 -1
- data/lib/workhorse/jobs/detect_stale_jobs_job.rb +15 -11
- data/lib/workhorse.rb +12 -0
- data/test/lib/test_helper.rb +1 -1
- data/workhorse.gemspec +4 -4
- metadata +10 -10
- data/.travis.yml +0 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c8b46dee93b4c068a0448cede864128197aea8393c592527402bd42a2d7d5412
|
4
|
+
data.tar.gz: e808736be9666ff28aa8e16db00894a2668d23fec91b29aa6a4af6d5aaf45cdf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5b80105eae609607dc11fc044d62e764222c110e735600ae1eae432ff36916e7a554c63b964d95a08d6730f4c78ba0b509aab37ae6860b76f60250adda6c495d
|
7
|
+
data.tar.gz: 957e7f435fb08673307907689fcd0d0c46ab434362ec629a6f5ff7ba5cf50dd138f6042530ce44f289ee900fa5359b787884f5405a935a312e6da38155d7fd24
|
@@ -0,0 +1,36 @@
|
|
1
|
+
name: Build
|
2
|
+
|
3
|
+
on:
|
4
|
+
push:
|
5
|
+
branches: [ master ]
|
6
|
+
pull_request:
|
7
|
+
branches: [ master ]
|
8
|
+
|
9
|
+
jobs:
|
10
|
+
test:
|
11
|
+
runs-on: ubuntu-latest
|
12
|
+
strategy:
|
13
|
+
fail-fast: false
|
14
|
+
matrix:
|
15
|
+
ruby-version: ['2.5.1', '2.6.2', '2.7.1', '3.0.1']
|
16
|
+
env:
|
17
|
+
DB_DATABASE: workhorse
|
18
|
+
DB_USER: root
|
19
|
+
DB_PASSWORD: 'root'
|
20
|
+
DB_HOST: localhost
|
21
|
+
|
22
|
+
steps:
|
23
|
+
- uses: actions/checkout@v2
|
24
|
+
- name: Set up Ruby
|
25
|
+
uses: ruby/setup-ruby@v1
|
26
|
+
with:
|
27
|
+
ruby-version: ${{ matrix.ruby-version }}
|
28
|
+
bundler-cache: true
|
29
|
+
- name: Startup database
|
30
|
+
run: |
|
31
|
+
sudo /etc/init.d/mysql start
|
32
|
+
mysql -u${{ env.DB_USER }} -p${{ env.DB_PASSWORD }} -e 'CREATE DATABASE ${{ env.DB_DATABASE }};'
|
33
|
+
- name: Run rake tests
|
34
|
+
run: bundle exec rake test TESTOPTS='--verbose'
|
35
|
+
- name: Run rubocop
|
36
|
+
run: bundle exec rubocop
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,12 @@
|
|
1
1
|
# Workhorse Changelog
|
2
2
|
|
3
|
+
## 1.2.5 - 2021-11-01
|
4
|
+
|
5
|
+
* Add config settings for configuring {Workhorse::Jobs::DetectStaleJobsJob}:
|
6
|
+
|
7
|
+
* `config.stale_detection_locked_to_started_threshold`
|
8
|
+
* `config.stale_detection_run_time_threshold`
|
9
|
+
|
3
10
|
## 1.2.4 - 2021-06-08
|
4
11
|
|
5
12
|
* Add `workhorse_db_job` load hook
|
data/LICENSE
CHANGED
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
[](https://github.com/sitrox/workhorse/actions/workflows/ruby.yml)
|
2
2
|
[](https://badge.fury.io/rb/workhorse)
|
3
3
|
|
4
4
|
# Workhorse
|
@@ -107,10 +107,15 @@ method `Workhorse.enqueue_op`:
|
|
107
107
|
Workhorse.enqueue_op Operations::Jobs::CleanUpDatabase, { queue: :maintenance, priority: 2 }, quiet: true
|
108
108
|
```
|
109
109
|
|
110
|
-
|
111
|
-
|
110
|
+
The first argument of the method is the Operation you want to run. Params passed in
|
111
|
+
using the second argument will be used by Workhorse and params passed using the
|
112
|
+
third argument will be used for operation instantiation at job execution, i.e.:
|
112
113
|
|
113
|
-
|
114
|
+
```ruby
|
115
|
+
Workhorse.enqueue_op <Operation Class Name>, { <Workhorse Options> }, { <RailsOps Options> }
|
116
|
+
```
|
117
|
+
|
118
|
+
If you do not want to pass any params to the operation, just omit the third hash:
|
114
119
|
|
115
120
|
```ruby
|
116
121
|
Workhorse.enqueue_op Operations::Jobs::CleanUpDatabase, queue: :maintenance, priority: 2
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.2.
|
1
|
+
1.2.5
|
@@ -1,18 +1,22 @@
|
|
1
1
|
module Workhorse::Jobs
|
2
|
+
# This job picks up jobs that remained `locked` or `started` (running) for
|
3
|
+
# more than a certain amount of time. If any of these jobs are found, an
|
4
|
+
# exception is thrown (which may cause a notification if you configured
|
5
|
+
# `on_exception` accordingly).
|
6
|
+
#
|
7
|
+
# The thresholds are obtained from the configuration options
|
8
|
+
# {Workhorse.stale_detection_locked_to_started_threshold
|
9
|
+
# config.stale_detection_locked_to_started_threshold} and
|
10
|
+
# {Workhorse.stale_detection_run_time_threshold
|
11
|
+
# config.stale_detection_run_time_threshold}.
|
2
12
|
class DetectStaleJobsJob
|
3
|
-
#
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
# Set this to 0 to skip this check.
|
8
|
-
# @param run_time_threshold [Integer] The maximum number of seconds
|
9
|
-
# a job is allowed to run before this job throws an exception. Set this to
|
10
|
-
# 0 to skip this check.
|
11
|
-
def initialize(locked_to_started_threshold: 3 * 60, run_time_threshold: 12 * 60)
|
12
|
-
@locked_to_started_threshold = locked_to_started_threshold
|
13
|
-
@run_time_threshold = run_time_threshold
|
13
|
+
# @private
|
14
|
+
def initialize
|
15
|
+
@locked_to_started_threshold = Workhorse.stale_detection_locked_to_started_threshold
|
16
|
+
@run_time_threshold = Workhorse.stale_detection_run_time_threshold
|
14
17
|
end
|
15
18
|
|
19
|
+
# @private
|
16
20
|
def perform
|
17
21
|
messages = []
|
18
22
|
|
data/lib/workhorse.rb
CHANGED
@@ -45,6 +45,18 @@ module Workhorse
|
|
45
45
|
mattr_accessor :perform_jobs_in_tx
|
46
46
|
self.perform_jobs_in_tx = true
|
47
47
|
|
48
|
+
# This setting is for {Workhorse::Jobs::DetectStaleJobsJob} and specifies the
|
49
|
+
# maximum number of seconds a job is allowed to stay 'locked' before this job
|
50
|
+
# throws an exception. Set this to 0 to skip this check.
|
51
|
+
mattr_accessor :stale_detection_locked_to_started_threshold
|
52
|
+
self.stale_detection_locked_to_started_threshold = 3 * 60
|
53
|
+
|
54
|
+
# This setting is for {Workhorse::Jobs::DetectStaleJobsJob} and specifies the
|
55
|
+
# maximum number of seconds a job is allowed to run before this job throws an
|
56
|
+
# exception. Set this to 0 to skip this check.
|
57
|
+
mattr_accessor :stale_detection_run_time_threshold
|
58
|
+
self.stale_detection_run_time_threshold = 12 * 60
|
59
|
+
|
48
60
|
def self.setup
|
49
61
|
yield self
|
50
62
|
end
|
data/test/lib/test_helper.rb
CHANGED
data/workhorse.gemspec
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
-
# stub: workhorse 1.2.
|
2
|
+
# stub: workhorse 1.2.5 ruby lib
|
3
3
|
|
4
4
|
Gem::Specification.new do |s|
|
5
5
|
s.name = "workhorse".freeze
|
6
|
-
s.version = "1.2.
|
6
|
+
s.version = "1.2.5"
|
7
7
|
|
8
8
|
s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
|
9
9
|
s.require_paths = ["lib".freeze]
|
10
10
|
s.authors = ["Sitrox".freeze]
|
11
|
-
s.date = "2021-
|
12
|
-
s.files = [".
|
11
|
+
s.date = "2021-11-01"
|
12
|
+
s.files = [".github/workflows/ruby.yml".freeze, ".gitignore".freeze, ".releaser_config".freeze, ".rubocop.yml".freeze, "CHANGELOG.md".freeze, "FAQ.md".freeze, "Gemfile".freeze, "LICENSE".freeze, "README.md".freeze, "RUBY_VERSION".freeze, "Rakefile".freeze, "VERSION".freeze, "bin/rubocop".freeze, "lib/active_job/queue_adapters/workhorse_adapter.rb".freeze, "lib/generators/workhorse/install_generator.rb".freeze, "lib/generators/workhorse/templates/bin/workhorse.rb".freeze, "lib/generators/workhorse/templates/config/initializers/workhorse.rb".freeze, "lib/generators/workhorse/templates/create_table_jobs.rb".freeze, "lib/workhorse.rb".freeze, "lib/workhorse/daemon.rb".freeze, "lib/workhorse/daemon/shell_handler.rb".freeze, "lib/workhorse/db_job.rb".freeze, "lib/workhorse/enqueuer.rb".freeze, "lib/workhorse/jobs/cleanup_succeeded_jobs.rb".freeze, "lib/workhorse/jobs/detect_stale_jobs_job.rb".freeze, "lib/workhorse/jobs/run_active_job.rb".freeze, "lib/workhorse/jobs/run_rails_op.rb".freeze, "lib/workhorse/performer.rb".freeze, "lib/workhorse/poller.rb".freeze, "lib/workhorse/pool.rb".freeze, "lib/workhorse/scoped_env.rb".freeze, "lib/workhorse/worker.rb".freeze, "test/active_job/queue_adapters/workhorse_adapter_test.rb".freeze, "test/lib/db_schema.rb".freeze, "test/lib/jobs.rb".freeze, "test/lib/test_helper.rb".freeze, "test/workhorse/db_job_test.rb".freeze, "test/workhorse/enqueuer_test.rb".freeze, "test/workhorse/performer_test.rb".freeze, "test/workhorse/poller_test.rb".freeze, "test/workhorse/pool_test.rb".freeze, "test/workhorse/worker_test.rb".freeze, "workhorse.gemspec".freeze]
|
13
13
|
s.rubygems_version = "3.0.3".freeze
|
14
14
|
s.summary = "Multi-threaded job backend with database queuing for ruby.".freeze
|
15
15
|
s.test_files = ["test/active_job/queue_adapters/workhorse_adapter_test.rb".freeze, "test/lib/db_schema.rb".freeze, "test/lib/jobs.rb".freeze, "test/lib/test_helper.rb".freeze, "test/workhorse/db_job_test.rb".freeze, "test/workhorse/enqueuer_test.rb".freeze, "test/workhorse/performer_test.rb".freeze, "test/workhorse/poller_test.rb".freeze, "test/workhorse/pool_test.rb".freeze, "test/workhorse/worker_test.rb".freeze]
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: workhorse
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sitrox
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-11-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -178,16 +178,16 @@ dependencies:
|
|
178
178
|
- - ">="
|
179
179
|
- !ruby/object:Gem::Version
|
180
180
|
version: '0'
|
181
|
-
description:
|
182
|
-
email:
|
181
|
+
description:
|
182
|
+
email:
|
183
183
|
executables: []
|
184
184
|
extensions: []
|
185
185
|
extra_rdoc_files: []
|
186
186
|
files:
|
187
|
+
- ".github/workflows/ruby.yml"
|
187
188
|
- ".gitignore"
|
188
189
|
- ".releaser_config"
|
189
190
|
- ".rubocop.yml"
|
190
|
-
- ".travis.yml"
|
191
191
|
- CHANGELOG.md
|
192
192
|
- FAQ.md
|
193
193
|
- Gemfile
|
@@ -227,10 +227,10 @@ files:
|
|
227
227
|
- test/workhorse/pool_test.rb
|
228
228
|
- test/workhorse/worker_test.rb
|
229
229
|
- workhorse.gemspec
|
230
|
-
homepage:
|
230
|
+
homepage:
|
231
231
|
licenses: []
|
232
232
|
metadata: {}
|
233
|
-
post_install_message:
|
233
|
+
post_install_message:
|
234
234
|
rdoc_options: []
|
235
235
|
require_paths:
|
236
236
|
- lib
|
@@ -245,8 +245,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
245
245
|
- !ruby/object:Gem::Version
|
246
246
|
version: '0'
|
247
247
|
requirements: []
|
248
|
-
rubygems_version: 3.
|
249
|
-
signing_key:
|
248
|
+
rubygems_version: 3.2.22
|
249
|
+
signing_key:
|
250
250
|
specification_version: 4
|
251
251
|
summary: Multi-threaded job backend with database queuing for ruby.
|
252
252
|
test_files:
|