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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c8b46dee93b4c068a0448cede864128197aea8393c592527402bd42a2d7d5412
4
- data.tar.gz: e808736be9666ff28aa8e16db00894a2668d23fec91b29aa6a4af6d5aaf45cdf
3
+ metadata.gz: 5b1cc4ec91d5c8cde5e214aff39f298f3fa9591b6693250158250fd8de87dd19
4
+ data.tar.gz: e333e77dc8bb0a24b809324a54d014f56b9373ccc0f16dc5f58052fa7bd1bbe3
5
5
  SHA512:
6
- metadata.gz: 5b80105eae609607dc11fc044d62e764222c110e735600ae1eae432ff36916e7a554c63b964d95a08d6730f4c78ba0b509aab37ae6860b76f60250adda6c495d
7
- data.tar.gz: 957e7f435fb08673307907689fcd0d0c46ab434362ec629a6f5ff7ba5cf50dd138f6042530ce44f289ee900fa5359b787884f5405a935a312e6da38155d7fd24
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
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2020 - 2021 Sitrox
3
+ Copyright (c) 2017 - 2022 Sitrox
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
data/README.md CHANGED
@@ -441,4 +441,4 @@ Please consult the [FAQ](FAQ.md).
441
441
 
442
442
  ## Copyright
443
443
 
444
- Copyright © 2021 Sitrox. See `LICENSE` for further details.
444
+ Copyright © 2017 - 2022 Sitrox. See `LICENSE` for further details.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.2.5
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
 
@@ -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
@@ -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.5 ruby lib
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.5"
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 = "2021-11-01"
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.5
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: 2021-11-01 00:00:00.000000000 Z
11
+ date: 2022-01-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler