Skip to content

Latest commit

 

History

History
3680 lines (2137 loc) · 211 KB

CHANGELOG.md

File metadata and controls

3680 lines (2137 loc) · 211 KB

Changelog

v4.0.2 (2024-07-08)

Full Changelog

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 deprecated Lockable #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:

v4.0.1 (2024-07-08)

Full Changelog

Fixed bugs:

  • Actually change smaller_number_is_higher_priority for v4 #1402 (Earlopain)

Merged pull requests:

v4.0.0 (2024-07-07)

Full Changelog

Implemented enhancements:

v3.99.0 (2024-07-07)

Full Changelog

Merged pull requests:

v3.30.1 (2024-07-06)

Full Changelog

Fixed bugs:

  • Fix Performance table formatting, change url from performances to singular performance #1393 (bensheldon)
  • Add a version check for Rails whether to use pg interval or calculate float #1389 (bensheldon)

Merged pull requests:

v3.30.0 (2024-07-05)

Full Changelog

Implemented enhancements:

  • Added GoodJob::DiscreteExecution#duration column #1374 (SebouChu)

Closed issues:

  • Job retried infinitely #1384

Merged pull requests:

  • Use newer syntax in documentation for wait config on retry #1380 (benoittgt)

v3.29.5 (2024-06-24)

Full Changelog

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)

Full Changelog

Fixed bugs:

v3.29.3 (2024-06-06)

Full Changelog

Fixed bugs:

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)

Full Changelog

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)

Full Changelog

Fixed bugs:

  • Fix AdvisoryLockable using wrong advisory_lockable_column attribute when aborting create_with_advisory_lock #1360 (bensheldon)

Closed issues:

  • Warn on unapplied migrations #1361
  • Undefined GoodJob::Process.advisory_lockable_column #1358

v3.29.0 (2024-05-22)

Full Changelog

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)

Full Changelog

Fixed bugs:

Closed issues:

  • Whitespace in queues configuration can cause issues. #1351
  • How to properly handle interrupts #1343
  • ActiveSupport::CurrentAttributes Compatibility #1341

Merged pull requests:

v3.28.2 (2024-04-26)

Full Changelog

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)

Full Changelog

Fixed bugs:

  • Ensure job context does not leak into extensions whenperform_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:

v3.28.0 (2024-04-19)

Full Changelog

Implemented enhancements:

  • Store and optionally display the full execution backtrace #1328 (Earlopain)
  • Store error backtraces on discrete executions #1325 (Intrepidd)

Fixed bugs:

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 Demo config.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)

Full Changelog

Fixed bugs:

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:

v3.27.3 (2024-03-29)

Full Changelog

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)

Full Changelog

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)

Full Changelog

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)

Full Changelog

Implemented enhancements:

Fixed bugs:

Closed issues:

  • Disabling probe #1290
  • Set an implicit order on models #1242

Merged pull requests:

v3.26.2 (2024-03-15)

Full Changelog

Closed issues:

  • Async mode blocks ActionDispatch::Reloader #1274

Merged pull requests:

v3.26.1 (2024-03-01)

Full Changelog

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)

Full Changelog

Implemented enhancements:

  • Add GoodJob.current_thread_running? and GoodJob.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)

Full Changelog

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:

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:

v3.24.0 (2024-02-12)

Full Changelog

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:

v3.23.0 (2024-01-23)

Full Changelog

Implemented enhancements:

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:

v3.22.0 (2024-01-03)

Full Changelog

Implemented enhancements:

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:

v3.21.5 (2023-12-12)

Full Changelog

Fixed bugs:

v3.21.4 (2023-12-11)

Full Changelog

Fixed bugs:

v3.21.3 (2023-12-10)

Full Changelog

Implemented enhancements:

  • Add --idle-timeout CLI option to create temporary processes that exit when inactive #1159 (bensheldon)

Fixed bugs:

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:

v3.21.2 (2023-11-24)

Full Changelog

Fixed bugs:

  • Skip RecordAlreadyAdvisoryLockedError during mass-update action #1158 (jmarsh24)

Closed issues:

  • Processes are created for puma workers after version v3.12.5 with execution_mode==:external #1156

Merged pull requests:

v3.21.1 (2023-11-14)

Full Changelog

Fixed bugs:

  • Explicitly require active_job/arguments in GoodJob::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)

Full Changelog

Implemented enhancements:

