getOperationRun(); } elseif (property_exists($job, 'operationRun')) { $run = $job->operationRun; } if (! $run instanceof OperationRun) { return $next($job); } /** @var OperationRunService $service */ $service = app(OperationRunService::class); // Mark as running $service->updateRun($run, 'running'); try { $response = $next($job); // If the job was released back onto the queue (retry / delay), do not mark the run as completed. if (property_exists($job, 'job') && $job->job && method_exists($job->job, 'isReleased') && $job->job->isReleased()) { return $response; } // If the job didn't already mark it as completed/failed, we do it here. // Re-fetch to check current status $run->refresh(); if ($run->status === 'running') { $service->updateRun($run, 'completed', 'succeeded'); } return $response; } catch (\Throwable $e) { $service->failRun($run, $e); throw $e; } } }