Skip to content

Commit c39b148

Browse files
committed
Feedback callback failures due to no rows in database should be requeued to guard against database registration race conditions
1 parent 3f56224 commit c39b148

1 file changed

Lines changed: 7 additions & 0 deletions

File tree

src/murfey/server/feedback.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
from sqlalchemy import func
2626
from sqlalchemy.exc import (
2727
InvalidRequestError,
28+
NoResultFound,
2829
OperationalError,
2930
PendingRollbackError,
3031
SQLAlchemyError,
@@ -2189,6 +2190,12 @@ def feedback_callback(header: dict, message: dict, _db=murfey_db) -> None:
21892190
time.sleep(1)
21902191
if murfey.server._transport_object:
21912192
murfey.server._transport_object.transport.nack(header, requeue=True)
2193+
except NoResultFound:
2194+
# Missing rows might be due to a race condition and should be requeued
2195+
logger.warning("No matching database row was found", exc_info=True)
2196+
time.sleep(1)
2197+
if murfey.server._transport_object:
2198+
murfey.server._transport_object.transport.nack(header, requeue=True)
21922199
except Exception:
21932200
logger.warning(
21942201
"Exception encountered in server RabbitMQ callback", exc_info=True

0 commit comments

Comments
 (0)