workhorse 1.0.0.beta0 → 1.0.0.beta1
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/CHANGELOG.md +8 -0
- data/VERSION +1 -1
- data/lib/workhorse/performer.rb +2 -2
- data/lib/workhorse/poller.rb +5 -1
- data/lib/workhorse/worker.rb +3 -3
- data/workhorse.gemspec +3 -3
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4e60ee9b02f73f0ecffe49df98f1d83e59d23f612d84e7a15232e7c95da15873
|
4
|
+
data.tar.gz: 3dcae37910f823e33af81b47ad4578a6e0294213b8c2eb5a01dca39762d8f9ca
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6fd243a410f19deb78d09331e7e67e27438851b90ac99a9fcd4495cf33be832014f63c9c691a118da003e1bc4305e793a13dc8a3399885d69c168b39bc5c9d6e
|
7
|
+
data.tar.gz: 8b0407c7f00e05258a7f7a837c9246514afcb2a039dc3e68aeb7622fe929e9fc7f6b84a90de9026219d0acc87a7a8131effb49c43c791761d518410492e5c652
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,13 @@
|
|
1
1
|
# Workhorse Changelog
|
2
2
|
|
3
|
+
## 1.0.0.beta1 - 2020-08-20
|
4
|
+
|
5
|
+
This is a stability release that is still experimental and has to be tested in
|
6
|
+
battle before it can be considered stable.
|
7
|
+
|
8
|
+
* Stop passing ActiveRecord job objects between polling and worker threads to
|
9
|
+
avoid AR race conditions. Now only IDs are passed between threads.
|
10
|
+
|
3
11
|
## 1.0.0.beta0 - 2020-08-19
|
4
12
|
|
5
13
|
This is a stability release that is still experimental and has to be tested in
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.0.0.
|
1
|
+
1.0.0.beta1
|
data/lib/workhorse/performer.rb
CHANGED
data/lib/workhorse/poller.rb
CHANGED
@@ -105,6 +105,8 @@ module Workhorse
|
|
105
105
|
timeout = [MIN_LOCK_TIMEOUT, [MAX_LOCK_TIMEOUT, worker.polling_interval].min].max
|
106
106
|
|
107
107
|
with_global_lock timeout: timeout do
|
108
|
+
job_ids = []
|
109
|
+
|
108
110
|
Workhorse.tx_callback.call do
|
109
111
|
# As we are the only thread posting into the worker pool, it is safe to
|
110
112
|
# get the number of idle threads without mutex synchronization. The
|
@@ -119,10 +121,12 @@ module Workhorse
|
|
119
121
|
jobs.each do |job|
|
120
122
|
worker.log "Marking job #{job.id} as locked", :debug
|
121
123
|
job.mark_locked!(worker.id)
|
122
|
-
|
124
|
+
job_ids << job.id
|
123
125
|
end
|
124
126
|
end
|
125
127
|
end
|
128
|
+
|
129
|
+
job_ids.each { |job_id| worker.perform(job_id) }
|
126
130
|
end
|
127
131
|
end
|
128
132
|
|
data/lib/workhorse/worker.rb
CHANGED
@@ -127,14 +127,14 @@ module Workhorse
|
|
127
127
|
@pool.idle
|
128
128
|
end
|
129
129
|
|
130
|
-
def perform(
|
130
|
+
def perform(db_job_id)
|
131
131
|
mutex.synchronize do
|
132
132
|
assert_state! :running
|
133
|
-
log "Posting job #{
|
133
|
+
log "Posting job #{db_job_id} to thread pool"
|
134
134
|
|
135
135
|
@pool.post do
|
136
136
|
begin
|
137
|
-
Workhorse::Performer.new(
|
137
|
+
Workhorse::Performer.new(db_job_id, self).perform
|
138
138
|
rescue Exception => e
|
139
139
|
log %(#{e.message}\n#{e.backtrace.join("\n")}), :error
|
140
140
|
end
|
data/workhorse.gemspec
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
-
# stub: workhorse 1.0.0.
|
2
|
+
# stub: workhorse 1.0.0.beta1 ruby lib
|
3
3
|
|
4
4
|
Gem::Specification.new do |s|
|
5
5
|
s.name = "workhorse".freeze
|
6
|
-
s.version = "1.0.0.
|
6
|
+
s.version = "1.0.0.beta1"
|
7
7
|
|
8
8
|
s.required_rubygems_version = Gem::Requirement.new("> 1.3.1".freeze) if s.respond_to? :required_rubygems_version=
|
9
9
|
s.require_paths = ["lib".freeze]
|
10
10
|
s.authors = ["Sitrox".freeze]
|
11
|
-
s.date = "2020-08-
|
11
|
+
s.date = "2020-08-20"
|
12
12
|
s.files = [".gitignore".freeze, ".releaser_config".freeze, ".rubocop.yml".freeze, ".travis.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
|
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.0.0.
|
4
|
+
version: 1.0.0.beta1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sitrox
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-08-
|
11
|
+
date: 2020-08-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|