$ the-wire · showcase
Mission Control lists failed jobs newest first, drops Rails main from CI
By RepoJournal · Filed · About Rails
The Mission Control Jobs dashboards now list failed jobs newest first, and Rails main is out of the CI matrix until a pair of controller tests are fixed.
Mission Control Jobs now orders failed executions by id desc across adapters, so the most recent failures appear on the first page [1][2]. The Solid Queue adapter uses the primary key index, and the Resque adapter reads pages from the end of its list, keeping each job's position for retry and discard operations [3]. This matches Sidekiq and GoodJob behavior and prevents important failures from being missed on later pages [1]. CI no longer runs against Rails main because two controller tests about automatically retried jobs fail there, and the team pinned resque and minitest versions for Rails 7 gemfiles to avoid boot-time NameError and ArgumentError from incompatible releases [4][5]. Meanwhile, solid_queue tests were hardened against slow databases: the pool-size worker test now gets the suite's usual budget, and lifecycle tests wait for jobs to be in flight before signaling supervisors, fixing most of the non-Rails-7.1 flakes [6][7][8]. The docs now state that retry_on cannot intercept process-death errors because the process is already gone when they are recorded [9][10].
Action items
- → Review failed job pages in Mission Control after this change to confirm you catch previously hidden failures rails/mission_control-jobs [monitor]
- → If you run Mission Control against Rails main, expect CI failures until the controller tests are fixed rails/mission_control-jobs [monitor]
- → When upgrading solid_queue, keep an eye on test flakiness on slow databases; lifecycle tests now wait for jobs to be in flight rails/solid_queue [monitor]
References
- [1] Order SolidQueue failed executuions by id desc ↗ rails/mission_control-jobs
- [2] Order Solid Queue failed executions newest first ↗ rails/mission_control-jobs
- [3] List failed jobs newest first in the Resque adapter too ↗ rails/mission_control-jobs
- [4] Drop Rails main from the CI matrix for now ↗ rails/mission_control-jobs
- [5] Pin resque and minitest for the Rails 7 CI gemfiles ↗ rails/mission_control-jobs
- [6] Harden the lifecycle and pool-size worker tests against slow databases ↗ rails/solid_queue
- [7] Wait for jobs to be in flight before signaling supervisors in lifecycle tests ↗ rails/solid_queue
- [8] Give the pool-size worker test the suite's usual budget ↗ rails/solid_queue
- [9] Document that retry_on can't intercept process-death errors ↗ rails/solid_queue
- [10] Document that retry_on can't intercept process-death errors ↗ rails/solid_queue