From 38e91edabcf404292155bbbce690ef5b5f890bcf Mon Sep 17 00:00:00 2001 From: Gyubong Lee Date: Fri, 26 Jul 2024 09:18:31 +0000 Subject: [PATCH] fix: Silent failure of DockerAgent.push_image --- src/ai/backend/agent/docker/agent.py | 8 +++++++- src/ai/backend/common/bgtask.py | 6 +++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/ai/backend/agent/docker/agent.py b/src/ai/backend/agent/docker/agent.py index 5228993fa6f..43274d0f4f1 100644 --- a/src/ai/backend/agent/docker/agent.py +++ b/src/ai/backend/agent/docker/agent.py @@ -1343,7 +1343,13 @@ async def push_image(self, image_ref: ImageRef, registry_conf: ImageRegistry) -> } async with closing_async(Docker()) as docker: - await docker.images.push(image_ref.canonical, auth=auth_config) + result = await docker.images.push(image_ref.canonical, auth=auth_config) + + # Why is this list? It contradicts the API documentation. + result_ = cast(list, result) + + if error := result_[-1].get("error"): + raise RuntimeError(f"Failed to push image: {error}") async def pull_image(self, image_ref: ImageRef, registry_conf: ImageRegistry) -> None: auth_config = None diff --git a/src/ai/backend/common/bgtask.py b/src/ai/backend/common/bgtask.py index 58aa282206c..50f0edd7177 100644 --- a/src/ai/backend/common/bgtask.py +++ b/src/ai/backend/common/bgtask.py @@ -167,7 +167,11 @@ async def push_bgtask_events( else: await resp.send("{}", event="bgtask_done") await resp.send("{}", event="server_close") - case BgtaskCancelledEvent() | BgtaskFailedEvent(): + case BgtaskCancelledEvent(): + await resp.send("{}", event="bgtask_failed") + await resp.send("{}", event="server_close") + case BgtaskFailedEvent(): + await resp.send("{}", event="bgtask_cancelled") await resp.send("{}", event="server_close") except: log.exception("")