diff --git a/services/web/app/src/Features/Analytics/AnalyticsController.mjs b/services/web/app/src/Features/Analytics/AnalyticsController.mjs index 76b5452e58..97753be08c 100644 --- a/services/web/app/src/Features/Analytics/AnalyticsController.mjs +++ b/services/web/app/src/Features/Analytics/AnalyticsController.mjs @@ -45,10 +45,25 @@ async function updateEditingSession(req, res, next) { res.sendStatus(202) } +// TODO: remove after clients running pre-#36315 code have drained +function isIdleConnectionRestoredEvent(event, body) { + if (event !== 'connection-restored') { + return false + } + if (body.resolution === 'out-of-sync') { + return false + } + return body.pendingChars === 0 && body.inflightChars === 0 +} + function recordEvent(req, res, next) { if (!Features.hasFeature('analytics')) { return res.sendStatus(202) } + if (isIdleConnectionRestoredEvent(req.params.event, req.body)) { + metrics.inc('analytics_idle_connection_restored_blocked') + return res.sendStatus(202) + } delete req.body._csrf AnalyticsManager.recordEventForSession( req.session,