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
|
||||
$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
|
||||
StatisticsNewslettersModel::createMultiple($statistics);
|
||||
// update the sent count
|
||||
|
@ -151,7 +151,7 @@ class SendingQueue extends Model {
|
||||
)
|
||||
);
|
||||
$this->subscribers = $subscribers;
|
||||
$this->updateCount();
|
||||
return $this->updateCount()->getErrors() === false;
|
||||
}
|
||||
|
||||
function updateCount() {
|
||||
@ -175,5 +175,4 @@ class SendingQueue extends Model {
|
||||
}
|
||||
return $rendered_body;
|
||||
}
|
||||
|
||||
}
|
@ -1,6 +1,7 @@
|
||||
<?php
|
||||
namespace MailPoet\Test\Cron\Workers\SendingQueue;
|
||||
|
||||
use AspectMock\Test as Mock;
|
||||
use Carbon\Carbon;
|
||||
use Codeception\Util\Fixtures;
|
||||
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\Tasks\Mailer as MailerTask;
|
||||
use MailPoet\Cron\Workers\SendingQueue\Tasks\Newsletter as NewsletterTask;
|
||||
use MailPoet\Mailer\MailerLog;
|
||||
use MailPoet\Models\Newsletter;
|
||||
use MailPoet\Models\NewsletterLink;
|
||||
use MailPoet\Models\NewsletterPost;
|
||||
@ -574,6 +576,43 @@ class SendingQueueTest extends \MailPoetTest {
|
||||
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() {
|
||||
\ORM::raw_execute('TRUNCATE ' . Subscriber::$_table);
|
||||
\ORM::raw_execute('TRUNCATE ' . SubscriberSegment::$_table);
|
||||
@ -585,4 +624,4 @@ class SendingQueueTest extends \MailPoetTest {
|
||||
\ORM::raw_execute('TRUNCATE ' . NewsletterSegment::$_table);
|
||||
\ORM::raw_execute('TRUNCATE ' . StatisticsNewsletters::$_table);
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user