Repository navigation
v0.5.0
Fifth experiment: maxExceptions and a timeout when the worker isn't killed.
With Worker::$killOnTimeout = false (laravel/framework#61591), a job that runs past its timeout gets a TimeoutExceededException instead of a dead worker. The timeout is counted against maxExceptions twice: once by the SIGALRM handler, and again when the exception comes out of the job. A job with maxExceptions = 2 fails after its first timeout, while a job that simply throws fails after its second attempt, as it should. With the fix from fix/timeout-exception-count, both fail after two attempts.
Like experiment 4 it runs on the database queue, no broker: vendor/bin/phpunit tests/MaxExceptionsTimeoutTest.php.
Checked in CI with PHP 8.3–8.5 and Laravel 13.37.