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 (alex-klepa)
- 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:
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 (tedthetnaungsoe)
- 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 (tedthetnaungsoe)
- 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 (tedthetnaungsoe)
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:
- Update GH Test Matrix with latest JRuby 9.2.19.0 #283 (tedthetnaungsoe)
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 (tedthetnaungsoe)
- 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 (tedthetnaungsoe)
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 (tedthetnaungsoe)
- Fix JRuby version number #193 (tedthetnaungsoe)
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