Add error log when pausing sending due an error

[MAILPOET-4940]
This commit is contained in:
Rostislav Wolny
2023-01-09 15:31:18 +01:00
committed by Aschepikov
parent f11aca925f
commit 0bbdf4b47f
2 changed files with 23 additions and 0 deletions

View File

@@ -2,6 +2,7 @@
namespace MailPoet\Mailer;
use MailPoet\Logging\LoggerFactory;
use MailPoet\Settings\SettingsController;
/**
@@ -173,6 +174,13 @@ class MailerLog {
$mailerLog = self::setError($mailerLog, $operation, $errorMessage, $errorCode);
self::updateMailerLog($mailerLog);
if ($pauseSending) {
LoggerFactory::getInstance()->getLogger(LoggerFactory::TOPIC_SENDING)->error(
'Email sending was paused due an error',
[
'error_message' => $errorMessage,
'error_code' => $errorCode,
]
);
self::pauseSending($mailerLog);
}
self::enforceExecutionRequirements();
@@ -202,6 +210,13 @@ class MailerLog {
$mailerLog['transactional_email_error_count'] = ($mailerLog['transactional_email_error_count'] ?? 0) + 1;
self::updateMailerLog($mailerLog);
if ($mailerLog['transactional_email_error_count'] >= self::RETRY_ATTEMPTS_LIMIT) {
LoggerFactory::getInstance()->getLogger(LoggerFactory::TOPIC_SENDING)->error(
'Email sending was paused due a transactional email error',
[
'error_message' => $errorMessage,
'error_code' => $errorCode,
]
);
self::pauseSending($mailerLog);
}
}

View File

@@ -2,6 +2,7 @@
namespace MailPoet\Test\Mailer;
use MailPoet\Entities\LogEntity;
use MailPoet\Mailer\Mailer;
use MailPoet\Mailer\MailerError;
use MailPoet\Mailer\MailerLog;
@@ -265,6 +266,9 @@ class MailerLogTest extends \MailPoetTest {
'error_message' => $error,
]
);
$logs = $this->entityManager->getRepository(LogEntity::class)->findAll();
$this->assertInstanceOf(LogEntity::class, $logs[0]);
expect($logs[0]->getMessage())->stringContainsString('Email sending was paused due an error');
}
public function testItProcessesTransactionalEmailSendingError() {
@@ -318,6 +322,9 @@ class MailerLogTest extends \MailPoetTest {
expect($mailerLog['transactional_email_last_error_at'])->null();
expect($mailerLog['transactional_email_error_count'])->null();
expect(MailerLog::isSendingPaused())->true();
$logs = $this->entityManager->getRepository(LogEntity::class)->findAll();
$this->assertInstanceOf(LogEntity::class, $logs[0]);
expect($logs[0]->getMessage())->stringContainsString('Email sending was paused due a transactional email error');
}
public function testItEnforcesSendingLimit() {
@@ -448,5 +455,6 @@ class MailerLogTest extends \MailPoetTest {
public function _after() {
$this->diContainer->get(SettingsRepository::class)->truncate();
$this->truncateEntity(LogEntity::class);
}
}