$ the-wire · showcase
Mission Control Jobs 1.2.0 lands with job filtering and timezone fixes
By RepoJournal · Filed · About Rails
Mission Control Jobs shipped v1.2.0 [ref:11] and Solid Queue documented a READ COMMITTED recommendation for MySQL/MariaDB [ref:17] that addresses long-standing deadlock reports under load.
Mission Control Jobs released v1.2.0 [1], which adds filtering of job arguments and first/last page navigation, and fixes a datetime shift in the job filter for non-UTC timezones. The release also removes the debounced form submission [2] because job filters now submit on change; the debounce helper and its module are dead code. For MySQL and MariaDB queue databases, Solid Queue now recommends READ COMMITTED [3] and included a database.yml snippet in the README. Under InnoDB's default REPEATABLE READ, the SKIP LOCKED scans take gap locks that can deadlock against enqueue inserts under load; READ COMMITTED eliminates those gap locks. Separately, Bootsnap removed accidental debug output [4] that wrote 'current_umask = ...' to stderr on every require, and now accepts tempfile descriptor zero [5], fixing a leak when fd 0 is available. Active Record merged an option to shuffle unordered SELECT results [6], disabled by default, which prevents code and tests from depending on unspecified row order.
Action items
- → Upgrade mission_control-jobs to v1.2.0 for job argument filtering and timezone fixes rails/mission_control-jobs [plan]
- → Set READ COMMITTED for MySQL/MariaDB Solid Queue databases to avoid gap-lock deadlocks rails/solid_queue [plan]
- → Update bootsnap to pick up the umask debug output fix and fd-zero handling rails/bootsnap [plan]
- → Review unordered SELECT queries and enable the new shuffle option in dev rails/rails [monitor]
References
- [1] v1.2.0 ↗ rails/mission_control-jobs
- [2] Remove the debounced form submission ↗ rails/mission_control-jobs
- [3] Recommend READ COMMITTED for MySQL and MariaDB queue databases ↗ rails/solid_queue
- [4] Remove accidental umask debug output ↗ rails/bootsnap
- [5] Accept tempfile descriptor zero ↗ rails/bootsnap
- [6] `activerecord`: add an option to shuffle unordered `SELECT` results ↗ rails/rails