Fixes
- Persist a terminal
abortedstatus so dead jobs stop counting as queued. Once a job exhausted its retries it keptcompleted IS NULLforever, soisQueued()and the admin "in_progress" filter still counted it — wedging non-concurrent callers (e.g. a QueueScheduler row) behind the dead job and rendering it as "Running". TheProcessornow stampsQueuedJobsTable::STATUS_ABORTED(via the newmarkJobAborted()) whengetFailedStatus()is terminal;isQueued()and thein_progressfilter exclude aborted rows, and the status badge renders them as "Failed". Retryable failures are untouched and null/other statuses are unaffected, so the change is backward compatible (#504).
Improvements
- The optional DTO integration in
createJob()now targetsdereuromark/cakephp-dtov3, whoseFromArrayToArrayInterfacemoved to thePhpCollective\Dto\Dtonamespace. The interface check is guarded byinterface_exists()and still falls back to any object exposingtoArray(), so plain arrays and non-DTO objects are unaffected. The dev requirement moves to^3.0.0and aconflictwithdereuromark/cakephp-dto <3.0.0is declared, so the plugin can no longer be paired with the old DTO major (#502). - Add sort direction indicators to the admin tables.
Full Changelog: 8.14.0...8.15.0