Skip to content

Commit c80d20c

Browse files
committed
PR feedback - merge TimerTask/LongTimerTask
1 parent 1f940f9 commit c80d20c

3 files changed

Lines changed: 16 additions & 19 deletions

File tree

durabletask-azuremanaged/durabletask/azuremanaged/worker.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,5 +81,6 @@ def __init__(self, *,
8181
log_formatter=log_formatter,
8282
interceptors=interceptors,
8383
concurrency_options=concurrency_options,
84-
maximum_timer_interval=None # DTS allows timers of indefinite length
84+
# DTS natively supports long timers so chunking is unnecessary
85+
maximum_timer_interval=None
8586
)

durabletask/task.py

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -521,26 +521,22 @@ def compute_next_delay(self) -> Optional[timedelta]:
521521

522522

523523
class TimerTask(CancellableTask[None]):
524-
def set_retryable_parent(self, retryable_task: RetryableTask):
525-
self._retryable_parent = retryable_task
526-
527-
def complete(self, _: datetime) -> None:
528-
super().complete(None)
529-
530-
531-
class LongTimerTask(TimerTask):
532-
def __init__(self, final_fire_at: datetime, maximum_timer_interval: timedelta):
524+
def __init__(self, final_fire_at: Optional[datetime] = None,
525+
maximum_timer_interval: Optional[timedelta] = None):
533526
super().__init__()
534527
self._final_fire_at = final_fire_at
535528
self._maximum_timer_interval = maximum_timer_interval
536529

537-
def start(self, current_utc_datetime: datetime) -> datetime:
538-
return self._get_next_fire_at(current_utc_datetime)
530+
def set_retryable_parent(self, retryable_task: RetryableTask):
531+
self._retryable_parent = retryable_task
539532

540-
def complete(self, current_utc_datetime: datetime) -> Optional[datetime]:
541-
if current_utc_datetime < self._final_fire_at:
533+
def _handle_timer_fired(self, current_utc_datetime: datetime) -> Optional[datetime]:
534+
if (self._final_fire_at is not None
535+
and self._maximum_timer_interval is not None
536+
and current_utc_datetime < self._final_fire_at):
542537
return self._get_next_fire_at(current_utc_datetime)
543-
return super().complete(current_utc_datetime)
538+
super().complete(None)
539+
return None
544540

545541
def _get_next_fire_at(self, current_utc_datetime: datetime) -> datetime:
546542
if current_utc_datetime + self._maximum_timer_interval < self._final_fire_at:

durabletask/worker.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1158,8 +1158,8 @@ def create_timer_internal(
11581158
and self._maximum_timer_interval > timedelta(0)
11591159
and self.current_utc_datetime + self._maximum_timer_interval < final_fire_at
11601160
):
1161-
timer_task = task.LongTimerTask(final_fire_at, self._maximum_timer_interval)
1162-
next_fire_at = timer_task.start(self.current_utc_datetime)
1161+
timer_task = task.TimerTask(final_fire_at, self._maximum_timer_interval)
1162+
next_fire_at = timer_task._get_next_fire_at(self.current_utc_datetime)
11631163
else:
11641164
timer_task = task.TimerTask()
11651165

@@ -1675,7 +1675,7 @@ def process_event(
16751675
f"{ctx.instance_id}: Ignoring unexpected timerFired event with ID = {timer_id}."
16761676
)
16771677
return
1678-
if not (isinstance(timer_task, task.TimerTask) or isinstance(timer_task, task.LongTimerTask)):
1678+
if not isinstance(timer_task, task.TimerTask):
16791679
if not ctx._is_replaying:
16801680
self._logger.warning(
16811681
f"{ctx.instance_id}: Ignoring timerFired event with non-timer task ID = {timer_id}."
@@ -1692,7 +1692,7 @@ def process_event(
16921692
scheduled_time_ns=created_ns,
16931693
parent_trace_context=ctx._orchestration_trace_context or ctx._parent_trace_context,
16941694
)
1695-
next_fire_at = timer_task.complete(event.timerFired.fireAt.ToDatetime())
1695+
next_fire_at = timer_task._handle_timer_fired(event.timerFired.fireAt.ToDatetime())
16961696
if next_fire_at is not None:
16971697
id = ctx.next_sequence_number()
16981698
new_action = ph.new_create_timer_action(id, next_fire_at)

0 commit comments

Comments
 (0)