Pauses sending if processed subscribers list can't be updated
This commit is contained in:
@ -165,7 +165,14 @@ class SendingQueue {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
// update processed/to process list
|
// update processed/to process list
|
||||||
$queue->updateProcessedSubscribers($prepared_subscribers_ids);
|
if(!$queue->updateProcessedSubscribers($prepared_subscribers_ids)) {
|
||||||
|
MailerLog::processError(
|
||||||
|
'processed_list_update',
|
||||||
|
sprintf('QUEUE-%d-PROCESSED-LIST-UPDATE', $queue->id),
|
||||||
|
null,
|
||||||
|
true
|
||||||
|
);
|
||||||
|
}
|
||||||
// log statistics
|
// log statistics
|
||||||
StatisticsNewslettersModel::createMultiple($statistics);
|
StatisticsNewslettersModel::createMultiple($statistics);
|
||||||
// update the sent count
|
// update the sent count
|
||||||
|
@ -151,7 +151,7 @@ class SendingQueue extends Model {
|
|||||||
)
|
)
|
||||||
);
|
);
|
||||||
$this->subscribers = $subscribers;
|
$this->subscribers = $subscribers;
|
||||||
$this->updateCount();
|
return $this->updateCount()->getErrors() === false;
|
||||||
}
|
}
|
||||||
|
|
||||||
function updateCount() {
|
function updateCount() {
|
||||||
@ -175,5 +175,4 @@ class SendingQueue extends Model {
|
|||||||
}
|
}
|
||||||
return $rendered_body;
|
return $rendered_body;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -1,6 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
namespace MailPoet\Test\Cron\Workers\SendingQueue;
|
namespace MailPoet\Test\Cron\Workers\SendingQueue;
|
||||||
|
|
||||||
|
use AspectMock\Test as Mock;
|
||||||
use Carbon\Carbon;
|
use Carbon\Carbon;
|
||||||
use Codeception\Util\Fixtures;
|
use Codeception\Util\Fixtures;
|
||||||
use Codeception\Util\Stub;
|
use Codeception\Util\Stub;
|
||||||
@ -8,6 +9,7 @@ use MailPoet\Config\Populator;
|
|||||||
use MailPoet\Cron\Workers\SendingQueue\SendingQueue as SendingQueueWorker;
|
use MailPoet\Cron\Workers\SendingQueue\SendingQueue as SendingQueueWorker;
|
||||||
use MailPoet\Cron\Workers\SendingQueue\Tasks\Mailer as MailerTask;
|
use MailPoet\Cron\Workers\SendingQueue\Tasks\Mailer as MailerTask;
|
||||||
use MailPoet\Cron\Workers\SendingQueue\Tasks\Newsletter as NewsletterTask;
|
use MailPoet\Cron\Workers\SendingQueue\Tasks\Newsletter as NewsletterTask;
|
||||||
|
use MailPoet\Mailer\MailerLog;
|
||||||
use MailPoet\Models\Newsletter;
|
use MailPoet\Models\Newsletter;
|
||||||
use MailPoet\Models\NewsletterLink;
|
use MailPoet\Models\NewsletterLink;
|
||||||
use MailPoet\Models\NewsletterPost;
|
use MailPoet\Models\NewsletterPost;
|
||||||
@ -574,6 +576,43 @@ class SendingQueueTest extends \MailPoetTest {
|
|||||||
expect((int)$updated_queue->count_total)->equals(0);
|
expect((int)$updated_queue->count_total)->equals(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function testItPausesSendingWhenProcessedSubscriberListCannotBeUpdated() {
|
||||||
|
$queue = Mock::double(new \stdClass(), array(
|
||||||
|
'updateProcessedSubscribers' => false
|
||||||
|
));
|
||||||
|
$queue->id = 100;
|
||||||
|
$sending_queue_worker = Stub::make(new SendingQueueWorker());
|
||||||
|
$sending_queue_worker->__construct(
|
||||||
|
$timer = false,
|
||||||
|
Stub::make(
|
||||||
|
new MailerTask(),
|
||||||
|
array(
|
||||||
|
'send' => true
|
||||||
|
)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
try {
|
||||||
|
$sending_queue_worker->sendNewsletters(
|
||||||
|
$queue,
|
||||||
|
$prepared_subscribers = array(),
|
||||||
|
$prepared_newsletters = false,
|
||||||
|
$prepared_subscribers = false,
|
||||||
|
$statistics = false
|
||||||
|
);
|
||||||
|
$this->fail('Paused sending exception was not thrown.');
|
||||||
|
} catch(\Exception $e) {
|
||||||
|
expect($e->getMessage())->equals('Sending has been paused.');
|
||||||
|
}
|
||||||
|
$mailer_log = MailerLog::getMailerLog();
|
||||||
|
expect($mailer_log['status'])->equals(MailerLog::STATUS_PAUSED);
|
||||||
|
expect($mailer_log['error'])->equals(
|
||||||
|
array(
|
||||||
|
'operation' => 'processed_list_update',
|
||||||
|
'error_message' => 'QUEUE-100-PROCESSED-LIST-UPDATE'
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
function _after() {
|
function _after() {
|
||||||
\ORM::raw_execute('TRUNCATE ' . Subscriber::$_table);
|
\ORM::raw_execute('TRUNCATE ' . Subscriber::$_table);
|
||||||
\ORM::raw_execute('TRUNCATE ' . SubscriberSegment::$_table);
|
\ORM::raw_execute('TRUNCATE ' . SubscriberSegment::$_table);
|
||||||
|
Reference in New Issue
Block a user