Refactor ScheduledTasks::rescheduleProgressively() to use Doctrine

[MAILPOET-3844]
This commit is contained in:
Rodrigo Primo
2021-09-22 12:20:01 -03:00
committed by Veljko V
parent 82d4b8cb23
commit 2c78db9e04
14 changed files with 139 additions and 99 deletions

View File

@@ -61,4 +61,17 @@ class CronWorkerScheduler {
$this->scheduledTaskRepository->persist($task);
$this->scheduledTaskRepository->flush();
}
public function rescheduleProgressively(ScheduledTaskEntity $task): int {
$scheduledAt = Carbon::createFromTimestamp($this->wp->currentTime('timestamp'));
$rescheduleCount = $task->getRescheduleCount();
$timeout = (int)min(ScheduledTaskEntity::BASIC_RESCHEDULE_TIMEOUT * pow(2, $rescheduleCount), ScheduledTaskEntity::MAX_RESCHEDULE_TIMEOUT);
$task->setScheduledAt($scheduledAt->addMinutes($timeout));
$task->setRescheduleCount($rescheduleCount + 1);
$task->setStatus(ScheduledTaskEntity::STATUS_SCHEDULED);
$this->scheduledTaskRepository->persist($task);
$this->scheduledTaskRepository->flush();
return $timeout;
}
}