diff --git a/src/CloudTasksJob.php b/src/CloudTasksJob.php index c9f4e5a..fc83cbe 100644 --- a/src/CloudTasksJob.php +++ b/src/CloudTasksJob.php @@ -95,11 +95,4 @@ public function delete(): void $this->cloudTasksQueue->delete($this); } - - public function fire(): void - { - $this->attempts++; - - parent::fire(); - } } diff --git a/src/TaskHandler.php b/src/TaskHandler.php index bf5951d..9c1ba50 100644 --- a/src/TaskHandler.php +++ b/src/TaskHandler.php @@ -95,7 +95,7 @@ private function handleTask(array $task): void $this->loadQueueRetryConfig($job); - $job->setAttempts((int) request()->header('X-CloudTasks-TaskExecutionCount')); + $job->setAttempts((int) request()->header('X-CloudTasks-TaskRetryCount')); $job->setMaxTries($this->retryConfig->getMaxAttempts()); // If the job is being attempted again we also check if a @@ -108,9 +108,18 @@ private function handleTask(array $task): void throw new UnexpectedValueException('Expected task name to be a string.'); } - $job->setRetryUntil(CloudTasksApi::getRetryUntilTimestamp($taskName)); + $fullTaskName = $this->client->taskName( + $this->config['project'], + $this->config['location'], + $job->getQueue() ?: $this->config['queue'], + $taskName, + ); + + $job->setRetryUntil(CloudTasksApi::getRetryUntilTimestamp($fullTaskName)); } + $job->setAttempts($job->attempts() + 1); + app('queue.worker')->process($this->config['connection'], $job, new WorkerOptions()); } diff --git a/tests/TestCase.php b/tests/TestCase.php index bcd27a7..17e70f3 100644 --- a/tests/TestCase.php +++ b/tests/TestCase.php @@ -143,16 +143,16 @@ public function run(): void app(TaskHandler::class)->handle($this->payload); }); - $taskExecutionCount = request()->header('X-CloudTasks-TaskExecutionCount', 0); - request()->headers->set('X-CloudTasks-TaskExecutionCount', $taskExecutionCount + 1); + $taskRetryCount = request()->header('X-CloudTasks-TaskRetryCount', 0); + request()->headers->set('X-CloudTasks-TaskRetryCount', $taskRetryCount + 1); } public function runWithoutExceptionHandler(): void { app(TaskHandler::class)->handle($this->payload); - $taskExecutionCount = request()->header('X-CloudTasks-TaskExecutionCount', 0); - request()->headers->set('X-CloudTasks-TaskExecutionCount', $taskExecutionCount + 1); + $taskRetryCount = request()->header('X-CloudTasks-TaskRetryCount', 0); + request()->headers->set('X-CloudTasks-TaskRetryCount', $taskRetryCount + 1); } }; }