Closed issues:

  • Cron scheduler and multiple processes #1128
  • GoodJob.on_thread_error not called in tests #1102

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 to demo #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)

Full Changelog

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 blank finished_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)

Full Changelog

Closed issues:

  • Including GoodJob::ActiveJobExtensions::Concurrency triggers rails deprecation notice #1096
  • Add retries exhaused callback #1080

Merged pull requests:

  • Address rails 7.1 deprecation when using ActiveJobExtensions::Concurrency #1097 (Earlopain)

v3.19.3 (2023-09-28)

Full Changelog

Closed issues:

  • Explicitly write that jobs with higher priority jobs run first (unlike Que or DelayedJob) at readme. #991

Merged pull requests:

v3.19.2 (2023-09-22)

Full Changelog

Merged pull requests:

v3.19.1 (2023-09-20)

Full Changelog

Implemented enhancements:

v3.19.0 (2023-09-19)

Full Changelog

Implemented enhancements:

  • "Force" discard jobs that are already running/runaway to prevent retry #1073 (jgrau)

Closed issues:

  • Possible Memory Leak #1074
  • What's the best way to stop and discard a running job? #625

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)

Full Changelog

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)

Full Changelog

Fixed bugs:

Merged pull requests:

v3.18.1 (2023-08-30)

Full Changelog

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)

Full Changelog

Implemented enhancements:

  • Support configuring cron schedule dynamically with a block #1051 (DanielHeath)

v3.17.4 (2023-08-24)

Full Changelog

Fixed bugs:

Closed issues:

  • An idea for better .silence handling #1046

v3.17.3 (2023-08-19)

Full Changelog

Fixed bugs:

  • New probe server fixes: allow accept_nonblock to raise and IO.gets return nil #1043 (stas)

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)

Full Changelog

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:

v3.17.1 (2023-08-08)

Full Changelog

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:

v3.17.0 (2023-08-06)

Full Changelog

Implemented enhancements:

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:

v3.16.4 (2023-07-30)

Full Changelog

Implemented enhancements:

  • Add database_connection_pool stats to GoodJob::Process.current_state #1019 (dixpac)

Fixed bugs:

  • Move Execution#active_job to BaseExecution to share with Job; refactor Batch#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 to GoodJob::AdvisoryLockable #1012 (bensheldon)

v3.16.3 (2023-07-18)

Full Changelog

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:

  • Move shared BaseExecution concerns into the base class. #1009 (dixpac)

v3.16.2 (2023-07-13)

Full Changelog

Closed issues:

  • Support for customized job display name #956

Merged pull requests:

  • Add GoodJob::Job#display_name to allow customizing dashboard job display #1008 (paul)

v3.16.1 (2023-07-11)

Full Changelog

Fixed bugs:

Closed issues:

  • uninitialized constant GoodJob::Process #1006

v3.16.0 (2023-07-10)

Full Changelog

Implemented enhancements:

  • Add GoodJob.configure_active_record as alternative to GoodJob.active_record_parent_class #1004 (bensheldon)
  • Configure dashboard_default_locale using custom subclass of I18n::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:

  • Is pgcrypto necessary? #805
  • Integrate Sorbet type checking #404

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)

Full Changelog

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:

v3.15.13 (2023-06-14)

Full Changelog

Fixed bugs:

v3.15.12 (2023-06-11)

Full Changelog

Fixed bugs:

  • Do not allow GoodJob to automatically start after Rails initialization if previously shutdown #976 (bensheldon)

Merged pull requests:

v3.15.11 (2023-06-06)

Full Changelog

Fixed bugs:

  • Fix discrete_executions job re-enqueueing when retry_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 discards scheduled_at values for bulk-enqueued jobs #966

v3.15.10 (2023-05-22)

Full Changelog

Fixed bugs:

  • Ensure migration warning for DiscreteExecution constant is in explicit GoodJob:: namespace #963 (bensheldon)

v3.15.9 (2023-05-21)

Full Changelog

Fixed bugs:

Closed issues:

  • Does Bulk enqueue respect wait? #959
  • BaseExecution::discrete_support? hardcodes the DiscreteExecution table_name #957

Merged pull requests:

v3.15.8 (2023-05-19)

Full Changelog

Fixed bugs:

  • Fix hard-coded and duplicated table_name #958 (gap777)

Closed issues:

  • active_job.enqueue Performance Issue #939

Merged pull requests:

v3.15.7 (2023-04-30)

Full Changelog

