From c39b148dc5b30b7eb694805dc756f4e5ac6bb5e7 Mon Sep 17 00:00:00 2001 From: Eu Pin Tien Date: Wed, 15 Apr 2026 10:51:43 +0100 Subject: [PATCH] Feedback callback failures due to no rows in database should be requeued to guard against database registration race conditions --- src/murfey/server/feedback.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/murfey/server/feedback.py b/src/murfey/server/feedback.py index f58529da0..e0fadf5e9 100644 --- a/src/murfey/server/feedback.py +++ b/src/murfey/server/feedback.py @@ -25,6 +25,7 @@ from sqlalchemy import func from sqlalchemy.exc import ( InvalidRequestError, + NoResultFound, OperationalError, PendingRollbackError, SQLAlchemyError, @@ -2189,6 +2190,12 @@ def feedback_callback(header: dict, message: dict, _db=murfey_db) -> None: time.sleep(1) if murfey.server._transport_object: murfey.server._transport_object.transport.nack(header, requeue=True) + except NoResultFound: + # Missing rows might be due to a race condition and should be requeued + logger.warning("No matching database row was found", exc_info=True) + time.sleep(1) + if murfey.server._transport_object: + murfey.server._transport_object.transport.nack(header, requeue=True) except Exception: logger.warning( "Exception encountered in server RabbitMQ callback", exc_info=True