From e1ab7c0db2617fdb1cd8d0c4d765f6525773ca3e Mon Sep 17 00:00:00 2001 From: Hiroshi Nishio Date: Fri, 26 Dec 2025 23:55:11 +0900 Subject: [PATCH 1/2] Handle duplicate check_suite inserts gracefully without logging to Sentry --- .../check_suites/insert_check_suite.py | 23 ++++++++++++------- .../check_suites/test_insert_check_suite.py | 14 +++++++++++ 2 files changed, 29 insertions(+), 8 deletions(-) diff --git a/services/supabase/check_suites/insert_check_suite.py b/services/supabase/check_suites/insert_check_suite.py index 7aed37f43..6be66aad0 100644 --- a/services/supabase/check_suites/insert_check_suite.py +++ b/services/supabase/check_suites/insert_check_suite.py @@ -1,16 +1,23 @@ +from postgrest.exceptions import APIError + from services.supabase.client import supabase from utils.error.handle_exceptions import handle_exceptions @handle_exceptions(default_return_value=False, raise_on_error=False) def insert_check_suite(check_suite_id: int): - result = ( - supabase.table("check_suites") - .insert({"check_suite_id": check_suite_id}) - .execute() - ) + try: + result = ( + supabase.table("check_suites") + .insert({"check_suite_id": check_suite_id}) + .execute() + ) - if result.data and len(result.data) > 0: - return True + if result.data and len(result.data) > 0: + return True - return False + return False + except APIError as e: + if e.code == "23505": + return False + raise diff --git a/services/supabase/check_suites/test_insert_check_suite.py b/services/supabase/check_suites/test_insert_check_suite.py index d4e15f20a..9f7382d2b 100644 --- a/services/supabase/check_suites/test_insert_check_suite.py +++ b/services/supabase/check_suites/test_insert_check_suite.py @@ -1,6 +1,8 @@ from unittest.mock import MagicMock, patch import pytest +from postgrest.exceptions import APIError + from services.supabase.check_suites.insert_check_suite import insert_check_suite @@ -39,6 +41,18 @@ def test_insert_check_suite_duplicate(mock_supabase_client): assert result is False +def test_insert_check_suite_duplicate_key_error_returns_false(mock_supabase_client): + mock, _ = mock_supabase_client + api_error = APIError( + {"code": "23505", "message": "duplicate key value violates unique constraint"} + ) + mock.table.return_value.insert.return_value.execute.side_effect = api_error + + result = insert_check_suite(check_suite_id=12345) + + assert result is False + + def test_insert_check_suite_exception_returns_false(mock_supabase_client): mock, _ = mock_supabase_client mock.table.return_value.insert.return_value.execute.side_effect = Exception( From 23365c3cac1a3c86a1be596dc933bc3b53054ac9 Mon Sep 17 00:00:00 2001 From: Hiroshi Nishio Date: Fri, 26 Dec 2025 23:57:31 +0900 Subject: [PATCH 2/2] Handle duplicate webhook_delivery inserts gracefully without logging to Sentry --- .../insert_webhook_delivery.py | 23 ++++++++++++------- .../test_insert_webhook_delivery.py | 16 +++++++++++++ 2 files changed, 31 insertions(+), 8 deletions(-) diff --git a/services/supabase/webhook_deliveries/insert_webhook_delivery.py b/services/supabase/webhook_deliveries/insert_webhook_delivery.py index c3e680fe9..87107f4c4 100644 --- a/services/supabase/webhook_deliveries/insert_webhook_delivery.py +++ b/services/supabase/webhook_deliveries/insert_webhook_delivery.py @@ -1,16 +1,23 @@ +from postgrest.exceptions import APIError + from services.supabase.client import supabase from utils.error.handle_exceptions import handle_exceptions @handle_exceptions(default_return_value=False, raise_on_error=False) def insert_webhook_delivery(delivery_id: str, event_name: str): - result = ( - supabase.table("webhook_deliveries") - .insert({"delivery_id": delivery_id, "event_name": event_name}) - .execute() - ) + try: + result = ( + supabase.table("webhook_deliveries") + .insert({"delivery_id": delivery_id, "event_name": event_name}) + .execute() + ) - if result.data and len(result.data) > 0: - return True + if result.data and len(result.data) > 0: + return True - return False + return False + except APIError as e: + if e.code == "23505": + return False + raise diff --git a/services/supabase/webhook_deliveries/test_insert_webhook_delivery.py b/services/supabase/webhook_deliveries/test_insert_webhook_delivery.py index 1efc4e402..e165a2052 100644 --- a/services/supabase/webhook_deliveries/test_insert_webhook_delivery.py +++ b/services/supabase/webhook_deliveries/test_insert_webhook_delivery.py @@ -1,6 +1,8 @@ from unittest.mock import MagicMock, patch import pytest +from postgrest.exceptions import APIError + from services.supabase.webhook_deliveries.insert_webhook_delivery import ( insert_webhook_delivery, ) @@ -52,6 +54,20 @@ def test_insert_webhook_delivery_duplicate(mock_supabase_client): assert result is False +def test_insert_webhook_delivery_duplicate_key_error_returns_false( + mock_supabase_client, +): + mock, _ = mock_supabase_client + api_error = APIError( + {"code": "23505", "message": "duplicate key value violates unique constraint"} + ) + mock.table.return_value.insert.return_value.execute.side_effect = api_error + + result = insert_webhook_delivery(delivery_id="abc-123", event_name="check_suite") + + assert result is False + + def test_insert_webhook_delivery_exception_returns_false(mock_supabase_client): mock, _ = mock_supabase_client mock.table.return_value.insert.return_value.execute.side_effect = Exception(