Skip to content

Commit 218f128

Browse files
authored
fix(taskworker) Handle an empty schedule set (#84778)
Don't error if there are no scheduled tasks. This will happen in the sandbox and when we first start deploying taskworkers.
1 parent 6196966 commit 218f128

File tree

2 files changed

+11
-0
lines changed

2 files changed

+11
-0
lines changed

src/sentry/taskworker/scheduler/runner.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,9 @@ def tick(self) -> float:
157157
"""
158158
self._update_heap()
159159

160+
if not self._heap:
161+
return 60
162+
160163
while True:
161164
# Peek at the top, and if it is due, pop, spawn and update last run time
162165
_, entry = self._heap[0]

tests/sentry/taskworker/scheduler/test_runner.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,14 @@ def test_schedulerunner_add_invalid(taskregistry) -> None:
6666
assert "microseconds" in str(err)
6767

6868

69+
def test_schedulerunner_tick_no_tasks(taskregistry: TaskRegistry, run_storage: RunStorage) -> None:
70+
schedule_set = ScheduleRunner(registry=taskregistry, run_storage=run_storage)
71+
72+
with freeze_time("2025-01-24 14:25:00"):
73+
sleep_time = schedule_set.tick()
74+
assert sleep_time == 60
75+
76+
6977
def test_schedulerunner_tick_one_task_time_remaining(
7078
taskregistry: TaskRegistry, run_storage: RunStorage
7179
) -> None:

0 commit comments

Comments
 (0)