diff options
author | Alex Grönholm <alex.gronholm@nextday.fi> | 2022-04-18 15:19:13 +0300 |
---|---|---|
committer | Alex Grönholm <alex.gronholm@nextday.fi> | 2022-04-18 15:20:12 +0300 |
commit | ff92aa2e068c52fd5ebb8850a2fddbb1a3838879 (patch) | |
tree | c84db120feae23cfbc5b000dab861f12a156207d /tests | |
parent | 2bf02a030de624ffd001f88428b68dee451d31e8 (diff) | |
download | apscheduler-ff92aa2e068c52fd5ebb8850a2fddbb1a3838879.tar.gz |
Fixed ValueError in memory store
This occurred when two schedules were released simultaneously, with one being finished and one still running.
Fixes #616.
Diffstat (limited to 'tests')
-rw-r--r-- | tests/test_datastores.py | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/tests/test_datastores.py b/tests/test_datastores.py index 0b484f1..02efc08 100644 --- a/tests/test_datastores.py +++ b/tests/test_datastores.py @@ -304,6 +304,23 @@ class TestAsyncStores: assert not events + async def test_release_schedule_two_identical_fire_times(self, datastore: AsyncDataStore) -> None: + """Regression test for #616.""" + async with datastore: + for i in range(1, 3): + trigger = DateTrigger(datetime(2020, 9, 13, tzinfo=timezone.utc)) + schedule = Schedule(id=f's{i}', task_id='task1', trigger=trigger) + schedule.next_fire_time = trigger.next() + await datastore.add_schedule(schedule, ConflictPolicy.exception) + + schedules = await datastore.acquire_schedules('foo', 3) + schedules[0].next_fire_time = None + await datastore.release_schedules('foo', schedules) + + remaining = await datastore.get_schedules({s.id for s in schedules}) + assert len(remaining) == 1 + assert remaining[0].id == schedules[1].id + async def test_acquire_schedules_lock_timeout( self, datastore: AsyncDataStore, schedules: list[Schedule], freezer) -> None: """ |