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);
|
$this->newsletterTask->markNewsletterAsSent($newsletter, $queue);
|
||||||
continue;
|
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(
|
$this->loggerFactory->getLogger(LoggerFactory::TOPIC_NEWSLETTERS)->addInfo(
|
||||||
'before queue chunk processing',
|
'before queue chunk processing',
|
||||||
|
@ -629,6 +629,41 @@ class SendingQueueTest extends \MailPoetTest {
|
|||||||
expect(count($statistics))->equals(1);
|
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() {
|
public function testItUpdatesQueueSubscriberCountWhenNoneOfSubscribersExist() {
|
||||||
$queue = $this->queue;
|
$queue = $this->queue;
|
||||||
$queue->setSubscribers([
|
$queue->setSubscribers([
|
||||||
|
Reference in New Issue
Block a user