good_job 3.12.7 → 3.13.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +39 -4
- data/app/controllers/good_job/frontends_controller.rb +1 -1
- data/app/filters/good_job/jobs_filter.rb +13 -11
- data/app/models/good_job/job.rb +10 -0
- data/app/views/good_job/jobs/_table.erb +1 -1
- data/lib/good_job/capsule.rb +3 -1
- data/lib/good_job/cli.rb +4 -1
- data/lib/good_job/scheduler.rb +4 -2
- data/lib/good_job/version.rb +1 -1
- data/lib/good_job.rb +1 -1
- 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: c83cf253d12daeb00363fe9c1b3a06b463c6944aa108aa4f884bf43b0d1f5c88
|
4
|
+
data.tar.gz: 71738f01485fb73b1dfa71396807f4570922d53aa186bf7aa1f9c27b21e4e559
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 25bbd078a94d5079b47d57c267ad72f7e6baa024230add7fd9c693c621eb8be7117aa517f715baba5b16cb5f0378eb0e407a41ea1569e923a16716ef0f4d391b
|
7
|
+
data.tar.gz: cf58cbaea01a1dd6714b53c6d618661908ccf46ef3deae58b3e2d6063f512e528d0d4f04850e7a3c4a1ccc59ece959a0919d19898488116898f78b9c78c7a5f6
|
data/CHANGELOG.md
CHANGED
@@ -1,17 +1,52 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
-
## [v3.
|
3
|
+
## [v3.13.0](https://github.com/bensheldon/good_job/tree/v3.13.0) (2023-03-08)
|
4
4
|
|
5
|
-
[Full Changelog](https://github.com/bensheldon/good_job/compare/v3.12.
|
5
|
+
[Full Changelog](https://github.com/bensheldon/good_job/compare/v3.12.8...v3.13.0)
|
6
|
+
|
7
|
+
**Implemented enhancements:**
|
8
|
+
|
9
|
+
- If logging to STDOUT in CLI set $stdout.sync = true [\#882](https://github.com/bensheldon/good_job/pull/882) ([blafri](https://github.com/blafri))
|
6
10
|
|
7
11
|
**Fixed bugs:**
|
8
12
|
|
9
|
-
-
|
13
|
+
- Don't load all Executions on Jobs Dashboard [\#878](https://github.com/bensheldon/good_job/pull/878) ([bensheldon](https://github.com/bensheldon))
|
14
|
+
|
15
|
+
**Closed issues:**
|
16
|
+
|
17
|
+
- No route matches \[POST\] "/scheduler-dashboard/jobs/\<id\>/retry" [\#880](https://github.com/bensheldon/good_job/issues/880)
|
18
|
+
- What is `concurrency_key` used for? [\#877](https://github.com/bensheldon/good_job/issues/877)
|
19
|
+
- ArgumentError in GoodJob::Jobs\#index [\#875](https://github.com/bensheldon/good_job/issues/875)
|
20
|
+
- Nonworking dashboard for job with many retries [\#809](https://github.com/bensheldon/good_job/issues/809)
|
21
|
+
|
22
|
+
**Merged pull requests:**
|
23
|
+
|
24
|
+
- Add aggressive test for async Batches [\#833](https://github.com/bensheldon/good_job/pull/833) ([bensheldon](https://github.com/bensheldon))
|
25
|
+
|
26
|
+
## [v3.12.8](https://github.com/bensheldon/good_job/tree/v3.12.8) (2023-03-06)
|
27
|
+
|
28
|
+
[Full Changelog](https://github.com/bensheldon/good_job/compare/v3.12.7...v3.12.8)
|
29
|
+
|
30
|
+
**Fixed bugs:**
|
31
|
+
|
32
|
+
- Add `raise: false` to FrontendsController after action skip [\#881](https://github.com/bensheldon/good_job/pull/881) ([simi](https://github.com/simi))
|
10
33
|
|
11
34
|
**Closed issues:**
|
12
35
|
|
13
36
|
- GoodJob's JavaScript takes precedence over application's JavaScript in GoodJob 3.12.6, Rails 7 [\#873](https://github.com/bensheldon/good_job/issues/873)
|
14
37
|
|
38
|
+
**Merged pull requests:**
|
39
|
+
|
40
|
+
- Rewrite flaky tests: don't allow nil timeout for restart [\#872](https://github.com/bensheldon/good_job/pull/872) ([bensheldon](https://github.com/bensheldon))
|
41
|
+
|
42
|
+
## [v3.12.7](https://github.com/bensheldon/good_job/tree/v3.12.7) (2023-03-01)
|
43
|
+
|
44
|
+
[Full Changelog](https://github.com/bensheldon/good_job/compare/v3.12.6...v3.12.7)
|
45
|
+
|
46
|
+
**Fixed bugs:**
|
47
|
+
|
48
|
+
- Rename "assets" to "frontends" to avoid Asset Pipeline collisions [\#874](https://github.com/bensheldon/good_job/pull/874) ([bensheldon](https://github.com/bensheldon))
|
49
|
+
|
15
50
|
## [v3.12.6](https://github.com/bensheldon/good_job/tree/v3.12.6) (2023-03-01)
|
16
51
|
|
17
52
|
[Full Changelog](https://github.com/bensheldon/good_job/compare/v3.12.5...v3.12.6)
|
@@ -158,7 +193,7 @@
|
|
158
193
|
|
159
194
|
**Closed issues:**
|
160
195
|
|
161
|
-
- Support for Ruby 3.2 [\#785](https://github.com/bensheldon/good_job/issues/785)
|
196
|
+
- Support for Rails 6.1 / Ruby 3.2 [\#785](https://github.com/bensheldon/good_job/issues/785)
|
162
197
|
- Custom table names [\#748](https://github.com/bensheldon/good_job/issues/748)
|
163
198
|
- Health check issue with cron scheduler job [\#741](https://github.com/bensheldon/good_job/issues/741)
|
164
199
|
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
module GoodJob
|
3
3
|
class FrontendsController < ActionController::Base # rubocop:disable Rails/ApplicationController
|
4
|
-
skip_after_action :verify_same_origin_request
|
4
|
+
skip_after_action :verify_same_origin_request, raise: false
|
5
5
|
|
6
6
|
STATIC_ASSETS = {
|
7
7
|
css: {
|
@@ -2,15 +2,17 @@
|
|
2
2
|
module GoodJob
|
3
3
|
class JobsFilter < BaseFilter
|
4
4
|
def states
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
5
|
+
@_states ||= begin
|
6
|
+
query = filtered_query(params.except(:state))
|
7
|
+
{
|
8
|
+
'scheduled' => query.scheduled.count,
|
9
|
+
'retried' => query.retried.count,
|
10
|
+
'queued' => query.queued.count,
|
11
|
+
'running' => query.running.count,
|
12
|
+
'succeeded' => query.succeeded.count,
|
13
|
+
'discarded' => query.discarded.count,
|
14
|
+
}
|
15
|
+
end
|
14
16
|
end
|
15
17
|
|
16
18
|
def filtered_query(filter_params = params)
|
@@ -42,13 +44,13 @@ module GoodJob
|
|
42
44
|
end
|
43
45
|
|
44
46
|
def filtered_count
|
45
|
-
filtered_query.unscope(:select).count
|
47
|
+
@_filtered_count ||= filtered_query.unscope(:select).count
|
46
48
|
end
|
47
49
|
|
48
50
|
private
|
49
51
|
|
50
52
|
def query_for_records
|
51
|
-
filtered_query.
|
53
|
+
filtered_query.includes_advisory_locks
|
52
54
|
end
|
53
55
|
|
54
56
|
def default_base_query
|
data/app/models/good_job/job.rb
CHANGED
@@ -136,6 +136,16 @@ module GoodJob
|
|
136
136
|
error || executions[-2]&.error
|
137
137
|
end
|
138
138
|
|
139
|
+
# Errors for the job to be displayed in the Dashboard.
|
140
|
+
# @return [String]
|
141
|
+
def display_error
|
142
|
+
return error if error.present?
|
143
|
+
|
144
|
+
serialized_params.fetch('exception_executions', {}).map do |exception, count|
|
145
|
+
"#{exception}: #{count}"
|
146
|
+
end.join(', ')
|
147
|
+
end
|
148
|
+
|
139
149
|
# Return formatted serialized_params for display in the dashboard
|
140
150
|
# @return [Hash]
|
141
151
|
def display_serialized_params
|
@@ -82,7 +82,7 @@
|
|
82
82
|
bs_toggle: "popover",
|
83
83
|
bs_trigger: "hover focus click",
|
84
84
|
bs_placement: "bottom",
|
85
|
-
bs_content: job.
|
85
|
+
bs_content: job.display_error,
|
86
86
|
} %>
|
87
87
|
<% else %>
|
88
88
|
<span class="badge bg-secondary bg-opacity-50 rounded-pill"><%= job.executions_count %></span>
|
data/lib/good_job/capsule.rb
CHANGED
@@ -55,9 +55,11 @@ module GoodJob
|
|
55
55
|
end
|
56
56
|
|
57
57
|
# Shutdown and then start the capsule again.
|
58
|
-
# @param timeout [
|
58
|
+
# @param timeout [Numeric, Symbol] Seconds to wait for active threads.
|
59
59
|
# @return [void]
|
60
60
|
def restart(timeout: :default)
|
61
|
+
raise ArgumentError, "Capsule#restart cannot be called with a timeout of nil" if timeout.nil?
|
62
|
+
|
61
63
|
shutdown(timeout: timeout)
|
62
64
|
start
|
63
65
|
end
|
data/lib/good_job/cli.rb
CHANGED
@@ -148,7 +148,10 @@ module GoodJob
|
|
148
148
|
# Rails or from the application can be set up here.
|
149
149
|
def set_up_application!
|
150
150
|
require RAILS_ENVIRONMENT_RB
|
151
|
-
return
|
151
|
+
return unless GoodJob::CLI.log_to_stdout?
|
152
|
+
|
153
|
+
$stdout.sync = true
|
154
|
+
return if ActiveSupport::Logger.logger_outputs_to?(GoodJob.logger, $stdout)
|
152
155
|
|
153
156
|
GoodJob::LogSubscriber.loggers << ActiveSupport::TaggedLogging.new(ActiveSupport::Logger.new($stdout))
|
154
157
|
GoodJob::LogSubscriber.reset_logger
|
data/lib/good_job/scheduler.rb
CHANGED
@@ -132,11 +132,13 @@ module GoodJob # :nodoc:
|
|
132
132
|
|
133
133
|
# Restart the Scheduler.
|
134
134
|
# When shutdown, start; or shutdown and start.
|
135
|
-
# @param timeout [
|
135
|
+
# @param timeout [Numeric] Seconds to wait for actively executing jobs to finish; shares same values as {#shutdown}.
|
136
136
|
# @return [void]
|
137
137
|
def restart(timeout: -1)
|
138
|
+
raise ArgumentError, "Scheduler#restart cannot be called with a timeout of nil" if timeout.nil?
|
139
|
+
|
138
140
|
instrument("scheduler_restart_pools") do
|
139
|
-
shutdown(timeout: timeout)
|
141
|
+
shutdown(timeout: timeout)
|
140
142
|
create_executor
|
141
143
|
warm_cache
|
142
144
|
end
|
data/lib/good_job/version.rb
CHANGED
data/lib/good_job.rb
CHANGED
@@ -131,7 +131,7 @@ module GoodJob
|
|
131
131
|
# When forking processes you should shut down these background threads before forking, and restart them after forking.
|
132
132
|
# For example, you should use +shutdown+ and +restart+ when using async execution mode with Puma.
|
133
133
|
# See the {file:README.md#executing-jobs-async--in-process} for more explanation and examples.
|
134
|
-
# @param timeout [Numeric
|
134
|
+
# @param timeout [Numeric] Seconds to wait for active threads to finish.
|
135
135
|
# @return [void]
|
136
136
|
def self.restart(timeout: -1)
|
137
137
|
_shutdown_all(Capsule.instances, :restart, timeout: timeout)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: good_job
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.13.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ben Sheldon
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-03-
|
11
|
+
date: 2023-03-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activejob
|