Skip to content

Commit

Permalink
[SCHEDULER] clarify idle state and stateful option
Browse files Browse the repository at this point in the history
  • Loading branch information
alli83 committed Jan 19, 2024
1 parent 8ac82c9 commit 9f624e1
Showing 1 changed file with 9 additions and 4 deletions.
13 changes: 9 additions & 4 deletions scheduler.rst
Original file line number Diff line number Diff line change
Expand Up @@ -336,13 +336,18 @@ recurring messages. You can narrow down the list to a specific schedule:
Efficient management with Symfony Scheduler
-------------------------------------------

If a worker becomes idle, the recurring messages won't be generated (because they
are created on-the-fly by the scheduler transport).
When a worker is restarted or undergoes shutdown for a period, the Scheduler transport won't be able to generate the messages (because they are created on-the-fly by the scheduler transport).
This implies that any messages scheduled to be sent during the worker's inactive period are not sent, and the Scheduler will lose track of the last processed message.
Upon restart, it will recalculate the messages to be generated from that point onward.

To illustrate, consider a recurring message set to be sent every 3 days.
If a worker is restarted on day 2, the message will be sent 3 days from the restart, on day 5.

While this behavior may not necessarily pose a problem, there is a possibility that it may not align with what you are seeking.

That's why the scheduler allows to remember the last execution date of a message
via the ``stateful`` option (and the :doc:`Cache component </components/cache>`).
This way, when it wakes up again, it looks at all the dates and can catch up on
what it missed::
This allows the system to retain the state of the schedule, ensuring that when a worker is restarted, it resumes from the point it left off.

// src/Scheduler/MyScheduleProvider.php
namespace App\Scheduler;
Expand Down

0 comments on commit 9f624e1

Please sign in to comment.