Skip to content

Commit 3afaa94

Browse files
committed
bridge: avoid poll health false negatives on ack failures
1 parent 642ab97 commit 3afaa94

1 file changed

Lines changed: 14 additions & 5 deletions

File tree

slack-bridge/broker-bridge.mjs

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -845,10 +845,12 @@ async function startPollLoop() {
845845
const STATUS_LOG_INTERVAL_MS = 60_000; // log a status line every 60s even when idle
846846

847847
while (true) {
848+
let pollSucceeded = false;
848849
try {
849850
pruneDedupe();
850851

851852
const messages = await pullInbox();
853+
pollSucceeded = true;
852854
markHealth("poll", true);
853855
pollCount++;
854856
const ackIds = [];
@@ -919,11 +921,18 @@ async function startPollLoop() {
919921
backoffMs = POLL_INTERVAL_MS;
920922
await sleep(POLL_INTERVAL_MS);
921923
} catch (err) {
922-
markHealth("poll", false, err);
923-
const errMsg = err instanceof Error ? err.message : "unknown error";
924-
const errStack = err instanceof Error ? err.stack : "";
925-
logError(`❌ inbox poll failed: ${errMsg}`);
926-
if (errStack) logError(` stack: ${errStack}`);
924+
if (!pollSucceeded) {
925+
markHealth("poll", false, err);
926+
const errMsg = err instanceof Error ? err.message : "unknown error";
927+
const errStack = err instanceof Error ? err.stack : "";
928+
logError(`❌ inbox poll failed: ${errMsg}`);
929+
if (errStack) logError(` stack: ${errStack}`);
930+
} else {
931+
const errMsg = err instanceof Error ? err.message : "unknown error";
932+
const errStack = err instanceof Error ? err.stack : "";
933+
logError(`❌ broker cycle failed after successful poll: ${errMsg}`);
934+
if (errStack) logError(` stack: ${errStack}`);
935+
}
927936
logError(` ↳ backing off ${backoffMs}ms before next attempt`);
928937
await sleep(backoffMs);
929938
backoffMs = Math.min(MAX_BACKOFF_MS, Math.max(POLL_INTERVAL_MS, backoffMs * 2));

0 commit comments

Comments
 (0)