Skip empty subscribers batches during sending
[MAILPOET-3418]
This commit is contained in:
committed by
Veljko V
parent
5331d76c79
commit
bbd4cb98f8
@ -168,6 +168,10 @@ class SendingQueue {
|
||||
$this->newsletterTask->markNewsletterAsSent($newsletter, $queue);
|
||||
continue;
|
||||
}
|
||||
// if there aren't any subscribers to process in batch (e.g. all unsubscribed or were deleted) continue with next batch
|
||||
if (count($foundSubscribersIds) === 0) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
$this->loggerFactory->getLogger(LoggerFactory::TOPIC_NEWSLETTERS)->addInfo(
|
||||
'before queue chunk processing',
|
||||
|
@ -629,6 +629,41 @@ class SendingQueueTest extends \MailPoetTest {
|
||||
expect(count($statistics))->equals(1);
|
||||
}
|
||||
|
||||
public function testItDoesNotCallMailerWithEmptyBatch() {
|
||||
$queue = $this->queue;
|
||||
$subscribers = [];
|
||||
while (count($subscribers) < 2 * SendingQueueWorker::BATCH_SIZE) {
|
||||
$subscribers[] = 1234564545 + count($subscribers);
|
||||
}
|
||||
$subscribers[] = $this->subscriber->id();
|
||||
$queue->setSubscribers($subscribers);
|
||||
$queue->countTotal = count($subscribers);
|
||||
$queue->save();
|
||||
$sendingQueueWorker = $this->sendingQueueWorker;
|
||||
$sendingQueueWorker->mailerTask = Stub::make(
|
||||
new MailerTask(),
|
||||
[
|
||||
'send' => Expected::exactly(1, function() {
|
||||
return $this->mailerTaskDummyResponse;
|
||||
}),
|
||||
],
|
||||
$this
|
||||
);
|
||||
$sendingQueueWorker->process();
|
||||
|
||||
/** @var SendingQueue $updatedQueue */
|
||||
$updatedQueue = SendingQueue::findOne($queue->id);
|
||||
$updatedQueue = SendingTask::createFromQueue($updatedQueue);
|
||||
// queue subscriber processed/to process count is updated
|
||||
expect($updatedQueue->getSubscribers(ScheduledTaskSubscriber::STATUS_UNPROCESSED))
|
||||
->equals([]);
|
||||
expect($updatedQueue->getSubscribers(ScheduledTaskSubscriber::STATUS_PROCESSED))
|
||||
->equals([$this->subscriber->id]);
|
||||
expect($updatedQueue->countTotal)->equals(1);
|
||||
expect($updatedQueue->countProcessed)->equals(1);
|
||||
expect($updatedQueue->countToProcess)->equals(0);
|
||||
}
|
||||
|
||||
public function testItUpdatesQueueSubscriberCountWhenNoneOfSubscribersExist() {
|
||||
$queue = $this->queue;
|
||||
$queue->setSubscribers([
|
||||
|
Reference in New Issue
Block a user