Record a failed event when the listener's in-transaction re-read fails #13

Closed
opened 2026-10-06 12:23:18 +00:00 by KofTwentyTwo · 0 comments
KofTwentyTwo commented 2026-10-06 12:23:18 +00:00 (Migrated from github.com)

If fetchCurrentRecords in QuickSearchRecordChangeListener throws (for example a possible-value translation against an unavailable backend), the exception escapes onRecordsChanged before publish. QQQ logs it at warn and the update is dropped with no quickSearchFailedEvent row, contrary to the class contract. The basepull watermark is the only backstop, and there is none for tables without a timestamp field.

Fix: catch around the re-read and call recordFailures with the primary keys from the event's records. A LinkageError from the lazy publisher (optional AWS SDK missing in DEGRADED startup) has the same gap.

Found in the PR #10 review.

Part of #12.

If `fetchCurrentRecords` in `QuickSearchRecordChangeListener` throws (for example a possible-value translation against an unavailable backend), the exception escapes `onRecordsChanged` before publish. QQQ logs it at warn and the update is dropped with no `quickSearchFailedEvent` row, contrary to the class contract. The basepull watermark is the only backstop, and there is none for tables without a timestamp field. Fix: catch around the re-read and call `recordFailures` with the primary keys from the event's records. A `LinkageError` from the lazy publisher (optional AWS SDK missing in `DEGRADED` startup) has the same gap. Found in the PR #10 review. Part of #12.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: QRun-IO/qbit-quick-search#13