-
Couldn't load subscription status.
- Fork 11.6k
Closed
Labels
Description
Laravel Version
10.37.3
PHP Version
8.2.7
Database Driver & Version
MariaDB 10.3.27
Description
We had a 'phantom' problem that jobs that failed, were not logged to the failed_jobs table. After some investigation we found out that by mistake we were doing a heavy process within a db transaction which lead the specific job to timeout.
After testing we found out that the issue only happens if the jobs timeout during an open db transaction
I reported this in laravel/horizon but it turns out it has nothing to do with horizon but seems to be a framework issue.
Steps To Reproduce
- Create a job with a timeout of 5 seconds
- In the job handle method sleep within a db transaction
public function handle(): void
{
DB::transaction(function (): void {
sleep(10);
});
}
We would expect a job in the failed_jobs table, however this is not the case, and the JobFailed event is also not dispatched