From 703243194c428de90002d389020d8e720ad0eae0 Mon Sep 17 00:00:00 2001 From: Flora Thiebaut Date: Fri, 28 Nov 2025 10:47:54 +0000 Subject: [PATCH 1/2] feat: report buildrun failures to sentry --- components/renku_data_services/session/k8s_client.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/components/renku_data_services/session/k8s_client.py b/components/renku_data_services/session/k8s_client.py index a6b635793..24195f09f 100644 --- a/components/renku_data_services/session/k8s_client.py +++ b/components/renku_data_services/session/k8s_client.py @@ -4,6 +4,7 @@ from typing import TYPE_CHECKING import httpx +import sentry_sdk from kr8s import NotFoundError, ServerError from kr8s.asyncio.objects import APIObject, Pod @@ -274,6 +275,13 @@ async def update_image_build_status(self, buildrun_name: str, user_id: str) -> m ) ) else: + # Report the failed buildrun to Sentry + try: + raise errors.ProgrammingError(message=f"Build run {buildrun_name} detected as failed.") + except Exception as e: + scope = sentry_sdk.get_current_scope() + scope.set_context(key="build_run", value=k8s_build.model_dump(mode="json")) + scope.capture_exception(e) return models.ShipwrightBuildStatusUpdate( update=models.ShipwrightBuildStatusUpdateContent( status=models.BuildStatus.failed, From 620c95085ee46ba5ced27d2f71e308668bbd7f2c Mon Sep 17 00:00:00 2001 From: Flora Thiebaut Date: Fri, 28 Nov 2025 10:51:46 +0000 Subject: [PATCH 2/2] also report not found --- components/renku_data_services/session/k8s_client.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/components/renku_data_services/session/k8s_client.py b/components/renku_data_services/session/k8s_client.py index 24195f09f..886aa4e23 100644 --- a/components/renku_data_services/session/k8s_client.py +++ b/components/renku_data_services/session/k8s_client.py @@ -213,6 +213,11 @@ async def update_image_build_status(self, buildrun_name: str, user_id: str) -> m k8s_build = await self.get_build_run(name=buildrun_name, user_id=user_id) if k8s_build is None: + # Report this condition to Sentry: we expected to find a buildrun object but found none + try: + raise errors.ProgrammingError(message=f"Build run {buildrun_name} not found.") + except Exception as e: + sentry_sdk.capture_exception(e) return models.ShipwrightBuildStatusUpdate( update=models.ShipwrightBuildStatusUpdateContent(status=models.BuildStatus.failed) )