diff --git a/mailpoet/lib/Cron/Workers/SendingQueue/SendingQueue.php b/mailpoet/lib/Cron/Workers/SendingQueue/SendingQueue.php index 4020be993e..72ddd828bf 100644 --- a/mailpoet/lib/Cron/Workers/SendingQueue/SendingQueue.php +++ b/mailpoet/lib/Cron/Workers/SendingQueue/SendingQueue.php @@ -200,6 +200,17 @@ class SendingQueue { // get subscribers $subscriberBatches = new BatchIterator($queue->taskId, $this->getBatchSize()); + if ($subscriberBatches->count() === 0) { + $this->loggerFactory->getLogger(LoggerFactory::TOPIC_NEWSLETTERS)->info( + 'no subscribers to process', + ['task_id' => $queue->taskId] + ); + $task = $queue->getSendingQueueEntity()->getTask(); + if ($task) { + $this->scheduledTasksRepository->invalidateTask($task); + } + return; + } /** @var int[] $subscribersToProcessIds - it's required for PHPStan */ foreach ($subscriberBatches as $subscribersToProcessIds) { $this->loggerFactory->getLogger(LoggerFactory::TOPIC_NEWSLETTERS)->info( diff --git a/mailpoet/lib/Newsletter/Sending/ScheduledTasksRepository.php b/mailpoet/lib/Newsletter/Sending/ScheduledTasksRepository.php index 885f203c4f..4c9c06db0b 100644 --- a/mailpoet/lib/Newsletter/Sending/ScheduledTasksRepository.php +++ b/mailpoet/lib/Newsletter/Sending/ScheduledTasksRepository.php @@ -309,6 +309,12 @@ class ScheduledTasksRepository extends Repository { ->getResult(); } + public function invalidateTask(ScheduledTaskEntity $task): void { + $task->setStatus( ScheduledTaskEntity::STATUS_INVALID); + $this->persist($task); + $this->flush(); + } + protected function findByTypeAndStatus($type, $status, $limit = null, $future = false) { $queryBuilder = $this->doctrineRepository->createQueryBuilder('st') ->select('st')