From f6a75c86c6225b62dd32c7fe8ebc95f24ce3920b Mon Sep 17 00:00:00 2001 From: rkuo-danswer Date: Fri, 28 Feb 2025 10:35:24 -0800 Subject: [PATCH] Bugfix/emit background error (#4156) * print the test name when it runs * type hints * can't reuse session after an exception * better logging --------- Co-authored-by: Richard Kuo (Danswer) --- backend/onyx/background/error_logging.py | 27 +++++++++++++++++++----- backend/tests/integration/conftest.py | 10 +++++++++ 2 files changed, 32 insertions(+), 5 deletions(-) diff --git a/backend/onyx/background/error_logging.py b/backend/onyx/background/error_logging.py index 8c5a2215e8..2c3e2b4e14 100644 --- a/backend/onyx/background/error_logging.py +++ b/backend/onyx/background/error_logging.py @@ -11,10 +11,27 @@ def emit_background_error( """Currently just saves a row in the background_errors table. In the future, could create notifications based on the severity.""" - with get_session_with_current_tenant() as db_session: - try: + error_message = "" + + # try to write to the db, but handle IntegrityError specifically + try: + with get_session_with_current_tenant() as db_session: create_background_error(db_session, message, cc_pair_id) - except IntegrityError as e: - # Log an error if the cc_pair_id was deleted or any other exception occurs - error_message = f"Failed to create background error: {str(e)}. Original message: {message}" + except IntegrityError as e: + # Log an error if the cc_pair_id was deleted or any other exception occurs + error_message = ( + f"Failed to create background error: {str(e)}. Original message: {message}" + ) + except Exception: + pass + + if not error_message: + return + + # if we get here from an IntegrityError, try to write the error message to the db + # we need a new session because the first session is now invalid + try: + with get_session_with_current_tenant() as db_session: create_background_error(db_session, error_message, None) + except Exception: + pass diff --git a/backend/tests/integration/conftest.py b/backend/tests/integration/conftest.py index 8c92993475..e67a8b4f3e 100644 --- a/backend/tests/integration/conftest.py +++ b/backend/tests/integration/conftest.py @@ -108,3 +108,13 @@ def admin_user() -> DATestUser: @pytest.fixture def reset_multitenant() -> None: reset_all_multitenant() + + +def pytest_runtest_logstart(nodeid: str, location: tuple[str, int | None, str]) -> None: + print(f"\nTest start: {nodeid}") + + +def pytest_runtest_logfinish( + nodeid: str, location: tuple[str, int | None, str] +) -> None: + print(f"\nTest end: {nodeid}")