From 307989a0c6dded3ba9ce2afb1fe12a5185faafa6 Mon Sep 17 00:00:00 2001 From: David Remer Date: Thu, 6 Oct 2022 10:09:22 +0300 Subject: [PATCH] Delete task when no newsletter was found When no corresponding newsletter was found the task can be deleted. The behavior before meant that such a task would remain forever in the database with the status 'running'. [MAILPOET-4699] --- .../Cron/Workers/SendingQueue/SendingQueue.php | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/mailpoet/lib/Cron/Workers/SendingQueue/SendingQueue.php b/mailpoet/lib/Cron/Workers/SendingQueue/SendingQueue.php index d519b6b26e..b903df9bf2 100644 --- a/mailpoet/lib/Cron/Workers/SendingQueue/SendingQueue.php +++ b/mailpoet/lib/Cron/Workers/SendingQueue/SendingQueue.php @@ -156,17 +156,14 @@ class SendingQueue { $newsletterEntity = $this->newsletterTask->getNewsletterFromQueue($queue); if (!$newsletterEntity) { + $this->deleteTask($queue); return; } // pre-process newsletter (render, replace shortcodes/links, etc.) $newsletterEntity = $this->newsletterTask->preProcessNewsletter($newsletterEntity, $queue); if (!$newsletterEntity) { - $this->loggerFactory->getLogger(LoggerFactory::TOPIC_NEWSLETTERS)->info( - 'delete task in sending queue', - ['task_id' => $queue->taskId] - ); - $queue->delete(); + $this->deleteTask($queue); return; } @@ -494,4 +491,12 @@ class SendingQueue { private function getExecutionLimit(): int { return $this->cronHelper->getDaemonExecutionLimit() * 3; } + + private function deleteTask(SendingTask $queue) { + $this->loggerFactory->getLogger(LoggerFactory::TOPIC_NEWSLETTERS)->info( + 'delete task in sending queue', + ['task_id' => $queue->taskId] + ); + $queue->delete(); + } }