Skip to content

Latest commit

 

History

History
1044 lines (603 loc) · 58.5 KB

CHANGELOG.md

File metadata and controls

1044 lines (603 loc) · 58.5 KB

Changelog

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
  • tools for managing a 'fleet' of processes #150

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:

  • ERROR: relation "good_jobs" does not exist at character 454 #308
  • Add Frozen String Literal to all files #298
  • Support for good_job without Rails? #295

Merged pull requests:

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:

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