Fixed bugs:

  • Fix Lockable's SELECT 1 AS one queries missing LIMIT 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)

Full Changelog

Merged pull requests:

v3.15.5 (2023-04-24)

Full Changelog

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)

Full Changelog

Merged pull requests:

  • 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 (bensheldon)

v3.15.3 (2023-04-22)

Full Changelog

Merged pull requests:

  • Eagerly autoload ActiveJob::Base; clean up framework deferred-loading logic to use nested on_load blocks #931 (bensheldon)

v3.15.2 (2023-04-19)

Full Changelog

Closed issues:

  • Cleaning up preserved jobs giving me timeout #933
  • uninitialized constant GoodJob::ActiveJobJob (NameError) #932

Merged pull requests:

v3.15.1 (2023-04-17)

Full Changelog

Implemented enhancements:

  • Support for Batches? #417

Fixed bugs:

  • Fix setting of locale via routes mount ... defaults: { locale: :en } #923 (bensheldon)
  • Set successfully_enqueued? when using perform_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 of ActiveRecord::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)

Full Changelog

Implemented enhancements:

Closed issues:

  • ActionView::Template::Error - undefined method `symbolize_keys' #889

Merged pull requests:

v3.14.2 (2023-03-16)

Full Changelog

Merged pull requests:

v3.14.1 (2023-03-14)

Full Changelog

Merged pull requests:

v3.14.0 (2023-03-09)

Full Changelog

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)

Full Changelog

Implemented enhancements:

  • If logging to STDOUT in CLI set $stdout.sync = true #882 (blafri)

Fixed bugs:

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:

v3.12.8 (2023-03-06)

Full Changelog

Fixed bugs:

  • Add raise: false to FrontendsController after action skip #881 (simi)

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)

Full Changelog

Fixed bugs:

  • Rename "assets" to "frontends" to avoid Asset Pipeline collisions #874 (bensheldon)

v3.12.6 (2023-03-01)

Full Changelog

Merged pull requests:

v3.12.5 (2023-02-24)

Full Changelog

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)

Full Changelog

Fixed bugs:

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)

Full Changelog

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)

Full Changelog

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:

v3.12.1 (2023-02-09)

Full Changelog

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)

Full Changelog

Implemented enhancements:

  • Create InterruptErrors extension to raise an exception when an interrupted job is retried #830 (bensheldon)

v3.11.1 (2023-02-06)

Full Changelog

Merged pull requests:

v3.11.0 (2023-02-06)

Full Changelog

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:

v3.10.1 (2023-02-06)

Full Changelog

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)

Full Changelog

Implemented enhancements:

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)

Full Changelog

Implemented enhancements:

  • Abort enqueue when the concurrency limit is reached #820 (TAGraves)
  • Add bulk enqueue functionality #790 (julik)

Merged pull requests:

v3.8.0 (2023-01-27)

Full Changelog

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:

v3.7.4 (2023-01-10)

Full Changelog

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)

Full Changelog

Implemented enhancements:

  • Provide clearer values/deprecation notices for cleanup_interval_jobs and cleanup_interval_seconds; setting 0 disables, -1 always #776 (zarqman)

Closed issues:

  • Demo page shows Application Error #787
  • Configuration for PG Schema Other Than Public #774

Merged pull requests:

v3.7.2 (2022-12-12)

Full Changelog

Fixed bugs:

Closed issues:

  • Unable to discard failed jobs which crashed with ActiveJob::DeserializationError #770

Merged pull requests:

v3.7.1 (2022-12-12)

Full Changelog

Fixed bugs:

v3.7.0 (2022-12-10)

Full Changelog

Implemented enhancements:

Fixed bugs:

Merged pull requests:

v3.6.2 (2022-12-04)

Full Changelog

Fixed bugs:

Merged pull requests:

v3.6.1 (2022-11-30)

Full Changelog

Implemented enhancements:

Closed issues:

  • Minor Cron Concurrency Clarification #743
  • Materialized CTE performance bottleneck #720
  • Calculating database connections #669

Merged pull requests:

v3.6.0 (2022-10-22)

Full Changelog

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)

Full Changelog

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)

Full Changelog

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 to succeeded; finished now means either succeeded or discarded #721 (bensheldon)

v3.4.8 (2022-10-11)

Full Changelog

Fixed bugs:

  • When not preserving job records, ensure all prior executions are deleted after successful retry #719 (ylansegal)

v3.4.7 (2022-10-06)

Full Changelog

Closed issues:

  • Changing assets path? #717
  • Support Sequel #713

Merged pull requests:

v3.4.6 (2022-09-26)

Full Changelog

Fixed bugs:

  • Support SemanticLogger logging with improve stdout logic and tagged logs #715 (bensheldon)

Closed issues:

  • Unable to Replace GoodJob's Logger #667
  • Jobs never get run... #516

v3.4.5 (2022-09-12)

Full Changelog

Fixed bugs:

  • Dashboard: Remove translation_missing red highlighting; remove number_to_human.hundreds; add form labels #708 (bensheldon)

Closed issues:

  • pg_xact No Such File error in logs #709
  • Broken upgrade to v3. #703

Merged pull requests:

v3.4.4 (2022-08-20)

Full Changelog

Fixed bugs:

  • Keep locale param when submitting dashboard filter #707 (aki77)

Merged pull requests:

v3.4.3 (2022-08-15)

Full Changelog

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)

Full Changelog

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)

Full Changelog

Closed issues:

  • Add cron_enabled to Process state #673
  • Good job is using a lot of memory / ram #613

Merged pull requests:

  • Only report Notifier connection errors once after they happen 3 consecutive times #689 (bensheldon)

v3.4.0 (2022-08-05)

Full Changelog

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)

Full Changelog

Fixed bugs:

Closed issues:

  • Async not working Rails 7 with puma CLI #685

v3.3.2 (2022-07-27)

Full Changelog

Fixed bugs:

  • Defer setting Adapter's execution mode until Rails initializes #683 (bensheldon)

v3.3.1 (2022-07-26)

Full Changelog

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:

v3.3.0 (2022-07-24)

Full Changelog

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 of GoodJob. 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)

Full Changelog

Implemented enhancements:

v3.1.0 (2022-07-11)

Full Changelog

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)

Full Changelog

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)

Full Changelog

Fixed bugs:

  • Fix GoodJob.cleanup_preserved_jobs to use delete_all instead of destroy_all #652 (bensheldon)

Closed issues:

  • ERROR: relation "good_jobs" does not exist at character 454 #308

Merged pull requests:

v3.0.0 (2022-06-26)

Full Changelog

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)

Full Changelog

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)

Full Changelog

Fixed bugs:

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)

Full Changelog

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)

Full Changelog

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)

Full Changelog

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)

Full Changelog

Closed issues:

  • ActiveRecord::StatementInvalid PG::ProgramLimitExceeded: ERROR: index row size 3296 exceeds btree version 4 maximum 2704 for index #612

Merged pull requests:

v2.15.1 (2022-05-24)

Full Changelog

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)

Full Changelog

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:

v2.14.4 (2022-05-15)

Full Changelog

Fixed bugs:

  • Fix Concurrency extension to not break perform_now #593 (bensheldon)

v2.14.3 (2022-05-13)

Full Changelog

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)

Full Changelog

Fixed bugs:

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:

v2.14.1 (2022-04-26)

Full Changelog

Fixed bugs:

  • Temporarily disable Mass Action "Apply to all" because the action is badly scoped #583 (bensheldon)

v2.14.0 (2022-04-26)

Full Changelog

Implemented enhancements:

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)

Full Changelog

Fixed bugs:

v2.13.1 (2022-04-22)

Full Changelog

Implemented enhancements:

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:

v2.13.0 (2022-04-19)

Full Changelog

Implemented enhancements:

  • Dashboard UI updates: sticky navbar, statuses as tabs #572 (bkeepers)

Closed issues:

  • Internationalize/I18n the Dashboard Engine #408

Merged pull requests:

v2.12.2 (2022-04-18)

Full Changelog

Fixed bugs:

Merged pull requests:

v2.12.1 (2022-04-18)

Full Changelog

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)

Full Changelog

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 to GoodJob::ApplicationController #553 (shouichi)
  • Internationalize/I18n the Dashboard Engine #497 (JuanVqz)

v2.11.3 (2022-03-30)

Full Changelog

Fixed bugs:

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)

Full Changelog

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 to Execution 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)

Full Changelog

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)

Full Changelog

Implemented enhancements:

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)

Full Changelog

Implemented enhancements:

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)

Full Changelog

Merged pull requests:

  • Limit query for allowed concurrent jobs to unfinished #515 (til)

v2.9.5 (2022-02-07)

Full Changelog

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 of with_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)

Full Changelog

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:

v2.9.3 (2022-01-23)

Full Changelog

Fixed bugs:

  • Use *_url route helpers for Dashboard assets to avoid being overridden by config.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)

Full Changelog

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)

Full Changelog

Fixed bugs:

  • Start async adapters once ActiveRecord and ActiveJob have loaded, potentially before Rails.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)

Full Changelog

Implemented enhancements:

Merged pull requests:

  • Remove demo CleanupJob in favor of using built-in cleanup intervals #478 (bensheldon)

v2.8.1 (2022-01-03)

Full Changelog

Implemented enhancements:

  • Add indexes to good_jobs.finished_at and have GoodJob.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:

v2.8.0 (2021-12-31)

Full Changelog

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:

v2.7.4 (2021-12-16)

Full Changelog

Fixed bugs:

  • Add nonce: true to javascript_include_tag in dashboard #468 (bouk)

Closed issues:

  • Add nonce: true to engine views #467
  • Updating good_job breaks my Rails 7 alpha 2 local development #462

Merged pull requests:

v2.7.3 (2021-11-30)

Full Changelog

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)

Full Changelog

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 for exec_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)

Full Changelog

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)

Full Changelog

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)

Full Changelog

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)

Full Changelog

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 and PG::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)

Full Changelog

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)

Full Changelog

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 and queue_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)

Full Changelog

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:

v2.4.1 (2021-10-11)

Full Changelog

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)

Full Changelog

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)

Full Changelog

Fixed bugs:

  • Wrap Scheduler task execution with Rails reloader instead of executor 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)

Full Changelog

Implemented enhancements:

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)

Full Changelog

Implemented enhancements:

Fixed bugs:

  • Fix Dashboard navigation active class for Scheduled Jobs #375 (bensheldon)

Closed issues:

  • Rename GoodJob::Job to be GoodJob::Execution #376
  • More recognition in Rails community #370
  • Concurrency control for all queued jobs #366

Merged pull requests:

  • Rename GoodJob::Job to GoodJob::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)

Full Changelog

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:

Closed issues:

  • Cron-like jobs not always executed, possible reasons? #359

Merged pull requests:

v2.0.5 (2021-09-06)

Full Changelog

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)

Full Changelog

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)

Full Changelog

Implemented enhancements:

  • Implement GoodJob.cleanup_preserved_jobs, fixes #351 #356 (aried3r)

Closed issues:

  • Expose CLI cleanup_preserved_jobs functionality via GoodJob? #351

v2.0.2 (2021-08-27)

Full Changelog

Fixed bugs:

  • v2.0: Generators support multiple databases: --database option, migrations_paths, custom GoodJob.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)

Full Changelog

Closed issues:

  • Does Good job support delay method? #344

v2.0.1 (2021-08-24)

Full Changelog

Implemented enhancements:

  • Suppress backtrace of ConcurrencyExceededError #348 (reczy)

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)

Full Changelog

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 with async_server; rename async execution mode to be async_all; default async 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)

Full Changelog

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)

Full Changelog

Merged pull requests:

  • Add deprecation notice that async mode will be renamed async_all in GoodJob v2.0 #339 (bensheldon)

v1.13.1 (2021-08-18)

Full Changelog

Fixed bugs:

  • Don’t attempt to enforce concurrency limits with other queue adapters #333 (codyrobbins)

v1.13.0 (2021-08-18)

Full Changelog

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)

Full Changelog

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)

Full Changelog

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:

v1.12.0 (2021-07-27)

Full Changelog

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)

Full Changelog

Closed issues:

  • Add Frozen String Literal to all files #298
  • Support for good_job without Rails? #295

Merged pull requests:

  • Have prettier Dashboard asset urls e.g. bootstrap.css instead of bootstrap_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)

Full Changelog

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 in ActiveModel::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)

Full Changelog

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)

Full Changelog

Implemented enhancements:

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)

Full Changelog

Fixed bugs:

  • Remove FOR UPDATE SKIP LOCKED from job locking sql statement #288 (bensheldon)

Merged pull requests:

  • Update GH Test Matrix with latest JRuby 9.2.19.0 #283 (tedt10e)

v1.10.0 (2021-06-29)

Full Changelog

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, including active_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)

Full Changelog

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)

Full Changelog

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)

Full Changelog

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)

Full Changelog

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)

Full Changelog

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)

Full Changelog

Implemented enhancements:

  • Allow to specify parent class for active record #238 (morgoth)

v1.9.0 (2021-04-16)

Full Changelog

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:

v1.8.0 (2021-03-04)

Full Changelog

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:

Closed issues:

  • Run GoodJob on puma boot #91
  • ActiveRecord::ConnectionNotEstablished when using async mode #89

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)

Full Changelog

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:

  • Fix equality typo in development.rb of test_app #207 (reczy)

v1.7.0 (2021-01-25)

Full Changelog

Implemented enhancements:

  • Cache scheduled jobs in memory so they can be executed without polling #205 (bensheldon)

v1.6.0 (2021-01-22)

Full Changelog

Implemented enhancements:

Closed issues:

  • Rails 6.1 & async - queue_parser': undefined method first' for "*":String (NoMethodError) #195

Merged pull requests:

v1.5.0 (2021-01-18)

Full Changelog

Implemented enhancements:

  • Create Web UI Dashboard #50
  • Configure GoodJob via Rails.application.config instead of recommending GoodJob::Adapter.new #199 (bensheldon)

Closed issues:

  • JRuby Support #160

Merged pull requests:

v1.4.1 (2021-01-09)

Full Changelog

Fixed bugs:

Closed issues:

  • Issues with Heroku and Good Job #184

Merged pull requests:

v1.4.0 (2020-12-31)

Full Changelog

Implemented enhancements:

v1.3.6 (2020-12-30)

Full Changelog

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)

Full Changelog

Fixed bugs:

Closed issues:

  • not running jobs #168
  • how to run good_job on a separate machine #162

Merged pull requests:

v1.3.4 (2020-12-02)

Full Changelog

Fixed bugs:

v1.3.3 (2020-12-01)

Full Changelog

Implemented enhancements:

  • UI: Admin UI with filters and space efficient layout #173 (zealot128)

v1.3.2 (2020-11-12)

Full Changelog

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)

Full Changelog

Implemented enhancements:

  • Extract polling from scheduler into Polling object #128
  • Format serialized params to ease reading #170 (morgoth)

Fixed bugs:

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)

Full Changelog

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)

Full Changelog

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)

Full Changelog

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:

v1.2.4 (2020-09-01)

Full Changelog

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:

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:

v1.2.3 (2020-08-27)

Full Changelog

Closed issues:

  • requiring more dependencies in then needed #103

Merged pull requests:

  • stop depending on all rails libs #104 (thilo)

v1.2.2 (2020-08-27)

Full Changelog

Implemented enhancements:

  • Run Github Action tests against Ruby 2.5, 2.6, 2.7 #100
  • Name the thread pools #96 (sj26)

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)

Full Changelog

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)

Full Changelog

Merged pull requests:

v1.1.4 (2020-08-19)

Full Changelog

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)

Full Changelog

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)

Full Changelog

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)

Full Changelog

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)

Full Changelog

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:

v1.0.3 (2020-07-26)

Full Changelog

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)

Full Changelog

Fixed bugs:

Merged pull requests:

v1.0.1 (2020-07-22)

Full Changelog

Merged pull requests:

  • Change threadpool idletime default to 60 seconds from 0 #49 (bensheldon)

v1.0.0 (2020-07-20)

Full Changelog

v0.9.0 (2020-07-20)

Full Changelog

Merged pull requests:

v0.8.2 (2020-07-18)

Full Changelog

Closed issues:

  • Add a job timeout configuration to time out jobs that have run too long #19

Merged pull requests:

v0.8.1 (2020-07-18)

Full Changelog

Merged pull requests:

  • Move where(scheduled_at: Time.current) into dynamic part of GoodJob::Job::Performer #42 (bensheldon)

v0.8.0 (2020-07-17)

Full Changelog

Merged pull requests:

  • Replace Adapter inline boolean kwarg with execution_mode instead #41 (bensheldon)

v0.7.0 (2020-07-16)

Full Changelog

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)

Full Changelog

Closed issues:

  • Improve the command line options #32
  • Allow config.active_job.queue_adapter = :good_job to work #5

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)

Full Changelog

Merged pull requests:

v0.4.0 (2020-03-31)

Full Changelog

Merged pull requests:

v0.3.0 (2020-03-22)

Full Changelog

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)

Full Changelog

Merged pull requests:

v0.2.1 (2020-03-07)

Full Changelog

Merged pull requests:

v0.2.0 (2020-03-06)

Full Changelog

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)

Full Changelog

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