v4.0.2 (2024-07-08)
Fixed bugs:
- Fix a rails 6.1 deprecation warning for the duration attribute #1408 (Earlopain)
- Actually remove deprecated configuration for
cleanup_interval_seconds
,cleanup_interval_jobs
; remove deprecatedLockable
#1406 (bensheldon)
Closed issues:
- PG::UndefinedColumn: ERROR: column good_job_processes.lock_type does not exist #1405
- undefined method `duration=' for an instance of GoodJob::Execution #1404
- v3 deprecations are still present #1399
Merged pull requests:
- Fix Batch integration test to not exhaust database connection thread pool #1409 (bensheldon)
- Discrete cleanup #1401 (Earlopain)
v4.0.1 (2024-07-08)
Fixed bugs:
Merged pull requests:
- Bump prism/rbi dev dependency #1403 (Earlopain)
- Use index action for the performance controller #1398 (Earlopain)
v4.0.0 (2024-07-07)
Implemented enhancements:
- Release GoodJob v4 #1394 (bensheldon)
v3.99.0 (2024-07-07)
Merged pull requests:
- Remove deprecation silencers for v3.99 release #1395 (bensheldon)
- Add instructions and
GoodJob.v4_ready?
for upgrading to v4 #1356 (bensheldon)
v3.30.1 (2024-07-06)
Fixed bugs:
- Fix Performance table formatting, change url from
performances
to singularperformance
#1393 (bensheldon) - Add a version check for Rails whether to use pg interval or calculate float #1389 (bensheldon)
Merged pull requests:
- Add missing newline after frozen string literal for migrations #1392 (Earlopain)
- Temporarily remove JRuby builds #1391 (bensheldon)
- Add initial Performance panel to dashboard #1388 (bensheldon)
- Move job execution logic from Execution to BaseExecution to simplify v4 changes #1357 (bensheldon)
v3.30.0 (2024-07-05)
Implemented enhancements:
Closed issues:
- Job retried infinitely #1384
Merged pull requests:
v3.29.5 (2024-06-24)
Fixed bugs:
Closed issues:
- Unexpected behavior of calling perform_now inside another job #1379
- [BUG] [Dashboard] count isn't following by the filter #1376
v3.29.4 (2024-06-18)
Fixed bugs:
- Fix display of empty array in flash messages #1377 (andynu)
- Fix counts in tab links with filters #1373 (SebouChu)
v3.29.3 (2024-06-06)
Fixed bugs:
- Synchronize
CapsuleTracker#renew
#1369 (bensheldon)
Closed issues:
- docs: Basic auth route mount example improvement #1368
- Tips for debugging/optimizing slow dashboard? (45 second response time) #1366
v3.29.2 (2024-05-23)
Fixed bugs:
- Fix label modifications on job instance polluting labels on job class #1355 (bensheldon)
Closed issues:
#good_job_labels
retains values across job instances #1354
v3.29.1 (2024-05-23)
Fixed bugs:
- Fix AdvisoryLockable using wrong
advisory_lockable_column
attribute when abortingcreate_with_advisory_lock
#1360 (bensheldon)
Closed issues:
v3.29.0 (2024-05-22)
Merged pull requests:
- Add association between Process and Jobs, and add a heartbeat to the Process record #999 (bensheldon)
v3.28.3 (2024-05-18)
Fixed bugs:
- Strip more whitespace when parsing queues string #1352 (bensheldon)
- Fix latest migration not affecting
GoodJob.migrated?
#1345 (Earlopain)
Closed issues:
- Whitespace in
queues
configuration can cause issues. #1351 - How to properly handle interrupts #1343
- ActiveSupport::CurrentAttributes Compatibility #1341
Merged pull requests:
- Don't abort CI jobs when a single one fails #1346 (Earlopain)
- Clarify PgBouncer Compatibility #1338 (isaac)
v3.28.2 (2024-04-26)
Fixed bugs:
- Add debug warning message when a job is enqueued within a batch/bulk capture but not to the GoodJob Adapter #1339 (bensheldon)
Closed issues:
- How do I add jobs to an existing batch? #1337
- Executing perform_now on a good_job with GoodJobs::ActiveJobExtensions::Concurrency can run twice #1335
v3.28.1 (2024-04-24)
Fixed bugs:
- Ensure job context does not leak into extensions when
perform_now
is called within another job #1336 (bensheldon)
Closed issues:
erb_lint
doesn't lint all files #1329- Server hangs after #1297 #1301
- Figure out how to use bind parameters for time queries #1285
Merged pull requests:
- Upgrade development / demo Ruby to v3.3.1 #1333 (bensheldon)
- Exploratory testing for presence of scheduled_at when enqueuing #1332 (bensheldon)
- Run
erb_lint
against all the views and partials #1331 (bensheldon)
v3.28.0 (2024-04-19)
Implemented enhancements:
- Store and optionally display the full execution backtrace #1328 (Earlopain)
- Store error backtraces on discrete executions #1325 (Intrepidd)
Fixed bugs:
- add missing dropdown-item class #1327 (patriciomacadden)
Closed issues:
- Proposal: Migrating Documentation to a Separate Website #1324
- Potential documentation error in GoodJob::ActiveJobExtensions::NotifyOptions #1321
- ActiveSupport::CurrentAttributes reset after
perform_later
#1320 - Storing backtrace in database? #1162
- Potential locking race condition when using cron scheduler across multiple processes #731
Merged pull requests:
- docs: corrected a typo regarding the use of GoodJob::ActiveJobExtensions::NotifyOptions #1322 (pgvsalamander)
- Add "best practices" section to Readme #1318 (bensheldon)
- Change ApplicationRecord to ApplicationJob for label documentation. #1317 (frans-k)
- Run test matrix against Ruby 3.3; remove pry #1315 (bensheldon)
- Add
Rails.application.load_server
to Democonfig.ru
; quiet puma web-concurrency warnings #1314 (bensheldon) - Fix test leakage of configuration double #1312 (bensheldon)
- Rewrite queries to all use bind parameters and prepare: true #1308 (bensheldon)
v3.27.4 (2024-04-04)
Fixed bugs:
- Fix status tabs for Spanish translation #1307 (bensheldon)
Closed issues:
- Adapter to implement
enqueue_after_transaction_commit
#1310 - PG::SyntaxError: ERROR from timestamp #1305
- Spanish translation while on the dashboard displays hashes instead of the job status name #1304
- Exception raised during asset precompilation when no
config/database.yml
#1302 - Good job is running with standalone action cable server #1299
- Growing memory usage #1276
Merged pull requests:
- Implement enqueue_after_transaction_commit? #1311 (luizkowalski)
- Fix localization formatting of
confirm_force_discard
#1309 (bensheldon)
v3.27.3 (2024-03-29)
Merged pull requests:
- Revert "Start async adapters
after_initialize
instead of once Active Job and Active Record are loaded and Rails initialized?" #1303 (bensheldon)
v3.27.2 (2024-03-27)
Fixed bugs:
- Use scope-resolutioned constants in Notifier loop #1300 (bensheldon)
- Invoke inline Bootstrap Color Mode javascript above CSS link tag to better avoid flash of un-themed content #1298 (bensheldon)
Closed issues:
- Buggy theme animation while switching tabs #1224
v3.27.1 (2024-03-24)
Fixed bugs:
- Start async adapters
after_initialize
instead of once Active Job and Active Record are loaded and Rails initialized? #1297 (bensheldon)
v3.27.0 (2024-03-24)
Implemented enhancements:
- Add
enabled_by_default: false
as option for cron configuration #1289 (bensheldon) - Load metrics for job statuses asynchronously #1286 (binarygit)
- Implement throttling options in concurrency extension #1270 (marckohlbrugge)
Fixed bugs:
- fix(ui-dropdown): use dropdown-end on locales dropdown #1296 (WailanTirajoh)
Closed issues:
Merged pull requests:
- docs(readme): remove double "using" #1295 (WailanTirajoh)
- Set an implicit order on models #1293 (mec)
- CI: install gems after loading cache, not before #1288 (bensheldon)
- Ensure job execution Advisory Lock query uses bind parameters #1287 (bensheldon)
v3.26.2 (2024-03-15)
Closed issues:
- Async mode blocks ActionDispatch::Reloader #1274
Merged pull requests:
- Update dependencies and their Sorbet / Tapioca files #1284 (bensheldon)
- Use require_relative and do not modify $LOAD_PATH in gemspec #1283 (bensheldon)
- Tweak rbtrace script #1279 (bensheldon)
- Fix for Rails head: Don't try to override connection on connection checkin in tests #1277 (bensheldon)
- Tiny improvements to french translation #1273 (francois-ferrandis)
- Load metrics for top nav asynchronously #1231 (binarygit)
v3.26.1 (2024-03-01)
Fixed bugs:
- Ignore job deserialization errors when mass-retrying through the dashboard #1269 (bensheldon)
Closed issues:
- Plain HTTP 500 Error when retrying a job for deleted record #1263
v3.26.0 (2024-03-01)
Implemented enhancements:
- Add
GoodJob.current_thread_running?
andGoodJob.current_thread_shutting_down?
for graceful shutdowns #1253 (bensheldon)
Fixed bugs:
- Ensure "shutdown?" behavior is consistent between J Ruby and C Ruby #1267 (bensheldon)
Closed issues:
- PG Good Job rows add up #1262
- Bulk operations do not work for Batches #1255
- What's the difference between 'reschedule' and 'retry' in the dashboard? #1241
Merged pull requests:
v3.25.0 (2024-02-22)
Implemented enhancements:
- Allow disabling of Dashboard Live Polling configuration #1235 (erick-tmr)
- Add customizable extension partials to good_job/jobs#show view #1200 (grncdr)
Fixed bugs:
- Fix default engine cron value #1258 (hss-mateus)
- Print an error when daemon pidfile dir doesn't exist #1252 (thepry)
Closed issues:
- Production deployment question #1257
- Daemon and App not connecting to secondary database #1254
- Logging with logger.warn in classes is suppressed by good job? (semantic_logger) #1250
Merged pull requests:
- Fix Active Record connection changes on Rails head #1259 (bensheldon)
- [Docs] Bulk.enqueue takes an array of jobs #1256 (jpcamara)
- Clean up icon helpers for less noisy view rendering #1248 (bensheldon)
- Use dotenv-rails instead of dotenv #1247 (bensheldon)
- Perform inline retries iteratively instead of recursively #1246 (bensheldon)
v3.24.0 (2024-02-12)
Fixed bugs:
- Fix batches so that retried-and-successful jobs leave the batch succeeded #1243 (bensheldon)
- Use the job class as the default concurrency key if none is provided #1145 (Earlopain)
Closed issues:
- Batch callbacks not run when job fails, then succeeds #1239
- Broken pipe @ io_writev - <STDERR> (Errno::EPIPE) #1233
- PG::UniqueViolation unique constraint "index_good_jobs_on_cron_key_and_cron_at_cond" #1230
- Default concurrency key #1110
Merged pull requests:
- Use Ruby 3.3 for development; add Bootsnap; update to Rails 7.1.3 #1240 (bensheldon)
- Tweak docs for new concurrency default #1229 (Earlopain)
- Brazilian Portuguese locale #1226 (hss-mateus)
v3.23.0 (2024-01-23)
Implemented enhancements:
- Add environment label to navbar #1206 (sparshalc)
- Make health probe server more general purpose #1079 (jklina)
Fixed bugs:
- Use Rails executor instead of reloader when wrapping inline execution #1225 (bensheldon)
- Add an index to better support
smaller_number_is_higher_priority
#1213 (mkrfowler) - Fix discard job with nonexistent job class #1211 (yenshirak)
- Fix: Interacting with input field should pause the live poll #1210 (sparshalc)
Closed issues:
- can't write unknown attribute
active_job_id
#1216 - Regression: use of Rails reloader causing mixed constants during seeding #1215
- Production worker doesn't show any processes #1214
- Clarify required async mode DB pool size #1209
- Mac forking exception when using Spring #1115
- Jobs should have labels #1095
- Set up Dependabot grouped updates #1062
- Fix documentation to always include space in "Active Job", "Active Record", etc. #1048
Merged pull requests:
- Bump actions/cache from 3 to 4 #1223 (dependabot[bot])
- Update README, add poll_interval defaults/recommendations #1220 (andynu)
- Update Russian translation #1219 (alec-c4)
- Add Korean translation (ko) #1212 (hahwul)
- Fix default poll interval in documentation #1208 (yenshirak)
v3.22.0 (2024-01-03)
Implemented enhancements:
- Add "updated at" info in secondary top navbar #1204 (sparshalc)
- Re-add footer with GoodJob version number #1201 (Pauloparakleto)
- Add Active Job extension for Labels #1188 (bensheldon)
Closed issues:
- Limiting by executed jobs count by period #1198
- Cron jobs processing in async mode #1196
- Dashboard Missing Translation? #1192
- Show last update on top nav bar #1183
- Wrong quoting of the query to spot new jobs? #1179
- [Possible bug] good_job does not honour the wait parameter on retry_on #1174
- Running GoodJob in production with systemd throws an error due to a wrong communication with WatchDog #1172
Merged pull requests:
- Bump the bundler-dependencies group with 3 updates #1202 (dependabot[bot])
- Remove duplicated intro sentence in README #1195 (benoittgt)
- Fix namespace for
InterruptError
in README #1193 (padde) - Bump github/codeql-action from 2 to 3 #1191 (dependabot[bot])
- Bump actions/upload-artifact from 3 to 4 #1190 (dependabot[bot])
- Lock RubyGems version for Ruby < 3.0 in CI #1189 (bensheldon)
- Active Record and Active Job name formatting #1182 (andyatkinson)
- Remove redundant
good_jobs.active_job_id
index #1181 (andyatkinson) - Add missing word in readme #1177 (Earlopain)
v3.21.5 (2023-12-12)
Fixed bugs:
- Fix conditional index migration to be rollbackable #1176 (bensheldon)
v3.21.4 (2023-12-11)
Fixed bugs:
- Fix latest migration not affecting
GoodJob.migrated?
#1175 (Earlopain) - Fix no method error in systemd service #1173 (tagrudev)
v3.21.3 (2023-12-10)
Implemented enhancements:
- Add
--idle-timeout
CLI option to create temporary processes that exit when inactive #1159 (bensheldon)
Fixed bugs:
- Add correct paths to $LOAD_PATH #1169 (jklina)
- Recreate cron indexes to be conditional #1163 (defkode)
Closed issues:
- Use partial indices for cron_key? #1161
- Mass Update Error #1157
- v3 roadmap plan #705
- Allow customisation of the dashboard controller parent class #687
Merged pull requests:
- [minor] Use symbol form of index name #1171 (andyatkinson)
- Fix development schema.rb to include conditional index name change #1168 (bensheldon)
- Create new conditional Cron indexes before dropping old indexes #1165 (bensheldon)
- Fix test that references Rails logger for Rails 7.2a change #1160 (bensheldon)
v3.21.2 (2023-11-24)
Fixed bugs:
Closed issues:
- Processes are created for puma workers after version v3.12.5 with execution_mode==:external #1156
Merged pull requests:
- Update README.md #1152 (LucasKendi)
v3.21.1 (2023-11-14)
Fixed bugs:
- Explicitly require
active_job/arguments
inGoodJob::BatchRecord
#1150 (hidenba) - Bug: Polling only activates single thread, should eagerly create additional threads when jobs exist #1148 (bensheldon)
Closed issues:
- Error when executing ActiveJob::Batch.new in Rails 7.1.x #1149
- Show whether or not cron scheduler is enable in dashboard (UI) #1117
- ActiveRecord::ConnectionNotEstablished For rails multi DB #1103
- Rails API dies when using latest good_job version #952
- config.good_job.preserve_job_records = false not working with CRON #927
- Pundit::NotDefinedError (unable to find policy
Admin::GoodJob::JobPolicy
for ) - version 2.13.0 and above #618 - Running CLI under foreman doesn't display log output until exit #490
Merged pull requests:
- Always instantiate MultiScheduler; delegate Scheduler Metrics to JobPerformer #1147 (bensheldon)
- Clarify on concurrency uniqueness constraints #1144 (Earlopain)
v3.21.0 (2023-11-06)
Implemented enhancements:
- Add "cron enabled" column to processes index page #1127 (bforma)
- Add
limit:
kwarg toGoodJob.perform_inline
#1126 (bensheldon)
Closed issues:
Merged pull requests:
- Use a Concurrent::Event for CLI signal-trapping loop #1141 (bensheldon)
- Update README's optimize queue explanation #1138 (maestromac)
- Update development dependencies and light Rubocop'ing #1136 (bensheldon)
- Move the Rails app harness from
spec/test_app
todemo
#1135 (bensheldon) - In test, shutdown schedulers/capsules before doing assertions because of race conditions; store CI logs for Dev Env tests #1129 (bensheldon)
- Use a constant to represent
None
for default/blank memoizable values #1125 (bensheldon)
v3.20.0 (2023-10-23)
Closed issues:
- Dashboard blocked in iframe tag #1111
- PG::ConnectionBad: PQsocket() can't get socket descriptor #1100
Merged pull requests:
- Wrap Adapter enqueue methods and Batch callbacks with Rails Reloader; verify in tests that no Advisory locks remain at database connection check-in #1124 (bensheldon)
- Run all RSpec examples within a Rails Executor #1122 (bensheldon)
- Print better debugging for retained advisory locks in test #1121 (bensheldon)
- Replace Heroku-specific Rake tasks with
db:prepare
now that Demo is upgraded to Rails 7.1 #1120 (bensheldon) - Do not error debug logs if
pg_stat_activity
join is empty #1119 (bensheldon) - Remove pinned psych version #1114 (bensheldon)
- Remove
pg_advisory_unlock_all()
after job is run; only verify blankfinished_at
(and not lock presence) before performing job #1113 (bensheldon) - Update docs url #1112 (ur5us)
- Pin psych gem 5.1.0 #1108 (bensheldon)
- Add sampling for Skylight traces on Demo #1107 (bensheldon)
- Add Rails 7.1 to test matrix #1105 (bensheldon)
- Add spec to verify unhandled thread errors are reported #1104 (bensheldon)
- Update Codespace configuration #1101 (bensheldon)
v3.19.4 (2023-10-04)
Closed issues:
- Including GoodJob::ActiveJobExtensions::Concurrency triggers rails deprecation notice #1096
- Add retries exhaused callback #1080
Merged pull requests:
v3.19.3 (2023-09-28)
Closed issues:
- Explicitly write that jobs with higher priority jobs run first (unlike Que or DelayedJob) at readme. #991
Merged pull requests:
- Correct
discrete_execution#status
method #1092 (coreyaus) - Use ActiveSupport::BroadcastLogger #1089 (bensheldon)
- Log thread name for gem development debugging #1085 (bensheldon)
- Describe ApplicationController hook in README #1082 (maxim)
- [Docs] Explain how
priority
works in GoodJob #1005 (coreyaus)
v3.19.2 (2023-09-22)
Merged pull requests:
v3.19.1 (2023-09-20)
Implemented enhancements:
- Add
good_job_application_controller
load hook #1081 (bensheldon)
v3.19.0 (2023-09-19)
Implemented enhancements:
Closed issues:
Merged pull requests:
- AdvisoryLockable: Abort record create if with_advisory_lock fails to acquire advisory lock #1078 (bensheldon)
- Wrap all test background threads in Rails executors; better test logging/debugging #1077 (bensheldon)
v3.18.3 (2023-09-16)
Fixed bugs:
- Allow Probe Server's
/connect
to handle a certain number of reconnects before statusing #1075 (bensheldon)
Closed issues:
- ActiveRecord::RecordNotUnique good_jobs.id error in rspec test suite #1072
- Probe failures on heavy usage of dashboard(?) #1068
Merged pull requests:
- Bump actions/checkout from 3 to 4 #1070 (dependabot[bot])
- Add Skylight for demo site; create distinct development, lint, demo, production Gemfile groups; a little bit of Rubocop #1069 (bensheldon)
- Add JRuby 9.4 to testing matrix; nerf ActiveJob::TestQueueAdapter overrides #1067 (bensheldon)
- Reorganize dependencies to make booting JRuby easier #1066 (bensheldon)
- Slight refactoring to CronEntry #1063 (bensheldon)
v3.18.2 (2023-09-02)
Fixed bugs:
- Fix compatibility with Global ID v1.2.0 #1064 (bensheldon)
Merged pull requests:
- Bump pg from 1.5.3 to 1.5.4 #1061 (dependabot[bot])
v3.18.1 (2023-08-30)
Implemented enhancements:
- Respect the configured execution mode, even within the CLI #1056 (bensheldon)
Closed issues:
- Bug: calling
GoodJob.restart
in Puma on_worker_boot starts GoodJob regardless of it being in async mode or not #1054 - [Feature Request?] Config Option to Inline Child-Jobs in Worker Processes #1052
- [Feature Request] Hook to extend cron schedules #1050
Merged pull requests:
GoodJob.restart
should not start capsules (job execution) when in a webserver but not in async mode #1055 (bensheldon)
v3.18.0 (2023-08-30)
Implemented enhancements:
- Support configuring cron schedule dynamically with a block #1051 (DanielHeath)
v3.17.4 (2023-08-24)
Fixed bugs:
- Handle edge case of logger not responding to silence #1049 (bensheldon)
Closed issues:
- An idea for better .silence handling #1046
v3.17.3 (2023-08-19)
Fixed bugs:
Closed issues:
- Dashboard as separate package? #965
- Managing jobs with errors #929
- Feature: dynamic options for good_job_control_concurrency_with #684
Merged pull requests:
- Attempt to overcome github_changelog_generator's rate limit problem #1045 (bensheldon)
- [Doc] for cron schedule add info about Dashboard view #1042 (steveroot)
- Add description of :class to readme for cron style repeating jobs section #1040 (steveroot)
v3.17.2 (2023-08-10)
Fixed bugs:
- 3.17.0 breaks health check endpoints #1033
- Fix NoMethodError: undefined method `silence' for nil:NilClass #1037 (afn)
Closed issues:
- NoMethodError in ProcessHeartbeat if ActiveRecord logger is nil #1036
- JRuby deprecation policy #1035
Merged pull requests:
- Add helpful failure output for Sorbet linter #1038 (bensheldon)
v3.17.1 (2023-08-08)
Fixed bugs:
- Fix Probe Server by retrying IO.select instead of returning early #1034 (bensheldon)
Closed issues:
- Add database connection pool details to Process state #1014
Merged pull requests:
- Add YARD warnings to lint script; fix YARD warnings #1032 (bensheldon)
v3.17.0 (2023-08-06)
Implemented enhancements:
- Add Dark Mode color theme for Dashboard #1031 (bensheldon)
- Automatically send status notifications to systemd #1029 (Mr0grog)
Closed issues:
- Add systemd/sd_notify support to CLI #1027
- Cron job by default runs on the web server even when "async" execution mode is not specified #1026
- Replace webrick with a small/simple custom rack-compatible http server #1017
- Dark mode for the dashboard ? #974
Merged pull requests:
- Replace Webrick with custom simple http server #1030 (dixpac)
- Bump appraisal from
b200e63
tofeb78bc
#1025 (dependabot[bot]) - Bump net-imap from 0.3.6 to 0.3.7 #1024 (dependabot[bot])
- Bump rack from 2.2.7 to 2.2.8 #1023 (dependabot[bot])
v3.16.4 (2023-07-30)
Implemented enhancements:
Fixed bugs:
- Move
Execution#active_job
to BaseExecution to share with Job; refactorBatch#active_jobs
to use job directly #1022 (bensheldon)
Closed issues:
- Notifier errored: ArgumentError: wrong number of arguments (given 1, expected 0) #1016
- Understanding Database Connections and Cron #1013
- Experiencing various database exceptions with Rails 7.1 #796
Merged pull requests:
- Refactor Notifier to ensure #restart is threadsafe #1021 (bensheldon)
- Notifier and CronManager share a 2-thread executor within the capsule #1018 (bensheldon)
- Clarify database connections and recurring processes in README.md #1015 (blumhardts)
- Deprecate
GoodJob::Lockable
and rename toGoodJob::AdvisoryLockable
#1012 (bensheldon)
v3.16.3 (2023-07-18)
Fixed bugs:
- Fix bulk enqueue for unmigrated 'error_event'; add
GoodJob.migrated?
check method; use custom enum implementation #1011 (bensheldon)
Closed issues:
- GoodJob::Bulk.enqueue not handling missing migrations #1010
Merged pull requests:
v3.16.2 (2023-07-13)
Closed issues:
- Support for customized job display name #956
Merged pull requests:
v3.16.1 (2023-07-11)
Fixed bugs:
- Wrap Notifier's
refresh_process
with Rails executor #1007 (bensheldon)
Closed issues:
- uninitialized constant GoodJob::Process #1006
v3.16.0 (2023-07-10)
Implemented enhancements:
- Add
GoodJob.configure_active_record
as alternative toGoodJob.active_record_parent_class
#1004 (bensheldon) - Configure
dashboard_default_locale
using custom subclass ofI18n::Config
to isolate I18n configuration from parent application #1001 (bensheldon) - Create
error_event
column to track the context of an error (discarded, retried, retry_stopped, etc) #995 (bensheldon) - Added metrics to Scheduler and track in Process state #984 (AndersGM)
Fixed bugs:
- Use Concurrent::Array for class
instances
to avoid JRuby synchronization errors #1002 (bensheldon) - Add test to assert enqueuing behavior within transactions #998 (bensheldon)
- Fix Ukrainian language code #996 (bensheldon)
Closed issues:
Merged pull requests:
- Unify
frozen_string_literal
comment style #1003 (dixpac) - Add more execution mode details and caveats to Readme Set Up section #997 (bensheldon)
- Add note in migrations that
pgcrypto
extension isn't necessary in PG 13+ #837 (bensheldon) - Add Sorbet to linter #760 (sam1el)
v3.15.14 (2023-07-03)
Implemented enhancements:
- Add Process heartbeat that is updated inside of Notifier #977 (bensheldon)
Fixed bugs:
- Dashboard error when trying to display 0 running/queued/retried jobs due to missing 'zero' translation #990
- Add explicit namespace back to
GoodJob::DiscreteExecution
#983 (bensheldon)
Closed issues:
- Persisting ActiveSupport::CurrentAttributes #981
- uninitialized constant DiscreteExecution #962
- Hard kill resilience with execution counts #922
Merged pull requests:
- Bump rubocop from 1.53.0 to 1.54.0 #994 (dependabot[bot])
- Bump rails from 7.0.5 to 7.0.6 #993 (dependabot[bot])
- Fix CI: Lock traces version for Ruby 2.6 compatible version #987 (bensheldon)
- Turkish Language support #986 (SemihCag)
- Use generic error reporter in Readme examples #964 (shouichi)
v3.15.13 (2023-06-14)
Fixed bugs:
- Replace uncached table_exists? with cached table_exists? #979 (cmcinnes-mdsol)
v3.15.12 (2023-06-11)
Fixed bugs:
- Do not allow GoodJob to automatically start after Rails initialization if previously shutdown #976 (bensheldon)
Merged pull requests:
- Fix Rubocop linting #975 (bensheldon)
- Bump capybara from 3.38.0 to 3.39.1 #970 (dependabot[bot])
- Bump thor from 1.2.1 to 1.2.2 #967 (dependabot[bot])
v3.15.11 (2023-06-06)
Fixed bugs:
- Fix
discrete_executions
job re-enqueueing whenretry_job
is called directly #973 (bensheldon)
Closed issues:
- Unclear how discrete executions should work with reenqueued jobs (leads to broken job-iteration) #972
build_for_enqueue
discardsscheduled_at
values for bulk-enqueued jobs #966
v3.15.10 (2023-05-22)
Fixed bugs:
- Ensure migration warning for
DiscreteExecution
constant is in explicitGoodJob::
namespace #963 (bensheldon)
v3.15.9 (2023-05-21)
Fixed bugs:
- Fix wait and wait_until ignored in bulk enqueue #960 (bensheldon)
Closed issues:
- Does Bulk enqueue respect wait? #959
- BaseExecution::discrete_support? hardcodes the DiscreteExecution table_name #957
Merged pull requests:
- Fix flaky jruby test to widen time-based range #961 (bensheldon)
- Update README.md #953 (namiwang)
v3.15.8 (2023-05-19)
Fixed bugs:
Closed issues:
active_job.enqueue
Performance Issue #939
Merged pull requests:
- Bump rubocop from 1.46.0 to 1.50.2 #949 (dependabot[bot])
- Bump rubocop-rails from 2.18.0 to 2.19.1 #947 (dependabot[bot])
v3.15.7 (2023-04-30)
Fixed bugs:
- Fix Lockable's
SELECT 1 AS one
queries missingLIMIT 1
#946 (bensheldon)
Closed issues:
- Issue with performing jobs that use ActionMailer::Parameterized #944
- Deprecation warning on the deprecation warning #943
Merged pull requests:
- Replace class usage of ActiveSupport::Deprecator with gem-specific instance #945 (bensheldon)
v3.15.6 (2023-04-24)
Merged pull requests:
- Refine french translations #936 (francois-ferrandis)
- feat: locales for ja #935 (aki77)
v3.15.5 (2023-04-24)
Fixed bugs:
- Fix
GoodJob.cleanup_preserved_jobs
to add missing guard for unmigrated discrete executions #938 (bensheldon)
Closed issues:
- Update to 3.15.4 breaks cleanup_preserved_jobs #937
v3.15.4 (2023-04-22)
Merged pull requests:
- Create "discrete"
good_job_executions
table to separate Job records from Execution records and have a 1-to-1 correspondence betweengood_jobs
records and Active Job jobs #928 (bensheldon)
v3.15.3 (2023-04-22)
Merged pull requests:
- Eagerly autoload
ActiveJob::Base
; clean up framework deferred-loading logic to use nestedon_load
blocks #931 (bensheldon)
v3.15.2 (2023-04-19)
Closed issues:
- Cleaning up preserved jobs giving me timeout #933
- uninitialized constant GoodJob::ActiveJobJob (NameError) #932
Merged pull requests:
- Use batched queries in
GoodJob::self.cleanup_preserved_jobs
#934 (bensheldon) - Bump nokogiri from 1.14.2 to 1.14.3 #926 (dependabot[bot])
v3.15.1 (2023-04-17)
Implemented enhancements:
- Support for Batches? #417
Fixed bugs:
- Fix setting of locale via routes
mount ... defaults: { locale: :en }
#923 (bensheldon) - Set
successfully_enqueued?
when usingperform_all_later
#917 (bensheldon)
Closed issues:
- GoodJob has pending database migrations after v2 -> v3 #920
- Batch docs in README suggest
Batch#add
is a class method, but it's not #912 - How do I clear queue during tests? #887
- Implement batch functionality #691
Merged pull requests:
- In tests, directly use
connection.truncate_tables
instead ofActiveRecord::Tasks::DatabaseTasks.truncate_all
#918 (bensheldon) - Use
GoodJob.capsule
in CLI instead of creating a new Capsule #916 (bensheldon) - Fix lint: missing fr and nl translations; readme whitespace #914 (bensheldon)
- Switches from Chrome to Chromium to support Apple M1/Arm CPUs #910 (ckdake)
- Bump erb_lint from 0.3.1 to 0.4.0 #906 (dependabot[bot])
v3.15.0 (2023-04-02)
Implemented enhancements:
- Extract more Dashboard strings into localization strings #899 (patriciomacadden)
Closed issues:
- ActionView::Template::Error - undefined method `symbolize_keys' #889
Merged pull requests:
- Bump benchmark-ips from 2.11.0 to 2.12.0 #907 (dependabot[bot])
- Bump selenium-webdriver from 4.8.1 to 4.8.6 #905 (dependabot[bot])
- Bump rails from 7.0.4.2 to 7.0.4.3 #904 (dependabot[bot])
- feat: locales for de #903 (eric-christian)
- Update README.md #902 (ain2108)
- Extract shared methods/scopes into a BaseExecution to share between Execution and Job models #894 (bensheldon)
- Add translate_hash to handle missing translation keys that return hashes; only show translatable/available locales in dropdown #891 (bensheldon)
v3.14.2 (2023-03-16)
Merged pull requests:
- Bump rack from 2.2.6.3 to 2.2.6.4 #893 (dependabot[bot])
- Remove non-ActiveRecord::Base backed association #892 (rrunyon)
v3.14.1 (2023-03-14)
Merged pull requests:
- Allow joining executions to jobs scoped by state #886 (segiddins)
- Add execution_result to event payload for perform_job.good_job #885 (segiddins)
- Bump rack from 2.2.6.2 to 2.2.6.3 #884 (dependabot[bot])
v3.14.0 (2023-03-09)
Implemented enhancements:
- Deprecate definition of job priority, change to "smaller number is higher priority" to align with Active Job definition #883 (bensheldon)
v3.13.0 (2023-03-08)
Implemented enhancements:
Fixed bugs:
- Don't load all Executions on Jobs Dashboard #878 (bensheldon)
Closed issues:
- No route matches [POST] "/scheduler-dashboard/jobs/<id>/retry" #880
- What is
concurrency_key
used for? #877 - ArgumentError in GoodJob::Jobs#index #875
- Nonworking dashboard for job with many retries #809
Merged pull requests:
- Add aggressive test for async Batches #833 (bensheldon)
v3.12.8 (2023-03-06)
Fixed bugs:
Closed issues:
- GoodJob's JavaScript takes precedence over application's JavaScript in GoodJob 3.12.6, Rails 7 #873
Merged pull requests:
- Rewrite flaky tests: don't allow nil timeout for restart #872 (bensheldon)
v3.12.7 (2023-03-01)
Fixed bugs:
- Rename "assets" to "frontends" to avoid Asset Pipeline collisions #874 (bensheldon)
v3.12.6 (2023-03-01)
Merged pull requests:
- Update and cleanup js and css assets; add Stimulus #870 (bensheldon)
- Bump actions/add-to-project from 0.4.0 to 0.4.1 #869 (dependabot[bot])
- Bump actions/checkout from 2 to 3 #868 (dependabot[bot])
- Bump rubocop-rails from 2.17.4 to 2.18.0 #867 (dependabot[bot])
- Bump pg from 1.4.5 to 1.4.6 #866 (dependabot[bot])
- Extract GoodJob::Capsule #861 (bensheldon)
v3.12.5 (2023-02-24)
Fixed bugs:
- Fix I18n number formatting; other Dashboard development tweaks #862 (bensheldon)
Merged pull requests:
- Update Development Dependencies. Use Ruby 3.2 and Rails 7.0 #865 (bensheldon)
v3.12.4 (2023-02-24)
Fixed bugs:
- Add serialize coder kwarg for Rails 7.1-alpha #864 (bensheldon)
Closed issues:
- Rails 7.1 - Serialized columns like a store now needs a
coder: JSON
#863 - Does good_job automatically retry on ActiveRecord::LockWaitTimeout? #860
- race condition for batches callback #832
v3.12.3 (2023-02-21)
Fixed bugs:
- Fix bug where notification check does not use configuration #857 (mitchellhenke)
- Fix template for the update migrations 03 index (#851) #852 (julienanne)
Closed issues:
- [Not Critical] Too much space (One) in db/migrate/XXXXXX_create_index_good_jobs_jobs_on_priority_created_at_when_unfinished.rb #851
- Use timestamps with timezone when set as the default for postgresql. #668
v3.12.2 (2023-02-16)
Fixed bugs:
- Ensure all i18n locale keys are under
good_job
namespace #850 (bensheldon)
Closed issues:
- Override locales and conflict with rails-i18n #847
Merged pull requests:
- Add rack-mini-profiler to development #848 (bensheldon)
- Fix typo of "class" in README #845 (mthadley)
- spelling: add n to 'not' #841 (michaelglass)
v3.12.1 (2023-02-09)
Fixed bugs:
- Fix "NoMethodError: private method `_good_job_concurrency_key' if key is nil" #836 (bensheldon)
Closed issues:
- NoMethodError: private method `_good_job_concurrency_key' if key is nil #835
- Jobs go back into the queued state when a worker is killed #821
Merged pull requests:
v3.12.0 (2023-02-07)
Implemented enhancements:
- Create
InterruptErrors
extension to raise an exception when an interrupted job is retried #830 (bensheldon)
v3.11.1 (2023-02-06)
Merged pull requests:
v3.11.0 (2023-02-06)
Implemented enhancements:
- Create ActiveJob extension to disable sending a NOTIFY on enqueue and retry #814 (bensheldon)
- Add global enable_listen_notify configuration to disable both notify and listen #810 (mitchellhenke)
Merged pull requests:
- Test Matrix: Use Ruby 3.2 to test against all Postgres versions; add PG 15, remove PG 10 #828 (bensheldon)
- Bump nokogiri from 1.14.0 to 1.14.1 #827 (dependabot[bot])
- Bump rubocop-performance from 1.15.2 to 1.16.0 #826 (dependabot[bot])
v3.10.1 (2023-02-06)
Fixed bugs:
- Ensure batch is reloaded before updating on multiple enqueues #824 (bensheldon)
Closed issues:
- Can't batch.enqueue the callback after retrying a job within the batch #822
Merged pull requests:
- In tests, retry when connecting to Puma returns Net::ReadTimeout #825 (bensheldon)
- Add Batch enqueue example to Demo's cron configuration #823 (bensheldon)
v3.10.0 (2023-02-04)
Implemented enhancements:
- Implement
GoodJob::Batch
#712 (bensheldon)
Closed issues:
- Support for Rails 6.1 / Ruby 3.2 #785
- Custom table names #748
- Health check issue with cron scheduler job #741
v3.9.0 (2023-01-31)
Implemented enhancements:
- Abort enqueue when the concurrency limit is reached #820 (TAGraves)
- Add bulk enqueue functionality #790 (julik)
Merged pull requests:
- Bump alex-page/github-project-automation-plus from 0.8.2 to 0.8.3 #819 (dependabot[bot])
- Bump concurrent-ruby from 1.1.10 to 1.2.0 #818 (dependabot[bot])
- Bump rails from 6.1.7 to 6.1.7.2 #817 (dependabot[bot])
- Bump selenium-webdriver from 4.7.1 to 4.8.0 #816 (dependabot[bot])
- Bump rubocop from 1.43.0 to 1.44.1 #815 (dependabot[bot])
- Ensure that anytime the Notifier uses autoloaded constants (ActiveRecord), they are wrapped with a Rails Executor #797 (bensheldon)
- Remove support for Ruby 2.5 and JRuby 9.2; reactivate appraisal tests for Rails HEAD #756 (bensheldon)
v3.8.0 (2023-01-27)
Implemented enhancements:
- Capture and log ActiveJob IDs that are interrupted when Scheduler is forced to shutdown #794 (bensheldon)
Fixed bugs:
- Ensure Concurrency Keys are string-like and return a better error when they cannot be cast to a string #791 (Earlopain)
Closed issues:
- Work is not being picked up at the expected rate #802
- Cleaning up preserved jobs only removes a subset of the jobs #801
- Dashboard fails to execute JS on latest Firefox 108 #792
- Concurrency key doesn't handle Hash: TypeError (can't cast Hash) #784
Merged pull requests:
- Bump fugit from 1.8.0 to 1.8.1 #808 (dependabot[bot])
- Bump rubocop-rspec from 2.17.1 to 2.18.1 #807 (dependabot[bot])
- Bump globalid from 1.0.0 to 1.0.1 #804 (dependabot[bot])
- Bump rack from 2.2.4 to 2.2.6.2 #803 (dependabot[bot])
- Bump nokogiri from 1.13.10 to 1.14.0 #800 (dependabot[bot])
- Bump rubocop from 1.42.0 to 1.43.0 #799 (dependabot[bot])
- Bump rubocop-rspec from 2.16.0 to 2.17.1 #798 (dependabot[bot])
- Add French translation #795 (francois-ferrandis)
- Bump rubocop-rails from 2.17.3 to 2.17.4 #780 (dependabot[bot])
v3.7.4 (2023-01-10)
Fixed bugs:
- Update to es-module-shims v1.6.3 and use an inline script entry-point; remove script.js entrypoint; remove sourcemap references #793 (bensheldon)
v3.7.3 (2023-01-09)
Implemented enhancements:
- Provide clearer values/deprecation notices for
cleanup_interval_jobs
andcleanup_interval_seconds
; setting0
disables,-1
always #776 (zarqman)
Closed issues:
Merged pull requests:
- Avoid including unnecessary pg_locks references when counting jobs #789 (mkrfowler)
- Add net-* gems to Gemfile for Heroku #788 (bensheldon)
- Add Ruby 3.2 to test matrix #786 (bensheldon)
- Bump rubocop from 1.41.1 to 1.42.0 #781 (dependabot[bot])
- Bump rubocop from 1.40.0 to 1.41.1 #779 (dependabot[bot])
- Bump rubocop-performance from 1.15.1 to 1.15.2 #777 (dependabot[bot])
- Bump rubocop-rspec from 2.15.0 to 2.16.0 #775 (dependabot[bot])
- Bump rails-html-sanitizer from 1.4.3 to 1.4.4 #773 (dependabot[bot])
- Bump loofah from 2.19.0 to 2.19.1 #772 (dependabot[bot])
v3.7.2 (2022-12-12)
Fixed bugs:
- Ignore ActiveJob::DeserializationError when discarding jobs #771 (nickcampbell18)
Closed issues:
- Unable to discard failed jobs which crashed with
ActiveJob::DeserializationError
#770
Merged pull requests:
- Bump rubocop from 1.39.0 to 1.40.0 #769 (dependabot[bot])
v3.7.1 (2022-12-12)
Fixed bugs:
v3.7.0 (2022-12-10)
Implemented enhancements:
Fixed bugs:
- Always preserve job records created by cron #767 (bensheldon)
Merged pull requests:
- Bump nokogiri from 1.13.9 to 1.13.10 #765 (dependabot[bot])
- Remove JRuby 9.2 from testing matrix #763 (bensheldon)
- Bump actions/cache from 1 to 3 #762 (dependabot[bot])
- Bump actions/upload-artifact from 2 to 3 #761 (dependabot[bot])
- Bump actions/add-to-project from 0.3.0 to 0.4.0 #759 (dependabot[bot])
- Bump alex-page/github-project-automation-plus from 9a05133789dbc96bd560ec84223a0ad49253d342 to 1f8873e97e3c8f58161a323b7c568c1f623a1c4d #758 (dependabot[bot])
- Bump selenium-webdriver from 4.6.1 to 4.7.1 #757 (dependabot[bot])
- Add explicit ruby version in Gemfile for Heroku demo #755 (bensheldon)
v3.6.2 (2022-12-04)
Fixed bugs:
- Redirect to Jobs path after destroy #754 (BilalBudhani)
Merged pull requests:
- Bump pg from 1.4.4 to 1.4.5 #751 (dependabot[bot])
v3.6.1 (2022-11-30)
Implemented enhancements:
Closed issues:
- Minor Cron Concurrency Clarification #743
- Materialized CTE performance bottleneck #720
- Calculating database connections #669
Merged pull requests:
- Update gems, rubocop, and development ruby (v2.7.7) #752 (bensheldon)
- Add chrome/chromdriver to Codespace configuration #746 (bensheldon)
- Add GitHub Codespaces / devcontainer configuration #745 (bensheldon)
- Bump fugit from 1.7.1 to 1.7.2 #742 (dependabot[bot])
- Bundle update and Rubocop lints #740 (bensheldon)
- Add dependabot to update development dependencies #734 (bensheldon)
- Fix misspellings and grammar in README #732 (aisayo)
v3.6.0 (2022-10-22)
Implemented enhancements:
- Add configurable limit (
queue_select_limit
) when querying candidate jobs #727 (mitchellhenke) - Add index to
good_jobs
to improve querying candidate jobs #726 (mitchellhenke)
Fixed bugs:
- 3.4.8 release breaks job retrying #728
- Redo: When not preserving job records, ensure all prior executions are deleted after successful retry #730 (bensheldon)
v3.5.1 (2022-10-20)
Fixed bugs:
- Revert "When not preserving job records, ensure all prior executions are deleted after successful retry" because some retry patterns stopped working #729 (bensheldon)
Closed issues:
- Assert cancelled jobs #724
v3.5.0 (2022-10-18)
Merged pull requests:
- Fix flaky test for
Scheduler#cleanup_interval_jobs
#723 (bensheldon) - Pin development Puma version until Capybara is compatible #722 (bensheldon)
- Rename Job status of
finished
tosucceeded
;finished
now means eithersucceeded
ordiscarded
#721 (bensheldon)
v3.4.8 (2022-10-11)
Fixed bugs:
- When not preserving job records, ensure all prior executions are deleted after successful retry #719 (ylansegal)
v3.4.7 (2022-10-06)
Closed issues:
Merged pull requests:
v3.4.6 (2022-09-26)
Fixed bugs:
- Support SemanticLogger logging with improve stdout logic and tagged logs #715 (bensheldon)
Closed issues:
v3.4.5 (2022-09-12)
Fixed bugs:
- Dashboard: Remove translation_missing red highlighting; remove number_to_human.hundreds; add form labels #708 (bensheldon)
Closed issues:
Merged pull requests:
- Sentry integration Docs #711 (remy727)
- Add an
Execution
after_perform_unlocked
callback #706 (bensheldon)
v3.4.4 (2022-08-20)
Fixed bugs:
Merged pull requests:
v3.4.3 (2022-08-15)
Closed issues:
- How to run multiple workers? #699
- Getting Postgres Errors on killing development server after setting up Goodjob #692
Merged pull requests:
- Fix Project v2 GitHub Actions #701 (bensheldon)
- Remove development dependencies: memory_profiler, rbtrace, sigdump #700 (bensheldon)
- Allow concurrency limits to be configured dynamically with lambda/proc #696 (baka-san)
- Add additional details to Concurrency Control explanation #695 (bensheldon)
v3.4.2 (2022-08-13)
Fixed bugs:
- Jobs enqueued via dashboard ignores app default_locale #697
- Enqueues Cron jobs with I18n default locale #698 (esasse)
- Include better exception log messages, including class and backtrace #693 (bensheldon)
Closed issues:
- Do we need to implement concurrency with scheduled cron jobs? #690
- Uninitialized constant GoodJob::JobsController #674
- ActiveRecord::StatementInvalid: PG::ConnectionBad: PQsocket() can't get socket descriptor every 30 minutes aprox. #579
- Handle assets in dashboard when rails app is behind proxy path #424
v3.4.1 (2022-08-06)
Closed issues:
Merged pull requests:
- Only report Notifier connection errors once after they happen 3 consecutive times #689 (bensheldon)
v3.4.0 (2022-08-05)
Implemented enhancements:
- Add cron_enabled attribute to good_job and pass it to process current state #675 (saksham-jain)
- Reverse Dashboard Filter Hierarchy to be: queues+jobs then state #666 (bensheldon)
- Allow cron entries to be temporarily disabled and re-enabled through the Dashboard #649 (sasha-id)
- Add Configuration.total_estimated_threads to report number of threads consumed by GoodJob #645 (bensheldon)
Closed issues:
- Cron Schedule jobs add disable action #540
Merged pull requests:
- Removed text that implied an existing feature had not been finished #688 (pgvsalamander)
v3.3.3 (2022-08-02)
Fixed bugs:
- Detect usage of
puma
CLI for async mode #686 (bensheldon)
Closed issues:
- Async not working Rails 7 with puma CLI #685
v3.3.2 (2022-07-27)
Fixed bugs:
- Defer setting Adapter's execution mode until Rails initializes #683 (bensheldon)
v3.3.1 (2022-07-26)
Implemented enhancements:
Fixed bugs:
- Only count _active_ processes in the Navbar #680 (bensheldon)
- Remove Zeitwerk and use explicit requires to be more like an engine #677 (bensheldon)
Closed issues:
- Dashboard UI Invalid count of running process #678
Merged pull requests:
- Lock to dotenv 2.7.x for Ruby 2.5 compatibility #682 (bensheldon)
- Create global GoodJob.configuration object #681 (bensheldon)
v3.3.0 (2022-07-24)
Implemented enhancements:
- Dashboard: Update cron and processes to match jobs listing #676 (bkeepers)
- Dashboard: improvements to jobs index and show pages #672 (bkeepers)
Fixed bugs:
- Replace "timestamp" column-type in migrations with "datetime" #671 (bensheldon)
Closed issues:
- Readme should consistently encourage usage of
config.good_job....
instead ofGoodJob.
configuration #628 - Improve the "Gem development" section of README? #551
- Simplify Rails initialization to only be a mountable Engine #543
Merged pull requests:
- Improve Readme description of v3 job preservation defaults #670 (bensheldon)
- update Gemfile.lock to latest dependencies #647 (jrochkind)
v3.2.0 (2022-07-12)
Implemented enhancements:
v3.1.0 (2022-07-11)
Implemented enhancements:
- Show job/cron/process counts in the Navbar #663 (bensheldon)
- Improve Dashboard display of parameters (CronEntry kwargs; Process configuration; Job and Execution database values) #662 (bensheldon)
- Dequeing should be first-in first-out #651 (jrochkind)
Fixed bugs:
- Don't delegate
GoodJob::Job#status
to executions to avoid race condition #661 (bensheldon)
Closed issues:
- How to suppress repetitive logs in development? #658
- 500 Internal Server Error Exception in web interface trying to view running jobs #656
- Cron schedule page in dashboard not showing kwargs #608
- Paralelism x database connections #569
v3.0.2 (2022-07-10)
Fixed bugs:
- Copy forward concurrency key value when retrying a job, rather than regenerating it #622
- All concurrency controlled jobs throw exceptions and are rescheduled if they are called using perform_now #591
Closed issues:
- Queue config not respecting limits #659
- UI engine does not work without explicit require #646
- Should
:inline
adapter mode retry jobs? #611 - Error Job Not Preserved #594
- Release GoodJob 3.0 #507
- Improve security of Gem releases #422
Merged pull requests:
- Preserve initial concurrency key when retrying jobs #657 (bensheldon)
- Add Dashboard troubleshooting note to explicitly require the engine #654 (bensheldon)
- Removes wrong parentheses #653 (esasse)
v3.0.1 (2022-07-02)
Fixed bugs:
- Fix
GoodJob.cleanup_preserved_jobs
to usedelete_all
instead ofdestroy_all
#652 (bensheldon)
Closed issues:
- ERROR: relation "good_jobs" does not exist at character 454 #308
Merged pull requests:
- Create codeql-analysis.yml #648 (bensheldon)
v3.0.0 (2022-06-26)
Implemented enhancements:
- By default, preserve job records and automatically them clean up #545 (bensheldon)
Merged pull requests:
- Update tests to reflect default of
GoodJob.preserve_job_records = true
; update appraisal Gemfiles too #643 (bensheldon) - Remove database migration shims and old migrations #642 (bensheldon)
- Remove support for EOL Rails 5.2 #637 (bensheldon)
- Remove/rename deprecated behavior and constants for GoodJob v3 #633 (bensheldon)
v2.99.0 (2022-06-26)
Closed issues:
- How to accomplish user controlled recurring jobs? #640
- "uninitialized constant GoodJob::Execution" in development env #634
Merged pull requests:
- Create upgrade instructions for v2.99 -> v3.0.0 #641 (bensheldon)
- Update development dependencies; delete Gemfile.lock in CI to avoid Ruby version dependency mismatches #639 (bensheldon)
- Put more model files in
lib/models
and align specs too #638 (bensheldon) - Generate sha256 checksums on gem release too #636 (bensheldon)
v2.17.1 (2022-06-24)
Fixed bugs:
- Move models out of
app
intolib/models
#635 (bensheldon)
Closed issues:
- dashboard "delete all" does not work #630
- Concurrency controlled jobs cause infinite loops when perform_limit is exceeded in test environments #609
Merged pull requests:
- Better isolate test environment: run server integration tests on port 3009 with custom pidfile; scope advisory lock counts to test database #632 (bensheldon)
v2.17.0 (2022-06-23)
Merged pull requests:
- Remove nonexistant
engine/lib
from $LOAD_PATH #629 (bensheldon) - Mention in README that dashboard can't see completed jobs unless they are preserved #627 (jrochkind)
- Clarify README on default in development #623 (jrochkind)
- Convert GoodJob into a single mountable engine (instead of a plugin plus optional engine) #554 (bensheldon)
v2.16.1 (2022-06-18)
Fixed bugs:
- Fix
:inline
mode with future behavior to run unscheduled jobs immediately #620 (bensheldon)
Merged pull requests:
- Version check
Zeitwerk::Loader.new(warn_on_extra_files: false)
flag #619 (bensheldon)
v2.16.0 (2022-06-17)
Implemented enhancements:
- Allow inline executor to respect scheduled jobs; deprecate old behavior. Add
GoodJob.perform_inline
#615 (bensheldon)
Closed issues:
- Upgrading zeitwerk to 2.6.0 causes a warning related to good_job #616
v2.15.2 (2022-06-17)
Closed issues:
- ActiveRecord::StatementInvalid PG::ProgramLimitExceeded: ERROR: index row size 3296 exceeds btree version 4 maximum 2704 for index #612
Merged pull requests:
- Zeitwerk ignore
lib/active_job
#617 (bensheldon)
v2.15.1 (2022-05-24)
Closed issues:
- dashboard/engine – i18n: Wrong translation scope #605
- Concurrency not properly putting jobs in the queue #603
- Some dashboard actions have a routing error #602
Merged pull requests:
- Fix/i18n status scopes #607 (Jay-Schneider)
- Make "Live Polling" ToC entry clickable #606 (aried3r)
- Update readme explaining Concurrency implementation and how to integrate Dashboard with API-only Rails apps #604 (bensheldon)
v2.15.0 (2022-05-18)
Implemented enhancements:
- Remove ability to destroy individual Executions from Dashboard; rename "Toggle" to "Inspect" everywhere #601 (bensheldon)
- Adds the ability to delete jobs on the dashboard; add
cleanup_discarded_jobs
option to retain discarded jobs during cleanup #597 (TAGraves) - Dashboard: show more details about jobs #575 (bkeepers)
Closed issues:
- Show status on jobs#show page #547
Merged pull requests:
- Disable ActiveRecord Connection Reaper in test #600 (bensheldon)
- Update README dashboard screenshot #599 (aried3r)
v2.14.4 (2022-05-15)
Fixed bugs:
- Fix Concurrency extension to not break
perform_now
#593 (bensheldon)
v2.14.3 (2022-05-13)
Fixed bugs:
Closed issues:
- NoMethodError: undefined method `current_tags' for nil:NilClass #596
- When running rspec, I get: current transaction is aborted, commands ignored until end of transaction block #595
- CLI healtheck only listening on localhost, not reachable for Kubernetes #592
Merged pull requests:
- Improve development instructions and tooling (rename bin/rails, add bin/appraisal) #590 (bensheldon)
- Replace test Instrumentation mocking with temporary subscriptions #589 (bensheldon)
- Update to development to Ruby 3.0.4, include
matrix
gem in development Gemfile #588 (bensheldon)
v2.14.2 (2022-05-01)
Fixed bugs:
- Reintroduce fixed "Apply to all" mass action #586 (bensheldon)
Closed issues:
- how to get the number of tasks in the queue and the size of the queue? #564
- GoodJob tells me to upgrade but migrations fail #544
Merged pull requests:
- Update development dependencies #584 (bensheldon)
- Refactor Dashboard Live Poll javascript #582 (bensheldon)
v2.14.1 (2022-04-26)
Fixed bugs:
- Temporarily disable Mass Action "Apply to all" because the action is badly scoped #583 (bensheldon)
v2.14.0 (2022-04-26)
Implemented enhancements:
- Add mass update operations for jobs to Dashboard #578 (bensheldon)
Closed issues:
- Allow "mass"-actions through Dashboard (e.g. retry all) #446
Merged pull requests:
- Track down incompatibility/race condition between JRuby and RSpec mocks in tests #581 (bensheldon)
v2.13.2 (2022-04-25)
Fixed bugs:
- Namespaces assets per Rails docs #580 (kylekthompson)
v2.13.1 (2022-04-22)
Implemented enhancements:
- Dashboard: Use toasts to show notices and alerts #577 (bkeepers)
- Remove executions from the dashboard #576 (bkeepers)
Fixed bugs:
ActionMailer::MailDeliveryJob
executing twice #329
Closed issues:
- Possible encryption feature? #561
- Inconsistencies in configuration settings #380
- Lockable should accept an explicit keys on class methods too #341
- Run Scheduler#cache_warm on global thread pool instead of Scheduler's thread pool #286
Merged pull requests:
- Use javascript importmaps for Dashboard #574 (bensheldon)
v2.13.0 (2022-04-19)
Implemented enhancements:
Closed issues:
- Internationalize/I18n the Dashboard Engine #408
Merged pull requests:
- Fix Russian translation linting #573 (bensheldon)
v2.12.2 (2022-04-18)
Fixed bugs:
- Un-deprecate Adapter's
execution_mode
argument #567 (bensheldon)
Merged pull requests:
v2.12.1 (2022-04-18)
Implemented enhancements:
Fixed bugs:
- I18n::InvalidLocale (:en is not a valid locale): #549
- FIX: make 'default_url_options' method private #562 (friendlyantz)
Closed issues:
- Exponential backoff by default? #563
- Finished without Error #552
- Track processes in the database #421
Merged pull requests:
- Remove WIP comments from dashboard #566 (bkeepers)
- Add i18n-tasks to linter, add binstub and move config to project root #559 (bensheldon)
v2.12.0 (2022-04-05)
Closed issues:
- TimeTask timeouts are now ignored as these were not able to be implemented correctly #555
- undefined method `relative_time' when include_all_helpers is false #550
- ArgumentError: wrong number of arguments (given 1, expected 0; required keyword: schedule) - cron #546
Merged pull requests:
- Deprecate Adapter configuration of job execution/cron #558 (bensheldon)
- Remove usage of Concurrent::TimerTask's timeout_interval #557 (bensheldon)
- Include locale in html lang attribute #556 (bensheldon)
- Rename
GoodJob::BaseController
toGoodJob::ApplicationController
#553 (shouichi) - Internationalize/I18n the Dashboard Engine #497 (JuanVqz)
v2.11.3 (2022-03-30)
Fixed bugs:
- Add explicit
kwargs:
key to cron configuration #548 (bensheldon)
Closed issues:
- How to run clean up preserved jobs in cron? #541
- Erroring with "Too many open files" when good_job tries reconnecting to database #530
- Can't cast Array #529
Merged pull requests:
- Use bundle add instead #542 (glaucocustodio)
- Update Readme to better explain queues, pools, threads, and database connections; update CLI to frontload queue option #539 (bensheldon)
v2.11.2 (2022-03-03)
Closed issues:
- Best practices in deploying and monitoring a queue #523
Merged pull requests:
- Wrap Rspec before and example blocks with a mutex for JRuby #537 (bensheldon)
- Delegate
ActiveJobJob.table_name
toExecution
and prevent it from being directly assignable #536 (bensheldon) - Enable DB table names customization #535 (dimvic)
- Added a chapter on how to prepare for production. #525 (stas)
v2.11.1 (2022-03-01)
Fixed bugs:
- Ensure sticky footer doesn't overlap paginater; fix polling interval to 30 seconds, not ms #534 (bensheldon)
Closed issues:
- Pagination buttons hidden behind footer #533
v2.11.0 (2022-02-27)
Implemented enhancements:
- Add support for live polling the dashboard #528 (danielwestendorf)
Closed issues:
- How do I ensure that a the same job can't run twice? (unique job / avoid duplicates) #531
- Bulk reschedule and discard jobs via dashboard #527
- "Live Poll" dashboard #526
v2.10.0 (2022-02-18)
Implemented enhancements:
- Dashboard: update search filters and some small UI updates #518 (multiplegeorges)
Closed issues:
- Cron jobs not getting run #519
- Slow queries with many finished entries and concurrency control #514
- Make default retry behaviour safer #505
Merged pull requests:
- Fix Benchmark job throughput script #522 (douglara)
- Update development Gemfile.lock #521 (bensheldon)
- Ensure Rails 6.0 is tested against Ruby 3.0; use Ruby 3.0 in demo environment #520 (bensheldon)
- Document safer setting for retry_on_unhandled_error #517 (tamaloa)
v2.9.6 (2022-02-07)
Merged pull requests:
v2.9.5 (2022-02-07)
Fixed bugs:
- Transactions in "aborting" threads do not commit; causes GoodJob::Process record not destroyed on exit #489
- Deserialize ActiveJob arguments when manually retrying a job #513 (bensheldon)
Closed issues:
- Concurrency key proc is missing
arguments
when retrying a discarded job. #512 - Cron Schedule not visible in dashboard #496
Merged pull requests:
- Rename methods to
advisory_lock_key
and allow it to take a block instead ofwith_advisory_lock
#511 (bensheldon) - README: Limiting concurrency - fetch symbol instead of string #510 (BenSto)
- Add arbitrary lock on class level too #499 (pandwoter)
v2.9.4 (2022-01-31)
Fixed bugs:
- Fix navbar toggler #506 (JuanVqz)
- Guard LogSubscriber against tagged logger without a formatter #504 (bensheldon)
- Markdown lint fixes + Added missing responsive meta tag #492 (zeevy)
Closed issues:
- The navbar icon doesn't show the navbar menu when clicking it #503
- Not all loggers have a formatter #502
- Error logs from failed jobs used all storage space #495
Merged pull requests:
- Update Code of Conduct to Contributor Covenant 2.1 #501 (bensheldon)
- Test with Ruby 3.1 #498 (aried3r)
v2.9.3 (2022-01-23)
Fixed bugs:
- Use
*_url
route helpers for Dashboard assets to avoid being overridden byconfig.asset_host
#493 (bensheldon)
Closed issues:
- Assets not loaded when Rails is configured with a different hostname for assets #491
v2.9.2 (2022-01-19)
Fixed bugs:
- Error on GJ admin UI search form #487
- Use
websearch_to_tsquery
or (plainto_tsquery
for Postgres < v11) for Dashboard search filter #488 (bensheldon)
Merged pull requests:
- Update README to illustrate using named arguments for the unique key. #486 (phallstrom)
- Add details about exactly where to require the engine. #485 (phallstrom)
- $ symbol gets copied when clicking on the copy button #484 (zeevy)
v2.9.1 (2022-01-13)
Fixed bugs:
- Start async adapters once
ActiveRecord
andActiveJob
have loaded, potentially beforeRails.application.initialized?
#483 (bensheldon)
Closed issues:
- Graceful fallback to polling when LISTEN/NOTIFY isn't available #482
- Long running locks on latest good job #480
v2.9.0 (2022-01-09)
Implemented enhancements:
- Add JRuby / JDBC support for LISTEN #479 (bensheldon)
Merged pull requests:
- Remove demo CleanupJob in favor of using built-in cleanup intervals #478 (bensheldon)
v2.8.1 (2022-01-03)
Implemented enhancements:
- Add indexes to
good_jobs.finished_at
and haveGoodJob.cleanup_preserved_jobs
delete all executions for a given job #477 (bensheldon)
Closed issues:
- finished_at should be indexed and clean up should clean up all of a job's executions #476
Merged pull requests:
- Update development Ruby (2.7.5) and Rails (6.1.4.4) versions #475 (bensheldon)
- Clean up server integration tests #474 (bensheldon)
v2.8.0 (2021-12-31)
Implemented enhancements:
- GoodJob should automatically clean up after itself and delete old job records #412
- Track processes in the database and on the Dashboard #472 (bensheldon)
- Allow Scheduler to automatically clean up preserved jobs every N jobs or seconds #465 (bensheldon)
Closed issues:
- Is there a way to show how many worker/process is running currently #471
- Jobs stuck in the unfinished state #448
Merged pull requests:
- Doublequote Ruby 3.0 in testing matrix #473 (bensheldon)
- Have demo CleanupJob use GoodJob.cleanup_preserved_jobs #470 (bensheldon)
- Test with Rails 7.0.0 #469 (aried3r)
v2.7.4 (2021-12-16)
Fixed bugs:
Closed issues:
- Add nonce: true to engine views #467
- Updating good_job breaks my Rails 7 alpha 2 local development #462
Merged pull requests:
- Update appraisal for Rails 7.0.0.rc1 #466 (bensheldon)
v2.7.3 (2021-11-30)
Fixed bugs:
- Logger error on 2.7.2 #463
- Fix Railtie configuration assignment when Rails configuration is a Hash, not an OrderedOptions #464 (bensheldon)
v2.7.2 (2021-11-29)
Implemented enhancements:
- Allow GoodJob global configuration accessors to also be set via Rails config hash #460 (bensheldon)
Merged pull requests:
- Use
ActiveRecord::Relation::QueryAttribute
when setting up bindings forexec_query
#461 (bensheldon) - Configure RSpec
config.example_status_persistence_file_path
#459 (bensheldon) - Defer async initialization until Rails fully initialized #454 (bensheldon)
v2.7.1 (2021-11-26)
Fixed bugs:
- Unclear error when database can't be reached #457
- Remove Concurrent::Delay wrapping of database-loading methods #458 (bensheldon)
- Do not delete csp policies when checking csp policies #456 (JonathanFrias)
Closed issues:
- How to suppress job scheduler logs? #455
- Configuration in environments/*.rb overrides application.rb #453
- Testing jobs synchronously #435
- HTTP health check endpoint #403
v2.7.0 (2021-11-10)
Implemented enhancements:
- Add http probe for CLI healthcheck/readiness/liveliness #452 (bensheldon)
- Add explicit Content Security Policy (CSP) for Dashboard #449 (bensheldon)
Closed issues:
- Add a default Content-Security-Policy for the Dashboard #420
v2.6.2 (2021-11-05)
Fixed bugs:
- Rename Filterable#search to Filterable#search_text to avoid name collision #451 (bensheldon)
Closed issues:
- v2.6.1 is incompatible with gem thinking-sphinx #450
v2.6.1 (2021-11-05)
Implemented enhancements:
- Allow job management (retry, destroy) through the Web UI #256
- Add fulltext search filter #440 (bensheldon)
Fixed bugs:
- Unsubscribed LISTEN forever after database connection lost #303
- Add
PG::UnableToSend
andPG::Error
as a Notifier connection error #445 (bensheldon)
Closed issues:
- Question: what's the correct way to handle database connection pool size when using cron #443
- Add a search bar to Dashboard #432
- Hacktoberfest 2021 #393
- Ideas for improvements to Cron #392
- Fix flakey test that times out #382
Merged pull requests:
- Update development dependencies #447 (bensheldon)
- Replace Chartist.js with Chart.js #444 (bensheldon)
- Fix JRuby flake: "Scheduler#create_thread returns false if there are no threads available" #442 (bensheldon)
v2.6.0 (2021-10-30)
Implemented enhancements:
- Allow for cron schedules to be expressed using fugit natural language parsing #441 (jgrau)
- Add Rails UJS javascript to Dashboard along with confirmations #437 (bensheldon)
- Reorganize Cron dashboard screen; add jobs drill-drown and enqueue-now action #436 (bensheldon)
Closed issues:
- Ability to express cron schedule using fugit natural language parser #439
- Best way to ensure ordering of a queue. #402
- ActiveJob concurrency raises FrozenError #386
v2.5.0 (2021-10-25)
Implemented enhancements:
- Add Reschedule, Discard, Retry Job buttons to Dashboard #425 (bensheldon)
- Use unique index on [cron_key, cron_at] columns to prevent duplicate cron jobs from being enqueued #423 (bensheldon)
Fixed bugs:
- Dashboard fix preservation of
limit
andqueue_name
filter params; add pager to jobs #434 (bensheldon)
Closed issues:
- PgLock state inspection is not isolated to current database #431
- Race condition with concurency control #378
Merged pull requests:
- Add Readme note about race conditions in Concurrency's
enqueue\_limit
and `perform_limit #433 (bensheldon) - Test harness should only force-unlock db connections for the current database #430 (bensheldon)
v2.4.2 (2021-10-19)
Implemented enhancements:
- Add migration version to install/update generator templates #426 (bensheldon)
Fixed bugs:
- Explicitly unscope queries within block yielded to Lockable.within_advisory_lock #429 (bensheldon)
- Fix Demo CleanupJob args #427 (bensheldon)
Merged pull requests:
- Remove v1.99/v2 transitional extra advisory lock #428 (bensheldon)
v2.4.1 (2021-10-11)
Implemented enhancements:
- Support Datadog APM /
dd-trace-rb
#323 - Display info about used timezone. #398 (morgoth)
- Display cron schedules args in dashboard #396 (aried3r)
Fixed bugs:
- Inline adapter should raise unhandled exceptions during execution #416 (bensheldon)
- Enforce english locale in UI #407 (morgoth)
Closed issues:
- Finished jobs don't show up as finished #415
- Inline adapter should raise unhandled exceptions during execution #410
- Rewrite Scheduler "worker" thread name to be
thread
#406 - "WARNING: you don't own a lock of type ExclusiveLock" in Development #388
- Improve Readme's "Optimize queues, threads, processes" section #132
Merged pull requests:
- Ignore Rails HEAD Appraisal until
rails new
fixed #419 (bensheldon) - Warn in Readme that configuration should not go into
config/initializers/*.rb
#418 (bensheldon) - Replace worker wording #409 (Hugo-Hache)
- Improve Readme's "Optimize queues, threads, processes" section #405 (Hugo-Hache)
- Update GH Test Matrix with more PG versions #401 (tedt10e)
- Extract cron configuration hash into CronEntry ActiveModel objects #400 (bensheldon)
- Remove errant copy-paste from app.json #397 (morgoth)
v2.4.0 (2021-10-02)
Implemented enhancements:
- Display schedule time relative to now. #394 (morgoth)
- Display cron schedules properties in dashboard #391 (aried3r)
Fixed bugs:
v2.3.1 (2021-09-30)
Fixed bugs:
- Wrap Scheduler task execution with Rails
reloader
instead ofexecutor
to avoid database connection changing during code reload #389 (bensheldon)
Merged pull requests:
- Log Cleanup thread tests, introduce "Slow" ExampleJob type, refactor ExampleJob types, run cron and log Postgres warnings in GoodJob Development harness #390 (bensheldon)
v2.3.0 (2021-09-25)
Implemented enhancements:
- Create an ActiveJobJob model and Dashboard #383 (bensheldon)
- Preserve page filter when deleting execution #381 (morgoth)
Merged pull requests:
- Update GH Test Matrix with latest JRuby 9.3.0.0 #387 (tedt10e)
- Improve test support's ShellOut command's process termination and add test logs #385 (bensheldon)
- @bensheldon Add Rails 7 alpha to Appraisal; update development dependencies #384 (bensheldon)
v2.2.0 (2021-09-15)
Implemented enhancements:
Fixed bugs:
- Fix Dashboard navigation active class for Scheduled Jobs #375 (bensheldon)
Closed issues:
- Rename
GoodJob::Job
to beGoodJob::Execution
#376 - More recognition in Rails community #370
- Concurrency control for all queued jobs #366
Merged pull requests:
- Rename
GoodJob::Job
toGoodJob::Execution
#377 (bensheldon) - Add example execution behavior (errored, retried, dead) to demo ExampleJob #374 (bensheldon)
- Add Passenger info for running in async mode #373 (aried3r)
- Update bootstrap to latest 5.1.1 #372 (morgoth)
v2.1.0 (2021-09-09)
Implemented enhancements:
- Add
total_limit:
option to GoodJob::Concurrency to be inclusive of counting both enqueued and performing jobs #369 (bensheldon) - Add button to toggle all job params in Dashboard #365 (bensheldon)
Fixed bugs:
- Fix unlock key for Lockable#with_advisory_lock #368 (bensheldon)
Closed issues:
- Cron-like jobs not always executed, possible reasons? #359
Merged pull requests:
- When shelling out in tests, send SIGKILL if process does not exit #371 (bensheldon)
- Have all tests use stubbed TestJob #364 (bensheldon)
v2.0.5 (2021-09-06)
Closed issues:
- Serialized Params and ActiveJob extensions #362
Merged pull requests:
deep_dup
serialized job data instead ofattr_readonly
to prevent overwriting #363 (bensheldon)
v2.0.4 (2021-08-31)
Fixed bugs:
- Remove
NOW()
from Dashboard SQL; fix chart x-axis order left-to-right, old-to-new #355 (bensheldon)
Closed issues:
- Content security policy for dashboard; nest shared view partials; problematic NOW() SQL in Dashboard query #304
Merged pull requests:
- Update development dependencies and ruby to 2.7.4 #358 (bensheldon)
- Add info about how to disable polling to README #357 (aried3r)
v2.0.3 (2021-08-31)
Implemented enhancements:
Closed issues:
- Expose CLI
cleanup_preserved_jobs
functionality viaGoodJob
? #351
v2.0.2 (2021-08-27)
Fixed bugs:
- v2.0: Generators support multiple databases:
--database
option,migrations_paths
, customGoodJob.active_record_parent_class
#354 (bensheldon)
Closed issues:
- Migrations generator assumes migrations are in db/migrate #352
Merged pull requests:
- README style/typo fixes: "web server" and possessive "Rails'" #350 (aried3r)
- Add examples of setting config.good_job.queues #349 (zachmargolis)
v1.99.1 (2021-08-27)
Closed issues:
- Does Good job support delay method? #344
v2.0.1 (2021-08-24)
Implemented enhancements:
Closed issues:
- Is there any value in seeing a backtrace for ConcurrencyExceededError? #347
- Release GoodJob 2.0 #307
- Unhandled ActiveJob errors should trigger GoodJob.on_thread_error #247
v2.0.0 (2021-08-24)
Implemented enhancements:
- Concurrency's enqueue_limit should exclude performing jobs from count #317
- Rename
:async
to:async_all
;:async_server
to:async
and set as Development environment default; do not poll in async development #343 (bensheldon) - Exclude executing jobs from Concurrency's enqueue_limit's count #342 (bensheldon)
- Unhandled ActiveJob errors should trigger GoodJob.on_thread_error #312 (bensheldon)
Closed issues:
- Swap behavior of
async
withasync_server
; renameasync
execution mode to beasync_all
; defaultasync
in Development; #340 - Add hyphen to lock key. e.g. "[table_name]-[column]" instead of "[table_name][column]" #335
- Use
async_server
as default execution mode in Development environment #139
Merged pull requests:
- Remove v1.0 deprecation notices and incremental migrations #338 (bensheldon)
- Lock GoodJob::Job on active_job_id instead of the row id; adds separator hyphen to lock key #337 (bensheldon)
v1.99.0 (2021-08-24)
Closed issues:
- Set Advisory Lock on ActiveJob job uuid instead of GoodJob's job uuid #272
Merged pull requests:
- Add upgrade instructions for v1 to v2 #345 (bensheldon)
- Add transitional/temporary additional lock on good_jobs-[active_job_id] #336 (bensheldon)
v1.13.2 (2021-08-18)
Merged pull requests:
- Add deprecation notice that
async
mode will be renamedasync_all
in GoodJob v2.0 #339 (bensheldon)
v1.13.1 (2021-08-18)
Fixed bugs:
- Don’t attempt to enforce concurrency limits with other queue adapters #333 (codyrobbins)
v1.13.0 (2021-08-18)
Implemented enhancements:
- Track if a GoodJob::Job has been subsequently retried #331 (bensheldon)
- Wrap and truncate error message, which can be a huge text #294 (morgoth)
Closed issues:
- Add hyphen to lock string. e.g. "table_name-column" instead of "table_namecolumn #334
- Optimize db indexes in advance of v2.0.0 #332
- wait_until in development? #330
- Race conditions in ActiveJob concurrency extension #325
- Store in database if a job has been ActiveJob retried #321
- Revisit and embrace concurrency control, scheduled jobs, and other extensions of ActiveJob #255
- Why 1 million jobs per day? #222
v1.12.2 (2021-08-13)
Fixed bugs:
- Fixes for race conditions in ActiveJob concurrency extension #326 (codyrobbins)
Merged pull requests:
- On gem release, add instructions to author a Github Release #324 (bensheldon)
v1.12.1 (2021-08-05)
Fixed bugs:
- Ensure CLI can shutdown cleanly with multiple queues and timeout #319 (bensheldon)
Closed issues:
- Setting a shutdown timeout causes the CLI executor to throw an exception on shutdown. #318
- PgBouncer and prepared statements #269
- Question about locking internals #212
- Encoding::UndefinedConversionError ("\xE2" from ASCII-8BIT to UTF-8) #198
Merged pull requests:
- Fix Readme lint warnings #320 (bensheldon)
v1.12.0 (2021-07-27)
Implemented enhancements:
- Add the ability to schedule repeating / recurring / cron-like jobs #53
- Add cron-like support for recurring/repeating jobs #297 (bensheldon)
Fixed bugs:
- Place Dashboard shared view partials under
good_job
namespace #310 (bensheldon) - Ensure Dashboard inline javascript has CSP nonce for strict Content-Security Policy #309 (bensheldon)
v1.11.3 (2021-07-25)
Closed issues:
Merged pull requests:
- Have prettier Dashboard asset urls e.g.
bootstrap.css
instead ofbootstrap_css.css
#306 (bensheldon) - Create dashboard demo app on Heroku #305 (bensheldon)
- Add Frozen String Literal to all files #302 (tedt10e)
v1.11.2 (2021-07-20)
Fixed bugs:
- Notifier waits to retry listening when database is unavailable #301 (bensheldon)
Closed issues:
- Handle database connection drops #296
- Using the
async
worker results inActiveModel::UnknownAttributeError unknown attribute 'create_with_advisory_lock' for GoodJob::Job
. #290
Merged pull requests:
- Rename development and test databases to be
good_job
#300 (bensheldon) - Move generators spec into top-level spec directory; update dependencies #299 (bensheldon)
v1.11.1 (2021-07-07)
Fixed bugs:
- Defer accessing ActiveRecord
primary_key
in Lockable #293 (bensheldon)
Closed issues:
- Database connection required while loading the code on 1.10.x #291
v1.11.0 (2021-07-07)
Implemented enhancements:
- Add concurrency extension for ActiveJob #281 (bensheldon)
Closed issues:
- Investigate GoodJob concurrency #289
- Problem with migrating database on 1.10.0 #287
- Support migration --database option for install task? #267
- Add GoodJob to Ruby Toolbox #243
- Custom advisory locks to prevent certain jobs from being worked on concurrently? #206
v1.10.1 (2021-06-30)
Fixed bugs:
- Remove
FOR UPDATE SKIP LOCKED
from job locking sql statement #288 (bensheldon)
Merged pull requests:
v1.10.0 (2021-06-29)
Implemented enhancements:
- Use
pg_advisory_unlock_all
after each thread's job execution; fix Lockable return values; improve test stability #285 (bensheldon) - Add
rails g good_job:update
command to add idempotent migration files, includingactive_job_id
,concurrency_key
,cron_key
columns #266 (bensheldon)
Fixed bugs:
- Dashboard AssetsController does not raise if verify_authenticity_token is not in the callback chain #284 (bensheldon)
Closed issues:
- [Question] Dashboard assets not showing #282
Merged pull requests:
- Separately cache Appraisal gems in GH Action #280 (bensheldon)
- Use custom RSpec doc formatter to show spec examples that are running #279 (bensheldon)
- Update development dependencies #278 (bensheldon)
- Fix Scheduler integration spec to ensure jobs are run in the Scheduler under test #276 (bensheldon)
- Add example benchmark for job throughput #275 (bensheldon)
- Allow Lockable to be passed custom column, key, and Postgres advisory lock/unlock function #273 (bensheldon)
v1.9.6 (2021-06-04)
Implemented enhancements:
Closed issues:
- Pause jobs during migration / maintenance? #257
- How to properly report errors to error tracker service #159
v1.9.5 (2021-05-24)
Implemented enhancements:
Closed issues:
- Update from bootstrap 4 to bootstrap 5 #258
Merged pull requests:
- Serve Dashboard assets as discrete paths instead of inlining #262 (bensheldon)
- Fix Gemfile.lock's missing JRuby dependencies; fix release script and add check #261 (bensheldon)
v1.9.4 (2021-05-18)
Implemented enhancements:
Fixed bugs:
- Unify displaying timestamps #252 (morgoth)
- Fix dashboard jobs endless pagination with timezone handling #251 (morgoth)
Closed issues:
- exception_executions not counted correctly? #215
- Document issues with PgBouncer and session-level Advisory Locks #52
Merged pull requests:
- Add handy scope for filtering by job class #259 (morgoth)
- Nest exception stub within job class and cleanup let! precedence to fix flakey JRuby tests #254 (bensheldon)
- Move good_job_spec.rb to proper location in lib directory #250 (bensheldon)
- Refactor deprecated wait parameter and assorted improvements #249 (bensheldon)
- Update development dependencies (Rails v6.1.3.2) #248 (bensheldon)
- Update YARD documentation param types and return values #239 (bensheldon)
v1.9.3 (2021-05-10)
Implemented enhancements:
- Add async_server detection for extensions of rack handler #246 (bensheldon)
Closed issues:
- Not processing unfinished jobs across server restarts using async_server mode on Iodine server #244
- No connection pool for 'ActiveRecord::Base' found #236
v1.9.2 (2021-05-10)
Fixed bugs:
- Run Scheduler#warm_cache operation in threadpool executor #242 (bensheldon)
Closed issues:
- Jobs not visible in dashboard #245
Merged pull requests:
- Use GoodJob::Job::ExecutionResult object instead of job execution returning an ordered array #241 (bensheldon)
- Update development dependencies #240 (bensheldon)
v1.9.1 (2021-04-19)
Implemented enhancements:
v1.9.0 (2021-04-16)
Implemented enhancements:
- Add
async_server
option to run async only in Rails web server process #230 (bensheldon) - FreeBSD startup script #221 (lauer)
Fixed bugs:
- Fix instrumentation of GoodJob::Poller finished_timer_task event #233 (bensheldon)
Closed issues:
- Cannot run db:migrate when execution mode is :async #229
- How do you enqueue a job to be executed immediately outside of Rails (eg. creating a new record of good_jobs in Postgresql)? #225
- Feature Ideas #220
- Goodjob startup script for FreeBSD #214
- Only start async mode executors when server is running #194
Merged pull requests:
- Move executable flags from constants to accessors on GoodJob::CLI #234 (bensheldon)
- Add custom Scheduler::TimerSet #232 (bensheldon)
- Fix assorted constant references in YARD documentation #231 (bensheldon)
- Update GH Test Matrix with latest JRuby 9.2.17.0 #228 (tedt10e)
- Update gem dependencies #227 (bensheldon)
- Remove leftover text from Readme #226 (weh)
- Fix appraisal and bundler version CI conflicts #224 (bensheldon)
- Update GH Test Matrix with latest JRuby #223 (tedt10e)
v1.8.0 (2021-03-04)
Implemented enhancements:
- Wait then stop on shutdown #126
- Add shutdown-timeout option to configure the wait for jobs to gracefully finish before stopping them #213 (bensheldon)
Fixed bugs:
- Ensure Job#serialized_params are immutable #218 (bensheldon)
Closed issues:
Merged pull requests:
- Update bundler and Appraisals so Rails HEAD is locked to Ruby version >= 2.7 #219 (bensheldon)
v1.7.1 (2021-01-27)
Fixed bugs:
- Scheduler should always push a new task on completion of previous task, regardless of available thread calculation #209 (bensheldon)
Closed issues:
- Unexpected behavior with max_threads = 1 #208
Merged pull requests:
v1.7.0 (2021-01-25)
Implemented enhancements:
- Cache scheduled jobs in memory so they can be executed without polling #205 (bensheldon)
v1.6.0 (2021-01-22)
Implemented enhancements:
- Running as a daemon #88
- Add daemonize option to CLI #202 (bensheldon)
Closed issues:
- Rails 6.1 & async -
queue_parser': undefined method
first' for "*":String (NoMethodError) #195
Merged pull requests:
- Add scripts directory for benchmarking and dev tasks #204 (bensheldon)
- Fix YARD attr_ declarations for documentation #203 (bensheldon)
- Remove Appraisal gemfile locks #201 (bensheldon)
v1.5.0 (2021-01-18)
Implemented enhancements:
- Create Web UI Dashboard #50
- Configure GoodJob via
Rails.application.config
instead of recommendingGoodJob::Adapter.new
#199 (bensheldon)
Closed issues:
- JRuby Support #160
Merged pull requests:
- Update bundler version to 2.2.5 #200 (bensheldon)
- Update GH Test Matrix with minimum & latest JRuby version #197 (tedt10e)
- Fix JRuby version number #193 (tedt10e)
v1.4.1 (2021-01-09)
Fixed bugs:
- Do not add lib/generators to Zeitwerk autoloader #192 (bensheldon)
Closed issues:
- Issues with Heroku and Good Job #184
Merged pull requests:
- Add missing YARD docs and Dashboard screenshot #191 (bensheldon)
v1.4.0 (2020-12-31)
Implemented enhancements:
- Add JRuby support #167 (bensheldon)
v1.3.6 (2020-12-30)
Implemented enhancements:
- Call GoodJob.on_thread_error when Notifier thread raises exception #185 (bensheldon)
- Improve dashboard UI, fix button state, add unfiltering #181 (bensheldon)
Fixed bugs:
- Replace ActiveRecord execute usage and avoid potential memory leakage #187
- Does good_job hold on to advisory locks for finished jobs? #177
Merged pull requests:
- Run tests with Rails default configuration to enable Zeitwerk #190 (bensheldon)
- Update all Lockable queries to use exec_query instead of execute; clear async_exec results #189 (bensheldon)
- Have Lockable#advisory_locked? directly query pg_locks table #188 (bensheldon)
- Update development gems, including Rails v6.1 and Rails HEAD #186 (bensheldon)
- Update Appraisals for Rails 6.1 #183 (bensheldon)
- Add Ruby 3 to CI test matrix #182 (bensheldon)
v1.3.5 (2020-12-17)
Fixed bugs:
- Ensure advisory lock CTE is MATERIALIZED on Postgres v12+ #179 (bensheldon)
- Ensure that deleted jobs are unlocked #178 (bensheldon)
Closed issues:
Merged pull requests:
- Add Appraisal for Rails 6.1-rc2 #175 (bensheldon)
v1.3.4 (2020-12-02)
Fixed bugs:
v1.3.3 (2020-12-01)
Implemented enhancements:
v1.3.2 (2020-11-12)
Fixed bugs:
- (bug) MultiScheduler polling bug #171
- MultiScheduler should delegate to all schedulers when state is nil #172 (bensheldon)
v1.3.1 (2020-11-01)
Implemented enhancements:
- Extract polling from scheduler into Polling object #128
- Format serialized params to ease reading #170 (morgoth)
Fixed bugs:
- Don't disconnect a nil activerecord connection #161 (bensheldon)
Closed issues:
- Propose addition of GoodJob to queue-shootout benchmarks #40
Merged pull requests:
- Ensure Rails is a development dependency #169 (bensheldon)
- Fix Ruby 2.7 GH action by setting default bundler explicitly #166 (bensheldon)
- Cache ruby version explicitly in Github Action #165 (bensheldon)
- Update development dependencies, rubocop #164 (bensheldon)
- Fix intended constant hierarchy of GoodJob::Scheduler::ThreadPoolExecutor #158 (bensheldon)
- Add bin/test_app executable for Rails debugging #157 (bensheldon)
- Extract Scheduler polling behavior to its own object #152 (bensheldon)
v1.3.0 (2020-10-03)
Implemented enhancements:
- Lengthen default poll interval from 1 to 5 seconds #156 (bensheldon)
- Rename reperform_jobs_on_standard_error to retry_on_unhandled_error #154 (morgoth)
v1.2.6 (2020-09-29)
Implemented enhancements:
- Preserve only failed jobs #136
- Add
GoodJob.preserve_job_records = :on_unhandled_error
option to only preserve jobs that errored #145 (morgoth)
Fixed bugs:
- Fix LogSubscriber notifications for finished_timer_task and finished_job_task #148 (bensheldon)
Closed issues:
- run-once guarantee? #151
Merged pull requests:
- Add info how to setup basic auth for engine #153 (morgoth)
- Add documentation for Dashboard Rails::Engine #149 (bensheldon)
- Style cleanup to Job error handling #147 (bensheldon)
- Replace gerund titles in Readme #146 (bensheldon)
- Only allow Scheduler to be initialized with max_threads and poll_interval; remove full access to pool and timer_task options #137 (bensheldon)
v1.2.5 (2020-09-17)
Implemented enhancements:
- Use Zeitwerk for auto-loading #87
- Spike on data dashboard; pull in full Bootstrap CSS and JS #131 (bensheldon)
Fixed bugs:
poll-interval=-1
does not disable polling as intended #133- Update Gemspec to reflect that GoodJob is not compatible with Rails 5.1 #143 (bensheldon)
- Prevent jobs hanging #141 (morgoth)
- Add explicit require_paths to gemspec for engine #134 (bensheldon)
- Use
connection.quote_table_name
and add spacing for SQL concatenation #124 (bensheldon)
Closed issues:
- Lint - Introduce line character limits #122
- Jobs are not processed in multi schema setup. Apartment + GoodJob ( post 1.1.2 ) #117
- Host a documentation sprint #48
Merged pull requests:
- Test GoodJob against Rails HEAD #144 (bensheldon)
- Drop Ruby 2.4 support #142 (morgoth)
- Remove arguments from perform method #140 (morgoth)
- Extract "execute" method to reduce "perform" method complexity #138 (morgoth)
- Correct example on how to configure multiple queues by command line. #135 (morgoth)
- Update ActionMailer Job class, to match the default #130 (morgoth)
- Add initial Engine scaffold #125 (bensheldon)
- Zeitwerk Loader Implementation #123 (gadimbaylisahil)
- Update code-level documentation #111 (bensheldon)
v1.2.4 (2020-09-01)
Implemented enhancements:
- Add environment variable to mirror
cleanup_preserved_jobs --before-seconds-ago=SECONDS
#110 - Allow env variable config for cleanups #114 (gadimbaylisahil)
Fixed bugs:
- Better table name detection for Job queries #119 (gadimbaylisahil)
Closed issues:
- Remove unused PgLocks class #121
- Fix minor issue with CommandLine option links in README.md #116
- Unused .advisory_lock_details in PgLocks #105
Merged pull requests:
- Remove unused PgLocks class #120 (gadimbaylisahil)
- Fix readme CommandLine option links #115 (gadimbaylisahil)
- Have YARD render markdown files with GFM (Github Flavored Markdown) #113 (bensheldon)
- Add markdownlint to lint readme #109 (bensheldon)
- Remove unused method in PgLocks #107 (gadimbaylisahil)
- Re-organize Readme: frontload configuration, add Table of Contents #106 (bensheldon)
v1.2.3 (2020-08-27)
Closed issues:
- requiring more dependencies in then needed #103
Merged pull requests:
v1.2.2 (2020-08-27)
Implemented enhancements:
Fixed bugs:
- Freezes puma on code change #95
- Ruby 2.7 keyword arguments warning #93
- Return to using executor.wrap around Scheduler execution task #99 (bensheldon)
Closed issues:
- Add test for
rails g good_job:install
#57
Merged pull requests:
- Use more ActiveRecord in Lockable and not connection.execute #102 (bensheldon)
- Run CI tests on Ruby 2.5, 2.6, and 2.7 #101 (arku)
- Fix Ruby 2.7 keyword arguments warning #98 (arku)
- Remove executor/reloader for less interlocking #97 (sj26)
- Add test for
rails g good_job:install
#94 (arku)
v1.2.1 (2020-08-21)
Fixed bugs:
- undefined method `thread_mattr_accessor' when not requiring the Sprockets Railstie #85
Closed issues:
- Document comparison of GoodJob with other backends #51
Merged pull requests:
- Explicitly require thread_mattr_accessor from ActiveSupport #86 (bensheldon)
- Add comparison of other backends to Readme #84 (bensheldon)
v1.2.0 (2020-08-20)
Merged pull requests:
- Document GoodJob module #83 (bensheldon)
v1.1.4 (2020-08-19)
Implemented enhancements:
- Explicitly name threads for easier debugging #64
- Investigate Listen/Notify as alternative to polling #54
Merged pull requests:
- Add Postgres LISTEN/NOTIFY support #82 (bensheldon)
- Allow Schedulers to filter #create_thread to avoid flood of queries when running async with multiple schedulers #81 (bensheldon)
- Fully name scheduler threadpools and thread names; refactor CLI STDOUT #80 (bensheldon)
v1.1.3 (2020-08-14)
Fixed bugs:
- Job exceptions not properly attached to good_jobs record #72
Merged pull requests:
- Capture errors via instrumentation from retry_on and discard_on #79 (bensheldon)
- Document GoodJob::Scheduler with Yard #78 (bensheldon)
v1.1.2 (2020-08-13)
Implemented enhancements:
- Allow the omission of queue names within a scheduler #73
Merged pull requests:
- Allow named queues to be excluded with a minus #77 (bensheldon)
v1.1.1 (2020-08-12)
Implemented enhancements:
- Allow multiple schedulers within the same process. e.g.
queues=mice:2,elephants:4
#45
Merged pull requests:
- Allow instantiation of multiple schedulers via --queues #76 (bensheldon)
- Extract options parsing to Configuration object #74 (bensheldon)
v1.1.0 (2020-08-10)
Closed issues:
- Document reliability guarantees #59
- Document how to hook in exception monitor (Sentry, Rollbar, etc) #47
- Allow an Async mode #27
Merged pull requests:
- Add a callable hook on thread errors #71 (bensheldon)
- Clarify reliability guarantees #70 (bensheldon)
- Clean up Readme formatting; re-arrange tests for clarity and values #69 (bensheldon)
- Create an Async execution mode #68 (bensheldon)
- Move all stdout to LogSubscriber #67 (bensheldon)
- Allow schedulers to be restarted; separate unit tests from integration tests #66 (bensheldon)
v1.0.3 (2020-07-26)
Fixed bugs:
- Preserve GoodJob::Jobs when a StandardError is raised #60
Closed issues:
- Have an initial setup generator #6
Merged pull requests:
- Re-perform a job if a StandardError bubbles up; better document job reliability #62 (bensheldon)
- Update the setup documentation to use correct bin setup command #61 (jm96441n)
v1.0.2 (2020-07-25)
Fixed bugs:
- Fix counting of available execution threads #58 (bensheldon)
Merged pull requests:
v1.0.1 (2020-07-22)
Merged pull requests:
- Change threadpool idletime default to 60 seconds from 0 #49 (bensheldon)
v1.0.0 (2020-07-20)
v0.9.0 (2020-07-20)
Merged pull requests:
- Allow preservation of finished job records #46 (bensheldon)
v0.8.2 (2020-07-18)
Closed issues:
- Add a job timeout configuration to time out jobs that have run too long #19
Merged pull requests:
- Run Github Action tests on PRs from forks #44 (bensheldon)
- Fix Rubygems homepage URL #43 (joshmn)
v0.8.1 (2020-07-18)
Merged pull requests:
- Move where(scheduled_at: Time.current) into dynamic part of GoodJob::Job::Performer #42 (bensheldon)
v0.8.0 (2020-07-17)
Merged pull requests:
- Replace Adapter inline boolean kwarg with execution_mode instead #41 (bensheldon)
v0.7.0 (2020-07-16)
Closed issues:
- Always store a default priority (0) and scheduled_at(Time.current) #30
Merged pull requests:
- Add more examples to Readme #39 (bensheldon)
- Add additional Rubocops and lint #38 (bensheldon)
- Always store a default queue_name, priority and scheduled_at; index by queue_name and scheduled_at #37 (bensheldon)
v0.6.0 (2020-07-15)
Closed issues:
Merged pull requests:
- Improve generation of changelog #36 (bensheldon)
- Update Github Action Workflow for Backlog Project Board #35 (bensheldon)
- Add configuration options to good_job executable #33 (bensheldon)
- Extract Job querying behavior out of Scheduler #31 (bensheldon)
- Allow configuration of Rails queue adapter with
:good_job
#28 (bensheldon)
v0.5.0 (2020-07-13)
Merged pull requests:
- Update development Ruby to 2.6.6 and gems #29 (bensheldon)
v0.4.0 (2020-03-31)
Merged pull requests:
- Improve ActiveRecord usage for advisory locking #24 (bensheldon)
- Remove support for Rails 5.1 #23 (bensheldon)
v0.3.0 (2020-03-22)
Merged pull requests:
- Update development Ruby to 2.6.5 #22 (bensheldon)
- Simplify the internal API, removing JobWrapper and InlineScheduler #21 (bensheldon)
- Generate a new future for every executed job #20 (bensheldon)
- Configuration for maximum number of job execution threads #18 (bensheldon)
v0.2.2 (2020-03-08)
Merged pull requests:
- Gracefully shutdown Scheduler when executable receives TERM or INT #17 (bensheldon)
- Update Appraisals #16 (bensheldon)
v0.2.1 (2020-03-07)
Merged pull requests:
- Clean up Gemspec #15 (bensheldon)
- Set up Rubocop #14 (bensheldon)
- Add pg gem as explicit dependency #13 (bensheldon)
- Bump nokogiri from 1.10.7 to 1.10.9 #12 (dependabot[bot])
- Add Appraisal with tests for Rails 5.1, 5.2, 6.0 #11 (bensheldon)
v0.2.0 (2020-03-06)
Merged pull requests:
- Use Rails.logger and ActiveSupport::Notifications for logging instead of puts #10 (bensheldon)
- Remove minitest files #9 (bensheldon)
- Use scheduled_at and priority for scheduling #8 (bensheldon)
- Create Github Action workflow for PRs and Issues #7 (bensheldon)
v0.1.0 (2020-03-03)
Merged pull requests:
- Add executable with Thor #4 (bensheldon)
- Refactor adapter enqueing methods; expand Readme, tests, editorconfig #3 (bensheldon)
- Fetch new jobs within the worker thread itself; incrementally grow worker threads #2 (bensheldon)
- Set up Github Workflows for tests #1 (bensheldon)
* This Changelog was automatically generated by github_changelog_generator