good_job 1.99.0 → 1.99.2

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.
data/CHANGELOG.md CHANGED
@@ -1,5 +1,2807 @@
1
1
  # Changelog
2
2
 
3
+ ## [v1.99.2](https://github.com/bensheldon/good_job/tree/v1.99.2) (2024-07-18)
4
+
5
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v4.1.0...v1.99.2)
6
+
7
+ **Merged pull requests:**
8
+
9
+ - Add Brakeman to linters [\#1431](https://github.com/bensheldon/good_job/pull/1431) ([bensheldon](https://github.com/bensheldon))
10
+ - Remove references to and ignore `good_jobs.retried_good_job_id` column [\#1430](https://github.com/bensheldon/good_job/pull/1430) ([bensheldon](https://github.com/bensheldon))
11
+ - Refactor Concurrency extension for Rails 6.1+ compatibility [\#1429](https://github.com/bensheldon/good_job/pull/1429) ([bensheldon](https://github.com/bensheldon))
12
+ - Replace references to "Discrete" executions with simply Executions; deprecate `GoodJob::DiscreteExecution` [\#1427](https://github.com/bensheldon/good_job/pull/1427) ([bensheldon](https://github.com/bensheldon))
13
+ - Refactor Adapter to reference jobs, not executions [\#1426](https://github.com/bensheldon/good_job/pull/1426) ([bensheldon](https://github.com/bensheldon))
14
+
15
+ ## [v4.1.0](https://github.com/bensheldon/good_job/tree/v4.1.0) (2024-07-16)
16
+
17
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.99.1...v4.1.0)
18
+
19
+ **Implemented enhancements:**
20
+
21
+ - Add keepalive SQL query to Notifier [\#1423](https://github.com/bensheldon/good_job/pull/1423) ([bensheldon](https://github.com/bensheldon))
22
+ - Latency charts and histograms for individual job classes [\#1411](https://github.com/bensheldon/good_job/pull/1411) ([Earlopain](https://github.com/Earlopain))
23
+
24
+ **Fixed bugs:**
25
+
26
+ - Fix nonexistant association error between DiscreteExecution and Execution [\#1425](https://github.com/bensheldon/good_job/pull/1425) ([bensheldon](https://github.com/bensheldon))
27
+
28
+ **Closed issues:**
29
+
30
+ - Could not find the inverse association for execution \(:discrete\_executions in GoodJob::Execution\) [\#1424](https://github.com/bensheldon/good_job/issues/1424)
31
+ - 3.99.1 is marked as the latest version, not 4.0.3 [\#1422](https://github.com/bensheldon/good_job/issues/1422)
32
+ - How to maximise amount of jobs executed in parallel [\#1418](https://github.com/bensheldon/good_job/issues/1418)
33
+ - Performance Metrics for individual jobs [\#1397](https://github.com/bensheldon/good_job/issues/1397)
34
+
35
+ **Merged pull requests:**
36
+
37
+ - Remove some now unnecessary checks against `locked_by_id` existence [\#1421](https://github.com/bensheldon/good_job/pull/1421) ([Earlopain](https://github.com/Earlopain))
38
+ - Use rails enum for `error_event` and `lock_type` [\#1420](https://github.com/bensheldon/good_job/pull/1420) ([Earlopain](https://github.com/Earlopain))
39
+ - Add a little more wording to the v4 "ready to upgrade" instructions [\#1415](https://github.com/bensheldon/good_job/pull/1415) ([bensheldon](https://github.com/bensheldon))
40
+
41
+ ## [v3.99.1](https://github.com/bensheldon/good_job/tree/v3.99.1) (2024-07-10)
42
+
43
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v4.0.3...v3.99.1)
44
+
45
+ ## [v4.0.3](https://github.com/bensheldon/good_job/tree/v4.0.3) (2024-07-10)
46
+
47
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v4.0.2...v4.0.3)
48
+
49
+ **Fixed bugs:**
50
+
51
+ - Only set duration attribute to interval on Rails 6.1 [\#1412](https://github.com/bensheldon/good_job/pull/1412) ([bdewater-thatch](https://github.com/bdewater-thatch))
52
+
53
+ **Closed issues:**
54
+
55
+ - GoodJob error: TypeError: can't cast ActiveSupport::Duration \(on v4.0.0\) [\#1413](https://github.com/bensheldon/good_job/issues/1413)
56
+ - Question: is it possible to clean a set of scheduled jobs \(by class name\) from console? [\#1410](https://github.com/bensheldon/good_job/issues/1410)
57
+ - "Couldn't find GoodJob::BatchRecord" error [\#1387](https://github.com/bensheldon/good_job/issues/1387)
58
+ - Empty alerts "\[\]"? [\#1372](https://github.com/bensheldon/good_job/issues/1372)
59
+ - Release GoodJob 4.0 [\#764](https://github.com/bensheldon/good_job/issues/764)
60
+
61
+ **Merged pull requests:**
62
+
63
+ - Add Active Support load hooks for Job and \(Discrete\)Execution; move all outside class definition bodies [\#1414](https://github.com/bensheldon/good_job/pull/1414) ([bensheldon](https://github.com/bensheldon))
64
+
65
+ ## [v4.0.2](https://github.com/bensheldon/good_job/tree/v4.0.2) (2024-07-08)
66
+
67
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v4.0.1...v4.0.2)
68
+
69
+ **Fixed bugs:**
70
+
71
+ - Fix a rails 6.1 deprecation warning for the duration attribute [\#1408](https://github.com/bensheldon/good_job/pull/1408) ([Earlopain](https://github.com/Earlopain))
72
+ - Actually remove deprecated configuration for `cleanup_interval_seconds`, `cleanup_interval_jobs`; remove deprecated `Lockable` [\#1406](https://github.com/bensheldon/good_job/pull/1406) ([bensheldon](https://github.com/bensheldon))
73
+
74
+ **Closed issues:**
75
+
76
+ - PG::UndefinedColumn: ERROR: column good\_job\_processes.lock\_type does not exist [\#1405](https://github.com/bensheldon/good_job/issues/1405)
77
+ - undefined method `duration=' for an instance of GoodJob::Execution [\#1404](https://github.com/bensheldon/good_job/issues/1404)
78
+ - v3 deprecations are still present [\#1399](https://github.com/bensheldon/good_job/issues/1399)
79
+
80
+ **Merged pull requests:**
81
+
82
+ - Fix Batch integration test to not exhaust database connection thread pool [\#1409](https://github.com/bensheldon/good_job/pull/1409) ([bensheldon](https://github.com/bensheldon))
83
+ - Discrete cleanup [\#1401](https://github.com/bensheldon/good_job/pull/1401) ([Earlopain](https://github.com/Earlopain))
84
+
85
+ ## [v4.0.1](https://github.com/bensheldon/good_job/tree/v4.0.1) (2024-07-08)
86
+
87
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v4.0.0...v4.0.1)
88
+
89
+ **Fixed bugs:**
90
+
91
+ - Actually change `smaller_number_is_higher_priority` for v4 [\#1402](https://github.com/bensheldon/good_job/pull/1402) ([Earlopain](https://github.com/Earlopain))
92
+
93
+ **Merged pull requests:**
94
+
95
+ - Bump prism/rbi dev dependency [\#1403](https://github.com/bensheldon/good_job/pull/1403) ([Earlopain](https://github.com/Earlopain))
96
+ - Use index action for the performance controller [\#1398](https://github.com/bensheldon/good_job/pull/1398) ([Earlopain](https://github.com/Earlopain))
97
+
98
+ ## [v4.0.0](https://github.com/bensheldon/good_job/tree/v4.0.0) (2024-07-07)
99
+
100
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.99.0...v4.0.0)
101
+
102
+ **Implemented enhancements:**
103
+
104
+ - Release GoodJob v4 [\#1394](https://github.com/bensheldon/good_job/pull/1394) ([bensheldon](https://github.com/bensheldon))
105
+
106
+ ## [v3.99.0](https://github.com/bensheldon/good_job/tree/v3.99.0) (2024-07-07)
107
+
108
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.30.1...v3.99.0)
109
+
110
+ **Merged pull requests:**
111
+
112
+ - Remove deprecation silencers for v3.99 release [\#1395](https://github.com/bensheldon/good_job/pull/1395) ([bensheldon](https://github.com/bensheldon))
113
+ - Add instructions and `GoodJob.v4_ready?` for upgrading to v4 [\#1356](https://github.com/bensheldon/good_job/pull/1356) ([bensheldon](https://github.com/bensheldon))
114
+
115
+ ## [v3.30.1](https://github.com/bensheldon/good_job/tree/v3.30.1) (2024-07-06)
116
+
117
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.30.0...v3.30.1)
118
+
119
+ **Fixed bugs:**
120
+
121
+ - Fix Performance table formatting, change url from `performances` to singular `performance` [\#1393](https://github.com/bensheldon/good_job/pull/1393) ([bensheldon](https://github.com/bensheldon))
122
+ - Add a version check for Rails whether to use pg interval or calculate float [\#1389](https://github.com/bensheldon/good_job/pull/1389) ([bensheldon](https://github.com/bensheldon))
123
+
124
+ **Merged pull requests:**
125
+
126
+ - Add missing newline after frozen string literal for migrations [\#1392](https://github.com/bensheldon/good_job/pull/1392) ([Earlopain](https://github.com/Earlopain))
127
+ - Temporarily remove JRuby builds [\#1391](https://github.com/bensheldon/good_job/pull/1391) ([bensheldon](https://github.com/bensheldon))
128
+ - Add initial Performance panel to dashboard [\#1388](https://github.com/bensheldon/good_job/pull/1388) ([bensheldon](https://github.com/bensheldon))
129
+ - Move job execution logic from Execution to BaseExecution to simplify v4 changes [\#1357](https://github.com/bensheldon/good_job/pull/1357) ([bensheldon](https://github.com/bensheldon))
130
+
131
+ ## [v3.30.0](https://github.com/bensheldon/good_job/tree/v3.30.0) (2024-07-05)
132
+
133
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.29.5...v3.30.0)
134
+
135
+ **Implemented enhancements:**
136
+
137
+ - Added GoodJob::DiscreteExecution\#duration column [\#1374](https://github.com/bensheldon/good_job/pull/1374) ([SebouChu](https://github.com/SebouChu))
138
+
139
+ **Closed issues:**
140
+
141
+ - Job retried infinitely [\#1384](https://github.com/bensheldon/good_job/issues/1384)
142
+
143
+ **Merged pull requests:**
144
+
145
+ - Use newer syntax in documentation for `wait` config on `retry` [\#1380](https://github.com/bensheldon/good_job/pull/1380) ([benoittgt](https://github.com/benoittgt))
146
+
147
+ ## [v3.29.5](https://github.com/bensheldon/good_job/tree/v3.29.5) (2024-06-24)
148
+
149
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.29.4...v3.29.5)
150
+
151
+ **Fixed bugs:**
152
+
153
+ - fix: require rack/handler for rack \>= 3.1.x [\#1383](https://github.com/bensheldon/good_job/pull/1383) ([shouichi](https://github.com/shouichi))
154
+
155
+ **Closed issues:**
156
+
157
+ - Unexpected behavior of calling perform\_now inside another job [\#1379](https://github.com/bensheldon/good_job/issues/1379)
158
+ - \[BUG\] \[Dashboard\] count isn't following by the filter [\#1376](https://github.com/bensheldon/good_job/issues/1376)
159
+
160
+ ## [v3.29.4](https://github.com/bensheldon/good_job/tree/v3.29.4) (2024-06-18)
161
+
162
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.29.3...v3.29.4)
163
+
164
+ **Fixed bugs:**
165
+
166
+ - Fix display of empty array in flash messages [\#1377](https://github.com/bensheldon/good_job/pull/1377) ([andynu](https://github.com/andynu))
167
+ - Fix counts in tab links with filters [\#1373](https://github.com/bensheldon/good_job/pull/1373) ([SebouChu](https://github.com/SebouChu))
168
+
169
+ ## [v3.29.3](https://github.com/bensheldon/good_job/tree/v3.29.3) (2024-06-06)
170
+
171
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.29.2...v3.29.3)
172
+
173
+ **Fixed bugs:**
174
+
175
+ - Synchronize `CapsuleTracker#renew` [\#1369](https://github.com/bensheldon/good_job/pull/1369) ([bensheldon](https://github.com/bensheldon))
176
+
177
+ **Closed issues:**
178
+
179
+ - docs: Basic auth route mount example improvement [\#1368](https://github.com/bensheldon/good_job/issues/1368)
180
+ - Tips for debugging/optimizing slow dashboard? \(45 second response time\) [\#1366](https://github.com/bensheldon/good_job/issues/1366)
181
+
182
+ ## [v3.29.2](https://github.com/bensheldon/good_job/tree/v3.29.2) (2024-05-23)
183
+
184
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.29.1...v3.29.2)
185
+
186
+ **Fixed bugs:**
187
+
188
+ - Fix label modifications on job instance polluting labels on job class [\#1355](https://github.com/bensheldon/good_job/pull/1355) ([bensheldon](https://github.com/bensheldon))
189
+
190
+ **Closed issues:**
191
+
192
+ - `#good_job_labels` retains values across job instances [\#1354](https://github.com/bensheldon/good_job/issues/1354)
193
+
194
+ ## [v3.29.1](https://github.com/bensheldon/good_job/tree/v3.29.1) (2024-05-23)
195
+
196
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.29.0...v3.29.1)
197
+
198
+ **Fixed bugs:**
199
+
200
+ - Fix AdvisoryLockable using wrong `advisory_lockable_column` attribute when aborting `create_with_advisory_lock` [\#1360](https://github.com/bensheldon/good_job/pull/1360) ([bensheldon](https://github.com/bensheldon))
201
+
202
+ **Closed issues:**
203
+
204
+ - Warn on unapplied migrations [\#1361](https://github.com/bensheldon/good_job/issues/1361)
205
+ - Undefined `GoodJob::Process.advisory_lockable_column` [\#1358](https://github.com/bensheldon/good_job/issues/1358)
206
+
207
+ ## [v3.29.0](https://github.com/bensheldon/good_job/tree/v3.29.0) (2024-05-22)
208
+
209
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.28.3...v3.29.0)
210
+
211
+ **Merged pull requests:**
212
+
213
+ - Add association between Process and Jobs, and add a heartbeat to the Process record [\#999](https://github.com/bensheldon/good_job/pull/999) ([bensheldon](https://github.com/bensheldon))
214
+
215
+ ## [v3.28.3](https://github.com/bensheldon/good_job/tree/v3.28.3) (2024-05-18)
216
+
217
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.28.2...v3.28.3)
218
+
219
+ **Fixed bugs:**
220
+
221
+ - Strip more whitespace when parsing queues string [\#1352](https://github.com/bensheldon/good_job/pull/1352) ([bensheldon](https://github.com/bensheldon))
222
+ - Fix latest migration not affecting `GoodJob.migrated?` [\#1345](https://github.com/bensheldon/good_job/pull/1345) ([Earlopain](https://github.com/Earlopain))
223
+
224
+ **Closed issues:**
225
+
226
+ - Whitespace in `queues` configuration can cause issues. [\#1351](https://github.com/bensheldon/good_job/issues/1351)
227
+ - How to properly handle interrupts [\#1343](https://github.com/bensheldon/good_job/issues/1343)
228
+ - ActiveSupport::CurrentAttributes Compatibility [\#1341](https://github.com/bensheldon/good_job/issues/1341)
229
+
230
+ **Merged pull requests:**
231
+
232
+ - Don't abort CI jobs when a single one fails [\#1346](https://github.com/bensheldon/good_job/pull/1346) ([Earlopain](https://github.com/Earlopain))
233
+ - Clarify PgBouncer Compatibility [\#1338](https://github.com/bensheldon/good_job/pull/1338) ([isaac](https://github.com/isaac))
234
+
235
+ ## [v3.28.2](https://github.com/bensheldon/good_job/tree/v3.28.2) (2024-04-26)
236
+
237
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.28.1...v3.28.2)
238
+
239
+ **Fixed bugs:**
240
+
241
+ - Add debug warning message when a job is enqueued within a batch/bulk capture but not to the GoodJob Adapter [\#1339](https://github.com/bensheldon/good_job/pull/1339) ([bensheldon](https://github.com/bensheldon))
242
+
243
+ **Closed issues:**
244
+
245
+ - How do I add jobs to an existing batch? [\#1337](https://github.com/bensheldon/good_job/issues/1337)
246
+ - Executing perform\_now on a good\_job with GoodJobs::ActiveJobExtensions::Concurrency can run twice [\#1335](https://github.com/bensheldon/good_job/issues/1335)
247
+
248
+ ## [v3.28.1](https://github.com/bensheldon/good_job/tree/v3.28.1) (2024-04-24)
249
+
250
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.28.0...v3.28.1)
251
+
252
+ **Fixed bugs:**
253
+
254
+ - Ensure job context does not leak into extensions when`perform_now` is called within another job [\#1336](https://github.com/bensheldon/good_job/pull/1336) ([bensheldon](https://github.com/bensheldon))
255
+
256
+ **Closed issues:**
257
+
258
+ - `erb_lint` doesn't lint all files [\#1329](https://github.com/bensheldon/good_job/issues/1329)
259
+ - Server hangs after \#1297 [\#1301](https://github.com/bensheldon/good_job/issues/1301)
260
+ - Figure out how to use bind parameters for time queries [\#1285](https://github.com/bensheldon/good_job/issues/1285)
261
+
262
+ **Merged pull requests:**
263
+
264
+ - Upgrade development / demo Ruby to v3.3.1 [\#1333](https://github.com/bensheldon/good_job/pull/1333) ([bensheldon](https://github.com/bensheldon))
265
+ - Exploratory testing for presence of scheduled\_at when enqueuing [\#1332](https://github.com/bensheldon/good_job/pull/1332) ([bensheldon](https://github.com/bensheldon))
266
+ - Run `erb_lint` against all the views and partials [\#1331](https://github.com/bensheldon/good_job/pull/1331) ([bensheldon](https://github.com/bensheldon))
267
+
268
+ ## [v3.28.0](https://github.com/bensheldon/good_job/tree/v3.28.0) (2024-04-19)
269
+
270
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.27.4...v3.28.0)
271
+
272
+ **Implemented enhancements:**
273
+
274
+ - Store and optionally display the full execution backtrace [\#1328](https://github.com/bensheldon/good_job/pull/1328) ([Earlopain](https://github.com/Earlopain))
275
+ - Store error backtraces on discrete executions [\#1325](https://github.com/bensheldon/good_job/pull/1325) ([Intrepidd](https://github.com/Intrepidd))
276
+
277
+ **Fixed bugs:**
278
+
279
+ - add missing dropdown-item class [\#1327](https://github.com/bensheldon/good_job/pull/1327) ([patriciomacadden](https://github.com/patriciomacadden))
280
+
281
+ **Closed issues:**
282
+
283
+ - Proposal: Migrating Documentation to a Separate Website [\#1324](https://github.com/bensheldon/good_job/issues/1324)
284
+ - Potential documentation error in GoodJob::ActiveJobExtensions::NotifyOptions [\#1321](https://github.com/bensheldon/good_job/issues/1321)
285
+ - ActiveSupport::CurrentAttributes reset after `perform_later` [\#1320](https://github.com/bensheldon/good_job/issues/1320)
286
+ - Storing backtrace in database? [\#1162](https://github.com/bensheldon/good_job/issues/1162)
287
+ - Potential locking race condition when using cron scheduler across multiple processes [\#731](https://github.com/bensheldon/good_job/issues/731)
288
+
289
+ **Merged pull requests:**
290
+
291
+ - docs: corrected a typo regarding the use of GoodJob::ActiveJobExtensions::NotifyOptions [\#1322](https://github.com/bensheldon/good_job/pull/1322) ([pgvsalamander](https://github.com/pgvsalamander))
292
+ - Add "best practices" section to Readme [\#1318](https://github.com/bensheldon/good_job/pull/1318) ([bensheldon](https://github.com/bensheldon))
293
+ - Change ApplicationRecord to ApplicationJob for label documentation. [\#1317](https://github.com/bensheldon/good_job/pull/1317) ([frans-k](https://github.com/frans-k))
294
+ - Run test matrix against Ruby 3.3; remove pry [\#1315](https://github.com/bensheldon/good_job/pull/1315) ([bensheldon](https://github.com/bensheldon))
295
+ - Add `Rails.application.load_server` to Demo `config.ru`; quiet puma web-concurrency warnings [\#1314](https://github.com/bensheldon/good_job/pull/1314) ([bensheldon](https://github.com/bensheldon))
296
+ - Fix test leakage of configuration double [\#1312](https://github.com/bensheldon/good_job/pull/1312) ([bensheldon](https://github.com/bensheldon))
297
+ - Rewrite queries to all use bind parameters and prepare: true [\#1308](https://github.com/bensheldon/good_job/pull/1308) ([bensheldon](https://github.com/bensheldon))
298
+
299
+ ## [v3.27.4](https://github.com/bensheldon/good_job/tree/v3.27.4) (2024-04-04)
300
+
301
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.27.3...v3.27.4)
302
+
303
+ **Fixed bugs:**
304
+
305
+ - Fix status tabs for Spanish translation [\#1307](https://github.com/bensheldon/good_job/pull/1307) ([bensheldon](https://github.com/bensheldon))
306
+
307
+ **Closed issues:**
308
+
309
+ - Adapter to implement `enqueue_after_transaction_commit` [\#1310](https://github.com/bensheldon/good_job/issues/1310)
310
+ - PG::SyntaxError: ERROR from timestamp [\#1305](https://github.com/bensheldon/good_job/issues/1305)
311
+ - Spanish translation while on the dashboard displays hashes instead of the job status name [\#1304](https://github.com/bensheldon/good_job/issues/1304)
312
+ - Exception raised during asset precompilation when no `config/database.yml` [\#1302](https://github.com/bensheldon/good_job/issues/1302)
313
+ - Good job is running with standalone action cable server [\#1299](https://github.com/bensheldon/good_job/issues/1299)
314
+ - Growing memory usage [\#1276](https://github.com/bensheldon/good_job/issues/1276)
315
+
316
+ **Merged pull requests:**
317
+
318
+ - Implement enqueue\_after\_transaction\_commit? [\#1311](https://github.com/bensheldon/good_job/pull/1311) ([luizkowalski](https://github.com/luizkowalski))
319
+ - Fix localization formatting of `confirm_force_discard` [\#1309](https://github.com/bensheldon/good_job/pull/1309) ([bensheldon](https://github.com/bensheldon))
320
+
321
+ ## [v3.27.3](https://github.com/bensheldon/good_job/tree/v3.27.3) (2024-03-29)
322
+
323
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.27.2...v3.27.3)
324
+
325
+ **Merged pull requests:**
326
+
327
+ - Revert "Start async adapters `after_initialize` instead of once Active Job and Active Record are loaded and Rails initialized?" [\#1303](https://github.com/bensheldon/good_job/pull/1303) ([bensheldon](https://github.com/bensheldon))
328
+
329
+ ## [v3.27.2](https://github.com/bensheldon/good_job/tree/v3.27.2) (2024-03-27)
330
+
331
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.27.1...v3.27.2)
332
+
333
+ **Fixed bugs:**
334
+
335
+ - Use scope-resolutioned constants in Notifier loop [\#1300](https://github.com/bensheldon/good_job/pull/1300) ([bensheldon](https://github.com/bensheldon))
336
+ - Invoke inline Bootstrap Color Mode javascript above CSS link tag to better avoid flash of un-themed content [\#1298](https://github.com/bensheldon/good_job/pull/1298) ([bensheldon](https://github.com/bensheldon))
337
+
338
+ **Closed issues:**
339
+
340
+ - Buggy theme animation while switching tabs [\#1224](https://github.com/bensheldon/good_job/issues/1224)
341
+
342
+ ## [v3.27.1](https://github.com/bensheldon/good_job/tree/v3.27.1) (2024-03-24)
343
+
344
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.27.0...v3.27.1)
345
+
346
+ **Fixed bugs:**
347
+
348
+ - Start async adapters `after_initialize` instead of once Active Job and Active Record are loaded and Rails initialized? [\#1297](https://github.com/bensheldon/good_job/pull/1297) ([bensheldon](https://github.com/bensheldon))
349
+
350
+ ## [v3.27.0](https://github.com/bensheldon/good_job/tree/v3.27.0) (2024-03-24)
351
+
352
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.26.2...v3.27.0)
353
+
354
+ **Implemented enhancements:**
355
+
356
+ - Add `enabled_by_default: false` as option for cron configuration [\#1289](https://github.com/bensheldon/good_job/pull/1289) ([bensheldon](https://github.com/bensheldon))
357
+ - Load metrics for job statuses asynchronously [\#1286](https://github.com/bensheldon/good_job/pull/1286) ([binarygit](https://github.com/binarygit))
358
+ - Implement throttling options in concurrency extension [\#1270](https://github.com/bensheldon/good_job/pull/1270) ([marckohlbrugge](https://github.com/marckohlbrugge))
359
+
360
+ **Fixed bugs:**
361
+
362
+ - fix\(ui-dropdown\): use dropdown-end on locales dropdown [\#1296](https://github.com/bensheldon/good_job/pull/1296) ([WailanTirajoh](https://github.com/WailanTirajoh))
363
+
364
+ **Closed issues:**
365
+
366
+ - Disabling probe [\#1290](https://github.com/bensheldon/good_job/issues/1290)
367
+ - Set an implicit order on models [\#1242](https://github.com/bensheldon/good_job/issues/1242)
368
+
369
+ **Merged pull requests:**
370
+
371
+ - docs\(readme\): remove double "using" [\#1295](https://github.com/bensheldon/good_job/pull/1295) ([WailanTirajoh](https://github.com/WailanTirajoh))
372
+ - Set an implicit order on models [\#1293](https://github.com/bensheldon/good_job/pull/1293) ([mec](https://github.com/mec))
373
+ - CI: install gems after loading cache, not before [\#1288](https://github.com/bensheldon/good_job/pull/1288) ([bensheldon](https://github.com/bensheldon))
374
+ - Ensure job execution Advisory Lock query uses bind parameters [\#1287](https://github.com/bensheldon/good_job/pull/1287) ([bensheldon](https://github.com/bensheldon))
375
+
376
+ ## [v3.26.2](https://github.com/bensheldon/good_job/tree/v3.26.2) (2024-03-15)
377
+
378
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.26.1...v3.26.2)
379
+
380
+ **Closed issues:**
381
+
382
+ - Async mode blocks ActionDispatch::Reloader [\#1274](https://github.com/bensheldon/good_job/issues/1274)
383
+
384
+ **Merged pull requests:**
385
+
386
+ - Update dependencies and their Sorbet / Tapioca files [\#1284](https://github.com/bensheldon/good_job/pull/1284) ([bensheldon](https://github.com/bensheldon))
387
+ - Use require\_relative and do not modify $LOAD\_PATH in gemspec [\#1283](https://github.com/bensheldon/good_job/pull/1283) ([bensheldon](https://github.com/bensheldon))
388
+ - Tweak rbtrace script [\#1279](https://github.com/bensheldon/good_job/pull/1279) ([bensheldon](https://github.com/bensheldon))
389
+ - Fix for Rails head: Don't try to override connection on connection checkin in tests [\#1277](https://github.com/bensheldon/good_job/pull/1277) ([bensheldon](https://github.com/bensheldon))
390
+ - Tiny improvements to french translation [\#1273](https://github.com/bensheldon/good_job/pull/1273) ([francois-ferrandis](https://github.com/francois-ferrandis))
391
+ - Load metrics for top nav asynchronously [\#1231](https://github.com/bensheldon/good_job/pull/1231) ([binarygit](https://github.com/binarygit))
392
+
393
+ ## [v3.26.1](https://github.com/bensheldon/good_job/tree/v3.26.1) (2024-03-01)
394
+
395
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.26.0...v3.26.1)
396
+
397
+ **Fixed bugs:**
398
+
399
+ - Ignore job deserialization errors when mass-retrying through the dashboard [\#1269](https://github.com/bensheldon/good_job/pull/1269) ([bensheldon](https://github.com/bensheldon))
400
+
401
+ **Closed issues:**
402
+
403
+ - Plain HTTP 500 Error when retrying a job for deleted record [\#1263](https://github.com/bensheldon/good_job/issues/1263)
404
+
405
+ ## [v3.26.0](https://github.com/bensheldon/good_job/tree/v3.26.0) (2024-03-01)
406
+
407
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.25.0...v3.26.0)
408
+
409
+ **Implemented enhancements:**
410
+
411
+ - Add `GoodJob.current_thread_running?` and `GoodJob.current_thread_shutting_down?` for graceful shutdowns [\#1253](https://github.com/bensheldon/good_job/pull/1253) ([bensheldon](https://github.com/bensheldon))
412
+
413
+ **Fixed bugs:**
414
+
415
+ - Ensure "shutdown?" behavior is consistent between J Ruby and C Ruby [\#1267](https://github.com/bensheldon/good_job/pull/1267) ([bensheldon](https://github.com/bensheldon))
416
+
417
+ **Closed issues:**
418
+
419
+ - PG Good Job rows add up [\#1262](https://github.com/bensheldon/good_job/issues/1262)
420
+ - Bulk operations do not work for Batches [\#1255](https://github.com/bensheldon/good_job/issues/1255)
421
+ - What's the difference between 'reschedule' and 'retry' in the dashboard? [\#1241](https://github.com/bensheldon/good_job/issues/1241)
422
+
423
+ **Merged pull requests:**
424
+
425
+ - feat: add italian locale [\#1268](https://github.com/bensheldon/good_job/pull/1268) ([metalelf0](https://github.com/metalelf0))
426
+
427
+ ## [v3.25.0](https://github.com/bensheldon/good_job/tree/v3.25.0) (2024-02-22)
428
+
429
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.24.0...v3.25.0)
430
+
431
+ **Implemented enhancements:**
432
+
433
+ - Allow disabling of Dashboard Live Polling configuration [\#1235](https://github.com/bensheldon/good_job/pull/1235) ([erick-tmr](https://github.com/erick-tmr))
434
+ - Add customizable extension partials to good\_job/jobs\#show view [\#1200](https://github.com/bensheldon/good_job/pull/1200) ([grncdr](https://github.com/grncdr))
435
+
436
+ **Fixed bugs:**
437
+
438
+ - Fix default engine cron value [\#1258](https://github.com/bensheldon/good_job/pull/1258) ([hss-mateus](https://github.com/hss-mateus))
439
+ - Print an error when daemon pidfile dir doesn't exist [\#1252](https://github.com/bensheldon/good_job/pull/1252) ([thepry](https://github.com/thepry))
440
+
441
+ **Closed issues:**
442
+
443
+ - Production deployment question [\#1257](https://github.com/bensheldon/good_job/issues/1257)
444
+ - Daemon and App not connecting to secondary database [\#1254](https://github.com/bensheldon/good_job/issues/1254)
445
+ - Logging with logger.warn in classes is suppressed by good job? \(semantic\_logger\) [\#1250](https://github.com/bensheldon/good_job/issues/1250)
446
+
447
+ **Merged pull requests:**
448
+
449
+ - Fix Active Record connection changes on Rails head [\#1259](https://github.com/bensheldon/good_job/pull/1259) ([bensheldon](https://github.com/bensheldon))
450
+ - \[Docs\] Bulk.enqueue takes an array of jobs [\#1256](https://github.com/bensheldon/good_job/pull/1256) ([jpcamara](https://github.com/jpcamara))
451
+ - Clean up icon helpers for less noisy view rendering [\#1248](https://github.com/bensheldon/good_job/pull/1248) ([bensheldon](https://github.com/bensheldon))
452
+ - Use dotenv-rails instead of dotenv [\#1247](https://github.com/bensheldon/good_job/pull/1247) ([bensheldon](https://github.com/bensheldon))
453
+ - Perform inline retries iteratively instead of recursively [\#1246](https://github.com/bensheldon/good_job/pull/1246) ([bensheldon](https://github.com/bensheldon))
454
+
455
+ ## [v3.24.0](https://github.com/bensheldon/good_job/tree/v3.24.0) (2024-02-12)
456
+
457
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.23.0...v3.24.0)
458
+
459
+ **Fixed bugs:**
460
+
461
+ - Fix batches so that retried-and-successful jobs leave the batch succeeded [\#1243](https://github.com/bensheldon/good_job/pull/1243) ([bensheldon](https://github.com/bensheldon))
462
+ - Use the job class as the default concurrency key if none is provided [\#1145](https://github.com/bensheldon/good_job/pull/1145) ([Earlopain](https://github.com/Earlopain))
463
+
464
+ **Closed issues:**
465
+
466
+ - Batch callbacks not run when job fails, then succeeds [\#1239](https://github.com/bensheldon/good_job/issues/1239)
467
+ - Broken pipe @ io\_writev - \<STDERR\> \(Errno::EPIPE\) [\#1233](https://github.com/bensheldon/good_job/issues/1233)
468
+ - PG::UniqueViolation unique constraint "index\_good\_jobs\_on\_cron\_key\_and\_cron\_at\_cond" [\#1230](https://github.com/bensheldon/good_job/issues/1230)
469
+ - Default concurrency key [\#1110](https://github.com/bensheldon/good_job/issues/1110)
470
+
471
+ **Merged pull requests:**
472
+
473
+ - Use Ruby 3.3 for development; add Bootsnap; update to Rails 7.1.3 [\#1240](https://github.com/bensheldon/good_job/pull/1240) ([bensheldon](https://github.com/bensheldon))
474
+ - Tweak docs for new concurrency default [\#1229](https://github.com/bensheldon/good_job/pull/1229) ([Earlopain](https://github.com/Earlopain))
475
+ - Brazilian Portuguese locale [\#1226](https://github.com/bensheldon/good_job/pull/1226) ([hss-mateus](https://github.com/hss-mateus))
476
+
477
+ ## [v3.23.0](https://github.com/bensheldon/good_job/tree/v3.23.0) (2024-01-23)
478
+
479
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.22.0...v3.23.0)
480
+
481
+ **Implemented enhancements:**
482
+
483
+ - Add environment label to navbar [\#1206](https://github.com/bensheldon/good_job/pull/1206) ([sparshalc](https://github.com/sparshalc))
484
+ - Make health probe server more general purpose [\#1079](https://github.com/bensheldon/good_job/pull/1079) ([jklina](https://github.com/jklina))
485
+
486
+ **Fixed bugs:**
487
+
488
+ - Use Rails executor instead of reloader when wrapping inline execution [\#1225](https://github.com/bensheldon/good_job/pull/1225) ([bensheldon](https://github.com/bensheldon))
489
+ - Add an index to better support `smaller_number_is_higher_priority` [\#1213](https://github.com/bensheldon/good_job/pull/1213) ([mkrfowler](https://github.com/mkrfowler))
490
+ - Fix discard job with nonexistent job class [\#1211](https://github.com/bensheldon/good_job/pull/1211) ([yenshirak](https://github.com/yenshirak))
491
+ - Fix: Interacting with input field should pause the live poll [\#1210](https://github.com/bensheldon/good_job/pull/1210) ([sparshalc](https://github.com/sparshalc))
492
+
493
+ **Closed issues:**
494
+
495
+ - can't write unknown attribute `active_job_id` [\#1216](https://github.com/bensheldon/good_job/issues/1216)
496
+ - Regression: use of Rails reloader causing mixed constants during seeding [\#1215](https://github.com/bensheldon/good_job/issues/1215)
497
+ - Production worker doesn't show any processes [\#1214](https://github.com/bensheldon/good_job/issues/1214)
498
+ - Clarify required async mode DB pool size [\#1209](https://github.com/bensheldon/good_job/issues/1209)
499
+ - Mac forking exception when using Spring [\#1115](https://github.com/bensheldon/good_job/issues/1115)
500
+ - Jobs should have labels [\#1095](https://github.com/bensheldon/good_job/issues/1095)
501
+ - Set up Dependabot grouped updates [\#1062](https://github.com/bensheldon/good_job/issues/1062)
502
+ - Fix documentation to always include space in "Active Job", "Active Record", etc. [\#1048](https://github.com/bensheldon/good_job/issues/1048)
503
+
504
+ **Merged pull requests:**
505
+
506
+ - Bump actions/cache from 3 to 4 [\#1223](https://github.com/bensheldon/good_job/pull/1223) ([dependabot[bot]](https://github.com/apps/dependabot))
507
+ - Update README, add poll\_interval defaults/recommendations [\#1220](https://github.com/bensheldon/good_job/pull/1220) ([andynu](https://github.com/andynu))
508
+ - Update Russian translation [\#1219](https://github.com/bensheldon/good_job/pull/1219) ([alec-c4](https://github.com/alec-c4))
509
+ - Add Korean translation \(ko\) [\#1212](https://github.com/bensheldon/good_job/pull/1212) ([hahwul](https://github.com/hahwul))
510
+ - Fix default poll interval in documentation [\#1208](https://github.com/bensheldon/good_job/pull/1208) ([yenshirak](https://github.com/yenshirak))
511
+
512
+ ## [v3.22.0](https://github.com/bensheldon/good_job/tree/v3.22.0) (2024-01-03)
513
+
514
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.21.5...v3.22.0)
515
+
516
+ **Implemented enhancements:**
517
+
518
+ - Add "updated at" info in secondary top navbar [\#1204](https://github.com/bensheldon/good_job/pull/1204) ([sparshalc](https://github.com/sparshalc))
519
+ - Re-add footer with GoodJob version number [\#1201](https://github.com/bensheldon/good_job/pull/1201) ([Pauloparakleto](https://github.com/Pauloparakleto))
520
+ - Add Active Job extension for Labels [\#1188](https://github.com/bensheldon/good_job/pull/1188) ([bensheldon](https://github.com/bensheldon))
521
+
522
+ **Closed issues:**
523
+
524
+ - Limiting by executed jobs count by period [\#1198](https://github.com/bensheldon/good_job/issues/1198)
525
+ - Cron jobs processing in async mode [\#1196](https://github.com/bensheldon/good_job/issues/1196)
526
+ - Dashboard Missing Translation? [\#1192](https://github.com/bensheldon/good_job/issues/1192)
527
+ - Show last update on top nav bar [\#1183](https://github.com/bensheldon/good_job/issues/1183)
528
+ - Wrong quoting of the query to spot new jobs? [\#1179](https://github.com/bensheldon/good_job/issues/1179)
529
+ - \[Possible bug\] good\_job does not honour the wait parameter on retry\_on [\#1174](https://github.com/bensheldon/good_job/issues/1174)
530
+ - Running GoodJob in production with systemd throws an error due to a wrong communication with WatchDog [\#1172](https://github.com/bensheldon/good_job/issues/1172)
531
+
532
+ **Merged pull requests:**
533
+
534
+ - Bump the bundler-dependencies group with 3 updates [\#1202](https://github.com/bensheldon/good_job/pull/1202) ([dependabot[bot]](https://github.com/apps/dependabot))
535
+ - Remove duplicated intro sentence in README [\#1195](https://github.com/bensheldon/good_job/pull/1195) ([benoittgt](https://github.com/benoittgt))
536
+ - Fix namespace for `InterruptError` in README [\#1193](https://github.com/bensheldon/good_job/pull/1193) ([padde](https://github.com/padde))
537
+ - Bump github/codeql-action from 2 to 3 [\#1191](https://github.com/bensheldon/good_job/pull/1191) ([dependabot[bot]](https://github.com/apps/dependabot))
538
+ - Bump actions/upload-artifact from 3 to 4 [\#1190](https://github.com/bensheldon/good_job/pull/1190) ([dependabot[bot]](https://github.com/apps/dependabot))
539
+ - Lock RubyGems version for Ruby \< 3.0 in CI [\#1189](https://github.com/bensheldon/good_job/pull/1189) ([bensheldon](https://github.com/bensheldon))
540
+ - Active Record and Active Job name formatting [\#1182](https://github.com/bensheldon/good_job/pull/1182) ([andyatkinson](https://github.com/andyatkinson))
541
+ - Remove redundant `good_jobs.active_job_id` index [\#1181](https://github.com/bensheldon/good_job/pull/1181) ([andyatkinson](https://github.com/andyatkinson))
542
+ - Add missing word in readme [\#1177](https://github.com/bensheldon/good_job/pull/1177) ([Earlopain](https://github.com/Earlopain))
543
+
544
+ ## [v3.21.5](https://github.com/bensheldon/good_job/tree/v3.21.5) (2023-12-12)
545
+
546
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.21.4...v3.21.5)
547
+
548
+ **Fixed bugs:**
549
+
550
+ - Fix conditional index migration to be rollbackable [\#1176](https://github.com/bensheldon/good_job/pull/1176) ([bensheldon](https://github.com/bensheldon))
551
+
552
+ ## [v3.21.4](https://github.com/bensheldon/good_job/tree/v3.21.4) (2023-12-11)
553
+
554
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.21.3...v3.21.4)
555
+
556
+ **Fixed bugs:**
557
+
558
+ - Fix latest migration not affecting `GoodJob.migrated?` [\#1175](https://github.com/bensheldon/good_job/pull/1175) ([Earlopain](https://github.com/Earlopain))
559
+ - Fix no method error in systemd service [\#1173](https://github.com/bensheldon/good_job/pull/1173) ([tagrudev](https://github.com/tagrudev))
560
+
561
+ ## [v3.21.3](https://github.com/bensheldon/good_job/tree/v3.21.3) (2023-12-10)
562
+
563
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.21.2...v3.21.3)
564
+
565
+ **Implemented enhancements:**
566
+
567
+ - Add `--idle-timeout` CLI option to create temporary processes that exit when inactive [\#1159](https://github.com/bensheldon/good_job/pull/1159) ([bensheldon](https://github.com/bensheldon))
568
+
569
+ **Fixed bugs:**
570
+
571
+ - Add correct paths to $LOAD\_PATH [\#1169](https://github.com/bensheldon/good_job/pull/1169) ([jklina](https://github.com/jklina))
572
+ - Recreate cron indexes to be conditional [\#1163](https://github.com/bensheldon/good_job/pull/1163) ([defkode](https://github.com/defkode))
573
+
574
+ **Closed issues:**
575
+
576
+ - Use partial indices for cron\_key? [\#1161](https://github.com/bensheldon/good_job/issues/1161)
577
+ - Mass Update Error [\#1157](https://github.com/bensheldon/good_job/issues/1157)
578
+ - v3 roadmap plan [\#705](https://github.com/bensheldon/good_job/issues/705)
579
+ - Allow customisation of the dashboard controller parent class [\#687](https://github.com/bensheldon/good_job/issues/687)
580
+
581
+ **Merged pull requests:**
582
+
583
+ - \[minor\] Use symbol form of index name [\#1171](https://github.com/bensheldon/good_job/pull/1171) ([andyatkinson](https://github.com/andyatkinson))
584
+ - Fix development schema.rb to include conditional index name change [\#1168](https://github.com/bensheldon/good_job/pull/1168) ([bensheldon](https://github.com/bensheldon))
585
+ - Create new conditional Cron indexes before dropping old indexes [\#1165](https://github.com/bensheldon/good_job/pull/1165) ([bensheldon](https://github.com/bensheldon))
586
+ - Fix test that references Rails logger for Rails 7.2a change [\#1160](https://github.com/bensheldon/good_job/pull/1160) ([bensheldon](https://github.com/bensheldon))
587
+
588
+ ## [v3.21.2](https://github.com/bensheldon/good_job/tree/v3.21.2) (2023-11-24)
589
+
590
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.21.1...v3.21.2)
591
+
592
+ **Fixed bugs:**
593
+
594
+ - Skip `RecordAlreadyAdvisoryLockedError` during mass-update action [\#1158](https://github.com/bensheldon/good_job/pull/1158) ([jmarsh24](https://github.com/jmarsh24))
595
+
596
+ **Closed issues:**
597
+
598
+ - Processes are created for puma workers after version v3.12.5 with execution\_mode==:external [\#1156](https://github.com/bensheldon/good_job/issues/1156)
599
+
600
+ **Merged pull requests:**
601
+
602
+ - Update README.md [\#1152](https://github.com/bensheldon/good_job/pull/1152) ([LucasKendi](https://github.com/LucasKendi))
603
+
604
+ ## [v3.21.1](https://github.com/bensheldon/good_job/tree/v3.21.1) (2023-11-14)
605
+
606
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.21.0...v3.21.1)
607
+
608
+ **Fixed bugs:**
609
+
610
+ - Explicitly require `active_job/arguments` in `GoodJob::BatchRecord` [\#1150](https://github.com/bensheldon/good_job/pull/1150) ([hidenba](https://github.com/hidenba))
611
+ - Bug: Polling only activates single thread, should eagerly create additional threads when jobs exist [\#1148](https://github.com/bensheldon/good_job/pull/1148) ([bensheldon](https://github.com/bensheldon))
612
+
613
+ **Closed issues:**
614
+
615
+ - Error when executing ActiveJob::Batch.new in Rails 7.1.x [\#1149](https://github.com/bensheldon/good_job/issues/1149)
616
+ - Show whether or not cron scheduler is enable in dashboard \(UI\) [\#1117](https://github.com/bensheldon/good_job/issues/1117)
617
+ - ActiveRecord::ConnectionNotEstablished For rails multi DB [\#1103](https://github.com/bensheldon/good_job/issues/1103)
618
+ - Rails API dies when using latest good\_job version [\#952](https://github.com/bensheldon/good_job/issues/952)
619
+ - config.good\_job.preserve\_job\_records = false not working with CRON [\#927](https://github.com/bensheldon/good_job/issues/927)
620
+ - Pundit::NotDefinedError \(unable to find policy `Admin::GoodJob::JobPolicy` for \) - version 2.13.0 and above [\#618](https://github.com/bensheldon/good_job/issues/618)
621
+ - Running CLI under foreman doesn't display log output until exit [\#490](https://github.com/bensheldon/good_job/issues/490)
622
+
623
+ **Merged pull requests:**
624
+
625
+ - Always instantiate MultiScheduler; delegate Scheduler Metrics to JobPerformer [\#1147](https://github.com/bensheldon/good_job/pull/1147) ([bensheldon](https://github.com/bensheldon))
626
+ - Clarify on concurrency uniqueness constraints [\#1144](https://github.com/bensheldon/good_job/pull/1144) ([Earlopain](https://github.com/Earlopain))
627
+
628
+ ## [v3.21.0](https://github.com/bensheldon/good_job/tree/v3.21.0) (2023-11-06)
629
+
630
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.20.0...v3.21.0)
631
+
632
+ **Implemented enhancements:**
633
+
634
+ - Add "cron enabled" column to processes index page [\#1127](https://github.com/bensheldon/good_job/pull/1127) ([bforma](https://github.com/bforma))
635
+ - Add `limit:` kwarg to `GoodJob.perform_inline` [\#1126](https://github.com/bensheldon/good_job/pull/1126) ([bensheldon](https://github.com/bensheldon))
636
+
637
+ **Closed issues:**
638
+
639
+ - Cron scheduler and multiple processes [\#1128](https://github.com/bensheldon/good_job/issues/1128)
640
+ - `GoodJob.on_thread_error` not called in tests [\#1102](https://github.com/bensheldon/good_job/issues/1102)
641
+
642
+ **Merged pull requests:**
643
+
644
+ - Use a Concurrent::Event for CLI signal-trapping loop [\#1141](https://github.com/bensheldon/good_job/pull/1141) ([bensheldon](https://github.com/bensheldon))
645
+ - Update README's optimize queue explanation [\#1138](https://github.com/bensheldon/good_job/pull/1138) ([maestromac](https://github.com/maestromac))
646
+ - Update development dependencies and light Rubocop'ing [\#1136](https://github.com/bensheldon/good_job/pull/1136) ([bensheldon](https://github.com/bensheldon))
647
+ - Move the Rails app harness from `spec/test_app` to `demo` [\#1135](https://github.com/bensheldon/good_job/pull/1135) ([bensheldon](https://github.com/bensheldon))
648
+ - In test, shutdown schedulers/capsules before doing assertions because of race conditions; store CI logs for Dev Env tests [\#1129](https://github.com/bensheldon/good_job/pull/1129) ([bensheldon](https://github.com/bensheldon))
649
+ - Use a constant to represent `None` for default/blank memoizable values [\#1125](https://github.com/bensheldon/good_job/pull/1125) ([bensheldon](https://github.com/bensheldon))
650
+
651
+ ## [v3.20.0](https://github.com/bensheldon/good_job/tree/v3.20.0) (2023-10-23)
652
+
653
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.19.4...v3.20.0)
654
+
655
+ **Closed issues:**
656
+
657
+ - Dashboard blocked in iframe tag [\#1111](https://github.com/bensheldon/good_job/issues/1111)
658
+ - PG::ConnectionBad: PQsocket\(\) can't get socket descriptor [\#1100](https://github.com/bensheldon/good_job/issues/1100)
659
+
660
+ **Merged pull requests:**
661
+
662
+ - Wrap Adapter enqueue methods and Batch callbacks with Rails Reloader; verify in tests that no Advisory locks remain at database connection check-in [\#1124](https://github.com/bensheldon/good_job/pull/1124) ([bensheldon](https://github.com/bensheldon))
663
+ - Run all RSpec examples within a Rails Executor [\#1122](https://github.com/bensheldon/good_job/pull/1122) ([bensheldon](https://github.com/bensheldon))
664
+ - Print better debugging for retained advisory locks in test [\#1121](https://github.com/bensheldon/good_job/pull/1121) ([bensheldon](https://github.com/bensheldon))
665
+ - Replace Heroku-specific Rake tasks with `db:prepare` now that Demo is upgraded to Rails 7.1 [\#1120](https://github.com/bensheldon/good_job/pull/1120) ([bensheldon](https://github.com/bensheldon))
666
+ - Do not error debug logs if `pg_stat_activity` join is empty [\#1119](https://github.com/bensheldon/good_job/pull/1119) ([bensheldon](https://github.com/bensheldon))
667
+ - Remove pinned psych version [\#1114](https://github.com/bensheldon/good_job/pull/1114) ([bensheldon](https://github.com/bensheldon))
668
+ - Remove `pg_advisory_unlock_all()` after job is run; only verify blank `finished_at` \(and not lock presence\) before performing job [\#1113](https://github.com/bensheldon/good_job/pull/1113) ([bensheldon](https://github.com/bensheldon))
669
+ - Update docs url [\#1112](https://github.com/bensheldon/good_job/pull/1112) ([ur5us](https://github.com/ur5us))
670
+ - Pin psych gem 5.1.0 [\#1108](https://github.com/bensheldon/good_job/pull/1108) ([bensheldon](https://github.com/bensheldon))
671
+ - Add sampling for Skylight traces on Demo [\#1107](https://github.com/bensheldon/good_job/pull/1107) ([bensheldon](https://github.com/bensheldon))
672
+ - Add Rails 7.1 to test matrix [\#1105](https://github.com/bensheldon/good_job/pull/1105) ([bensheldon](https://github.com/bensheldon))
673
+ - Add spec to verify unhandled thread errors are reported [\#1104](https://github.com/bensheldon/good_job/pull/1104) ([bensheldon](https://github.com/bensheldon))
674
+ - Update Codespace configuration [\#1101](https://github.com/bensheldon/good_job/pull/1101) ([bensheldon](https://github.com/bensheldon))
675
+
676
+ ## [v3.19.4](https://github.com/bensheldon/good_job/tree/v3.19.4) (2023-10-04)
677
+
678
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.19.3...v3.19.4)
679
+
680
+ **Closed issues:**
681
+
682
+ - Including GoodJob::ActiveJobExtensions::Concurrency triggers rails deprecation notice [\#1096](https://github.com/bensheldon/good_job/issues/1096)
683
+ - Add retries exhaused callback [\#1080](https://github.com/bensheldon/good_job/issues/1080)
684
+
685
+ **Merged pull requests:**
686
+
687
+ - Address rails 7.1 deprecation when using `ActiveJobExtensions::Concurrency` [\#1097](https://github.com/bensheldon/good_job/pull/1097) ([Earlopain](https://github.com/Earlopain))
688
+
689
+ ## [v3.19.3](https://github.com/bensheldon/good_job/tree/v3.19.3) (2023-09-28)
690
+
691
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.19.2...v3.19.3)
692
+
693
+ **Closed issues:**
694
+
695
+ - Explicitly write that jobs with higher priority jobs run first \(unlike Que or DelayedJob\) at readme. [\#991](https://github.com/bensheldon/good_job/issues/991)
696
+
697
+ **Merged pull requests:**
698
+
699
+ - Correct `discrete_execution#status` method [\#1092](https://github.com/bensheldon/good_job/pull/1092) ([coreyaus](https://github.com/coreyaus))
700
+ - Use ActiveSupport::BroadcastLogger [\#1089](https://github.com/bensheldon/good_job/pull/1089) ([bensheldon](https://github.com/bensheldon))
701
+ - Log thread name for gem development debugging [\#1085](https://github.com/bensheldon/good_job/pull/1085) ([bensheldon](https://github.com/bensheldon))
702
+ - Describe ApplicationController hook in README [\#1082](https://github.com/bensheldon/good_job/pull/1082) ([maxim](https://github.com/maxim))
703
+ - \[Docs\] Explain how `priority` works in GoodJob [\#1005](https://github.com/bensheldon/good_job/pull/1005) ([coreyaus](https://github.com/coreyaus))
704
+
705
+ ## [v3.19.2](https://github.com/bensheldon/good_job/tree/v3.19.2) (2023-09-22)
706
+
707
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.19.1...v3.19.2)
708
+
709
+ **Merged pull requests:**
710
+
711
+ - Fix HttpServer to handle Errno::EPIPE [\#1083](https://github.com/bensheldon/good_job/pull/1083) ([shouichi](https://github.com/shouichi))
712
+
713
+ ## [v3.19.1](https://github.com/bensheldon/good_job/tree/v3.19.1) (2023-09-20)
714
+
715
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.19.0...v3.19.1)
716
+
717
+ **Implemented enhancements:**
718
+
719
+ - Add `good_job_application_controller` load hook [\#1081](https://github.com/bensheldon/good_job/pull/1081) ([bensheldon](https://github.com/bensheldon))
720
+
721
+ ## [v3.19.0](https://github.com/bensheldon/good_job/tree/v3.19.0) (2023-09-19)
722
+
723
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.18.3...v3.19.0)
724
+
725
+ **Implemented enhancements:**
726
+
727
+ - "Force" discard jobs that are already running/runaway to prevent retry [\#1073](https://github.com/bensheldon/good_job/pull/1073) ([jgrau](https://github.com/jgrau))
728
+
729
+ **Closed issues:**
730
+
731
+ - Possible Memory Leak [\#1074](https://github.com/bensheldon/good_job/issues/1074)
732
+ - What's the best way to stop and discard a running job? [\#625](https://github.com/bensheldon/good_job/issues/625)
733
+
734
+ **Merged pull requests:**
735
+
736
+ - AdvisoryLockable: Abort record create if with\_advisory\_lock fails to acquire advisory lock [\#1078](https://github.com/bensheldon/good_job/pull/1078) ([bensheldon](https://github.com/bensheldon))
737
+ - Wrap all test background threads in Rails executors; better test logging/debugging [\#1077](https://github.com/bensheldon/good_job/pull/1077) ([bensheldon](https://github.com/bensheldon))
738
+
739
+ ## [v3.18.3](https://github.com/bensheldon/good_job/tree/v3.18.3) (2023-09-16)
740
+
741
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.18.2...v3.18.3)
742
+
743
+ **Fixed bugs:**
744
+
745
+ - Allow Probe Server's `/connect` to handle a certain number of reconnects before statusing [\#1075](https://github.com/bensheldon/good_job/pull/1075) ([bensheldon](https://github.com/bensheldon))
746
+
747
+ **Closed issues:**
748
+
749
+ - ActiveRecord::RecordNotUnique good\_jobs.id error in rspec test suite [\#1072](https://github.com/bensheldon/good_job/issues/1072)
750
+ - Probe failures on heavy usage of dashboard\(?\) [\#1068](https://github.com/bensheldon/good_job/issues/1068)
751
+
752
+ **Merged pull requests:**
753
+
754
+ - Bump actions/checkout from 3 to 4 [\#1070](https://github.com/bensheldon/good_job/pull/1070) ([dependabot[bot]](https://github.com/apps/dependabot))
755
+ - Add Skylight for demo site; create distinct development, lint, demo, production Gemfile groups; a little bit of Rubocop [\#1069](https://github.com/bensheldon/good_job/pull/1069) ([bensheldon](https://github.com/bensheldon))
756
+ - Add JRuby 9.4 to testing matrix; nerf ActiveJob::TestQueueAdapter overrides [\#1067](https://github.com/bensheldon/good_job/pull/1067) ([bensheldon](https://github.com/bensheldon))
757
+ - Reorganize dependencies to make booting JRuby easier [\#1066](https://github.com/bensheldon/good_job/pull/1066) ([bensheldon](https://github.com/bensheldon))
758
+ - Slight refactoring to CronEntry [\#1063](https://github.com/bensheldon/good_job/pull/1063) ([bensheldon](https://github.com/bensheldon))
759
+
760
+ ## [v3.18.2](https://github.com/bensheldon/good_job/tree/v3.18.2) (2023-09-02)
761
+
762
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.18.1...v3.18.2)
763
+
764
+ **Fixed bugs:**
765
+
766
+ - Fix compatibility with Global ID v1.2.0 [\#1064](https://github.com/bensheldon/good_job/pull/1064) ([bensheldon](https://github.com/bensheldon))
767
+
768
+ **Merged pull requests:**
769
+
770
+ - Bump pg from 1.5.3 to 1.5.4 [\#1061](https://github.com/bensheldon/good_job/pull/1061) ([dependabot[bot]](https://github.com/apps/dependabot))
771
+
772
+ ## [v3.18.1](https://github.com/bensheldon/good_job/tree/v3.18.1) (2023-08-30)
773
+
774
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.18.0...v3.18.1)
775
+
776
+ **Implemented enhancements:**
777
+
778
+ - Respect the configured execution mode, even within the CLI [\#1056](https://github.com/bensheldon/good_job/pull/1056) ([bensheldon](https://github.com/bensheldon))
779
+
780
+ **Closed issues:**
781
+
782
+ - Bug: calling `GoodJob.restart` in Puma on\_worker\_boot starts GoodJob regardless of it being in async mode or not [\#1054](https://github.com/bensheldon/good_job/issues/1054)
783
+ - \[Feature Request?\] Config Option to Inline Child-Jobs in Worker Processes [\#1052](https://github.com/bensheldon/good_job/issues/1052)
784
+ - \[Feature Request\] Hook to extend cron schedules [\#1050](https://github.com/bensheldon/good_job/issues/1050)
785
+
786
+ **Merged pull requests:**
787
+
788
+ - `GoodJob.restart` should not start capsules \(job execution\) when in a webserver but not in async mode [\#1055](https://github.com/bensheldon/good_job/pull/1055) ([bensheldon](https://github.com/bensheldon))
789
+
790
+ ## [v3.18.0](https://github.com/bensheldon/good_job/tree/v3.18.0) (2023-08-30)
791
+
792
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.17.4...v3.18.0)
793
+
794
+ **Implemented enhancements:**
795
+
796
+ - Support configuring cron schedule dynamically with a block [\#1051](https://github.com/bensheldon/good_job/pull/1051) ([DanielHeath](https://github.com/DanielHeath))
797
+
798
+ ## [v3.17.4](https://github.com/bensheldon/good_job/tree/v3.17.4) (2023-08-24)
799
+
800
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.17.3...v3.17.4)
801
+
802
+ **Fixed bugs:**
803
+
804
+ - Handle edge case of logger not responding to silence [\#1049](https://github.com/bensheldon/good_job/pull/1049) ([bensheldon](https://github.com/bensheldon))
805
+
806
+ **Closed issues:**
807
+
808
+ - An idea for better .silence handling [\#1046](https://github.com/bensheldon/good_job/issues/1046)
809
+
810
+ ## [v3.17.3](https://github.com/bensheldon/good_job/tree/v3.17.3) (2023-08-19)
811
+
812
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.17.2...v3.17.3)
813
+
814
+ **Fixed bugs:**
815
+
816
+ - New probe server fixes: allow accept\_nonblock to raise and IO.gets return nil [\#1043](https://github.com/bensheldon/good_job/pull/1043) ([stas](https://github.com/stas))
817
+
818
+ **Closed issues:**
819
+
820
+ - Dashboard as separate package? [\#965](https://github.com/bensheldon/good_job/issues/965)
821
+ - Managing jobs with errors [\#929](https://github.com/bensheldon/good_job/issues/929)
822
+ - Feature: dynamic options for good\_job\_control\_concurrency\_with [\#684](https://github.com/bensheldon/good_job/issues/684)
823
+
824
+ **Merged pull requests:**
825
+
826
+ - Attempt to overcome github\_changelog\_generator's rate limit problem [\#1045](https://github.com/bensheldon/good_job/pull/1045) ([bensheldon](https://github.com/bensheldon))
827
+ - \[Doc\] for cron schedule add info about Dashboard view [\#1042](https://github.com/bensheldon/good_job/pull/1042) ([steveroot](https://github.com/steveroot))
828
+ - Add description of :class to readme for cron style repeating jobs section [\#1040](https://github.com/bensheldon/good_job/pull/1040) ([steveroot](https://github.com/steveroot))
829
+
830
+ ## [v3.17.2](https://github.com/bensheldon/good_job/tree/v3.17.2) (2023-08-10)
831
+
832
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.17.1...v3.17.2)
833
+
834
+ **Fixed bugs:**
835
+
836
+ - 3.17.0 breaks health check endpoints [\#1033](https://github.com/bensheldon/good_job/issues/1033)
837
+ - Fix NoMethodError: undefined method `silence' for nil:NilClass [\#1037](https://github.com/bensheldon/good_job/pull/1037) ([afn](https://github.com/afn))
838
+
839
+ **Closed issues:**
840
+
841
+ - NoMethodError in ProcessHeartbeat if ActiveRecord logger is nil [\#1036](https://github.com/bensheldon/good_job/issues/1036)
842
+ - JRuby deprecation policy [\#1035](https://github.com/bensheldon/good_job/issues/1035)
843
+
844
+ **Merged pull requests:**
845
+
846
+ - Add helpful failure output for Sorbet linter [\#1038](https://github.com/bensheldon/good_job/pull/1038) ([bensheldon](https://github.com/bensheldon))
847
+
848
+ ## [v3.17.1](https://github.com/bensheldon/good_job/tree/v3.17.1) (2023-08-08)
849
+
850
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.17.0...v3.17.1)
851
+
852
+ **Fixed bugs:**
853
+
854
+ - Fix Probe Server by retrying IO.select instead of returning early [\#1034](https://github.com/bensheldon/good_job/pull/1034) ([bensheldon](https://github.com/bensheldon))
855
+
856
+ **Closed issues:**
857
+
858
+ - Add database connection pool details to Process state [\#1014](https://github.com/bensheldon/good_job/issues/1014)
859
+
860
+ **Merged pull requests:**
861
+
862
+ - Add YARD warnings to lint script; fix YARD warnings [\#1032](https://github.com/bensheldon/good_job/pull/1032) ([bensheldon](https://github.com/bensheldon))
863
+
864
+ ## [v3.17.0](https://github.com/bensheldon/good_job/tree/v3.17.0) (2023-08-06)
865
+
866
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.16.4...v3.17.0)
867
+
868
+ **Implemented enhancements:**
869
+
870
+ - Add Dark Mode color theme for Dashboard [\#1031](https://github.com/bensheldon/good_job/pull/1031) ([bensheldon](https://github.com/bensheldon))
871
+ - Automatically send status notifications to systemd [\#1029](https://github.com/bensheldon/good_job/pull/1029) ([Mr0grog](https://github.com/Mr0grog))
872
+
873
+ **Closed issues:**
874
+
875
+ - Add systemd/sd\_notify support to CLI [\#1027](https://github.com/bensheldon/good_job/issues/1027)
876
+ - Cron job by default runs on the web server even when "async" execution mode is not specified [\#1026](https://github.com/bensheldon/good_job/issues/1026)
877
+ - Replace webrick with a small/simple custom rack-compatible http server [\#1017](https://github.com/bensheldon/good_job/issues/1017)
878
+ - Dark mode for the dashboard ? [\#974](https://github.com/bensheldon/good_job/issues/974)
879
+
880
+ **Merged pull requests:**
881
+
882
+ - Replace Webrick with custom simple http server [\#1030](https://github.com/bensheldon/good_job/pull/1030) ([dixpac](https://github.com/dixpac))
883
+ - Bump appraisal from `b200e63` to `feb78bc` [\#1025](https://github.com/bensheldon/good_job/pull/1025) ([dependabot[bot]](https://github.com/apps/dependabot))
884
+ - Bump net-imap from 0.3.6 to 0.3.7 [\#1024](https://github.com/bensheldon/good_job/pull/1024) ([dependabot[bot]](https://github.com/apps/dependabot))
885
+ - Bump rack from 2.2.7 to 2.2.8 [\#1023](https://github.com/bensheldon/good_job/pull/1023) ([dependabot[bot]](https://github.com/apps/dependabot))
886
+
887
+ ## [v3.16.4](https://github.com/bensheldon/good_job/tree/v3.16.4) (2023-07-30)
888
+
889
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.16.3...v3.16.4)
890
+
891
+ **Implemented enhancements:**
892
+
893
+ - Add database\_connection\_pool stats to `GoodJob::Process.current_state` [\#1019](https://github.com/bensheldon/good_job/pull/1019) ([dixpac](https://github.com/dixpac))
894
+
895
+ **Fixed bugs:**
896
+
897
+ - Move `Execution#active_job` to BaseExecution to share with Job; refactor `Batch#active_jobs` to use job directly [\#1022](https://github.com/bensheldon/good_job/pull/1022) ([bensheldon](https://github.com/bensheldon))
898
+
899
+ **Closed issues:**
900
+
901
+ - Notifier errored: ArgumentError: wrong number of arguments \(given 1, expected 0\) [\#1016](https://github.com/bensheldon/good_job/issues/1016)
902
+ - Understanding Database Connections and Cron [\#1013](https://github.com/bensheldon/good_job/issues/1013)
903
+ - Experiencing various database exceptions with Rails 7.1 [\#796](https://github.com/bensheldon/good_job/issues/796)
904
+
905
+ **Merged pull requests:**
906
+
907
+ - Refactor Notifier to ensure \#restart is threadsafe [\#1021](https://github.com/bensheldon/good_job/pull/1021) ([bensheldon](https://github.com/bensheldon))
908
+ - Notifier and CronManager share a 2-thread executor within the capsule [\#1018](https://github.com/bensheldon/good_job/pull/1018) ([bensheldon](https://github.com/bensheldon))
909
+ - Clarify database connections and recurring processes in README.md [\#1015](https://github.com/bensheldon/good_job/pull/1015) ([blumhardts](https://github.com/blumhardts))
910
+ - Deprecate `GoodJob::Lockable` and rename to `GoodJob::AdvisoryLockable` [\#1012](https://github.com/bensheldon/good_job/pull/1012) ([bensheldon](https://github.com/bensheldon))
911
+
912
+ ## [v3.16.3](https://github.com/bensheldon/good_job/tree/v3.16.3) (2023-07-18)
913
+
914
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.16.2...v3.16.3)
915
+
916
+ **Fixed bugs:**
917
+
918
+ - Fix bulk enqueue for unmigrated 'error\_event'; add `GoodJob.migrated?` check method; use custom enum implementation [\#1011](https://github.com/bensheldon/good_job/pull/1011) ([bensheldon](https://github.com/bensheldon))
919
+
920
+ **Closed issues:**
921
+
922
+ - GoodJob::Bulk.enqueue not handling missing migrations [\#1010](https://github.com/bensheldon/good_job/issues/1010)
923
+
924
+ **Merged pull requests:**
925
+
926
+ - Move shared `BaseExecution` concerns into the base class. [\#1009](https://github.com/bensheldon/good_job/pull/1009) ([dixpac](https://github.com/dixpac))
927
+
928
+ ## [v3.16.2](https://github.com/bensheldon/good_job/tree/v3.16.2) (2023-07-13)
929
+
930
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.16.1...v3.16.2)
931
+
932
+ **Closed issues:**
933
+
934
+ - Support for customized job display name [\#956](https://github.com/bensheldon/good_job/issues/956)
935
+
936
+ **Merged pull requests:**
937
+
938
+ - Add `GoodJob::Job#display_name` to allow customizing dashboard job display [\#1008](https://github.com/bensheldon/good_job/pull/1008) ([paul](https://github.com/paul))
939
+
940
+ ## [v3.16.1](https://github.com/bensheldon/good_job/tree/v3.16.1) (2023-07-11)
941
+
942
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.16.0...v3.16.1)
943
+
944
+ **Fixed bugs:**
945
+
946
+ - Wrap Notifier's `refresh_process` with Rails executor [\#1007](https://github.com/bensheldon/good_job/pull/1007) ([bensheldon](https://github.com/bensheldon))
947
+
948
+ **Closed issues:**
949
+
950
+ - uninitialized constant GoodJob::Process [\#1006](https://github.com/bensheldon/good_job/issues/1006)
951
+
952
+ ## [v3.16.0](https://github.com/bensheldon/good_job/tree/v3.16.0) (2023-07-10)
953
+
954
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.15.14...v3.16.0)
955
+
956
+ **Implemented enhancements:**
957
+
958
+ - Add `GoodJob.configure_active_record` as alternative to `GoodJob.active_record_parent_class` [\#1004](https://github.com/bensheldon/good_job/pull/1004) ([bensheldon](https://github.com/bensheldon))
959
+ - Configure `dashboard_default_locale` using custom subclass of `I18n::Config` to isolate I18n configuration from parent application [\#1001](https://github.com/bensheldon/good_job/pull/1001) ([bensheldon](https://github.com/bensheldon))
960
+ - Create `error_event` column to track the context of an error \(discarded, retried, retry\_stopped, etc\) [\#995](https://github.com/bensheldon/good_job/pull/995) ([bensheldon](https://github.com/bensheldon))
961
+ - Added metrics to Scheduler and track in Process state [\#984](https://github.com/bensheldon/good_job/pull/984) ([AndersGM](https://github.com/AndersGM))
962
+
963
+ **Fixed bugs:**
964
+
965
+ - Use Concurrent::Array for class `instances` to avoid JRuby synchronization errors [\#1002](https://github.com/bensheldon/good_job/pull/1002) ([bensheldon](https://github.com/bensheldon))
966
+ - Add test to assert enqueuing behavior within transactions [\#998](https://github.com/bensheldon/good_job/pull/998) ([bensheldon](https://github.com/bensheldon))
967
+ - Fix Ukrainian language code [\#996](https://github.com/bensheldon/good_job/pull/996) ([bensheldon](https://github.com/bensheldon))
968
+
969
+ **Closed issues:**
970
+
971
+ - Is `pgcrypto` necessary? [\#805](https://github.com/bensheldon/good_job/issues/805)
972
+ - Integrate Sorbet type checking [\#404](https://github.com/bensheldon/good_job/issues/404)
973
+
974
+ **Merged pull requests:**
975
+
976
+ - Unify `frozen_string_literal` comment style [\#1003](https://github.com/bensheldon/good_job/pull/1003) ([dixpac](https://github.com/dixpac))
977
+ - Add more execution mode details and caveats to Readme Set Up section [\#997](https://github.com/bensheldon/good_job/pull/997) ([bensheldon](https://github.com/bensheldon))
978
+ - Add note in migrations that `pgcrypto` extension isn't necessary in PG 13+ [\#837](https://github.com/bensheldon/good_job/pull/837) ([bensheldon](https://github.com/bensheldon))
979
+ - Add Sorbet to linter [\#760](https://github.com/bensheldon/good_job/pull/760) ([sam1el](https://github.com/sam1el))
980
+
981
+ ## [v3.15.14](https://github.com/bensheldon/good_job/tree/v3.15.14) (2023-07-03)
982
+
983
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.15.13...v3.15.14)
984
+
985
+ **Implemented enhancements:**
986
+
987
+ - Add Process heartbeat that is updated inside of Notifier [\#977](https://github.com/bensheldon/good_job/pull/977) ([bensheldon](https://github.com/bensheldon))
988
+
989
+ **Fixed bugs:**
990
+
991
+ - Dashboard error when trying to display 0 running/queued/retried jobs due to missing 'zero' translation [\#990](https://github.com/bensheldon/good_job/issues/990)
992
+ - Add explicit namespace back to `GoodJob::DiscreteExecution` [\#983](https://github.com/bensheldon/good_job/pull/983) ([bensheldon](https://github.com/bensheldon))
993
+
994
+ **Closed issues:**
995
+
996
+ - Persisting ActiveSupport::CurrentAttributes [\#981](https://github.com/bensheldon/good_job/issues/981)
997
+ - uninitialized constant DiscreteExecution [\#962](https://github.com/bensheldon/good_job/issues/962)
998
+ - Hard kill resilience with execution counts [\#922](https://github.com/bensheldon/good_job/issues/922)
999
+
1000
+ **Merged pull requests:**
1001
+
1002
+ - Bump rubocop from 1.53.0 to 1.54.0 [\#994](https://github.com/bensheldon/good_job/pull/994) ([dependabot[bot]](https://github.com/apps/dependabot))
1003
+ - Bump rails from 7.0.5 to 7.0.6 [\#993](https://github.com/bensheldon/good_job/pull/993) ([dependabot[bot]](https://github.com/apps/dependabot))
1004
+ - Fix CI: Lock traces version for Ruby 2.6 compatible version [\#987](https://github.com/bensheldon/good_job/pull/987) ([bensheldon](https://github.com/bensheldon))
1005
+ - Turkish Language support [\#986](https://github.com/bensheldon/good_job/pull/986) ([SemihCag](https://github.com/SemihCag))
1006
+ - Use generic error reporter in Readme examples [\#964](https://github.com/bensheldon/good_job/pull/964) ([shouichi](https://github.com/shouichi))
1007
+
1008
+ ## [v3.15.13](https://github.com/bensheldon/good_job/tree/v3.15.13) (2023-06-14)
1009
+
1010
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.15.12...v3.15.13)
1011
+
1012
+ **Fixed bugs:**
1013
+
1014
+ - Replace uncached table\_exists? with cached table\_exists? [\#979](https://github.com/bensheldon/good_job/pull/979) ([cmcinnes-mdsol](https://github.com/cmcinnes-mdsol))
1015
+
1016
+ ## [v3.15.12](https://github.com/bensheldon/good_job/tree/v3.15.12) (2023-06-11)
1017
+
1018
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.15.11...v3.15.12)
1019
+
1020
+ **Fixed bugs:**
1021
+
1022
+ - Do not allow GoodJob to automatically start after Rails initialization if previously shutdown [\#976](https://github.com/bensheldon/good_job/pull/976) ([bensheldon](https://github.com/bensheldon))
1023
+
1024
+ **Merged pull requests:**
1025
+
1026
+ - Fix Rubocop linting [\#975](https://github.com/bensheldon/good_job/pull/975) ([bensheldon](https://github.com/bensheldon))
1027
+ - Bump capybara from 3.38.0 to 3.39.1 [\#970](https://github.com/bensheldon/good_job/pull/970) ([dependabot[bot]](https://github.com/apps/dependabot))
1028
+ - Bump thor from 1.2.1 to 1.2.2 [\#967](https://github.com/bensheldon/good_job/pull/967) ([dependabot[bot]](https://github.com/apps/dependabot))
1029
+
1030
+ ## [v3.15.11](https://github.com/bensheldon/good_job/tree/v3.15.11) (2023-06-06)
1031
+
1032
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.15.10...v3.15.11)
1033
+
1034
+ **Fixed bugs:**
1035
+
1036
+ - Fix `discrete_executions` job re-enqueueing when `retry_job` is called directly [\#973](https://github.com/bensheldon/good_job/pull/973) ([bensheldon](https://github.com/bensheldon))
1037
+
1038
+ **Closed issues:**
1039
+
1040
+ - Unclear how discrete executions should work with reenqueued jobs \(leads to broken job-iteration\) [\#972](https://github.com/bensheldon/good_job/issues/972)
1041
+ - `build_for_enqueue` discards `scheduled_at` values for bulk-enqueued jobs [\#966](https://github.com/bensheldon/good_job/issues/966)
1042
+
1043
+ ## [v3.15.10](https://github.com/bensheldon/good_job/tree/v3.15.10) (2023-05-22)
1044
+
1045
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.15.9...v3.15.10)
1046
+
1047
+ **Fixed bugs:**
1048
+
1049
+ - Ensure migration warning for `DiscreteExecution` constant is in explicit `GoodJob::` namespace [\#963](https://github.com/bensheldon/good_job/pull/963) ([bensheldon](https://github.com/bensheldon))
1050
+
1051
+ ## [v3.15.9](https://github.com/bensheldon/good_job/tree/v3.15.9) (2023-05-21)
1052
+
1053
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.15.8...v3.15.9)
1054
+
1055
+ **Fixed bugs:**
1056
+
1057
+ - Fix wait and wait\_until ignored in bulk enqueue [\#960](https://github.com/bensheldon/good_job/pull/960) ([bensheldon](https://github.com/bensheldon))
1058
+
1059
+ **Closed issues:**
1060
+
1061
+ - Does Bulk enqueue respect wait? [\#959](https://github.com/bensheldon/good_job/issues/959)
1062
+ - BaseExecution::discrete\_support? hardcodes the DiscreteExecution table\_name [\#957](https://github.com/bensheldon/good_job/issues/957)
1063
+
1064
+ **Merged pull requests:**
1065
+
1066
+ - Fix flaky jruby test to widen time-based range [\#961](https://github.com/bensheldon/good_job/pull/961) ([bensheldon](https://github.com/bensheldon))
1067
+ - Update README.md [\#953](https://github.com/bensheldon/good_job/pull/953) ([namiwang](https://github.com/namiwang))
1068
+
1069
+ ## [v3.15.8](https://github.com/bensheldon/good_job/tree/v3.15.8) (2023-05-19)
1070
+
1071
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.15.7...v3.15.8)
1072
+
1073
+ **Fixed bugs:**
1074
+
1075
+ - Fix hard-coded and duplicated table\_name [\#958](https://github.com/bensheldon/good_job/pull/958) ([gap777](https://github.com/gap777))
1076
+
1077
+ **Closed issues:**
1078
+
1079
+ - `active_job.enqueue` Performance Issue [\#939](https://github.com/bensheldon/good_job/issues/939)
1080
+
1081
+ **Merged pull requests:**
1082
+
1083
+ - Bump rubocop from 1.46.0 to 1.50.2 [\#949](https://github.com/bensheldon/good_job/pull/949) ([dependabot[bot]](https://github.com/apps/dependabot))
1084
+ - Bump rubocop-rails from 2.18.0 to 2.19.1 [\#947](https://github.com/bensheldon/good_job/pull/947) ([dependabot[bot]](https://github.com/apps/dependabot))
1085
+
1086
+ ## [v3.15.7](https://github.com/bensheldon/good_job/tree/v3.15.7) (2023-04-30)
1087
+
1088
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.15.6...v3.15.7)
1089
+
1090
+ **Fixed bugs:**
1091
+
1092
+ - Fix Lockable's `SELECT 1 AS one` queries missing `LIMIT 1` [\#946](https://github.com/bensheldon/good_job/pull/946) ([bensheldon](https://github.com/bensheldon))
1093
+
1094
+ **Closed issues:**
1095
+
1096
+ - Issue with performing jobs that use ActionMailer::Parameterized [\#944](https://github.com/bensheldon/good_job/issues/944)
1097
+ - Deprecation warning on the deprecation warning [\#943](https://github.com/bensheldon/good_job/issues/943)
1098
+
1099
+ **Merged pull requests:**
1100
+
1101
+ - Replace class usage of ActiveSupport::Deprecator with gem-specific instance [\#945](https://github.com/bensheldon/good_job/pull/945) ([bensheldon](https://github.com/bensheldon))
1102
+
1103
+ ## [v3.15.6](https://github.com/bensheldon/good_job/tree/v3.15.6) (2023-04-24)
1104
+
1105
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.15.5...v3.15.6)
1106
+
1107
+ **Merged pull requests:**
1108
+
1109
+ - Refine french translations [\#936](https://github.com/bensheldon/good_job/pull/936) ([francois-ferrandis](https://github.com/francois-ferrandis))
1110
+ - feat: locales for ja [\#935](https://github.com/bensheldon/good_job/pull/935) ([aki77](https://github.com/aki77))
1111
+
1112
+ ## [v3.15.5](https://github.com/bensheldon/good_job/tree/v3.15.5) (2023-04-24)
1113
+
1114
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.15.4...v3.15.5)
1115
+
1116
+ **Fixed bugs:**
1117
+
1118
+ - Fix `GoodJob.cleanup_preserved_jobs` to add missing guard for unmigrated discrete executions [\#938](https://github.com/bensheldon/good_job/pull/938) ([bensheldon](https://github.com/bensheldon))
1119
+
1120
+ **Closed issues:**
1121
+
1122
+ - Update to 3.15.4 breaks cleanup\_preserved\_jobs [\#937](https://github.com/bensheldon/good_job/issues/937)
1123
+
1124
+ ## [v3.15.4](https://github.com/bensheldon/good_job/tree/v3.15.4) (2023-04-22)
1125
+
1126
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.15.3...v3.15.4)
1127
+
1128
+ **Merged pull requests:**
1129
+
1130
+ - Create "discrete" `good_job_executions` table to separate Job records from Execution records and have a 1-to-1 correspondence between `good_jobs` records and Active Job jobs [\#928](https://github.com/bensheldon/good_job/pull/928) ([bensheldon](https://github.com/bensheldon))
1131
+
1132
+ ## [v3.15.3](https://github.com/bensheldon/good_job/tree/v3.15.3) (2023-04-22)
1133
+
1134
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.15.2...v3.15.3)
1135
+
1136
+ **Merged pull requests:**
1137
+
1138
+ - Eagerly autoload `ActiveJob::Base`; clean up framework deferred-loading logic to use nested `on_load` blocks [\#931](https://github.com/bensheldon/good_job/pull/931) ([bensheldon](https://github.com/bensheldon))
1139
+
1140
+ ## [v3.15.2](https://github.com/bensheldon/good_job/tree/v3.15.2) (2023-04-19)
1141
+
1142
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.15.1...v3.15.2)
1143
+
1144
+ **Closed issues:**
1145
+
1146
+ - Cleaning up preserved jobs giving me timeout [\#933](https://github.com/bensheldon/good_job/issues/933)
1147
+ - uninitialized constant GoodJob::ActiveJobJob \(NameError\) [\#932](https://github.com/bensheldon/good_job/issues/932)
1148
+
1149
+ **Merged pull requests:**
1150
+
1151
+ - Use batched queries in `GoodJob::self.cleanup_preserved_jobs` [\#934](https://github.com/bensheldon/good_job/pull/934) ([bensheldon](https://github.com/bensheldon))
1152
+ - Bump nokogiri from 1.14.2 to 1.14.3 [\#926](https://github.com/bensheldon/good_job/pull/926) ([dependabot[bot]](https://github.com/apps/dependabot))
1153
+
1154
+ ## [v3.15.1](https://github.com/bensheldon/good_job/tree/v3.15.1) (2023-04-17)
1155
+
1156
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.15.0...v3.15.1)
1157
+
1158
+ **Implemented enhancements:**
1159
+
1160
+ - Support for Batches? [\#417](https://github.com/bensheldon/good_job/issues/417)
1161
+
1162
+ **Fixed bugs:**
1163
+
1164
+ - Fix setting of locale via routes `mount ... defaults: { locale: :en }` [\#923](https://github.com/bensheldon/good_job/pull/923) ([bensheldon](https://github.com/bensheldon))
1165
+ - Set `successfully_enqueued?` when using `perform_all_later` [\#917](https://github.com/bensheldon/good_job/pull/917) ([bensheldon](https://github.com/bensheldon))
1166
+
1167
+ **Closed issues:**
1168
+
1169
+ - GoodJob has pending database migrations after v2 -\> v3 [\#920](https://github.com/bensheldon/good_job/issues/920)
1170
+ - Batch docs in README suggest `Batch#add` is a class method, but it's not [\#912](https://github.com/bensheldon/good_job/issues/912)
1171
+ - How do I clear queue during tests? [\#887](https://github.com/bensheldon/good_job/issues/887)
1172
+ - Implement batch functionality [\#691](https://github.com/bensheldon/good_job/issues/691)
1173
+
1174
+ **Merged pull requests:**
1175
+
1176
+ - In tests, directly use `connection.truncate_tables` instead of `ActiveRecord::Tasks::DatabaseTasks.truncate_all` [\#918](https://github.com/bensheldon/good_job/pull/918) ([bensheldon](https://github.com/bensheldon))
1177
+ - Use `GoodJob.capsule` in CLI instead of creating a new Capsule [\#916](https://github.com/bensheldon/good_job/pull/916) ([bensheldon](https://github.com/bensheldon))
1178
+ - Fix lint: missing fr and nl translations; readme whitespace [\#914](https://github.com/bensheldon/good_job/pull/914) ([bensheldon](https://github.com/bensheldon))
1179
+ - Switches from Chrome to Chromium to support Apple M1/Arm CPUs [\#910](https://github.com/bensheldon/good_job/pull/910) ([ckdake](https://github.com/ckdake))
1180
+ - Bump erb\_lint from 0.3.1 to 0.4.0 [\#906](https://github.com/bensheldon/good_job/pull/906) ([dependabot[bot]](https://github.com/apps/dependabot))
1181
+
1182
+ ## [v3.15.0](https://github.com/bensheldon/good_job/tree/v3.15.0) (2023-04-02)
1183
+
1184
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.14.2...v3.15.0)
1185
+
1186
+ **Implemented enhancements:**
1187
+
1188
+ - Extract more Dashboard strings into localization strings [\#899](https://github.com/bensheldon/good_job/pull/899) ([patriciomacadden](https://github.com/patriciomacadden))
1189
+
1190
+ **Closed issues:**
1191
+
1192
+ - ActionView::Template::Error - undefined method `symbolize\_keys' [\#889](https://github.com/bensheldon/good_job/issues/889)
1193
+
1194
+ **Merged pull requests:**
1195
+
1196
+ - Bump benchmark-ips from 2.11.0 to 2.12.0 [\#907](https://github.com/bensheldon/good_job/pull/907) ([dependabot[bot]](https://github.com/apps/dependabot))
1197
+ - Bump selenium-webdriver from 4.8.1 to 4.8.6 [\#905](https://github.com/bensheldon/good_job/pull/905) ([dependabot[bot]](https://github.com/apps/dependabot))
1198
+ - Bump rails from 7.0.4.2 to 7.0.4.3 [\#904](https://github.com/bensheldon/good_job/pull/904) ([dependabot[bot]](https://github.com/apps/dependabot))
1199
+ - feat: locales for de [\#903](https://github.com/bensheldon/good_job/pull/903) ([eric-christian](https://github.com/eric-christian))
1200
+ - Update README.md [\#902](https://github.com/bensheldon/good_job/pull/902) ([ain2108](https://github.com/ain2108))
1201
+ - Extract shared methods/scopes into a BaseExecution to share between Execution and Job models [\#894](https://github.com/bensheldon/good_job/pull/894) ([bensheldon](https://github.com/bensheldon))
1202
+ - Add translate\_hash to handle missing translation keys that return hashes; only show translatable/available locales in dropdown [\#891](https://github.com/bensheldon/good_job/pull/891) ([bensheldon](https://github.com/bensheldon))
1203
+
1204
+ ## [v3.14.2](https://github.com/bensheldon/good_job/tree/v3.14.2) (2023-03-16)
1205
+
1206
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.14.1...v3.14.2)
1207
+
1208
+ **Merged pull requests:**
1209
+
1210
+ - Bump rack from 2.2.6.3 to 2.2.6.4 [\#893](https://github.com/bensheldon/good_job/pull/893) ([dependabot[bot]](https://github.com/apps/dependabot))
1211
+ - Remove non-ActiveRecord::Base backed association [\#892](https://github.com/bensheldon/good_job/pull/892) ([rrunyon](https://github.com/rrunyon))
1212
+
1213
+ ## [v3.14.1](https://github.com/bensheldon/good_job/tree/v3.14.1) (2023-03-14)
1214
+
1215
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.14.0...v3.14.1)
1216
+
1217
+ **Merged pull requests:**
1218
+
1219
+ - Allow joining executions to jobs scoped by state [\#886](https://github.com/bensheldon/good_job/pull/886) ([segiddins](https://github.com/segiddins))
1220
+ - Add execution\_result to event payload for perform\_job.good\_job [\#885](https://github.com/bensheldon/good_job/pull/885) ([segiddins](https://github.com/segiddins))
1221
+ - Bump rack from 2.2.6.2 to 2.2.6.3 [\#884](https://github.com/bensheldon/good_job/pull/884) ([dependabot[bot]](https://github.com/apps/dependabot))
1222
+
1223
+ ## [v3.14.0](https://github.com/bensheldon/good_job/tree/v3.14.0) (2023-03-09)
1224
+
1225
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.13.0...v3.14.0)
1226
+
1227
+ **Implemented enhancements:**
1228
+
1229
+ - Deprecate definition of job priority, change to "smaller number is higher priority" to align with Active Job definition [\#883](https://github.com/bensheldon/good_job/pull/883) ([bensheldon](https://github.com/bensheldon))
1230
+
1231
+ ## [v3.13.0](https://github.com/bensheldon/good_job/tree/v3.13.0) (2023-03-08)
1232
+
1233
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.12.8...v3.13.0)
1234
+
1235
+ **Implemented enhancements:**
1236
+
1237
+ - If logging to STDOUT in CLI set $stdout.sync = true [\#882](https://github.com/bensheldon/good_job/pull/882) ([blafri](https://github.com/blafri))
1238
+
1239
+ **Fixed bugs:**
1240
+
1241
+ - Don't load all Executions on Jobs Dashboard [\#878](https://github.com/bensheldon/good_job/pull/878) ([bensheldon](https://github.com/bensheldon))
1242
+
1243
+ **Closed issues:**
1244
+
1245
+ - No route matches \[POST\] "/scheduler-dashboard/jobs/\<id\>/retry" [\#880](https://github.com/bensheldon/good_job/issues/880)
1246
+ - What is `concurrency_key` used for? [\#877](https://github.com/bensheldon/good_job/issues/877)
1247
+ - ArgumentError in GoodJob::Jobs\#index [\#875](https://github.com/bensheldon/good_job/issues/875)
1248
+ - Nonworking dashboard for job with many retries [\#809](https://github.com/bensheldon/good_job/issues/809)
1249
+
1250
+ **Merged pull requests:**
1251
+
1252
+ - Add aggressive test for async Batches [\#833](https://github.com/bensheldon/good_job/pull/833) ([bensheldon](https://github.com/bensheldon))
1253
+
1254
+ ## [v3.12.8](https://github.com/bensheldon/good_job/tree/v3.12.8) (2023-03-06)
1255
+
1256
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.12.7...v3.12.8)
1257
+
1258
+ **Fixed bugs:**
1259
+
1260
+ - Add `raise: false` to FrontendsController after action skip [\#881](https://github.com/bensheldon/good_job/pull/881) ([simi](https://github.com/simi))
1261
+
1262
+ **Closed issues:**
1263
+
1264
+ - 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)
1265
+
1266
+ **Merged pull requests:**
1267
+
1268
+ - Rewrite flaky tests: don't allow nil timeout for restart [\#872](https://github.com/bensheldon/good_job/pull/872) ([bensheldon](https://github.com/bensheldon))
1269
+
1270
+ ## [v3.12.7](https://github.com/bensheldon/good_job/tree/v3.12.7) (2023-03-01)
1271
+
1272
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.12.6...v3.12.7)
1273
+
1274
+ **Fixed bugs:**
1275
+
1276
+ - Rename "assets" to "frontends" to avoid Asset Pipeline collisions [\#874](https://github.com/bensheldon/good_job/pull/874) ([bensheldon](https://github.com/bensheldon))
1277
+
1278
+ ## [v3.12.6](https://github.com/bensheldon/good_job/tree/v3.12.6) (2023-03-01)
1279
+
1280
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.12.5...v3.12.6)
1281
+
1282
+ **Merged pull requests:**
1283
+
1284
+ - Update and cleanup js and css assets; add Stimulus [\#870](https://github.com/bensheldon/good_job/pull/870) ([bensheldon](https://github.com/bensheldon))
1285
+ - Bump actions/add-to-project from 0.4.0 to 0.4.1 [\#869](https://github.com/bensheldon/good_job/pull/869) ([dependabot[bot]](https://github.com/apps/dependabot))
1286
+ - Bump actions/checkout from 2 to 3 [\#868](https://github.com/bensheldon/good_job/pull/868) ([dependabot[bot]](https://github.com/apps/dependabot))
1287
+ - Bump rubocop-rails from 2.17.4 to 2.18.0 [\#867](https://github.com/bensheldon/good_job/pull/867) ([dependabot[bot]](https://github.com/apps/dependabot))
1288
+ - Bump pg from 1.4.5 to 1.4.6 [\#866](https://github.com/bensheldon/good_job/pull/866) ([dependabot[bot]](https://github.com/apps/dependabot))
1289
+ - Extract GoodJob::Capsule [\#861](https://github.com/bensheldon/good_job/pull/861) ([bensheldon](https://github.com/bensheldon))
1290
+
1291
+ ## [v3.12.5](https://github.com/bensheldon/good_job/tree/v3.12.5) (2023-02-24)
1292
+
1293
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.12.4...v3.12.5)
1294
+
1295
+ **Fixed bugs:**
1296
+
1297
+ - Fix I18n number formatting; other Dashboard development tweaks [\#862](https://github.com/bensheldon/good_job/pull/862) ([bensheldon](https://github.com/bensheldon))
1298
+
1299
+ **Merged pull requests:**
1300
+
1301
+ - Update Development Dependencies. Use Ruby 3.2 and Rails 7.0 [\#865](https://github.com/bensheldon/good_job/pull/865) ([bensheldon](https://github.com/bensheldon))
1302
+
1303
+ ## [v3.12.4](https://github.com/bensheldon/good_job/tree/v3.12.4) (2023-02-24)
1304
+
1305
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.12.3...v3.12.4)
1306
+
1307
+ **Fixed bugs:**
1308
+
1309
+ - Add serialize coder kwarg for Rails 7.1-alpha [\#864](https://github.com/bensheldon/good_job/pull/864) ([bensheldon](https://github.com/bensheldon))
1310
+
1311
+ **Closed issues:**
1312
+
1313
+ - Rails 7.1 - Serialized columns like a store now needs a `coder: JSON` [\#863](https://github.com/bensheldon/good_job/issues/863)
1314
+ - Does good\_job automatically retry on ActiveRecord::LockWaitTimeout? [\#860](https://github.com/bensheldon/good_job/issues/860)
1315
+ - race condition for batches callback [\#832](https://github.com/bensheldon/good_job/issues/832)
1316
+
1317
+ ## [v3.12.3](https://github.com/bensheldon/good_job/tree/v3.12.3) (2023-02-21)
1318
+
1319
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.12.2...v3.12.3)
1320
+
1321
+ **Fixed bugs:**
1322
+
1323
+ - Fix bug where notification check does not use configuration [\#857](https://github.com/bensheldon/good_job/pull/857) ([mitchellhenke](https://github.com/mitchellhenke))
1324
+ - Fix template for the update migrations 03 index \(\#851\) [\#852](https://github.com/bensheldon/good_job/pull/852) ([julienanne](https://github.com/julienanne))
1325
+
1326
+ **Closed issues:**
1327
+
1328
+ - \[Not Critical\] Too much space \(One\) in db/migrate/XXXXXX\_create\_index\_good\_jobs\_jobs\_on\_priority\_created\_at\_when\_unfinished.rb [\#851](https://github.com/bensheldon/good_job/issues/851)
1329
+ - Use timestamps with timezone when set as the default for postgresql. [\#668](https://github.com/bensheldon/good_job/issues/668)
1330
+
1331
+ ## [v3.12.2](https://github.com/bensheldon/good_job/tree/v3.12.2) (2023-02-16)
1332
+
1333
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.12.1...v3.12.2)
1334
+
1335
+ **Fixed bugs:**
1336
+
1337
+ - Ensure all i18n locale keys are under `good_job` namespace [\#850](https://github.com/bensheldon/good_job/pull/850) ([bensheldon](https://github.com/bensheldon))
1338
+
1339
+ **Closed issues:**
1340
+
1341
+ - Override locales and conflict with rails-i18n [\#847](https://github.com/bensheldon/good_job/issues/847)
1342
+
1343
+ **Merged pull requests:**
1344
+
1345
+ - Add rack-mini-profiler to development [\#848](https://github.com/bensheldon/good_job/pull/848) ([bensheldon](https://github.com/bensheldon))
1346
+ - Fix typo of "class" in README [\#845](https://github.com/bensheldon/good_job/pull/845) ([mthadley](https://github.com/mthadley))
1347
+ - spelling: add n to 'not' [\#841](https://github.com/bensheldon/good_job/pull/841) ([michaelglass](https://github.com/michaelglass))
1348
+
1349
+ ## [v3.12.1](https://github.com/bensheldon/good_job/tree/v3.12.1) (2023-02-09)
1350
+
1351
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.12.0...v3.12.1)
1352
+
1353
+ **Fixed bugs:**
1354
+
1355
+ - Fix "NoMethodError: private method `\_good\_job\_concurrency\_key' if key is nil" [\#836](https://github.com/bensheldon/good_job/pull/836) ([bensheldon](https://github.com/bensheldon))
1356
+
1357
+ **Closed issues:**
1358
+
1359
+ - NoMethodError: private method `\_good\_job\_concurrency\_key' if key is nil [\#835](https://github.com/bensheldon/good_job/issues/835)
1360
+ - Jobs go back into the queued state when a worker is killed [\#821](https://github.com/bensheldon/good_job/issues/821)
1361
+
1362
+ **Merged pull requests:**
1363
+
1364
+ - Dashboard's tables update [\#834](https://github.com/bensheldon/good_job/pull/834) ([Ajmal](https://github.com/Ajmal))
1365
+
1366
+ ## [v3.12.0](https://github.com/bensheldon/good_job/tree/v3.12.0) (2023-02-07)
1367
+
1368
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.11.1...v3.12.0)
1369
+
1370
+ **Implemented enhancements:**
1371
+
1372
+ - Create `InterruptErrors` extension to raise an exception when an interrupted job is retried [\#830](https://github.com/bensheldon/good_job/pull/830) ([bensheldon](https://github.com/bensheldon))
1373
+
1374
+ ## [v3.11.1](https://github.com/bensheldon/good_job/tree/v3.11.1) (2023-02-06)
1375
+
1376
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.11.0...v3.11.1)
1377
+
1378
+ **Merged pull requests:**
1379
+
1380
+ - UI improvement [\#829](https://github.com/bensheldon/good_job/pull/829) ([Ajmal](https://github.com/Ajmal))
1381
+
1382
+ ## [v3.11.0](https://github.com/bensheldon/good_job/tree/v3.11.0) (2023-02-06)
1383
+
1384
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.10.1...v3.11.0)
1385
+
1386
+ **Implemented enhancements:**
1387
+
1388
+ - Create ActiveJob extension to disable sending a NOTIFY on enqueue and retry [\#814](https://github.com/bensheldon/good_job/pull/814) ([bensheldon](https://github.com/bensheldon))
1389
+ - Add global enable\_listen\_notify configuration to disable both notify and listen [\#810](https://github.com/bensheldon/good_job/pull/810) ([mitchellhenke](https://github.com/mitchellhenke))
1390
+
1391
+ **Merged pull requests:**
1392
+
1393
+ - Test Matrix: Use Ruby 3.2 to test against all Postgres versions; add PG 15, remove PG 10 [\#828](https://github.com/bensheldon/good_job/pull/828) ([bensheldon](https://github.com/bensheldon))
1394
+ - Bump nokogiri from 1.14.0 to 1.14.1 [\#827](https://github.com/bensheldon/good_job/pull/827) ([dependabot[bot]](https://github.com/apps/dependabot))
1395
+ - Bump rubocop-performance from 1.15.2 to 1.16.0 [\#826](https://github.com/bensheldon/good_job/pull/826) ([dependabot[bot]](https://github.com/apps/dependabot))
1396
+
1397
+ ## [v3.10.1](https://github.com/bensheldon/good_job/tree/v3.10.1) (2023-02-06)
1398
+
1399
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.10.0...v3.10.1)
1400
+
1401
+ **Fixed bugs:**
1402
+
1403
+ - Ensure batch is reloaded before updating on multiple enqueues [\#824](https://github.com/bensheldon/good_job/pull/824) ([bensheldon](https://github.com/bensheldon))
1404
+
1405
+ **Closed issues:**
1406
+
1407
+ - Can't batch.enqueue the callback after retrying a job within the batch [\#822](https://github.com/bensheldon/good_job/issues/822)
1408
+
1409
+ **Merged pull requests:**
1410
+
1411
+ - In tests, retry when connecting to Puma returns Net::ReadTimeout [\#825](https://github.com/bensheldon/good_job/pull/825) ([bensheldon](https://github.com/bensheldon))
1412
+ - Add Batch enqueue example to Demo's cron configuration [\#823](https://github.com/bensheldon/good_job/pull/823) ([bensheldon](https://github.com/bensheldon))
1413
+
1414
+ ## [v3.10.0](https://github.com/bensheldon/good_job/tree/v3.10.0) (2023-02-04)
1415
+
1416
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.9.0...v3.10.0)
1417
+
1418
+ **Implemented enhancements:**
1419
+
1420
+ - Implement `GoodJob::Batch` [\#712](https://github.com/bensheldon/good_job/pull/712) ([bensheldon](https://github.com/bensheldon))
1421
+
1422
+ **Closed issues:**
1423
+
1424
+ - Support for Rails 6.1 / Ruby 3.2 [\#785](https://github.com/bensheldon/good_job/issues/785)
1425
+ - Custom table names [\#748](https://github.com/bensheldon/good_job/issues/748)
1426
+ - Health check issue with cron scheduler job [\#741](https://github.com/bensheldon/good_job/issues/741)
1427
+
1428
+ ## [v3.9.0](https://github.com/bensheldon/good_job/tree/v3.9.0) (2023-01-31)
1429
+
1430
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.8.0...v3.9.0)
1431
+
1432
+ **Implemented enhancements:**
1433
+
1434
+ - Abort enqueue when the concurrency limit is reached [\#820](https://github.com/bensheldon/good_job/pull/820) ([TAGraves](https://github.com/TAGraves))
1435
+ - Add bulk enqueue functionality [\#790](https://github.com/bensheldon/good_job/pull/790) ([julik](https://github.com/julik))
1436
+
1437
+ **Merged pull requests:**
1438
+
1439
+ - Bump alex-page/github-project-automation-plus from 0.8.2 to 0.8.3 [\#819](https://github.com/bensheldon/good_job/pull/819) ([dependabot[bot]](https://github.com/apps/dependabot))
1440
+ - Bump concurrent-ruby from 1.1.10 to 1.2.0 [\#818](https://github.com/bensheldon/good_job/pull/818) ([dependabot[bot]](https://github.com/apps/dependabot))
1441
+ - Bump rails from 6.1.7 to 6.1.7.2 [\#817](https://github.com/bensheldon/good_job/pull/817) ([dependabot[bot]](https://github.com/apps/dependabot))
1442
+ - Bump selenium-webdriver from 4.7.1 to 4.8.0 [\#816](https://github.com/bensheldon/good_job/pull/816) ([dependabot[bot]](https://github.com/apps/dependabot))
1443
+ - Bump rubocop from 1.43.0 to 1.44.1 [\#815](https://github.com/bensheldon/good_job/pull/815) ([dependabot[bot]](https://github.com/apps/dependabot))
1444
+ - Ensure that anytime the Notifier uses autoloaded constants \(ActiveRecord\), they are wrapped with a Rails Executor [\#797](https://github.com/bensheldon/good_job/pull/797) ([bensheldon](https://github.com/bensheldon))
1445
+ - Remove support for Ruby 2.5 and JRuby 9.2; reactivate appraisal tests for Rails HEAD [\#756](https://github.com/bensheldon/good_job/pull/756) ([bensheldon](https://github.com/bensheldon))
1446
+
1447
+ ## [v3.8.0](https://github.com/bensheldon/good_job/tree/v3.8.0) (2023-01-27)
1448
+
1449
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.7.4...v3.8.0)
1450
+
1451
+ **Implemented enhancements:**
1452
+
1453
+ - Capture and log ActiveJob IDs that are interrupted when Scheduler is forced to shutdown [\#794](https://github.com/bensheldon/good_job/pull/794) ([bensheldon](https://github.com/bensheldon))
1454
+
1455
+ **Fixed bugs:**
1456
+
1457
+ - Ensure Concurrency Keys are string-like and return a better error when they cannot be cast to a string [\#791](https://github.com/bensheldon/good_job/pull/791) ([Earlopain](https://github.com/Earlopain))
1458
+
1459
+ **Closed issues:**
1460
+
1461
+ - Work is not being picked up at the expected rate [\#802](https://github.com/bensheldon/good_job/issues/802)
1462
+ - Cleaning up preserved jobs only removes a subset of the jobs [\#801](https://github.com/bensheldon/good_job/issues/801)
1463
+ - Dashboard fails to execute JS on latest Firefox 108 [\#792](https://github.com/bensheldon/good_job/issues/792)
1464
+ - Concurrency key doesn't handle Hash: TypeError \(can't cast Hash\) [\#784](https://github.com/bensheldon/good_job/issues/784)
1465
+
1466
+ **Merged pull requests:**
1467
+
1468
+ - Bump fugit from 1.8.0 to 1.8.1 [\#808](https://github.com/bensheldon/good_job/pull/808) ([dependabot[bot]](https://github.com/apps/dependabot))
1469
+ - Bump rubocop-rspec from 2.17.1 to 2.18.1 [\#807](https://github.com/bensheldon/good_job/pull/807) ([dependabot[bot]](https://github.com/apps/dependabot))
1470
+ - Bump globalid from 1.0.0 to 1.0.1 [\#804](https://github.com/bensheldon/good_job/pull/804) ([dependabot[bot]](https://github.com/apps/dependabot))
1471
+ - Bump rack from 2.2.4 to 2.2.6.2 [\#803](https://github.com/bensheldon/good_job/pull/803) ([dependabot[bot]](https://github.com/apps/dependabot))
1472
+ - Bump nokogiri from 1.13.10 to 1.14.0 [\#800](https://github.com/bensheldon/good_job/pull/800) ([dependabot[bot]](https://github.com/apps/dependabot))
1473
+ - Bump rubocop from 1.42.0 to 1.43.0 [\#799](https://github.com/bensheldon/good_job/pull/799) ([dependabot[bot]](https://github.com/apps/dependabot))
1474
+ - Bump rubocop-rspec from 2.16.0 to 2.17.1 [\#798](https://github.com/bensheldon/good_job/pull/798) ([dependabot[bot]](https://github.com/apps/dependabot))
1475
+ - Add French translation [\#795](https://github.com/bensheldon/good_job/pull/795) ([francois-ferrandis](https://github.com/francois-ferrandis))
1476
+ - Bump rubocop-rails from 2.17.3 to 2.17.4 [\#780](https://github.com/bensheldon/good_job/pull/780) ([dependabot[bot]](https://github.com/apps/dependabot))
1477
+
1478
+ ## [v3.7.4](https://github.com/bensheldon/good_job/tree/v3.7.4) (2023-01-10)
1479
+
1480
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.7.3...v3.7.4)
1481
+
1482
+ **Fixed bugs:**
1483
+
1484
+ - Update to es-module-shims v1.6.3 and use an inline script entry-point; remove script.js entrypoint; remove sourcemap references [\#793](https://github.com/bensheldon/good_job/pull/793) ([bensheldon](https://github.com/bensheldon))
1485
+
1486
+ ## [v3.7.3](https://github.com/bensheldon/good_job/tree/v3.7.3) (2023-01-09)
1487
+
1488
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.7.2...v3.7.3)
1489
+
1490
+ **Implemented enhancements:**
1491
+
1492
+ - Provide clearer values/deprecation notices for `cleanup_interval_jobs` and `cleanup_interval_seconds`; setting `0` disables, `-1` always [\#776](https://github.com/bensheldon/good_job/pull/776) ([zarqman](https://github.com/zarqman))
1493
+
1494
+ **Closed issues:**
1495
+
1496
+ - Demo page shows Application Error [\#787](https://github.com/bensheldon/good_job/issues/787)
1497
+ - Configuration for PG Schema Other Than Public [\#774](https://github.com/bensheldon/good_job/issues/774)
1498
+
1499
+ **Merged pull requests:**
1500
+
1501
+ - Avoid including unnecessary pg\_locks references when counting jobs [\#789](https://github.com/bensheldon/good_job/pull/789) ([mkrfowler](https://github.com/mkrfowler))
1502
+ - Add net-\* gems to Gemfile for Heroku [\#788](https://github.com/bensheldon/good_job/pull/788) ([bensheldon](https://github.com/bensheldon))
1503
+ - Add Ruby 3.2 to test matrix [\#786](https://github.com/bensheldon/good_job/pull/786) ([bensheldon](https://github.com/bensheldon))
1504
+ - Bump rubocop from 1.41.1 to 1.42.0 [\#781](https://github.com/bensheldon/good_job/pull/781) ([dependabot[bot]](https://github.com/apps/dependabot))
1505
+ - Bump rubocop from 1.40.0 to 1.41.1 [\#779](https://github.com/bensheldon/good_job/pull/779) ([dependabot[bot]](https://github.com/apps/dependabot))
1506
+ - Bump rubocop-performance from 1.15.1 to 1.15.2 [\#777](https://github.com/bensheldon/good_job/pull/777) ([dependabot[bot]](https://github.com/apps/dependabot))
1507
+ - Bump rubocop-rspec from 2.15.0 to 2.16.0 [\#775](https://github.com/bensheldon/good_job/pull/775) ([dependabot[bot]](https://github.com/apps/dependabot))
1508
+ - Bump rails-html-sanitizer from 1.4.3 to 1.4.4 [\#773](https://github.com/bensheldon/good_job/pull/773) ([dependabot[bot]](https://github.com/apps/dependabot))
1509
+ - Bump loofah from 2.19.0 to 2.19.1 [\#772](https://github.com/bensheldon/good_job/pull/772) ([dependabot[bot]](https://github.com/apps/dependabot))
1510
+
1511
+ ## [v3.7.2](https://github.com/bensheldon/good_job/tree/v3.7.2) (2022-12-12)
1512
+
1513
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.7.1...v3.7.2)
1514
+
1515
+ **Fixed bugs:**
1516
+
1517
+ - Ignore ActiveJob::DeserializationError when discarding jobs [\#771](https://github.com/bensheldon/good_job/pull/771) ([nickcampbell18](https://github.com/nickcampbell18))
1518
+
1519
+ **Closed issues:**
1520
+
1521
+ - Unable to discard failed jobs which crashed with `ActiveJob::DeserializationError` [\#770](https://github.com/bensheldon/good_job/issues/770)
1522
+
1523
+ **Merged pull requests:**
1524
+
1525
+ - Bump rubocop from 1.39.0 to 1.40.0 [\#769](https://github.com/bensheldon/good_job/pull/769) ([dependabot[bot]](https://github.com/apps/dependabot))
1526
+
1527
+ ## [v3.7.1](https://github.com/bensheldon/good_job/tree/v3.7.1) (2022-12-12)
1528
+
1529
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.7.0...v3.7.1)
1530
+
1531
+ **Fixed bugs:**
1532
+
1533
+ - Fix disabling of interval cleanups [\#768](https://github.com/bensheldon/good_job/pull/768) ([zarqman](https://github.com/zarqman))
1534
+
1535
+ ## [v3.7.0](https://github.com/bensheldon/good_job/tree/v3.7.0) (2022-12-10)
1536
+
1537
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.6.2...v3.7.0)
1538
+
1539
+ **Implemented enhancements:**
1540
+
1541
+ - Add GoodJob version to start banner [\#766](https://github.com/bensheldon/good_job/pull/766) ([zarqman](https://github.com/zarqman))
1542
+
1543
+ **Fixed bugs:**
1544
+
1545
+ - Always preserve job records created by cron [\#767](https://github.com/bensheldon/good_job/pull/767) ([bensheldon](https://github.com/bensheldon))
1546
+
1547
+ **Merged pull requests:**
1548
+
1549
+ - Bump nokogiri from 1.13.9 to 1.13.10 [\#765](https://github.com/bensheldon/good_job/pull/765) ([dependabot[bot]](https://github.com/apps/dependabot))
1550
+ - Remove JRuby 9.2 from testing matrix [\#763](https://github.com/bensheldon/good_job/pull/763) ([bensheldon](https://github.com/bensheldon))
1551
+ - Bump actions/cache from 1 to 3 [\#762](https://github.com/bensheldon/good_job/pull/762) ([dependabot[bot]](https://github.com/apps/dependabot))
1552
+ - Bump actions/upload-artifact from 2 to 3 [\#761](https://github.com/bensheldon/good_job/pull/761) ([dependabot[bot]](https://github.com/apps/dependabot))
1553
+ - Bump actions/add-to-project from 0.3.0 to 0.4.0 [\#759](https://github.com/bensheldon/good_job/pull/759) ([dependabot[bot]](https://github.com/apps/dependabot))
1554
+ - Bump alex-page/github-project-automation-plus from 9a05133789dbc96bd560ec84223a0ad49253d342 to 1f8873e97e3c8f58161a323b7c568c1f623a1c4d [\#758](https://github.com/bensheldon/good_job/pull/758) ([dependabot[bot]](https://github.com/apps/dependabot))
1555
+ - Bump selenium-webdriver from 4.6.1 to 4.7.1 [\#757](https://github.com/bensheldon/good_job/pull/757) ([dependabot[bot]](https://github.com/apps/dependabot))
1556
+ - Add explicit ruby version in Gemfile for Heroku demo [\#755](https://github.com/bensheldon/good_job/pull/755) ([bensheldon](https://github.com/bensheldon))
1557
+
1558
+ ## [v3.6.2](https://github.com/bensheldon/good_job/tree/v3.6.2) (2022-12-04)
1559
+
1560
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.6.1...v3.6.2)
1561
+
1562
+ **Fixed bugs:**
1563
+
1564
+ - Redirect to Jobs path after destroy [\#754](https://github.com/bensheldon/good_job/pull/754) ([BilalBudhani](https://github.com/BilalBudhani))
1565
+
1566
+ **Merged pull requests:**
1567
+
1568
+ - Bump pg from 1.4.4 to 1.4.5 [\#751](https://github.com/bensheldon/good_job/pull/751) ([dependabot[bot]](https://github.com/apps/dependabot))
1569
+
1570
+ ## [v3.6.1](https://github.com/bensheldon/good_job/tree/v3.6.1) (2022-11-30)
1571
+
1572
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.6.0...v3.6.1)
1573
+
1574
+ **Implemented enhancements:**
1575
+
1576
+ - add UA to i18n [\#747](https://github.com/bensheldon/good_job/pull/747) ([yshmarov](https://github.com/yshmarov))
1577
+
1578
+ **Closed issues:**
1579
+
1580
+ - Minor Cron Concurrency Clarification [\#743](https://github.com/bensheldon/good_job/issues/743)
1581
+ - Materialized CTE performance bottleneck [\#720](https://github.com/bensheldon/good_job/issues/720)
1582
+ - Calculating database connections [\#669](https://github.com/bensheldon/good_job/issues/669)
1583
+
1584
+ **Merged pull requests:**
1585
+
1586
+ - Update gems, rubocop, and development ruby \(v2.7.7\) [\#752](https://github.com/bensheldon/good_job/pull/752) ([bensheldon](https://github.com/bensheldon))
1587
+ - Add chrome/chromdriver to Codespace configuration [\#746](https://github.com/bensheldon/good_job/pull/746) ([bensheldon](https://github.com/bensheldon))
1588
+ - Add GitHub Codespaces / devcontainer configuration [\#745](https://github.com/bensheldon/good_job/pull/745) ([bensheldon](https://github.com/bensheldon))
1589
+ - Bump fugit from 1.7.1 to 1.7.2 [\#742](https://github.com/bensheldon/good_job/pull/742) ([dependabot[bot]](https://github.com/apps/dependabot))
1590
+ - Bundle update and Rubocop lints [\#740](https://github.com/bensheldon/good_job/pull/740) ([bensheldon](https://github.com/bensheldon))
1591
+ - Add dependabot to update development dependencies [\#734](https://github.com/bensheldon/good_job/pull/734) ([bensheldon](https://github.com/bensheldon))
1592
+ - Fix misspellings and grammar in README [\#732](https://github.com/bensheldon/good_job/pull/732) ([aisayo](https://github.com/aisayo))
1593
+
1594
+ ## [v3.6.0](https://github.com/bensheldon/good_job/tree/v3.6.0) (2022-10-22)
1595
+
1596
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.5.1...v3.6.0)
1597
+
1598
+ **Implemented enhancements:**
1599
+
1600
+ - Add configurable limit \(`queue_select_limit`\) when querying candidate jobs [\#727](https://github.com/bensheldon/good_job/pull/727) ([mitchellhenke](https://github.com/mitchellhenke))
1601
+ - Add index to `good_jobs` to improve querying candidate jobs [\#726](https://github.com/bensheldon/good_job/pull/726) ([mitchellhenke](https://github.com/mitchellhenke))
1602
+
1603
+ **Fixed bugs:**
1604
+
1605
+ - 3.4.8 release breaks job retrying [\#728](https://github.com/bensheldon/good_job/issues/728)
1606
+ - Redo: When not preserving job records, ensure all prior executions are deleted after successful retry [\#730](https://github.com/bensheldon/good_job/pull/730) ([bensheldon](https://github.com/bensheldon))
1607
+
1608
+ ## [v3.5.1](https://github.com/bensheldon/good_job/tree/v3.5.1) (2022-10-20)
1609
+
1610
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.5.0...v3.5.1)
1611
+
1612
+ **Fixed bugs:**
1613
+
1614
+ - Revert "When not preserving job records, ensure all prior executions are deleted after successful retry" because some retry patterns stopped working [\#729](https://github.com/bensheldon/good_job/pull/729) ([bensheldon](https://github.com/bensheldon))
1615
+
1616
+ **Closed issues:**
1617
+
1618
+ - Assert cancelled jobs [\#724](https://github.com/bensheldon/good_job/issues/724)
1619
+
1620
+ ## [v3.5.0](https://github.com/bensheldon/good_job/tree/v3.5.0) (2022-10-18)
1621
+
1622
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.4.8...v3.5.0)
1623
+
1624
+ **Merged pull requests:**
1625
+
1626
+ - Fix flaky test for `Scheduler#cleanup_interval_jobs` [\#723](https://github.com/bensheldon/good_job/pull/723) ([bensheldon](https://github.com/bensheldon))
1627
+ - Pin development Puma version until Capybara is compatible [\#722](https://github.com/bensheldon/good_job/pull/722) ([bensheldon](https://github.com/bensheldon))
1628
+ - Rename Job status of `finished` to `succeeded`; `finished` now means either `succeeded` or `discarded` [\#721](https://github.com/bensheldon/good_job/pull/721) ([bensheldon](https://github.com/bensheldon))
1629
+
1630
+ ## [v3.4.8](https://github.com/bensheldon/good_job/tree/v3.4.8) (2022-10-11)
1631
+
1632
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.4.7...v3.4.8)
1633
+
1634
+ **Fixed bugs:**
1635
+
1636
+ - When not preserving job records, ensure all prior executions are deleted after successful retry [\#719](https://github.com/bensheldon/good_job/pull/719) ([ylansegal](https://github.com/ylansegal))
1637
+
1638
+ ## [v3.4.7](https://github.com/bensheldon/good_job/tree/v3.4.7) (2022-10-06)
1639
+
1640
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.4.6...v3.4.7)
1641
+
1642
+ **Closed issues:**
1643
+
1644
+ - Changing assets path? [\#717](https://github.com/bensheldon/good_job/issues/717)
1645
+ - Support Sequel [\#713](https://github.com/bensheldon/good_job/issues/713)
1646
+
1647
+ **Merged pull requests:**
1648
+
1649
+ - Update bootstrap to latest 5.2.2 [\#718](https://github.com/bensheldon/good_job/pull/718) ([morgoth](https://github.com/morgoth))
1650
+
1651
+ ## [v3.4.6](https://github.com/bensheldon/good_job/tree/v3.4.6) (2022-09-26)
1652
+
1653
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.4.5...v3.4.6)
1654
+
1655
+ **Fixed bugs:**
1656
+
1657
+ - Support SemanticLogger logging with improve stdout logic and tagged logs [\#715](https://github.com/bensheldon/good_job/pull/715) ([bensheldon](https://github.com/bensheldon))
1658
+
1659
+ **Closed issues:**
1660
+
1661
+ - Unable to Replace GoodJob's Logger [\#667](https://github.com/bensheldon/good_job/issues/667)
1662
+ - Jobs never get run... [\#516](https://github.com/bensheldon/good_job/issues/516)
1663
+
1664
+ ## [v3.4.5](https://github.com/bensheldon/good_job/tree/v3.4.5) (2022-09-12)
1665
+
1666
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.4.4...v3.4.5)
1667
+
1668
+ **Fixed bugs:**
1669
+
1670
+ - Dashboard: Remove translation\_missing red highlighting; remove number\_to\_human.hundreds; add form labels [\#708](https://github.com/bensheldon/good_job/pull/708) ([bensheldon](https://github.com/bensheldon))
1671
+
1672
+ **Closed issues:**
1673
+
1674
+ - pg\_xact No Such File error in logs [\#709](https://github.com/bensheldon/good_job/issues/709)
1675
+ - Broken upgrade to v3. [\#703](https://github.com/bensheldon/good_job/issues/703)
1676
+
1677
+ **Merged pull requests:**
1678
+
1679
+ - Sentry integration Docs [\#711](https://github.com/bensheldon/good_job/pull/711) ([remy727](https://github.com/remy727))
1680
+ - Add an `Execution` `after_perform_unlocked` callback [\#706](https://github.com/bensheldon/good_job/pull/706) ([bensheldon](https://github.com/bensheldon))
1681
+
1682
+ ## [v3.4.4](https://github.com/bensheldon/good_job/tree/v3.4.4) (2022-08-20)
1683
+
1684
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.4.3...v3.4.4)
1685
+
1686
+ **Fixed bugs:**
1687
+
1688
+ - Keep locale param when submitting dashboard filter [\#707](https://github.com/bensheldon/good_job/pull/707) ([aki77](https://github.com/aki77))
1689
+
1690
+ **Merged pull requests:**
1691
+
1692
+ - Fix document [\#704](https://github.com/bensheldon/good_job/pull/704) ([aki77](https://github.com/aki77))
1693
+ - Describe pessimistic usecases [\#702](https://github.com/bensheldon/good_job/pull/702) ([shouichi](https://github.com/shouichi))
1694
+
1695
+ ## [v3.4.3](https://github.com/bensheldon/good_job/tree/v3.4.3) (2022-08-15)
1696
+
1697
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.4.2...v3.4.3)
1698
+
1699
+ **Closed issues:**
1700
+
1701
+ - How to run multiple workers? [\#699](https://github.com/bensheldon/good_job/issues/699)
1702
+ - Getting Postgres Errors on killing development server after setting up Goodjob [\#692](https://github.com/bensheldon/good_job/issues/692)
1703
+
1704
+ **Merged pull requests:**
1705
+
1706
+ - Fix Project v2 GitHub Actions [\#701](https://github.com/bensheldon/good_job/pull/701) ([bensheldon](https://github.com/bensheldon))
1707
+ - Remove development dependencies: memory\_profiler, rbtrace, sigdump [\#700](https://github.com/bensheldon/good_job/pull/700) ([bensheldon](https://github.com/bensheldon))
1708
+ - Allow concurrency limits to be configured dynamically with lambda/proc [\#696](https://github.com/bensheldon/good_job/pull/696) ([baka-san](https://github.com/baka-san))
1709
+ - Add additional details to Concurrency Control explanation [\#695](https://github.com/bensheldon/good_job/pull/695) ([bensheldon](https://github.com/bensheldon))
1710
+
1711
+ ## [v3.4.2](https://github.com/bensheldon/good_job/tree/v3.4.2) (2022-08-13)
1712
+
1713
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.4.1...v3.4.2)
1714
+
1715
+ **Fixed bugs:**
1716
+
1717
+ - Jobs enqueued via dashboard ignores app default\_locale [\#697](https://github.com/bensheldon/good_job/issues/697)
1718
+ - Enqueues Cron jobs with I18n default locale [\#698](https://github.com/bensheldon/good_job/pull/698) ([esasse](https://github.com/esasse))
1719
+ - Include better exception log messages, including class and backtrace [\#693](https://github.com/bensheldon/good_job/pull/693) ([bensheldon](https://github.com/bensheldon))
1720
+
1721
+ **Closed issues:**
1722
+
1723
+ - Do we need to implement concurrency with scheduled cron jobs? [\#690](https://github.com/bensheldon/good_job/issues/690)
1724
+ - Uninitialized constant GoodJob::JobsController [\#674](https://github.com/bensheldon/good_job/issues/674)
1725
+ - ActiveRecord::StatementInvalid: PG::ConnectionBad: PQsocket\(\) can't get socket descriptor every 30 minutes aprox. [\#579](https://github.com/bensheldon/good_job/issues/579)
1726
+ - Handle assets in dashboard when rails app is behind proxy path [\#424](https://github.com/bensheldon/good_job/issues/424)
1727
+
1728
+ ## [v3.4.1](https://github.com/bensheldon/good_job/tree/v3.4.1) (2022-08-06)
1729
+
1730
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.4.0...v3.4.1)
1731
+
1732
+ **Closed issues:**
1733
+
1734
+ - Add `cron_enabled` to Process state [\#673](https://github.com/bensheldon/good_job/issues/673)
1735
+ - Good job is using a lot of memory / ram [\#613](https://github.com/bensheldon/good_job/issues/613)
1736
+
1737
+ **Merged pull requests:**
1738
+
1739
+ - Only report Notifier connection errors once after they happen 3 consecutive times [\#689](https://github.com/bensheldon/good_job/pull/689) ([bensheldon](https://github.com/bensheldon))
1740
+
1741
+ ## [v3.4.0](https://github.com/bensheldon/good_job/tree/v3.4.0) (2022-08-05)
1742
+
1743
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.3.3...v3.4.0)
1744
+
1745
+ **Implemented enhancements:**
1746
+
1747
+ - Add cron\_enabled attribute to good\_job and pass it to process current state [\#675](https://github.com/bensheldon/good_job/pull/675) ([saksham-jain](https://github.com/saksham-jain))
1748
+ - Reverse Dashboard Filter Hierarchy to be: queues+jobs then state [\#666](https://github.com/bensheldon/good_job/pull/666) ([bensheldon](https://github.com/bensheldon))
1749
+ - Allow cron entries to be temporarily disabled and re-enabled through the Dashboard [\#649](https://github.com/bensheldon/good_job/pull/649) ([sasha-id](https://github.com/sasha-id))
1750
+ - Add Configuration.total\_estimated\_threads to report number of threads consumed by GoodJob [\#645](https://github.com/bensheldon/good_job/pull/645) ([bensheldon](https://github.com/bensheldon))
1751
+
1752
+ **Closed issues:**
1753
+
1754
+ - Cron Schedule jobs add disable action [\#540](https://github.com/bensheldon/good_job/issues/540)
1755
+
1756
+ **Merged pull requests:**
1757
+
1758
+ - Removed text that implied an existing feature had not been finished [\#688](https://github.com/bensheldon/good_job/pull/688) ([pgvsalamander](https://github.com/pgvsalamander))
1759
+
1760
+ ## [v3.3.3](https://github.com/bensheldon/good_job/tree/v3.3.3) (2022-08-02)
1761
+
1762
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.3.2...v3.3.3)
1763
+
1764
+ **Fixed bugs:**
1765
+
1766
+ - Detect usage of `puma` CLI for async mode [\#686](https://github.com/bensheldon/good_job/pull/686) ([bensheldon](https://github.com/bensheldon))
1767
+
1768
+ **Closed issues:**
1769
+
1770
+ - Async not working Rails 7 with puma CLI [\#685](https://github.com/bensheldon/good_job/issues/685)
1771
+
1772
+ ## [v3.3.2](https://github.com/bensheldon/good_job/tree/v3.3.2) (2022-07-27)
1773
+
1774
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.3.1...v3.3.2)
1775
+
1776
+ **Fixed bugs:**
1777
+
1778
+ - Defer setting Adapter's execution mode until Rails initializes [\#683](https://github.com/bensheldon/good_job/pull/683) ([bensheldon](https://github.com/bensheldon))
1779
+
1780
+ ## [v3.3.1](https://github.com/bensheldon/good_job/tree/v3.3.1) (2022-07-26)
1781
+
1782
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.3.0...v3.3.1)
1783
+
1784
+ **Implemented enhancements:**
1785
+
1786
+ - Show basename of proctitle [\#679](https://github.com/bensheldon/good_job/pull/679) ([bkeepers](https://github.com/bkeepers))
1787
+
1788
+ **Fixed bugs:**
1789
+
1790
+ - Only count \_active\_ processes in the Navbar [\#680](https://github.com/bensheldon/good_job/pull/680) ([bensheldon](https://github.com/bensheldon))
1791
+ - Remove Zeitwerk and use explicit requires to be more like an engine [\#677](https://github.com/bensheldon/good_job/pull/677) ([bensheldon](https://github.com/bensheldon))
1792
+
1793
+ **Closed issues:**
1794
+
1795
+ - Dashboard UI Invalid count of running process [\#678](https://github.com/bensheldon/good_job/issues/678)
1796
+
1797
+ **Merged pull requests:**
1798
+
1799
+ - Lock to dotenv 2.7.x for Ruby 2.5 compatibility [\#682](https://github.com/bensheldon/good_job/pull/682) ([bensheldon](https://github.com/bensheldon))
1800
+ - Create global GoodJob.configuration object [\#681](https://github.com/bensheldon/good_job/pull/681) ([bensheldon](https://github.com/bensheldon))
1801
+
1802
+ ## [v3.3.0](https://github.com/bensheldon/good_job/tree/v3.3.0) (2022-07-24)
1803
+
1804
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.2.0...v3.3.0)
1805
+
1806
+ **Implemented enhancements:**
1807
+
1808
+ - Dashboard: Update cron and processes to match jobs listing [\#676](https://github.com/bensheldon/good_job/pull/676) ([bkeepers](https://github.com/bkeepers))
1809
+ - Dashboard: improvements to jobs index and show pages [\#672](https://github.com/bensheldon/good_job/pull/672) ([bkeepers](https://github.com/bkeepers))
1810
+
1811
+ **Fixed bugs:**
1812
+
1813
+ - Replace "timestamp" column-type in migrations with "datetime" [\#671](https://github.com/bensheldon/good_job/pull/671) ([bensheldon](https://github.com/bensheldon))
1814
+
1815
+ **Closed issues:**
1816
+
1817
+ - Readme should consistently encourage usage of `config.good_job....` instead of `GoodJob.` configuration [\#628](https://github.com/bensheldon/good_job/issues/628)
1818
+ - Improve the "Gem development" section of README? [\#551](https://github.com/bensheldon/good_job/issues/551)
1819
+ - Simplify Rails initialization to only be a mountable Engine [\#543](https://github.com/bensheldon/good_job/issues/543)
1820
+
1821
+ **Merged pull requests:**
1822
+
1823
+ - Improve Readme description of v3 job preservation defaults [\#670](https://github.com/bensheldon/good_job/pull/670) ([bensheldon](https://github.com/bensheldon))
1824
+ - update Gemfile.lock to latest dependencies [\#647](https://github.com/bensheldon/good_job/pull/647) ([jrochkind](https://github.com/jrochkind))
1825
+
1826
+ ## [v3.2.0](https://github.com/bensheldon/good_job/tree/v3.2.0) (2022-07-12)
1827
+
1828
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.1.0...v3.2.0)
1829
+
1830
+ **Implemented enhancements:**
1831
+
1832
+ - Ordered queue handling by workers [\#665](https://github.com/bensheldon/good_job/pull/665) ([jrochkind](https://github.com/jrochkind))
1833
+
1834
+ ## [v3.1.0](https://github.com/bensheldon/good_job/tree/v3.1.0) (2022-07-11)
1835
+
1836
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.0.2...v3.1.0)
1837
+
1838
+ **Implemented enhancements:**
1839
+
1840
+ - Show job/cron/process counts in the Navbar [\#663](https://github.com/bensheldon/good_job/pull/663) ([bensheldon](https://github.com/bensheldon))
1841
+ - Improve Dashboard display of parameters \(CronEntry kwargs; Process configuration; Job and Execution database values\) [\#662](https://github.com/bensheldon/good_job/pull/662) ([bensheldon](https://github.com/bensheldon))
1842
+ - Dequeing should be first-in first-out [\#651](https://github.com/bensheldon/good_job/pull/651) ([jrochkind](https://github.com/jrochkind))
1843
+
1844
+ **Fixed bugs:**
1845
+
1846
+ - Don't delegate `GoodJob::Job#status` to executions to avoid race condition [\#661](https://github.com/bensheldon/good_job/pull/661) ([bensheldon](https://github.com/bensheldon))
1847
+
1848
+ **Closed issues:**
1849
+
1850
+ - How to suppress repetitive logs in development? [\#658](https://github.com/bensheldon/good_job/issues/658)
1851
+ - 500 Internal Server Error Exception in web interface trying to view running jobs [\#656](https://github.com/bensheldon/good_job/issues/656)
1852
+ - Cron schedule page in dashboard not showing kwargs [\#608](https://github.com/bensheldon/good_job/issues/608)
1853
+ - Paralelism x database connections [\#569](https://github.com/bensheldon/good_job/issues/569)
1854
+
1855
+ ## [v3.0.2](https://github.com/bensheldon/good_job/tree/v3.0.2) (2022-07-10)
1856
+
1857
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.0.1...v3.0.2)
1858
+
1859
+ **Fixed bugs:**
1860
+
1861
+ - Copy forward concurrency key value when retrying a job, rather than regenerating it [\#622](https://github.com/bensheldon/good_job/issues/622)
1862
+ - All concurrency controlled jobs throw exceptions and are rescheduled if they are called using perform\_now [\#591](https://github.com/bensheldon/good_job/issues/591)
1863
+
1864
+ **Closed issues:**
1865
+
1866
+ - Queue config not respecting limits [\#659](https://github.com/bensheldon/good_job/issues/659)
1867
+ - UI engine does not work without explicit require [\#646](https://github.com/bensheldon/good_job/issues/646)
1868
+ - Should `:inline` adapter mode retry jobs? [\#611](https://github.com/bensheldon/good_job/issues/611)
1869
+ - Error Job Not Preserved [\#594](https://github.com/bensheldon/good_job/issues/594)
1870
+ - Release GoodJob 3.0 [\#507](https://github.com/bensheldon/good_job/issues/507)
1871
+ - Improve security of Gem releases [\#422](https://github.com/bensheldon/good_job/issues/422)
1872
+
1873
+ **Merged pull requests:**
1874
+
1875
+ - Preserve initial concurrency key when retrying jobs [\#657](https://github.com/bensheldon/good_job/pull/657) ([bensheldon](https://github.com/bensheldon))
1876
+ - Add Dashboard troubleshooting note to explicitly require the engine [\#654](https://github.com/bensheldon/good_job/pull/654) ([bensheldon](https://github.com/bensheldon))
1877
+ - Removes wrong parentheses [\#653](https://github.com/bensheldon/good_job/pull/653) ([esasse](https://github.com/esasse))
1878
+
1879
+ ## [v3.0.1](https://github.com/bensheldon/good_job/tree/v3.0.1) (2022-07-02)
1880
+
1881
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.0.0...v3.0.1)
1882
+
1883
+ **Fixed bugs:**
1884
+
1885
+ - Fix `GoodJob.cleanup_preserved_jobs` to use `delete_all` instead of `destroy_all` [\#652](https://github.com/bensheldon/good_job/pull/652) ([bensheldon](https://github.com/bensheldon))
1886
+
1887
+ **Closed issues:**
1888
+
1889
+ - ERROR: relation "good\_jobs" does not exist at character 454 [\#308](https://github.com/bensheldon/good_job/issues/308)
1890
+
1891
+ **Merged pull requests:**
1892
+
1893
+ - Create codeql-analysis.yml [\#648](https://github.com/bensheldon/good_job/pull/648) ([bensheldon](https://github.com/bensheldon))
1894
+
1895
+ ## [v3.0.0](https://github.com/bensheldon/good_job/tree/v3.0.0) (2022-06-26)
1896
+
1897
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v2.99.0...v3.0.0)
1898
+
1899
+ **Implemented enhancements:**
1900
+
1901
+ - By default, preserve job records and automatically them clean up [\#545](https://github.com/bensheldon/good_job/pull/545) ([bensheldon](https://github.com/bensheldon))
1902
+
1903
+ **Merged pull requests:**
1904
+
1905
+ - Update tests to reflect default of `GoodJob.preserve_job_records = true`; update appraisal Gemfiles too [\#643](https://github.com/bensheldon/good_job/pull/643) ([bensheldon](https://github.com/bensheldon))
1906
+ - Remove database migration shims and old migrations [\#642](https://github.com/bensheldon/good_job/pull/642) ([bensheldon](https://github.com/bensheldon))
1907
+ - Remove support for EOL Rails 5.2 [\#637](https://github.com/bensheldon/good_job/pull/637) ([bensheldon](https://github.com/bensheldon))
1908
+ - Remove/rename deprecated behavior and constants for GoodJob v3 [\#633](https://github.com/bensheldon/good_job/pull/633) ([bensheldon](https://github.com/bensheldon))
1909
+
1910
+ ## [v2.99.0](https://github.com/bensheldon/good_job/tree/v2.99.0) (2022-06-26)
1911
+
1912
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v2.17.1...v2.99.0)
1913
+
1914
+ **Closed issues:**
1915
+
1916
+ - How to accomplish user controlled recurring jobs? [\#640](https://github.com/bensheldon/good_job/issues/640)
1917
+ - "uninitialized constant GoodJob::Execution" in development env [\#634](https://github.com/bensheldon/good_job/issues/634)
1918
+
1919
+ **Merged pull requests:**
1920
+
1921
+ - Create upgrade instructions for v2.99 -\> v3.0.0 [\#641](https://github.com/bensheldon/good_job/pull/641) ([bensheldon](https://github.com/bensheldon))
1922
+ - Update development dependencies; delete Gemfile.lock in CI to avoid Ruby version dependency mismatches [\#639](https://github.com/bensheldon/good_job/pull/639) ([bensheldon](https://github.com/bensheldon))
1923
+ - Put more model files in `lib/models` and align specs too [\#638](https://github.com/bensheldon/good_job/pull/638) ([bensheldon](https://github.com/bensheldon))
1924
+ - Generate sha256 checksums on gem release too [\#636](https://github.com/bensheldon/good_job/pull/636) ([bensheldon](https://github.com/bensheldon))
1925
+
1926
+ ## [v2.17.1](https://github.com/bensheldon/good_job/tree/v2.17.1) (2022-06-24)
1927
+
1928
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v2.17.0...v2.17.1)
1929
+
1930
+ **Fixed bugs:**
1931
+
1932
+ - Move models out of `app` into `lib/models` [\#635](https://github.com/bensheldon/good_job/pull/635) ([bensheldon](https://github.com/bensheldon))
1933
+
1934
+ **Closed issues:**
1935
+
1936
+ - dashboard "delete all" does not work [\#630](https://github.com/bensheldon/good_job/issues/630)
1937
+ - Concurrency controlled jobs cause infinite loops when perform\_limit is exceeded in test environments [\#609](https://github.com/bensheldon/good_job/issues/609)
1938
+
1939
+ **Merged pull requests:**
1940
+
1941
+ - Better isolate test environment: run server integration tests on port 3009 with custom pidfile; scope advisory lock counts to test database [\#632](https://github.com/bensheldon/good_job/pull/632) ([bensheldon](https://github.com/bensheldon))
1942
+
1943
+ ## [v2.17.0](https://github.com/bensheldon/good_job/tree/v2.17.0) (2022-06-23)
1944
+
1945
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v2.16.1...v2.17.0)
1946
+
1947
+ **Merged pull requests:**
1948
+
1949
+ - Remove nonexistant `engine/lib` from $LOAD\_PATH [\#629](https://github.com/bensheldon/good_job/pull/629) ([bensheldon](https://github.com/bensheldon))
1950
+ - Mention in README that dashboard can't see completed jobs unless they are preserved [\#627](https://github.com/bensheldon/good_job/pull/627) ([jrochkind](https://github.com/jrochkind))
1951
+ - Clarify README on default in development [\#623](https://github.com/bensheldon/good_job/pull/623) ([jrochkind](https://github.com/jrochkind))
1952
+ - Convert GoodJob into a single mountable engine \(instead of a plugin plus optional engine\) [\#554](https://github.com/bensheldon/good_job/pull/554) ([bensheldon](https://github.com/bensheldon))
1953
+
1954
+ ## [v2.16.1](https://github.com/bensheldon/good_job/tree/v2.16.1) (2022-06-18)
1955
+
1956
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v2.16.0...v2.16.1)
1957
+
1958
+ **Fixed bugs:**
1959
+
1960
+ - Fix `:inline` mode with future behavior to run unscheduled jobs immediately [\#620](https://github.com/bensheldon/good_job/pull/620) ([bensheldon](https://github.com/bensheldon))
1961
+
1962
+ **Merged pull requests:**
1963
+
1964
+ - Version check `Zeitwerk::Loader.new(warn_on_extra_files: false)` flag [\#619](https://github.com/bensheldon/good_job/pull/619) ([bensheldon](https://github.com/bensheldon))
1965
+
1966
+ ## [v2.16.0](https://github.com/bensheldon/good_job/tree/v2.16.0) (2022-06-17)
1967
+
1968
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v2.15.2...v2.16.0)
1969
+
1970
+ **Implemented enhancements:**
1971
+
1972
+ - Allow inline executor to respect scheduled jobs; deprecate old behavior. Add `GoodJob.perform_inline` [\#615](https://github.com/bensheldon/good_job/pull/615) ([bensheldon](https://github.com/bensheldon))
1973
+
1974
+ **Closed issues:**
1975
+
1976
+ - Upgrading zeitwerk to 2.6.0 causes a warning related to good\_job [\#616](https://github.com/bensheldon/good_job/issues/616)
1977
+
1978
+ ## [v2.15.2](https://github.com/bensheldon/good_job/tree/v2.15.2) (2022-06-17)
1979
+
1980
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v2.15.1...v2.15.2)
1981
+
1982
+ **Closed issues:**
1983
+
1984
+ - ActiveRecord::StatementInvalid PG::ProgramLimitExceeded: ERROR: index row size 3296 exceeds btree version 4 maximum 2704 for index [\#612](https://github.com/bensheldon/good_job/issues/612)
1985
+
1986
+ **Merged pull requests:**
1987
+
1988
+ - Zeitwerk ignore `lib/active_job` [\#617](https://github.com/bensheldon/good_job/pull/617) ([bensheldon](https://github.com/bensheldon))
1989
+
1990
+ ## [v2.15.1](https://github.com/bensheldon/good_job/tree/v2.15.1) (2022-05-24)
1991
+
1992
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v2.15.0...v2.15.1)
1993
+
1994
+ **Closed issues:**
1995
+
1996
+ - dashboard/engine – i18n: Wrong translation scope [\#605](https://github.com/bensheldon/good_job/issues/605)
1997
+ - Concurrency not properly putting jobs in the queue [\#603](https://github.com/bensheldon/good_job/issues/603)
1998
+ - Some dashboard actions have a routing error [\#602](https://github.com/bensheldon/good_job/issues/602)
1999
+
2000
+ **Merged pull requests:**
2001
+
2002
+ - Fix/i18n status scopes [\#607](https://github.com/bensheldon/good_job/pull/607) ([Jay-Schneider](https://github.com/Jay-Schneider))
2003
+ - Make "Live Polling" ToC entry clickable [\#606](https://github.com/bensheldon/good_job/pull/606) ([aried3r](https://github.com/aried3r))
2004
+ - Update readme explaining Concurrency implementation and how to integrate Dashboard with API-only Rails apps [\#604](https://github.com/bensheldon/good_job/pull/604) ([bensheldon](https://github.com/bensheldon))
2005
+
2006
+ ## [v2.15.0](https://github.com/bensheldon/good_job/tree/v2.15.0) (2022-05-18)
2007
+
2008
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v2.14.4...v2.15.0)
2009
+
2010
+ **Implemented enhancements:**
2011
+
2012
+ - Remove ability to destroy individual Executions from Dashboard; rename "Toggle" to "Inspect" everywhere [\#601](https://github.com/bensheldon/good_job/pull/601) ([bensheldon](https://github.com/bensheldon))
2013
+ - Adds the ability to delete jobs on the dashboard; add `cleanup_discarded_jobs` option to retain discarded jobs during cleanup [\#597](https://github.com/bensheldon/good_job/pull/597) ([TAGraves](https://github.com/TAGraves))
2014
+ - Dashboard: show more details about jobs [\#575](https://github.com/bensheldon/good_job/pull/575) ([bkeepers](https://github.com/bkeepers))
2015
+
2016
+ **Closed issues:**
2017
+
2018
+ - Show status on jobs\#show page [\#547](https://github.com/bensheldon/good_job/issues/547)
2019
+
2020
+ **Merged pull requests:**
2021
+
2022
+ - Disable ActiveRecord Connection Reaper in test [\#600](https://github.com/bensheldon/good_job/pull/600) ([bensheldon](https://github.com/bensheldon))
2023
+ - Update README dashboard screenshot [\#599](https://github.com/bensheldon/good_job/pull/599) ([aried3r](https://github.com/aried3r))
2024
+
2025
+ ## [v2.14.4](https://github.com/bensheldon/good_job/tree/v2.14.4) (2022-05-15)
2026
+
2027
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v2.14.3...v2.14.4)
2028
+
2029
+ **Fixed bugs:**
2030
+
2031
+ - Fix Concurrency extension to not break `perform_now` [\#593](https://github.com/bensheldon/good_job/pull/593) ([bensheldon](https://github.com/bensheldon))
2032
+
2033
+ ## [v2.14.3](https://github.com/bensheldon/good_job/tree/v2.14.3) (2022-05-13)
2034
+
2035
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v2.14.2...v2.14.3)
2036
+
2037
+ **Fixed bugs:**
2038
+
2039
+ - Bind probe server to all interfaces [\#598](https://github.com/bensheldon/good_job/pull/598) ([Timmitry](https://github.com/Timmitry))
2040
+
2041
+ **Closed issues:**
2042
+
2043
+ - NoMethodError: undefined method `current\_tags' for nil:NilClass [\#596](https://github.com/bensheldon/good_job/issues/596)
2044
+ - When running rspec, I get: current transaction is aborted, commands ignored until end of transaction block [\#595](https://github.com/bensheldon/good_job/issues/595)
2045
+ - CLI healtheck only listening on localhost, not reachable for Kubernetes [\#592](https://github.com/bensheldon/good_job/issues/592)
2046
+
2047
+ **Merged pull requests:**
2048
+
2049
+ - Improve development instructions and tooling \(rename bin/rails, add bin/appraisal\) [\#590](https://github.com/bensheldon/good_job/pull/590) ([bensheldon](https://github.com/bensheldon))
2050
+ - Replace test Instrumentation mocking with temporary subscriptions [\#589](https://github.com/bensheldon/good_job/pull/589) ([bensheldon](https://github.com/bensheldon))
2051
+ - Update to development to Ruby 3.0.4, include `matrix` gem in development Gemfile [\#588](https://github.com/bensheldon/good_job/pull/588) ([bensheldon](https://github.com/bensheldon))
2052
+
2053
+ ## [v2.14.2](https://github.com/bensheldon/good_job/tree/v2.14.2) (2022-05-01)
2054
+
2055
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v2.14.1...v2.14.2)
2056
+
2057
+ **Fixed bugs:**
2058
+
2059
+ - Reintroduce fixed "Apply to all" mass action [\#586](https://github.com/bensheldon/good_job/pull/586) ([bensheldon](https://github.com/bensheldon))
2060
+
2061
+ **Closed issues:**
2062
+
2063
+ - how to get the number of tasks in the queue and the size of the queue? [\#564](https://github.com/bensheldon/good_job/issues/564)
2064
+ - GoodJob tells me to upgrade but migrations fail [\#544](https://github.com/bensheldon/good_job/issues/544)
2065
+
2066
+ **Merged pull requests:**
2067
+
2068
+ - Update development dependencies [\#584](https://github.com/bensheldon/good_job/pull/584) ([bensheldon](https://github.com/bensheldon))
2069
+ - Refactor Dashboard Live Poll javascript [\#582](https://github.com/bensheldon/good_job/pull/582) ([bensheldon](https://github.com/bensheldon))
2070
+
2071
+ ## [v2.14.1](https://github.com/bensheldon/good_job/tree/v2.14.1) (2022-04-26)
2072
+
2073
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v2.14.0...v2.14.1)
2074
+
2075
+ **Fixed bugs:**
2076
+
2077
+ - Temporarily disable Mass Action "Apply to all" because the action is badly scoped [\#583](https://github.com/bensheldon/good_job/pull/583) ([bensheldon](https://github.com/bensheldon))
2078
+
2079
+ ## [v2.14.0](https://github.com/bensheldon/good_job/tree/v2.14.0) (2022-04-26)
2080
+
2081
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v2.13.2...v2.14.0)
2082
+
2083
+ **Implemented enhancements:**
2084
+
2085
+ - Add mass update operations for jobs to Dashboard [\#578](https://github.com/bensheldon/good_job/pull/578) ([bensheldon](https://github.com/bensheldon))
2086
+
2087
+ **Closed issues:**
2088
+
2089
+ - Allow "mass"-actions through Dashboard \(e.g. retry all\) [\#446](https://github.com/bensheldon/good_job/issues/446)
2090
+
2091
+ **Merged pull requests:**
2092
+
2093
+ - Track down incompatibility/race condition between JRuby and RSpec mocks in tests [\#581](https://github.com/bensheldon/good_job/pull/581) ([bensheldon](https://github.com/bensheldon))
2094
+
2095
+ ## [v2.13.2](https://github.com/bensheldon/good_job/tree/v2.13.2) (2022-04-25)
2096
+
2097
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v2.13.1...v2.13.2)
2098
+
2099
+ **Fixed bugs:**
2100
+
2101
+ - Namespaces assets per Rails docs [\#580](https://github.com/bensheldon/good_job/pull/580) ([kylekthompson](https://github.com/kylekthompson))
2102
+
2103
+ ## [v2.13.1](https://github.com/bensheldon/good_job/tree/v2.13.1) (2022-04-22)
2104
+
2105
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v2.13.0...v2.13.1)
2106
+
2107
+ **Implemented enhancements:**
2108
+
2109
+ - Dashboard: Use toasts to show notices and alerts [\#577](https://github.com/bensheldon/good_job/pull/577) ([bkeepers](https://github.com/bkeepers))
2110
+ - Remove executions from the dashboard [\#576](https://github.com/bensheldon/good_job/pull/576) ([bkeepers](https://github.com/bkeepers))
2111
+
2112
+ **Fixed bugs:**
2113
+
2114
+ - `ActionMailer::MailDeliveryJob` executing twice [\#329](https://github.com/bensheldon/good_job/issues/329)
2115
+
2116
+ **Closed issues:**
2117
+
2118
+ - Possible encryption feature? [\#561](https://github.com/bensheldon/good_job/issues/561)
2119
+ - Inconsistencies in configuration settings [\#380](https://github.com/bensheldon/good_job/issues/380)
2120
+ - Lockable should accept an explicit keys on class methods too [\#341](https://github.com/bensheldon/good_job/issues/341)
2121
+ - Run Scheduler\#cache\_warm on global thread pool instead of Scheduler's thread pool [\#286](https://github.com/bensheldon/good_job/issues/286)
2122
+
2123
+ **Merged pull requests:**
2124
+
2125
+ - Use javascript importmaps for Dashboard [\#574](https://github.com/bensheldon/good_job/pull/574) ([bensheldon](https://github.com/bensheldon))
2126
+
2127
+ ## [v2.13.0](https://github.com/bensheldon/good_job/tree/v2.13.0) (2022-04-19)
2128
+
2129
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v2.12.2...v2.13.0)
2130
+
2131
+ **Implemented enhancements:**
2132
+
2133
+ - Dashboard UI updates: sticky navbar, statuses as tabs [\#572](https://github.com/bensheldon/good_job/pull/572) ([bkeepers](https://github.com/bkeepers))
2134
+
2135
+ **Closed issues:**
2136
+
2137
+ - Internationalize/I18n the Dashboard Engine [\#408](https://github.com/bensheldon/good_job/issues/408)
2138
+
2139
+ **Merged pull requests:**
2140
+
2141
+ - Fix Russian translation linting [\#573](https://github.com/bensheldon/good_job/pull/573) ([bensheldon](https://github.com/bensheldon))
2142
+
2143
+ ## [v2.12.2](https://github.com/bensheldon/good_job/tree/v2.12.2) (2022-04-18)
2144
+
2145
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v2.12.1...v2.12.2)
2146
+
2147
+ **Fixed bugs:**
2148
+
2149
+ - Un-deprecate Adapter's `execution_mode` argument [\#567](https://github.com/bensheldon/good_job/pull/567) ([bensheldon](https://github.com/bensheldon))
2150
+
2151
+ **Merged pull requests:**
2152
+
2153
+ - Dashboard: added NL translations [\#568](https://github.com/bensheldon/good_job/pull/568) ([eelcoj](https://github.com/eelcoj))
2154
+
2155
+ ## [v2.12.1](https://github.com/bensheldon/good_job/tree/v2.12.1) (2022-04-18)
2156
+
2157
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v2.12.0...v2.12.1)
2158
+
2159
+ **Implemented enhancements:**
2160
+
2161
+ - Dashboard: adding Russian translation [\#565](https://github.com/bensheldon/good_job/pull/565) ([skatkov](https://github.com/skatkov))
2162
+
2163
+ **Fixed bugs:**
2164
+
2165
+ - I18n::InvalidLocale \(:en is not a valid locale\): [\#549](https://github.com/bensheldon/good_job/issues/549)
2166
+ - FIX: make 'default\_url\_options' method private [\#562](https://github.com/bensheldon/good_job/pull/562) ([friendlyantz](https://github.com/friendlyantz))
2167
+
2168
+ **Closed issues:**
2169
+
2170
+ - Exponential backoff by default? [\#563](https://github.com/bensheldon/good_job/issues/563)
2171
+ - Finished without Error [\#552](https://github.com/bensheldon/good_job/issues/552)
2172
+ - Track processes in the database [\#421](https://github.com/bensheldon/good_job/issues/421)
2173
+
2174
+ **Merged pull requests:**
2175
+
2176
+ - Remove WIP comments from dashboard [\#566](https://github.com/bensheldon/good_job/pull/566) ([bkeepers](https://github.com/bkeepers))
2177
+ - Add i18n-tasks to linter, add binstub and move config to project root [\#559](https://github.com/bensheldon/good_job/pull/559) ([bensheldon](https://github.com/bensheldon))
2178
+
2179
+ ## [v2.12.0](https://github.com/bensheldon/good_job/tree/v2.12.0) (2022-04-05)
2180
+
2181
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v2.11.3...v2.12.0)
2182
+
2183
+ **Closed issues:**
2184
+
2185
+ - TimeTask timeouts are now ignored as these were not able to be implemented correctly [\#555](https://github.com/bensheldon/good_job/issues/555)
2186
+ - undefined method `relative\_time' when include\_all\_helpers is false [\#550](https://github.com/bensheldon/good_job/issues/550)
2187
+ - ArgumentError: wrong number of arguments \(given 1, expected 0; required keyword: schedule\) - cron [\#546](https://github.com/bensheldon/good_job/issues/546)
2188
+
2189
+ **Merged pull requests:**
2190
+
2191
+ - Deprecate Adapter configuration of job execution/cron [\#558](https://github.com/bensheldon/good_job/pull/558) ([bensheldon](https://github.com/bensheldon))
2192
+ - Remove usage of Concurrent::TimerTask's timeout\_interval [\#557](https://github.com/bensheldon/good_job/pull/557) ([bensheldon](https://github.com/bensheldon))
2193
+ - Include locale in html lang attribute [\#556](https://github.com/bensheldon/good_job/pull/556) ([bensheldon](https://github.com/bensheldon))
2194
+ - Rename `GoodJob::BaseController` to `GoodJob::ApplicationController` [\#553](https://github.com/bensheldon/good_job/pull/553) ([shouichi](https://github.com/shouichi))
2195
+ - Internationalize/I18n the Dashboard Engine [\#497](https://github.com/bensheldon/good_job/pull/497) ([JuanVqz](https://github.com/JuanVqz))
2196
+
2197
+ ## [v2.11.3](https://github.com/bensheldon/good_job/tree/v2.11.3) (2022-03-30)
2198
+
2199
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v2.11.2...v2.11.3)
2200
+
2201
+ **Fixed bugs:**
2202
+
2203
+ - Add explicit `kwargs:` key to cron configuration [\#548](https://github.com/bensheldon/good_job/pull/548) ([bensheldon](https://github.com/bensheldon))
2204
+
2205
+ **Closed issues:**
2206
+
2207
+ - How to run clean up preserved jobs in cron? [\#541](https://github.com/bensheldon/good_job/issues/541)
2208
+ - Erroring with "Too many open files" when good\_job tries reconnecting to database [\#530](https://github.com/bensheldon/good_job/issues/530)
2209
+ - Can't cast Array [\#529](https://github.com/bensheldon/good_job/issues/529)
2210
+
2211
+ **Merged pull requests:**
2212
+
2213
+ - Use bundle add instead [\#542](https://github.com/bensheldon/good_job/pull/542) ([glaucocustodio](https://github.com/glaucocustodio))
2214
+ - Update Readme to better explain queues, pools, threads, and database connections; update CLI to frontload queue option [\#539](https://github.com/bensheldon/good_job/pull/539) ([bensheldon](https://github.com/bensheldon))
2215
+
2216
+ ## [v2.11.2](https://github.com/bensheldon/good_job/tree/v2.11.2) (2022-03-03)
2217
+
2218
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v2.11.1...v2.11.2)
2219
+
2220
+ **Closed issues:**
2221
+
2222
+ - Best practices in deploying and monitoring a queue [\#523](https://github.com/bensheldon/good_job/issues/523)
2223
+
2224
+ **Merged pull requests:**
2225
+
2226
+ - Wrap Rspec before and example blocks with a mutex for JRuby [\#537](https://github.com/bensheldon/good_job/pull/537) ([bensheldon](https://github.com/bensheldon))
2227
+ - Delegate `ActiveJobJob.table_name` to `Execution` and prevent it from being directly assignable [\#536](https://github.com/bensheldon/good_job/pull/536) ([bensheldon](https://github.com/bensheldon))
2228
+ - Enable DB table names customization [\#535](https://github.com/bensheldon/good_job/pull/535) ([dimvic](https://github.com/dimvic))
2229
+ - Added a chapter on how to prepare for production. [\#525](https://github.com/bensheldon/good_job/pull/525) ([stas](https://github.com/stas))
2230
+
2231
+ ## [v2.11.1](https://github.com/bensheldon/good_job/tree/v2.11.1) (2022-03-01)
2232
+
2233
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v2.11.0...v2.11.1)
2234
+
2235
+ **Fixed bugs:**
2236
+
2237
+ - Ensure sticky footer doesn't overlap paginater; fix polling interval to 30 seconds, not ms [\#534](https://github.com/bensheldon/good_job/pull/534) ([bensheldon](https://github.com/bensheldon))
2238
+
2239
+ **Closed issues:**
2240
+
2241
+ - Pagination buttons hidden behind footer [\#533](https://github.com/bensheldon/good_job/issues/533)
2242
+
2243
+ ## [v2.11.0](https://github.com/bensheldon/good_job/tree/v2.11.0) (2022-02-27)
2244
+
2245
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v2.10.0...v2.11.0)
2246
+
2247
+ **Implemented enhancements:**
2248
+
2249
+ - Add support for live polling the dashboard [\#528](https://github.com/bensheldon/good_job/pull/528) ([danielwestendorf](https://github.com/danielwestendorf))
2250
+
2251
+ **Closed issues:**
2252
+
2253
+ - How do I ensure that a the same job can't run twice? \(unique job / avoid duplicates\) [\#531](https://github.com/bensheldon/good_job/issues/531)
2254
+ - Bulk reschedule and discard jobs via dashboard [\#527](https://github.com/bensheldon/good_job/issues/527)
2255
+ - "Live Poll" dashboard [\#526](https://github.com/bensheldon/good_job/issues/526)
2256
+
2257
+ ## [v2.10.0](https://github.com/bensheldon/good_job/tree/v2.10.0) (2022-02-18)
2258
+
2259
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v2.9.6...v2.10.0)
2260
+
2261
+ **Implemented enhancements:**
2262
+
2263
+ - Dashboard: update search filters and some small UI updates [\#518](https://github.com/bensheldon/good_job/pull/518) ([multiplegeorges](https://github.com/multiplegeorges))
2264
+
2265
+ **Closed issues:**
2266
+
2267
+ - Cron jobs not getting run [\#519](https://github.com/bensheldon/good_job/issues/519)
2268
+ - Slow queries with many finished entries and concurrency control [\#514](https://github.com/bensheldon/good_job/issues/514)
2269
+ - Make default retry behaviour safer [\#505](https://github.com/bensheldon/good_job/issues/505)
2270
+
2271
+ **Merged pull requests:**
2272
+
2273
+ - Fix Benchmark job throughput script [\#522](https://github.com/bensheldon/good_job/pull/522) ([douglara](https://github.com/douglara))
2274
+ - Update development Gemfile.lock [\#521](https://github.com/bensheldon/good_job/pull/521) ([bensheldon](https://github.com/bensheldon))
2275
+ - Ensure Rails 6.0 is tested against Ruby 3.0; use Ruby 3.0 in demo environment [\#520](https://github.com/bensheldon/good_job/pull/520) ([bensheldon](https://github.com/bensheldon))
2276
+ - Document safer setting for retry\_on\_unhandled\_error [\#517](https://github.com/bensheldon/good_job/pull/517) ([tamaloa](https://github.com/tamaloa))
2277
+
2278
+ ## [v2.9.6](https://github.com/bensheldon/good_job/tree/v2.9.6) (2022-02-07)
2279
+
2280
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v2.9.5...v2.9.6)
2281
+
2282
+ **Merged pull requests:**
2283
+
2284
+ - Limit query for allowed concurrent jobs to unfinished [\#515](https://github.com/bensheldon/good_job/pull/515) ([til](https://github.com/til))
2285
+
2286
+ ## [v2.9.5](https://github.com/bensheldon/good_job/tree/v2.9.5) (2022-02-07)
2287
+
2288
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v2.9.4...v2.9.5)
2289
+
2290
+ **Fixed bugs:**
2291
+
2292
+ - Transactions in "aborting" threads do not commit; causes GoodJob::Process record not destroyed on exit [\#489](https://github.com/bensheldon/good_job/issues/489)
2293
+ - Deserialize ActiveJob arguments when manually retrying a job [\#513](https://github.com/bensheldon/good_job/pull/513) ([bensheldon](https://github.com/bensheldon))
2294
+
2295
+ **Closed issues:**
2296
+
2297
+ - Concurrency key proc is missing `arguments` when retrying a discarded job. [\#512](https://github.com/bensheldon/good_job/issues/512)
2298
+ - Cron Schedule not visible in dashboard [\#496](https://github.com/bensheldon/good_job/issues/496)
2299
+
2300
+ **Merged pull requests:**
2301
+
2302
+ - Rename methods to `advisory_lock_key` and allow it to take a block instead of `with_advisory_lock` [\#511](https://github.com/bensheldon/good_job/pull/511) ([bensheldon](https://github.com/bensheldon))
2303
+ - README: Limiting concurrency - fetch symbol instead of string [\#510](https://github.com/bensheldon/good_job/pull/510) ([BenSto](https://github.com/BenSto))
2304
+ - Add arbitrary lock on class level too [\#499](https://github.com/bensheldon/good_job/pull/499) ([pandwoter](https://github.com/pandwoter))
2305
+
2306
+ ## [v2.9.4](https://github.com/bensheldon/good_job/tree/v2.9.4) (2022-01-31)
2307
+
2308
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v2.9.3...v2.9.4)
2309
+
2310
+ **Fixed bugs:**
2311
+
2312
+ - Fix navbar toggler [\#506](https://github.com/bensheldon/good_job/pull/506) ([JuanVqz](https://github.com/JuanVqz))
2313
+ - Guard LogSubscriber against tagged logger without a formatter [\#504](https://github.com/bensheldon/good_job/pull/504) ([bensheldon](https://github.com/bensheldon))
2314
+ - Markdown lint fixes + Added missing responsive meta tag [\#492](https://github.com/bensheldon/good_job/pull/492) ([zeevy](https://github.com/zeevy))
2315
+
2316
+ **Closed issues:**
2317
+
2318
+ - The navbar icon doesn't show the navbar menu when clicking it [\#503](https://github.com/bensheldon/good_job/issues/503)
2319
+ - Not all loggers have a formatter [\#502](https://github.com/bensheldon/good_job/issues/502)
2320
+ - Error logs from failed jobs used all storage space [\#495](https://github.com/bensheldon/good_job/issues/495)
2321
+
2322
+ **Merged pull requests:**
2323
+
2324
+ - Update Code of Conduct to Contributor Covenant 2.1 [\#501](https://github.com/bensheldon/good_job/pull/501) ([bensheldon](https://github.com/bensheldon))
2325
+ - Test with Ruby 3.1 [\#498](https://github.com/bensheldon/good_job/pull/498) ([aried3r](https://github.com/aried3r))
2326
+
2327
+ ## [v2.9.3](https://github.com/bensheldon/good_job/tree/v2.9.3) (2022-01-23)
2328
+
2329
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v2.9.2...v2.9.3)
2330
+
2331
+ **Fixed bugs:**
2332
+
2333
+ - Use `*_url` route helpers for Dashboard assets to avoid being overridden by `config.asset_host` [\#493](https://github.com/bensheldon/good_job/pull/493) ([bensheldon](https://github.com/bensheldon))
2334
+
2335
+ **Closed issues:**
2336
+
2337
+ - Assets not loaded when Rails is configured with a different hostname for assets [\#491](https://github.com/bensheldon/good_job/issues/491)
2338
+
2339
+ ## [v2.9.2](https://github.com/bensheldon/good_job/tree/v2.9.2) (2022-01-19)
2340
+
2341
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v2.9.1...v2.9.2)
2342
+
2343
+ **Fixed bugs:**
2344
+
2345
+ - Error on GJ admin UI search form [\#487](https://github.com/bensheldon/good_job/issues/487)
2346
+ - Use `websearch_to_tsquery` or \(`plainto_tsquery` for Postgres \< v11\) for Dashboard search filter [\#488](https://github.com/bensheldon/good_job/pull/488) ([bensheldon](https://github.com/bensheldon))
2347
+
2348
+ **Merged pull requests:**
2349
+
2350
+ - Update README to illustrate using named arguments for the unique key. [\#486](https://github.com/bensheldon/good_job/pull/486) ([phallstrom](https://github.com/phallstrom))
2351
+ - Add details about exactly where to require the engine. [\#485](https://github.com/bensheldon/good_job/pull/485) ([phallstrom](https://github.com/phallstrom))
2352
+ - $ symbol gets copied when clicking on the copy button [\#484](https://github.com/bensheldon/good_job/pull/484) ([zeevy](https://github.com/zeevy))
2353
+
2354
+ ## [v2.9.1](https://github.com/bensheldon/good_job/tree/v2.9.1) (2022-01-13)
2355
+
2356
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v2.9.0...v2.9.1)
2357
+
2358
+ **Fixed bugs:**
2359
+
2360
+ - Start async adapters once `ActiveRecord` and `ActiveJob` have loaded, potentially before `Rails.application.initialized?` [\#483](https://github.com/bensheldon/good_job/pull/483) ([bensheldon](https://github.com/bensheldon))
2361
+
2362
+ **Closed issues:**
2363
+
2364
+ - Graceful fallback to polling when LISTEN/NOTIFY isn't available [\#482](https://github.com/bensheldon/good_job/issues/482)
2365
+ - Long running locks on latest good job [\#480](https://github.com/bensheldon/good_job/issues/480)
2366
+
2367
+ ## [v2.9.0](https://github.com/bensheldon/good_job/tree/v2.9.0) (2022-01-09)
2368
+
2369
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v2.8.1...v2.9.0)
2370
+
2371
+ **Implemented enhancements:**
2372
+
2373
+ - Add JRuby / JDBC support for LISTEN [\#479](https://github.com/bensheldon/good_job/pull/479) ([bensheldon](https://github.com/bensheldon))
2374
+
2375
+ **Merged pull requests:**
2376
+
2377
+ - Remove demo CleanupJob in favor of using built-in cleanup intervals [\#478](https://github.com/bensheldon/good_job/pull/478) ([bensheldon](https://github.com/bensheldon))
2378
+
2379
+ ## [v2.8.1](https://github.com/bensheldon/good_job/tree/v2.8.1) (2022-01-03)
2380
+
2381
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v2.8.0...v2.8.1)
2382
+
2383
+ **Implemented enhancements:**
2384
+
2385
+ - Add indexes to `good_jobs.finished_at` and have `GoodJob.cleanup_preserved_jobs` delete all executions for a given job [\#477](https://github.com/bensheldon/good_job/pull/477) ([bensheldon](https://github.com/bensheldon))
2386
+
2387
+ **Closed issues:**
2388
+
2389
+ - finished\_at should be indexed and clean up should clean up all of a job's executions [\#476](https://github.com/bensheldon/good_job/issues/476)
2390
+
2391
+ **Merged pull requests:**
2392
+
2393
+ - Update development Ruby \(2.7.5\) and Rails \(6.1.4.4\) versions [\#475](https://github.com/bensheldon/good_job/pull/475) ([bensheldon](https://github.com/bensheldon))
2394
+ - Clean up server integration tests [\#474](https://github.com/bensheldon/good_job/pull/474) ([bensheldon](https://github.com/bensheldon))
2395
+
2396
+ ## [v2.8.0](https://github.com/bensheldon/good_job/tree/v2.8.0) (2021-12-31)
2397
+
2398
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v2.7.4...v2.8.0)
2399
+
2400
+ **Implemented enhancements:**
2401
+
2402
+ - GoodJob should automatically clean up after itself and delete old job records [\#412](https://github.com/bensheldon/good_job/issues/412)
2403
+ - Track processes in the database and on the Dashboard [\#472](https://github.com/bensheldon/good_job/pull/472) ([bensheldon](https://github.com/bensheldon))
2404
+ - Allow Scheduler to automatically clean up preserved jobs every N jobs or seconds [\#465](https://github.com/bensheldon/good_job/pull/465) ([bensheldon](https://github.com/bensheldon))
2405
+
2406
+ **Closed issues:**
2407
+
2408
+ - Is there a way to show how many worker/process is running currently [\#471](https://github.com/bensheldon/good_job/issues/471)
2409
+ - Jobs stuck in the unfinished state [\#448](https://github.com/bensheldon/good_job/issues/448)
2410
+
2411
+ **Merged pull requests:**
2412
+
2413
+ - Doublequote Ruby 3.0 in testing matrix [\#473](https://github.com/bensheldon/good_job/pull/473) ([bensheldon](https://github.com/bensheldon))
2414
+ - Have demo CleanupJob use GoodJob.cleanup\_preserved\_jobs [\#470](https://github.com/bensheldon/good_job/pull/470) ([bensheldon](https://github.com/bensheldon))
2415
+ - Test with Rails 7.0.0 [\#469](https://github.com/bensheldon/good_job/pull/469) ([aried3r](https://github.com/aried3r))
2416
+
2417
+ ## [v2.7.4](https://github.com/bensheldon/good_job/tree/v2.7.4) (2021-12-16)
2418
+
2419
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v2.7.3...v2.7.4)
2420
+
2421
+ **Fixed bugs:**
2422
+
2423
+ - Add nonce: true to javascript\_include\_tag in dashboard [\#468](https://github.com/bensheldon/good_job/pull/468) ([bouk](https://github.com/bouk))
2424
+
2425
+ **Closed issues:**
2426
+
2427
+ - Add nonce: true to engine views [\#467](https://github.com/bensheldon/good_job/issues/467)
2428
+ - Updating good\_job breaks my Rails 7 alpha 2 local development [\#462](https://github.com/bensheldon/good_job/issues/462)
2429
+
2430
+ **Merged pull requests:**
2431
+
2432
+ - Update appraisal for Rails 7.0.0.rc1 [\#466](https://github.com/bensheldon/good_job/pull/466) ([bensheldon](https://github.com/bensheldon))
2433
+
2434
+ ## [v2.7.3](https://github.com/bensheldon/good_job/tree/v2.7.3) (2021-11-30)
2435
+
2436
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v2.7.2...v2.7.3)
2437
+
2438
+ **Fixed bugs:**
2439
+
2440
+ - Logger error on 2.7.2 [\#463](https://github.com/bensheldon/good_job/issues/463)
2441
+ - Fix Railtie configuration assignment when Rails configuration is a Hash, not an OrderedOptions [\#464](https://github.com/bensheldon/good_job/pull/464) ([bensheldon](https://github.com/bensheldon))
2442
+
2443
+ ## [v2.7.2](https://github.com/bensheldon/good_job/tree/v2.7.2) (2021-11-29)
2444
+
2445
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v2.7.1...v2.7.2)
2446
+
2447
+ **Implemented enhancements:**
2448
+
2449
+ - Allow GoodJob global configuration accessors to also be set via Rails config hash [\#460](https://github.com/bensheldon/good_job/pull/460) ([bensheldon](https://github.com/bensheldon))
2450
+
2451
+ **Merged pull requests:**
2452
+
2453
+ - Use `ActiveRecord::Relation::QueryAttribute` when setting up bindings for `exec_query` [\#461](https://github.com/bensheldon/good_job/pull/461) ([bensheldon](https://github.com/bensheldon))
2454
+ - Configure RSpec `config.example_status_persistence_file_path` [\#459](https://github.com/bensheldon/good_job/pull/459) ([bensheldon](https://github.com/bensheldon))
2455
+ - Defer async initialization until Rails fully initialized [\#454](https://github.com/bensheldon/good_job/pull/454) ([bensheldon](https://github.com/bensheldon))
2456
+
2457
+ ## [v2.7.1](https://github.com/bensheldon/good_job/tree/v2.7.1) (2021-11-26)
2458
+
2459
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v2.7.0...v2.7.1)
2460
+
2461
+ **Fixed bugs:**
2462
+
2463
+ - Unclear error when database can't be reached [\#457](https://github.com/bensheldon/good_job/issues/457)
2464
+ - Remove Concurrent::Delay wrapping of database-loading methods [\#458](https://github.com/bensheldon/good_job/pull/458) ([bensheldon](https://github.com/bensheldon))
2465
+ - Do not delete csp policies when checking csp policies [\#456](https://github.com/bensheldon/good_job/pull/456) ([JonathanFrias](https://github.com/JonathanFrias))
2466
+
2467
+ **Closed issues:**
2468
+
2469
+ - How to suppress job scheduler logs? [\#455](https://github.com/bensheldon/good_job/issues/455)
2470
+ - Configuration in environments/\*.rb overrides application.rb [\#453](https://github.com/bensheldon/good_job/issues/453)
2471
+ - Testing jobs synchronously [\#435](https://github.com/bensheldon/good_job/issues/435)
2472
+ - HTTP health check endpoint [\#403](https://github.com/bensheldon/good_job/issues/403)
2473
+
2474
+ ## [v2.7.0](https://github.com/bensheldon/good_job/tree/v2.7.0) (2021-11-10)
2475
+
2476
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v2.6.2...v2.7.0)
2477
+
2478
+ **Implemented enhancements:**
2479
+
2480
+ - Add http probe for CLI healthcheck/readiness/liveliness [\#452](https://github.com/bensheldon/good_job/pull/452) ([bensheldon](https://github.com/bensheldon))
2481
+ - Add explicit Content Security Policy \(CSP\) for Dashboard [\#449](https://github.com/bensheldon/good_job/pull/449) ([bensheldon](https://github.com/bensheldon))
2482
+
2483
+ **Closed issues:**
2484
+
2485
+ - Add a default Content-Security-Policy for the Dashboard [\#420](https://github.com/bensheldon/good_job/issues/420)
2486
+
2487
+ ## [v2.6.2](https://github.com/bensheldon/good_job/tree/v2.6.2) (2021-11-05)
2488
+
2489
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v2.6.1...v2.6.2)
2490
+
2491
+ **Fixed bugs:**
2492
+
2493
+ - 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))
2494
+
2495
+ **Closed issues:**
2496
+
2497
+ - v2.6.1 is incompatible with gem thinking-sphinx [\#450](https://github.com/bensheldon/good_job/issues/450)
2498
+
2499
+ ## [v2.6.1](https://github.com/bensheldon/good_job/tree/v2.6.1) (2021-11-05)
2500
+
2501
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v2.6.0...v2.6.1)
2502
+
2503
+ **Implemented enhancements:**
2504
+
2505
+ - Allow job management \(retry, destroy\) through the Web UI [\#256](https://github.com/bensheldon/good_job/issues/256)
2506
+ - Add fulltext search filter [\#440](https://github.com/bensheldon/good_job/pull/440) ([bensheldon](https://github.com/bensheldon))
2507
+
2508
+ **Fixed bugs:**
2509
+
2510
+ - Unsubscribed LISTEN forever after database connection lost [\#303](https://github.com/bensheldon/good_job/issues/303)
2511
+ - 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))
2512
+
2513
+ **Closed issues:**
2514
+
2515
+ - Question: what's the correct way to handle database connection pool size when using cron [\#443](https://github.com/bensheldon/good_job/issues/443)
2516
+ - Add a search bar to Dashboard [\#432](https://github.com/bensheldon/good_job/issues/432)
2517
+ - Hacktoberfest 2021 [\#393](https://github.com/bensheldon/good_job/issues/393)
2518
+ - Ideas for improvements to Cron [\#392](https://github.com/bensheldon/good_job/issues/392)
2519
+ - Fix flakey test that times out [\#382](https://github.com/bensheldon/good_job/issues/382)
2520
+
2521
+ **Merged pull requests:**
2522
+
2523
+ - Update development dependencies [\#447](https://github.com/bensheldon/good_job/pull/447) ([bensheldon](https://github.com/bensheldon))
2524
+ - Replace Chartist.js with Chart.js [\#444](https://github.com/bensheldon/good_job/pull/444) ([bensheldon](https://github.com/bensheldon))
2525
+ - 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))
2526
+
2527
+ ## [v2.6.0](https://github.com/bensheldon/good_job/tree/v2.6.0) (2021-10-30)
2528
+
2529
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v2.5.0...v2.6.0)
2530
+
2531
+ **Implemented enhancements:**
2532
+
2533
+ - 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))
2534
+ - Add Rails UJS javascript to Dashboard along with confirmations [\#437](https://github.com/bensheldon/good_job/pull/437) ([bensheldon](https://github.com/bensheldon))
2535
+ - 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))
2536
+
2537
+ **Closed issues:**
2538
+
2539
+ - Ability to express cron schedule using fugit natural language parser [\#439](https://github.com/bensheldon/good_job/issues/439)
2540
+ - Best way to ensure ordering of a queue. [\#402](https://github.com/bensheldon/good_job/issues/402)
2541
+ - ActiveJob concurrency raises FrozenError [\#386](https://github.com/bensheldon/good_job/issues/386)
2542
+
2543
+ ## [v2.5.0](https://github.com/bensheldon/good_job/tree/v2.5.0) (2021-10-25)
2544
+
2545
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v2.4.2...v2.5.0)
2546
+
2547
+ **Implemented enhancements:**
2548
+
2549
+ - Add Reschedule, Discard, Retry Job buttons to Dashboard [\#425](https://github.com/bensheldon/good_job/pull/425) ([bensheldon](https://github.com/bensheldon))
2550
+ - Use unique index on \[cron\_key, cron\_at\] columns to prevent duplicate cron jobs from being enqueued [\#423](https://github.com/bensheldon/good_job/pull/423) ([bensheldon](https://github.com/bensheldon))
2551
+
2552
+ **Fixed bugs:**
2553
+
2554
+ - Dashboard fix preservation of `limit` and `queue_name` filter params; add pager to jobs [\#434](https://github.com/bensheldon/good_job/pull/434) ([bensheldon](https://github.com/bensheldon))
2555
+
2556
+ **Closed issues:**
2557
+
2558
+ - PgLock state inspection is not isolated to current database [\#431](https://github.com/bensheldon/good_job/issues/431)
2559
+ - Race condition with concurency control [\#378](https://github.com/bensheldon/good_job/issues/378)
2560
+
2561
+ **Merged pull requests:**
2562
+
2563
+ - Add Readme note about race conditions in Concurrency's `enqueue\_limit` and `perform\_limit [\#433](https://github.com/bensheldon/good_job/pull/433) ([bensheldon](https://github.com/bensheldon))
2564
+ - Test harness should only force-unlock db connections for the current database [\#430](https://github.com/bensheldon/good_job/pull/430) ([bensheldon](https://github.com/bensheldon))
2565
+
2566
+ ## [v2.4.2](https://github.com/bensheldon/good_job/tree/v2.4.2) (2021-10-19)
2567
+
2568
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v2.4.1...v2.4.2)
2569
+
2570
+ **Implemented enhancements:**
2571
+
2572
+ - Add migration version to install/update generator templates [\#426](https://github.com/bensheldon/good_job/pull/426) ([bensheldon](https://github.com/bensheldon))
2573
+
2574
+ **Fixed bugs:**
2575
+
2576
+ - Explicitly unscope queries within block yielded to Lockable.within\_advisory\_lock [\#429](https://github.com/bensheldon/good_job/pull/429) ([bensheldon](https://github.com/bensheldon))
2577
+ - Fix Demo CleanupJob args [\#427](https://github.com/bensheldon/good_job/pull/427) ([bensheldon](https://github.com/bensheldon))
2578
+
2579
+ **Merged pull requests:**
2580
+
2581
+ - Remove v1.99/v2 transitional extra advisory lock [\#428](https://github.com/bensheldon/good_job/pull/428) ([bensheldon](https://github.com/bensheldon))
2582
+
2583
+ ## [v2.4.1](https://github.com/bensheldon/good_job/tree/v2.4.1) (2021-10-11)
2584
+
2585
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v2.4.0...v2.4.1)
2586
+
2587
+ **Implemented enhancements:**
2588
+
2589
+ - Support Datadog APM / `dd-trace-rb` [\#323](https://github.com/bensheldon/good_job/issues/323)
2590
+ - Display info about used timezone. [\#398](https://github.com/bensheldon/good_job/pull/398) ([morgoth](https://github.com/morgoth))
2591
+ - Display cron schedules args in dashboard [\#396](https://github.com/bensheldon/good_job/pull/396) ([aried3r](https://github.com/aried3r))
2592
+
2593
+ **Fixed bugs:**
2594
+
2595
+ - Inline adapter should raise unhandled exceptions during execution [\#416](https://github.com/bensheldon/good_job/pull/416) ([bensheldon](https://github.com/bensheldon))
2596
+ - Enforce english locale in UI [\#407](https://github.com/bensheldon/good_job/pull/407) ([morgoth](https://github.com/morgoth))
2597
+
2598
+ **Closed issues:**
2599
+
2600
+ - Finished jobs don't show up as finished [\#415](https://github.com/bensheldon/good_job/issues/415)
2601
+ - Inline adapter should raise unhandled exceptions during execution [\#410](https://github.com/bensheldon/good_job/issues/410)
2602
+ - Rewrite Scheduler "worker" thread name to be `thread` [\#406](https://github.com/bensheldon/good_job/issues/406)
2603
+ - "WARNING: you don't own a lock of type ExclusiveLock" in Development [\#388](https://github.com/bensheldon/good_job/issues/388)
2604
+ - Improve Readme's "Optimize queues, threads, processes" section [\#132](https://github.com/bensheldon/good_job/issues/132)
2605
+
2606
+ **Merged pull requests:**
2607
+
2608
+ - Ignore Rails HEAD Appraisal until `rails new` fixed [\#419](https://github.com/bensheldon/good_job/pull/419) ([bensheldon](https://github.com/bensheldon))
2609
+ - Warn in Readme that configuration should not go into `config/initializers/*.rb` [\#418](https://github.com/bensheldon/good_job/pull/418) ([bensheldon](https://github.com/bensheldon))
2610
+ - Replace worker wording [\#409](https://github.com/bensheldon/good_job/pull/409) ([Hugo-Hache](https://github.com/Hugo-Hache))
2611
+ - Improve Readme's "Optimize queues, threads, processes" section [\#405](https://github.com/bensheldon/good_job/pull/405) ([Hugo-Hache](https://github.com/Hugo-Hache))
2612
+ - Update GH Test Matrix with more PG versions [\#401](https://github.com/bensheldon/good_job/pull/401) ([tedt10e](https://github.com/tedt10e))
2613
+ - Extract cron configuration hash into CronEntry ActiveModel objects [\#400](https://github.com/bensheldon/good_job/pull/400) ([bensheldon](https://github.com/bensheldon))
2614
+ - Remove errant copy-paste from app.json [\#397](https://github.com/bensheldon/good_job/pull/397) ([morgoth](https://github.com/morgoth))
2615
+
2616
+ ## [v2.4.0](https://github.com/bensheldon/good_job/tree/v2.4.0) (2021-10-02)
2617
+
2618
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v2.3.1...v2.4.0)
2619
+
2620
+ **Implemented enhancements:**
2621
+
2622
+ - Display schedule time relative to now. [\#394](https://github.com/bensheldon/good_job/pull/394) ([morgoth](https://github.com/morgoth))
2623
+ - Display cron schedules properties in dashboard [\#391](https://github.com/bensheldon/good_job/pull/391) ([aried3r](https://github.com/aried3r))
2624
+
2625
+ **Fixed bugs:**
2626
+
2627
+ - Correct icon for alert flash [\#395](https://github.com/bensheldon/good_job/pull/395) ([morgoth](https://github.com/morgoth))
2628
+
2629
+ ## [v2.3.1](https://github.com/bensheldon/good_job/tree/v2.3.1) (2021-09-30)
2630
+
2631
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v2.3.0...v2.3.1)
2632
+
2633
+ **Fixed bugs:**
2634
+
2635
+ - Wrap Scheduler task execution with Rails `reloader` instead of `executor` to avoid database connection changing during code reload [\#389](https://github.com/bensheldon/good_job/pull/389) ([bensheldon](https://github.com/bensheldon))
2636
+
2637
+ **Merged pull requests:**
2638
+
2639
+ - Log Cleanup thread tests, introduce "Slow" ExampleJob type, refactor ExampleJob types, run cron and log Postgres warnings in GoodJob Development harness [\#390](https://github.com/bensheldon/good_job/pull/390) ([bensheldon](https://github.com/bensheldon))
2640
+
2641
+ ## [v2.3.0](https://github.com/bensheldon/good_job/tree/v2.3.0) (2021-09-25)
2642
+
2643
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v2.2.0...v2.3.0)
2644
+
2645
+ **Implemented enhancements:**
2646
+
2647
+ - Create an ActiveJobJob model and Dashboard [\#383](https://github.com/bensheldon/good_job/pull/383) ([bensheldon](https://github.com/bensheldon))
2648
+ - Preserve page filter when deleting execution [\#381](https://github.com/bensheldon/good_job/pull/381) ([morgoth](https://github.com/morgoth))
2649
+
2650
+ **Merged pull requests:**
2651
+
2652
+ - Update GH Test Matrix with latest JRuby 9.3.0.0 [\#387](https://github.com/bensheldon/good_job/pull/387) ([tedt10e](https://github.com/tedt10e))
2653
+ - Improve test support's ShellOut command's process termination and add test logs [\#385](https://github.com/bensheldon/good_job/pull/385) ([bensheldon](https://github.com/bensheldon))
2654
+ - @bensheldon Add Rails 7 alpha to Appraisal; update development dependencies [\#384](https://github.com/bensheldon/good_job/pull/384) ([bensheldon](https://github.com/bensheldon))
2655
+
2656
+ ## [v2.2.0](https://github.com/bensheldon/good_job/tree/v2.2.0) (2021-09-15)
2657
+
2658
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v2.1.0...v2.2.0)
2659
+
2660
+ **Implemented enhancements:**
2661
+
2662
+ - Add dashboard for cron-style jobs [\#367](https://github.com/bensheldon/good_job/pull/367) ([aried3r](https://github.com/aried3r))
2663
+
2664
+ **Fixed bugs:**
2665
+
2666
+ - Fix Dashboard navigation active class for Scheduled Jobs [\#375](https://github.com/bensheldon/good_job/pull/375) ([bensheldon](https://github.com/bensheldon))
2667
+
2668
+ **Closed issues:**
2669
+
2670
+ - Rename `GoodJob::Job` to be `GoodJob::Execution` [\#376](https://github.com/bensheldon/good_job/issues/376)
2671
+ - More recognition in Rails community [\#370](https://github.com/bensheldon/good_job/issues/370)
2672
+ - Concurrency control for all queued jobs [\#366](https://github.com/bensheldon/good_job/issues/366)
2673
+
2674
+ **Merged pull requests:**
2675
+
2676
+ - Rename `GoodJob::Job` to `GoodJob::Execution` [\#377](https://github.com/bensheldon/good_job/pull/377) ([bensheldon](https://github.com/bensheldon))
2677
+ - Add example execution behavior \(errored, retried, dead\) to demo ExampleJob [\#374](https://github.com/bensheldon/good_job/pull/374) ([bensheldon](https://github.com/bensheldon))
2678
+ - Add Passenger info for running in async mode [\#373](https://github.com/bensheldon/good_job/pull/373) ([aried3r](https://github.com/aried3r))
2679
+ - Update bootstrap to latest 5.1.1 [\#372](https://github.com/bensheldon/good_job/pull/372) ([morgoth](https://github.com/morgoth))
2680
+
2681
+ ## [v2.1.0](https://github.com/bensheldon/good_job/tree/v2.1.0) (2021-09-09)
2682
+
2683
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v2.0.5...v2.1.0)
2684
+
2685
+ **Implemented enhancements:**
2686
+
2687
+ - Add `total_limit:` option to GoodJob::Concurrency to be inclusive of counting both enqueued and performing jobs [\#369](https://github.com/bensheldon/good_job/pull/369) ([bensheldon](https://github.com/bensheldon))
2688
+ - Add button to toggle all job params in Dashboard [\#365](https://github.com/bensheldon/good_job/pull/365) ([bensheldon](https://github.com/bensheldon))
2689
+
2690
+ **Fixed bugs:**
2691
+
2692
+ - Fix unlock key for Lockable\#with\_advisory\_lock [\#368](https://github.com/bensheldon/good_job/pull/368) ([bensheldon](https://github.com/bensheldon))
2693
+
2694
+ **Closed issues:**
2695
+
2696
+ - Cron-like jobs not always executed, possible reasons? [\#359](https://github.com/bensheldon/good_job/issues/359)
2697
+
2698
+ **Merged pull requests:**
2699
+
2700
+ - When shelling out in tests, send SIGKILL if process does not exit [\#371](https://github.com/bensheldon/good_job/pull/371) ([bensheldon](https://github.com/bensheldon))
2701
+ - Have all tests use stubbed TestJob [\#364](https://github.com/bensheldon/good_job/pull/364) ([bensheldon](https://github.com/bensheldon))
2702
+
2703
+ ## [v2.0.5](https://github.com/bensheldon/good_job/tree/v2.0.5) (2021-09-06)
2704
+
2705
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v2.0.4...v2.0.5)
2706
+
2707
+ **Closed issues:**
2708
+
2709
+ - Serialized Params and ActiveJob extensions [\#362](https://github.com/bensheldon/good_job/issues/362)
2710
+
2711
+ **Merged pull requests:**
2712
+
2713
+ - `deep_dup` serialized job data instead of`attr_readonly` to prevent overwriting [\#363](https://github.com/bensheldon/good_job/pull/363) ([bensheldon](https://github.com/bensheldon))
2714
+
2715
+ ## [v2.0.4](https://github.com/bensheldon/good_job/tree/v2.0.4) (2021-08-31)
2716
+
2717
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v2.0.3...v2.0.4)
2718
+
2719
+ **Fixed bugs:**
2720
+
2721
+ - Remove `NOW()` from Dashboard SQL; fix chart x-axis order left-to-right, old-to-new [\#355](https://github.com/bensheldon/good_job/pull/355) ([bensheldon](https://github.com/bensheldon))
2722
+
2723
+ **Closed issues:**
2724
+
2725
+ - Content security policy for dashboard; nest shared view partials; problematic NOW\(\) SQL in Dashboard query [\#304](https://github.com/bensheldon/good_job/issues/304)
2726
+
2727
+ **Merged pull requests:**
2728
+
2729
+ - Update development dependencies and ruby to 2.7.4 [\#358](https://github.com/bensheldon/good_job/pull/358) ([bensheldon](https://github.com/bensheldon))
2730
+ - Add info about how to disable polling to README [\#357](https://github.com/bensheldon/good_job/pull/357) ([aried3r](https://github.com/aried3r))
2731
+
2732
+ ## [v2.0.3](https://github.com/bensheldon/good_job/tree/v2.0.3) (2021-08-31)
2733
+
2734
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v2.0.2...v2.0.3)
2735
+
2736
+ **Implemented enhancements:**
2737
+
2738
+ - Implement `GoodJob.cleanup_preserved_jobs`, fixes \#351 [\#356](https://github.com/bensheldon/good_job/pull/356) ([aried3r](https://github.com/aried3r))
2739
+
2740
+ **Closed issues:**
2741
+
2742
+ - Expose CLI `cleanup_preserved_jobs` functionality via `GoodJob`? [\#351](https://github.com/bensheldon/good_job/issues/351)
2743
+
2744
+ ## [v2.0.2](https://github.com/bensheldon/good_job/tree/v2.0.2) (2021-08-27)
2745
+
2746
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v1.99.1...v2.0.2)
2747
+
2748
+ **Fixed bugs:**
2749
+
2750
+ - v2.0: Generators support multiple databases: `--database` option, `migrations_paths`, custom `GoodJob.active_record_parent_class` [\#354](https://github.com/bensheldon/good_job/pull/354) ([bensheldon](https://github.com/bensheldon))
2751
+
2752
+ **Closed issues:**
2753
+
2754
+ - Migrations generator assumes migrations are in db/migrate [\#352](https://github.com/bensheldon/good_job/issues/352)
2755
+
2756
+ **Merged pull requests:**
2757
+
2758
+ - README style/typo fixes: "web server" and possessive "Rails'" [\#350](https://github.com/bensheldon/good_job/pull/350) ([aried3r](https://github.com/aried3r))
2759
+ - Add examples of setting config.good\_job.queues [\#349](https://github.com/bensheldon/good_job/pull/349) ([zachmargolis](https://github.com/zachmargolis))
2760
+
2761
+ ## [v1.99.1](https://github.com/bensheldon/good_job/tree/v1.99.1) (2021-08-27)
2762
+
2763
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v2.0.1...v1.99.1)
2764
+
2765
+ **Closed issues:**
2766
+
2767
+ - Does Good job support delay method? [\#344](https://github.com/bensheldon/good_job/issues/344)
2768
+
2769
+ ## [v2.0.1](https://github.com/bensheldon/good_job/tree/v2.0.1) (2021-08-24)
2770
+
2771
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v2.0.0...v2.0.1)
2772
+
2773
+ **Implemented enhancements:**
2774
+
2775
+ - Suppress backtrace of ConcurrencyExceededError [\#348](https://github.com/bensheldon/good_job/pull/348) ([reczy](https://github.com/reczy))
2776
+
2777
+ **Closed issues:**
2778
+
2779
+ - Is there any value in seeing a backtrace for ConcurrencyExceededError? [\#347](https://github.com/bensheldon/good_job/issues/347)
2780
+ - Release GoodJob 2.0 [\#307](https://github.com/bensheldon/good_job/issues/307)
2781
+ - Unhandled ActiveJob errors should trigger GoodJob.on\_thread\_error [\#247](https://github.com/bensheldon/good_job/issues/247)
2782
+
2783
+ ## [v2.0.0](https://github.com/bensheldon/good_job/tree/v2.0.0) (2021-08-24)
2784
+
2785
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v1.99.0...v2.0.0)
2786
+
2787
+ **Implemented enhancements:**
2788
+
2789
+ - Concurrency's enqueue\_limit should exclude performing jobs from count [\#317](https://github.com/bensheldon/good_job/issues/317)
2790
+ - Rename `:async` to `:async_all`; `:async_server` to `:async` and set as Development environment default; do not poll in async development [\#343](https://github.com/bensheldon/good_job/pull/343) ([bensheldon](https://github.com/bensheldon))
2791
+ - Exclude executing jobs from Concurrency's enqueue\_limit's count [\#342](https://github.com/bensheldon/good_job/pull/342) ([bensheldon](https://github.com/bensheldon))
2792
+ - Unhandled ActiveJob errors should trigger GoodJob.on\_thread\_error [\#312](https://github.com/bensheldon/good_job/pull/312) ([bensheldon](https://github.com/bensheldon))
2793
+
2794
+ **Closed issues:**
2795
+
2796
+ - Swap behavior of `async` with `async_server`; rename `async` execution mode to be `async_all`; default `async` in Development; [\#340](https://github.com/bensheldon/good_job/issues/340)
2797
+ - Add hyphen to lock key. e.g. "\[table\_name\]-\[column\]" instead of "\[table\_name\]\[column\]" [\#335](https://github.com/bensheldon/good_job/issues/335)
2798
+ - Use `async_server` as default execution mode in Development environment [\#139](https://github.com/bensheldon/good_job/issues/139)
2799
+
2800
+ **Merged pull requests:**
2801
+
2802
+ - Remove v1.0 deprecation notices and incremental migrations [\#338](https://github.com/bensheldon/good_job/pull/338) ([bensheldon](https://github.com/bensheldon))
2803
+ - Lock GoodJob::Job on active\_job\_id instead of the row id; adds separator hyphen to lock key [\#337](https://github.com/bensheldon/good_job/pull/337) ([bensheldon](https://github.com/bensheldon))
2804
+
3
2805
  ## [v1.99.0](https://github.com/bensheldon/good_job/tree/v1.99.0) (2021-08-24)
4
2806
 
5
2807
  [Full Changelog](https://github.com/bensheldon/good_job/compare/v1.13.2...v1.99.0)
@@ -74,7 +2876,6 @@
74
2876
  - PgBouncer and prepared statements [\#269](https://github.com/bensheldon/good_job/issues/269)
75
2877
  - Question about locking internals [\#212](https://github.com/bensheldon/good_job/issues/212)
76
2878
  - Encoding::UndefinedConversionError \("\xE2" from ASCII-8BIT to UTF-8\) [\#198](https://github.com/bensheldon/good_job/issues/198)
77
- - tools for managing a 'fleet' of processes [\#150](https://github.com/bensheldon/good_job/issues/150)
78
2879
 
79
2880
  **Merged pull requests:**
80
2881
 
@@ -100,7 +2901,6 @@
100
2901
 
101
2902
  **Closed issues:**
102
2903
 
103
- - ERROR: relation "good\_jobs" does not exist at character 454 [\#308](https://github.com/bensheldon/good_job/issues/308)
104
2904
  - Add Frozen String Literal to all files [\#298](https://github.com/bensheldon/good_job/issues/298)
105
2905
  - Support for good\_job without Rails? [\#295](https://github.com/bensheldon/good_job/issues/295)
106
2906
 
@@ -108,7 +2908,7 @@
108
2908
 
109
2909
  - Have prettier Dashboard asset urls e.g. `bootstrap.css` instead of `bootstrap_css.css` [\#306](https://github.com/bensheldon/good_job/pull/306) ([bensheldon](https://github.com/bensheldon))
110
2910
  - Create dashboard demo app on Heroku [\#305](https://github.com/bensheldon/good_job/pull/305) ([bensheldon](https://github.com/bensheldon))
111
- - Add Frozen String Literal to all files [\#302](https://github.com/bensheldon/good_job/pull/302) ([tedhexaflow](https://github.com/tedhexaflow))
2911
+ - Add Frozen String Literal to all files [\#302](https://github.com/bensheldon/good_job/pull/302) ([tedt10e](https://github.com/tedt10e))
112
2912
 
113
2913
  ## [v1.11.2](https://github.com/bensheldon/good_job/tree/v1.11.2) (2021-07-20)
114
2914
 
@@ -166,7 +2966,7 @@
166
2966
 
167
2967
  **Merged pull requests:**
168
2968
 
169
- - Update GH Test Matrix with latest JRuby 9.2.19.0 [\#283](https://github.com/bensheldon/good_job/pull/283) ([tedhexaflow](https://github.com/tedhexaflow))
2969
+ - Update GH Test Matrix with latest JRuby 9.2.19.0 [\#283](https://github.com/bensheldon/good_job/pull/283) ([tedt10e](https://github.com/tedt10e))
170
2970
 
171
2971
  ## [v1.10.0](https://github.com/bensheldon/good_job/tree/v1.10.0) (2021-06-29)
172
2972
 
@@ -316,11 +3116,11 @@
316
3116
  - Move executable flags from constants to accessors on GoodJob::CLI [\#234](https://github.com/bensheldon/good_job/pull/234) ([bensheldon](https://github.com/bensheldon))
317
3117
  - Add custom Scheduler::TimerSet [\#232](https://github.com/bensheldon/good_job/pull/232) ([bensheldon](https://github.com/bensheldon))
318
3118
  - Fix assorted constant references in YARD documentation [\#231](https://github.com/bensheldon/good_job/pull/231) ([bensheldon](https://github.com/bensheldon))
319
- - Update GH Test Matrix with latest JRuby 9.2.17.0 [\#228](https://github.com/bensheldon/good_job/pull/228) ([tedhexaflow](https://github.com/tedhexaflow))
3119
+ - Update GH Test Matrix with latest JRuby 9.2.17.0 [\#228](https://github.com/bensheldon/good_job/pull/228) ([tedt10e](https://github.com/tedt10e))
320
3120
  - Update gem dependencies [\#227](https://github.com/bensheldon/good_job/pull/227) ([bensheldon](https://github.com/bensheldon))
321
3121
  - Remove leftover text from Readme [\#226](https://github.com/bensheldon/good_job/pull/226) ([weh](https://github.com/weh))
322
3122
  - Fix appraisal and bundler version CI conflicts [\#224](https://github.com/bensheldon/good_job/pull/224) ([bensheldon](https://github.com/bensheldon))
323
- - Update GH Test Matrix with latest JRuby [\#223](https://github.com/bensheldon/good_job/pull/223) ([tedhexaflow](https://github.com/tedhexaflow))
3123
+ - Update GH Test Matrix with latest JRuby [\#223](https://github.com/bensheldon/good_job/pull/223) ([tedt10e](https://github.com/tedt10e))
324
3124
 
325
3125
  ## [v1.8.0](https://github.com/bensheldon/good_job/tree/v1.8.0) (2021-03-04)
326
3126
 
@@ -403,8 +3203,8 @@
403
3203
  **Merged pull requests:**
404
3204
 
405
3205
  - Update bundler version to 2.2.5 [\#200](https://github.com/bensheldon/good_job/pull/200) ([bensheldon](https://github.com/bensheldon))
406
- - Update GH Test Matrix with minimum & latest JRuby version [\#197](https://github.com/bensheldon/good_job/pull/197) ([tedhexaflow](https://github.com/tedhexaflow))
407
- - Fix JRuby version number [\#193](https://github.com/bensheldon/good_job/pull/193) ([tedhexaflow](https://github.com/tedhexaflow))
3206
+ - Update GH Test Matrix with minimum & latest JRuby version [\#197](https://github.com/bensheldon/good_job/pull/197) ([tedt10e](https://github.com/tedt10e))
3207
+ - Fix JRuby version number [\#193](https://github.com/bensheldon/good_job/pull/193) ([tedt10e](https://github.com/tedt10e))
408
3208
 
409
3209
  ## [v1.4.1](https://github.com/bensheldon/good_job/tree/v1.4.1) (2021-01-09)
410
3210