The database queue connection used retry_after=90s while several jobs declare timeouts far above it (up to 600s). When a job outlives its reservation window the queue hands it to a second worker; a tries=1 job then fails with MaxAttemptsExceededException and re-runs its side effects (double model billing, reset progress) — exactly what CategorizeUncategorizedTransactionsJob's tries=1 was meant to prevent. Raise the default to 900s (env-overridable via DB_QUEUE_RETRY_AFTER) so it exceeds the longest job timeout, and add a guard test asserting every app/Jobs $timeout stays below retry_after so a new long job cannot silently reintroduce the bug. Fixes PHP-LARAVEL-2D |
||
|---|---|---|
| .. | ||
| .pest | ||
| Browser | ||
| Feature | ||
| Fixtures | ||
| Performance | ||
| Support | ||
| Unit | ||
| Pest.php | ||
| TestCase.php | ||
| bootstrap.php | ||