From 09231cd7f7e19a898f2663ce9341c07aaa7ce75e Mon Sep 17 00:00:00 2001 From: Martin Dimitrov Date: Tue, 28 Oct 2025 22:19:07 -0700 Subject: [PATCH] fix poll lock + metrics --- .../src/functions/buzzer-activated.ts | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/packages/doorman-client/src/functions/buzzer-activated.ts b/packages/doorman-client/src/functions/buzzer-activated.ts index c0ca039..db64d0c 100644 --- a/packages/doorman-client/src/functions/buzzer-activated.ts +++ b/packages/doorman-client/src/functions/buzzer-activated.ts @@ -87,25 +87,26 @@ export const handler: ServerlessFunctionSignature((resolve, reject) => { intervals.push(setInterval(() => { + // prevent multiple polling at once + if (pollLock) { + return; + } + getMetricFromRegistry(metricsRegistry, BuzzerActivatedMetrics.POLL_ATTEMPTS) .inc({ door: config.door }, 1); const recordPollLatency = getMetricFromRegistry(metricsRegistry, BuzzerActivatedMetrics.POLL_LATENCY) .startTimer({ door: config.door }); - // prevent multiple polling at once - if (pollLock) { - return; - } - pollLock = true; fetch(context.DOORMAN_URL + `/api/door/status?door=${config.door}`) .then(res => res.json()) .then(async (rawBody) => { let body = rawBody as StatusResponse; recordPollLatency(); + pollLock = false; + if (body?.status === DoorStatus.OPEN) { - pollLock = false; clearInterval(intervals[0]); const twiml = doorOpenTwiml(config);