good_job 2.5.0 → 2.7.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 +69 -0
- data/README.md +58 -1
- data/engine/app/assets/scripts.js +1 -0
- data/engine/app/assets/style.css +5 -0
- data/engine/app/assets/vendor/chartjs/chart.min.js +13 -0
- data/engine/app/assets/vendor/rails_ujs.js +747 -0
- data/engine/app/charts/good_job/scheduled_by_queue_chart.rb +69 -0
- data/engine/app/controllers/good_job/assets_controller.rb +8 -4
- data/engine/app/controllers/good_job/base_controller.rb +19 -0
- data/engine/app/controllers/good_job/cron_entries_controller.rb +19 -0
- data/engine/app/filters/good_job/base_filter.rb +12 -54
- data/engine/app/filters/good_job/executions_filter.rb +9 -8
- data/engine/app/filters/good_job/jobs_filter.rb +9 -8
- data/engine/app/views/good_job/cron_entries/index.html.erb +51 -0
- data/engine/app/views/good_job/cron_entries/show.html.erb +4 -0
- data/engine/app/views/good_job/{shared/_executions_table.erb → executions/_table.erb} +1 -1
- data/engine/app/views/good_job/executions/index.html.erb +2 -2
- data/engine/app/views/good_job/{shared/_jobs_table.erb → jobs/_table.erb} +4 -4
- data/engine/app/views/good_job/jobs/index.html.erb +2 -2
- data/engine/app/views/good_job/jobs/show.html.erb +2 -2
- data/engine/app/views/good_job/shared/_chart.erb +19 -46
- data/engine/app/views/good_job/shared/_filter.erb +27 -13
- data/engine/app/views/good_job/shared/icons/_play.html.erb +4 -0
- data/engine/app/views/layouts/good_job/base.html.erb +6 -4
- data/engine/config/routes.rb +10 -3
- data/{engine/app/models → lib}/good_job/active_job_job.rb +2 -19
- data/lib/good_job/cli.rb +8 -0
- data/lib/good_job/configuration.rb +8 -1
- data/lib/good_job/cron_entry.rb +75 -4
- data/lib/good_job/cron_manager.rb +1 -5
- data/lib/good_job/current_thread.rb +26 -8
- data/lib/good_job/execution.rb +16 -31
- data/lib/good_job/filterable.rb +42 -0
- data/lib/good_job/notifier.rb +17 -7
- data/lib/good_job/probe_server.rb +51 -0
- data/lib/good_job/version.rb +1 -1
- metadata +41 -21
- data/engine/app/assets/vendor/chartist/chartist.css +0 -613
- data/engine/app/assets/vendor/chartist/chartist.js +0 -4516
- data/engine/app/controllers/good_job/cron_schedules_controller.rb +0 -9
- data/engine/app/views/good_job/cron_schedules/index.html.erb +0 -72
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f44a377e368104479ccd928977d0c99c673e468fdcce61530cdfef1ee045c61d
|
4
|
+
data.tar.gz: 3a5b29ba222be53ee571036ed27275517cb810a03bbd9b6fa5733b215742ef50
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 833b35f3faa5660d45e14adbb15d2b6f65c7a7cbc127ae0d6d9085844e55fe33c6c1b02cbb6196f5f753bdf7ec76cff18a1976cef3ca26288960f6028c6d3fac
|
7
|
+
data.tar.gz: def64d311e93139e7232fddd9aec1f0c0e0ff49696680dede67f87705d3a0dbc9338d083f1f2a22fdfff572465032c6ec75c97dee1ece7ffac20ca46c76fdc6c
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,74 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## [v2.7.0](https://github.com/bensheldon/good_job/tree/v2.7.0) (2021-11-10)
|
4
|
+
|
5
|
+
[Full Changelog](https://github.com/bensheldon/good_job/compare/v2.6.2...v2.7.0)
|
6
|
+
|
7
|
+
**Implemented enhancements:**
|
8
|
+
|
9
|
+
- Add http probe for CLI healthcheck/readiness/liveliness [\#452](https://github.com/bensheldon/good_job/pull/452) ([bensheldon](https://github.com/bensheldon))
|
10
|
+
- Add explicit Content Security Policy \(CSP\) for Dashboard [\#449](https://github.com/bensheldon/good_job/pull/449) ([bensheldon](https://github.com/bensheldon))
|
11
|
+
|
12
|
+
**Closed issues:**
|
13
|
+
|
14
|
+
- Add a default Content-Security-Policy for the Dashboard [\#420](https://github.com/bensheldon/good_job/issues/420)
|
15
|
+
|
16
|
+
## [v2.6.2](https://github.com/bensheldon/good_job/tree/v2.6.2) (2021-11-05)
|
17
|
+
|
18
|
+
[Full Changelog](https://github.com/bensheldon/good_job/compare/v2.6.1...v2.6.2)
|
19
|
+
|
20
|
+
**Fixed bugs:**
|
21
|
+
|
22
|
+
- Rename Filterable\#search to Filterable\#search\_text to avoid name collision [\#451](https://github.com/bensheldon/good_job/pull/451) ([bensheldon](https://github.com/bensheldon))
|
23
|
+
|
24
|
+
**Closed issues:**
|
25
|
+
|
26
|
+
- v2.6.1 is incompatible with gem thinking-sphinx [\#450](https://github.com/bensheldon/good_job/issues/450)
|
27
|
+
|
28
|
+
## [v2.6.1](https://github.com/bensheldon/good_job/tree/v2.6.1) (2021-11-05)
|
29
|
+
|
30
|
+
[Full Changelog](https://github.com/bensheldon/good_job/compare/v2.6.0...v2.6.1)
|
31
|
+
|
32
|
+
**Implemented enhancements:**
|
33
|
+
|
34
|
+
- Allow job management \(retry, destroy\) through the Web UI [\#256](https://github.com/bensheldon/good_job/issues/256)
|
35
|
+
- Add fulltext search filter [\#440](https://github.com/bensheldon/good_job/pull/440) ([bensheldon](https://github.com/bensheldon))
|
36
|
+
|
37
|
+
**Fixed bugs:**
|
38
|
+
|
39
|
+
- Unsubscribed LISTEN forever after database connection lost [\#303](https://github.com/bensheldon/good_job/issues/303)
|
40
|
+
- Add `PG::UnableToSend` and `PG::Error` as a Notifier connection error [\#445](https://github.com/bensheldon/good_job/pull/445) ([bensheldon](https://github.com/bensheldon))
|
41
|
+
|
42
|
+
**Closed issues:**
|
43
|
+
|
44
|
+
- Question: what's the correct way to handle database connection pool size when using cron [\#443](https://github.com/bensheldon/good_job/issues/443)
|
45
|
+
- Add a search bar to Dashboard [\#432](https://github.com/bensheldon/good_job/issues/432)
|
46
|
+
- Hacktoberfest 2021 [\#393](https://github.com/bensheldon/good_job/issues/393)
|
47
|
+
- Ideas for improvements to Cron [\#392](https://github.com/bensheldon/good_job/issues/392)
|
48
|
+
- Fix flakey test that times out [\#382](https://github.com/bensheldon/good_job/issues/382)
|
49
|
+
|
50
|
+
**Merged pull requests:**
|
51
|
+
|
52
|
+
- Update development dependencies [\#447](https://github.com/bensheldon/good_job/pull/447) ([bensheldon](https://github.com/bensheldon))
|
53
|
+
- Replace Chartist.js with Chart.js [\#444](https://github.com/bensheldon/good_job/pull/444) ([bensheldon](https://github.com/bensheldon))
|
54
|
+
- Fix JRuby flake: "Scheduler\#create\_thread returns false if there are no threads available" [\#442](https://github.com/bensheldon/good_job/pull/442) ([bensheldon](https://github.com/bensheldon))
|
55
|
+
|
56
|
+
## [v2.6.0](https://github.com/bensheldon/good_job/tree/v2.6.0) (2021-10-30)
|
57
|
+
|
58
|
+
[Full Changelog](https://github.com/bensheldon/good_job/compare/v2.5.0...v2.6.0)
|
59
|
+
|
60
|
+
**Implemented enhancements:**
|
61
|
+
|
62
|
+
- Allow for cron schedules to be expressed using fugit natural language parsing [\#441](https://github.com/bensheldon/good_job/pull/441) ([jgrau](https://github.com/jgrau))
|
63
|
+
- Add Rails UJS javascript to Dashboard along with confirmations [\#437](https://github.com/bensheldon/good_job/pull/437) ([bensheldon](https://github.com/bensheldon))
|
64
|
+
- Reorganize Cron dashboard screen; add jobs drill-drown and enqueue-now action [\#436](https://github.com/bensheldon/good_job/pull/436) ([bensheldon](https://github.com/bensheldon))
|
65
|
+
|
66
|
+
**Closed issues:**
|
67
|
+
|
68
|
+
- Ability to express cron schedule using fugit natural language parser [\#439](https://github.com/bensheldon/good_job/issues/439)
|
69
|
+
- Best way to ensure ordering of a queue. [\#402](https://github.com/bensheldon/good_job/issues/402)
|
70
|
+
- ActiveJob concurrency raises FrozenError [\#386](https://github.com/bensheldon/good_job/issues/386)
|
71
|
+
|
3
72
|
## [v2.5.0](https://github.com/bensheldon/good_job/tree/v2.5.0) (2021-10-25)
|
4
73
|
|
5
74
|
[Full Changelog](https://github.com/bensheldon/good_job/compare/v2.4.2...v2.5.0)
|
data/README.md
CHANGED
@@ -55,6 +55,7 @@ For more of the story of GoodJob, read the [introductory blog post](https://isla
|
|
55
55
|
- [Migrate to GoodJob from a different ActiveJob backend](#migrate-to-goodjob-from-a-different-activejob-backend)
|
56
56
|
- [Monitor and preserve worked jobs](#monitor-and-preserve-worked-jobs)
|
57
57
|
- [PgBouncer compatibility](#pgbouncer-compatibility)
|
58
|
+
- [CLI HTTP health check probes](#cli-http-healthcheck-probes)
|
58
59
|
- [Contribute](#contribute)
|
59
60
|
- [Gem development](#gem-development)
|
60
61
|
- [Release](#release)
|
@@ -170,6 +171,7 @@ Options:
|
|
170
171
|
[--enable-cron] # Whether to run cron process (default: false)
|
171
172
|
[--daemonize] # Run as a background daemon (default: false)
|
172
173
|
[--pidfile=PIDFILE] # Path to write daemonized Process ID (env var: GOOD_JOB_PIDFILE, default: tmp/pids/good_job.pid)
|
174
|
+
[--probe-port=PORT] # Port for http health check (env var: GOOD_JOB_PROBE_PORT, default: nil)
|
173
175
|
|
174
176
|
Executes queued jobs.
|
175
177
|
|
@@ -401,7 +403,7 @@ GoodJob can enqueue jobs on a recurring basis that can be used as a replacement
|
|
401
403
|
|
402
404
|
Cron-style jobs are run on every GoodJob process (e.g. CLI or `async` execution mode) when `config.good_job.enable_cron = true`, but GoodJob's cron uses unique indexes to ensure that only a single job is enqeued at the given time interval.
|
403
405
|
|
404
|
-
Cron-format is parsed by the [`fugit`](https://github.com/floraison/fugit) gem, which has support for seconds-level resolution (e.g. `* * * * * *`).
|
406
|
+
Cron-format is parsed by the [`fugit`](https://github.com/floraison/fugit) gem, which has support for seconds-level resolution (e.g. `* * * * * *`) and natural language parsing (e.g. `every second`).
|
405
407
|
|
406
408
|
```ruby
|
407
409
|
# config/environments/application.rb or a specific environment e.g. production.rb
|
@@ -837,6 +839,61 @@ A workaround to this limitation is to make a direct database connection availabl
|
|
837
839
|
GoodJob.active_record_parent_class = "ApplicationDirectRecord"
|
838
840
|
```
|
839
841
|
|
842
|
+
### CLI HTTP health check probes
|
843
|
+
|
844
|
+
GoodJob's CLI offers an http health check probe to better manage process lifecycle in containerized environments like Kubernetes:
|
845
|
+
|
846
|
+
```bash
|
847
|
+
# Run the CLI with a health check on port 7001
|
848
|
+
good_job start --probe-port=7001
|
849
|
+
|
850
|
+
# or via an environment variable
|
851
|
+
GOOD_JOB_PROBE_PORT=7001 good_job start
|
852
|
+
|
853
|
+
# Probe the status
|
854
|
+
curl localhost:7001/status
|
855
|
+
curl localhost:7001/status/started
|
856
|
+
curl localhost:7001/status/connected
|
857
|
+
```
|
858
|
+
|
859
|
+
Multiple health checks are available at different paths:
|
860
|
+
|
861
|
+
- `/` or `/status`: the CLI process is running
|
862
|
+
- `/status/started`: the multithreaded job executor is running
|
863
|
+
- `/status/connected`: the database connection is established
|
864
|
+
|
865
|
+
This can be configured, for example with Kubernetes:
|
866
|
+
|
867
|
+
```yaml
|
868
|
+
spec:
|
869
|
+
containers:
|
870
|
+
- name: good_job
|
871
|
+
image: my_app:latest
|
872
|
+
env:
|
873
|
+
- name: RAILS_ENV
|
874
|
+
value: production
|
875
|
+
- name: GOOD_JOB_PROBE_PORT
|
876
|
+
value: 7001
|
877
|
+
command:
|
878
|
+
- good_job
|
879
|
+
- start
|
880
|
+
ports:
|
881
|
+
- name: probe-port
|
882
|
+
containerPort: 7001
|
883
|
+
startupProbe:
|
884
|
+
httpGet:
|
885
|
+
path: "/status/started"
|
886
|
+
port: probe-port
|
887
|
+
failureThreshold: 30
|
888
|
+
periodSeconds: 10
|
889
|
+
livenessProbe:
|
890
|
+
httpGet:
|
891
|
+
path: "/status/connected"
|
892
|
+
port: probe-port
|
893
|
+
failureThreshold: 1
|
894
|
+
periodSeconds: 10
|
895
|
+
```
|
896
|
+
|
840
897
|
## Contribute
|
841
898
|
|
842
899
|
Contributions are welcomed and appreciated 🙏
|
@@ -0,0 +1 @@
|
|
1
|
+
GoodJob = {};
|