workhorse 1.2.5 → 1.2.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/CHANGELOG.md +8 -0
- data/LICENSE +1 -1
- data/README.md +1 -1
- data/VERSION +1 -1
- data/lib/workhorse/daemon/shell_handler.rb +6 -0
- data/lib/workhorse/daemon.rb +22 -0
- data/lib/workhorse/worker.rb +14 -0
- 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: 5b1cc4ec91d5c8cde5e214aff39f298f3fa9591b6693250158250fd8de87dd19
|
4
|
+
data.tar.gz: e333e77dc8bb0a24b809324a54d014f56b9373ccc0f16dc5f58052fa7bd1bbe3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: af21dcc9cf0672dc71ae1b5ec2d61e6245cf6a24fc4b599d1c21c36c06e20cbc46b59248ea0b6232589eced87305c408cbe7254e6817fdb5bb2ec294181e87a7
|
7
|
+
data.tar.gz: 368889c80a413ad8e0343a5227ba70081470931e427ca7ec7c1b1bad6cee59af2a2f9bffe31fb879f1d1a81f2233f506cb038d896dce08b2551733873c013f1f
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,13 @@
|
|
1
1
|
# Workhorse Changelog
|
2
2
|
|
3
|
+
## 1.2.6 - 2022-01-11
|
4
|
+
|
5
|
+
* Add daemon command `restart-logging`, which sends a `HUP` interrupt to all
|
6
|
+
Workhorse processes which in turn reopen the log files. This is particularly
|
7
|
+
useful to call after log files have been rotated, e.g. using `logrotate`.
|
8
|
+
|
9
|
+
Sitrox reference: #64690.
|
10
|
+
|
3
11
|
## 1.2.5 - 2021-11-01
|
4
12
|
|
5
13
|
* Add config settings for configuring {Workhorse::Jobs::DetectStaleJobsJob}:
|
data/LICENSE
CHANGED
data/README.md
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.2.
|
1
|
+
1.2.6
|
@@ -26,6 +26,8 @@ module Workhorse
|
|
26
26
|
exit daemon.watch
|
27
27
|
when 'restart'
|
28
28
|
exit daemon.restart
|
29
|
+
when 'restart-logging'
|
30
|
+
exit daemon.restart_logging
|
29
31
|
when 'usage'
|
30
32
|
usage
|
31
33
|
exit 99
|
@@ -68,6 +70,10 @@ Options:
|
|
68
70
|
restart
|
69
71
|
Shortcut for consecutive 'stop' and 'start'.
|
70
72
|
|
73
|
+
restart-logging
|
74
|
+
Re-opens log files, useful e.g. after the log files have been moved or
|
75
|
+
removed by log rotation.
|
76
|
+
|
71
77
|
usage
|
72
78
|
Show this message
|
73
79
|
|
data/lib/workhorse/daemon.rb
CHANGED
@@ -120,6 +120,24 @@ module Workhorse
|
|
120
120
|
return start
|
121
121
|
end
|
122
122
|
|
123
|
+
def restart_logging
|
124
|
+
code = 0
|
125
|
+
|
126
|
+
for_each_worker do |worker|
|
127
|
+
pid_file, pid = read_pid(worker)
|
128
|
+
|
129
|
+
begin
|
130
|
+
Process.kill 'HUP', pid
|
131
|
+
puts "Worker (#{worker.name}) ##{worker.id}: Sent signal for restart-logging"
|
132
|
+
rescue Errno::ESRCH
|
133
|
+
warn "Worker (#{worker.name}) ##{worker.id}: Could not send signal for restart-logging, process not found"
|
134
|
+
code = 1
|
135
|
+
end
|
136
|
+
end
|
137
|
+
|
138
|
+
return code
|
139
|
+
end
|
140
|
+
|
123
141
|
private
|
124
142
|
|
125
143
|
def for_each_worker(&block)
|
@@ -150,6 +168,10 @@ module Workhorse
|
|
150
168
|
File.delete(pid_file)
|
151
169
|
end
|
152
170
|
|
171
|
+
def hup_worker(pid)
|
172
|
+
Process.kill('HUP', pid)
|
173
|
+
end
|
174
|
+
|
153
175
|
def process_name(worker)
|
154
176
|
if defined?(Rails)
|
155
177
|
path = Rails.root
|
data/lib/workhorse/worker.rb
CHANGED
@@ -2,6 +2,7 @@ module Workhorse
|
|
2
2
|
class Worker
|
3
3
|
LOG_LEVELS = %i[fatal error warn info debug].freeze
|
4
4
|
SHUTDOWN_SIGNALS = %w[TERM INT].freeze
|
5
|
+
LOG_REOPEN_SIGNAL = 'HUP'.freeze
|
5
6
|
|
6
7
|
attr_reader :queues
|
7
8
|
attr_reader :state
|
@@ -87,6 +88,7 @@ module Workhorse
|
|
87
88
|
log 'Started up'
|
88
89
|
|
89
90
|
trap_termination if @auto_terminate
|
91
|
+
trap_log_reopen
|
90
92
|
end
|
91
93
|
end
|
92
94
|
|
@@ -152,6 +154,18 @@ module Workhorse
|
|
152
154
|
end
|
153
155
|
end
|
154
156
|
|
157
|
+
def trap_log_reopen
|
158
|
+
Signal.trap(LOG_REOPEN_SIGNAL) do
|
159
|
+
Thread.new do
|
160
|
+
logger.reopen
|
161
|
+
|
162
|
+
if defined?(ActiveRecord::Base) && ActiveRecord::Base.logger && ActiveRecord::Base.logger != logger
|
163
|
+
ActiveRecord::Base.logger.reopen
|
164
|
+
end
|
165
|
+
end.join
|
166
|
+
end
|
167
|
+
end
|
168
|
+
|
155
169
|
def trap_termination
|
156
170
|
SHUTDOWN_SIGNALS.each do |signal|
|
157
171
|
Signal.trap(signal) do
|
data/workhorse.gemspec
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
-
# stub: workhorse 1.2.
|
2
|
+
# stub: workhorse 1.2.6 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.6"
|
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 = "
|
11
|
+
s.date = "2022-01-11"
|
12
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
|
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.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sitrox
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-01-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|