From 98a280ce395d45d0689c6a2d2f2fcc6345ca553d Mon Sep 17 00:00:00 2001 From: nocturn9x Date: Wed, 10 May 2023 23:25:56 +0200 Subject: [PATCH] Attempts at fixing timeout edge cases --- aiosched/context.py | 2 -- aiosched/kernel.py | 4 ++-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/aiosched/context.py b/aiosched/context.py index fd60263..6cae8b6 100644 --- a/aiosched/context.py +++ b/aiosched/context.py @@ -58,8 +58,6 @@ class TaskScope: if not self.entry_point.done(): self.timed_out = True await throw(self.entry_point, TimeoutError("timed out")) - # Wait for the parent to exit or cancel us - await wait(self.entry_point) async def __aenter__(self): self.entry_point = await current_task() diff --git a/aiosched/kernel.py b/aiosched/kernel.py index 5807362..5f23294 100644 --- a/aiosched/kernel.py +++ b/aiosched/kernel.py @@ -582,10 +582,10 @@ class FIFOKernel: if not task.scope or task.scope.cancellable: self.paused.discard(task) self.io_release_task(task) + self.run_ready.append(task) self.handle_errors(partial(task.throw, Cancelled(task)), task) if task.state != TaskState.CANCELLED: task.pending_cancellation = True - self.run_ready.append(task) self.reschedule_running() def throw(self, task, error): @@ -595,7 +595,7 @@ class FIFOKernel: task.pending_exception = error self.run_ready.appendleft(task) - self.handle_errors(partial(task.throw, error), task) + self.handle_errors(self.run_task_step) self.reschedule_running() def handle_errors(self, func: Callable, task: Task | None = None):