Attempts at fixing timeout edge cases

This commit is contained in:
Mattia Giambirtone 2023-05-10 23:25:56 +02:00
parent dd924d600c
commit 98a280ce39
Signed by: nocturn9x
GPG Key ID: 8270F9F467971E59
2 changed files with 2 additions and 4 deletions

View File

@ -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()

View File

@ -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):