Fixes
- Queued mails were sent with an empty body:
EmailTaskset the bodies from the payload, thenMailer::deliver('')re-rendered over them.SimpleQueueTransportpayloads also lost headers, attachments and the configured transport (#515). - "Reset Failed" (and
queue job reset all) re-queued running jobs, so a second worker ran them again. Only failed and aborted jobs are reset now (#515). createJob()withuniqueno longer dedupes against an aborted job (#515).- A job whose worker dies on its last attempt (signal, SIGKILL, OOM) is marked aborted instead of showing as running forever. A job that completes after a signal handler marked it failed no longer keeps that failure (#515).
Queue.workerPhpTimeoutis honored.queue worker killworks in multiserver mode, andqueue worker end allhandles several workers sharing PID 1 (#515).- Admin: the kill action only signals known worker PIDs, the connection switcher applies when "default" is chosen, redirects reject
/\host, and job edits are limited tonotbeforeandpriority(#515). config/app.example.phpreferenced the removedCake\Mailer\Emailclass (#515).
Improvements
- The admin dashboard lists aborted jobs in their own card above the pending list, with attempts, the failure message, and inline reset and remove. Since 8.15.0 the pending list left them out, so a job that used up its retries was only reachable through the jobs list. The card follows
Queue.adminDetailsLimitand is hidden while no job is aborted. New onQueuedJobsTable:getAbortedStats()andgetAbortedCount()(#514). - Aborted job tooling:
Queue.cleanupAbortedTimeoutlets the cleanup remove aborted jobs (default 0 keeps them),queue job flush --aborteddeletes them, and the dashboard card has a "Reset All" button.queue infoshows the aborted count, andqueue info --format jsonprints job counts, workers and statistics for monitoring (#516). - The jobs list status filter offers pending, running, failed and aborted, and the status helpers respect the persisted aborted status (#515).
Full Changelog: 8.15.1...8.16.0