From e7416c247cd368ff1c20e6819e15c75fdacc07f3 Mon Sep 17 00:00:00 2001 From: Rodrigo Primo Date: Tue, 21 Nov 2023 15:45:52 -0300 Subject: [PATCH] Fix error after refactor of SendingErrorHandler In 862c395d3263f30057aef73a14704345e181dde3, SendingErrorHandler was refactored to replace the `\MailPoet\Tasks\Sending` class with Doctrine code. Inside `processSoftError()`, a call to `$sendingTask->saveSubscriberError()` was replaced with a call to `$this->scheduledTaskSubscribersRepository->saveError()`. The problem is that the former updates the processed and unprocessed counts in the QueueEntity while the later doesn't. This commit fixes this issue by calling `$this->sendingQueuesRepository->updateCounts()` inside `processSoftError()`. [MAILPOET-5682] --- .../Workers/SendingQueue/SendingErrorHandler.php | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/mailpoet/lib/Cron/Workers/SendingQueue/SendingErrorHandler.php b/mailpoet/lib/Cron/Workers/SendingQueue/SendingErrorHandler.php index 83a4064e38..9985c247de 100644 --- a/mailpoet/lib/Cron/Workers/SendingQueue/SendingErrorHandler.php +++ b/mailpoet/lib/Cron/Workers/SendingQueue/SendingErrorHandler.php @@ -3,9 +3,11 @@ namespace MailPoet\Cron\Workers\SendingQueue; use MailPoet\Entities\ScheduledTaskEntity; +use MailPoet\Entities\SendingQueueEntity; use MailPoet\Mailer\MailerError; use MailPoet\Mailer\MailerLog; use MailPoet\Newsletter\Sending\ScheduledTaskSubscribersRepository; +use MailPoet\Newsletter\Sending\SendingQueuesRepository; class SendingErrorHandler { /** @var ScheduledTaskSubscribersRepository */ @@ -14,12 +16,17 @@ class SendingErrorHandler { /** @var SendingThrottlingHandler */ private $throttlingHandler; + /** @var SendingQueuesRepository */ + private $sendingQueuesRepository; + public function __construct( ScheduledTaskSubscribersRepository $scheduledTaskSubscribersRepository, - SendingThrottlingHandler $throttlingHandler + SendingThrottlingHandler $throttlingHandler, + SendingQueuesRepository $sendingQueuesRepository ) { $this->scheduledTaskSubscribersRepository = $scheduledTaskSubscribersRepository; $this->throttlingHandler = $throttlingHandler; + $this->sendingQueuesRepository = $sendingQueuesRepository; } public function processError( @@ -52,5 +59,11 @@ class SendingErrorHandler { $message = $subscriberError->getMessage() ?: $error->getMessage(); $this->scheduledTaskSubscribersRepository->saveError($task, $preparedSubscribersIds[$subscriberIdIndex], $message ?? ''); } + + $queue = $task->getSendingQueue(); + + if ($queue instanceof SendingQueueEntity) { + $this->sendingQueuesRepository->updateCounts($queue); + } } }