From 8efdbc029bbde2f9192be0834eaec9fba99d4352 Mon Sep 17 00:00:00 2001 From: Tulir Asokan Date: Thu, 17 Jul 2025 17:20:28 +0300 Subject: [PATCH] bridgev2/disappear: reduce disappear loop interval when there are lots of messages --- bridgev2/disappear.go | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/bridgev2/disappear.go b/bridgev2/disappear.go index 8305f84b..546118de 100644 --- a/bridgev2/disappear.go +++ b/bridgev2/disappear.go @@ -41,15 +41,22 @@ func (dl *DisappearLoop) Start() { if err != nil { log.Err(err).Msg("Failed to get upcoming disappearing messages") } else if len(messages) > 0 { - if len(messages) > MessageLimit/2 && messages[len(messages)-1].DisappearAt.Before(time.Now()) { + lastDisappearTime := messages[len(messages)-1].DisappearAt + if len(messages) > MessageLimit/2 && lastDisappearTime.Before(time.Now()) { // If there are many messages, and they're all due immediately, // process them synchronously and then check again. dl.sleepAndDisappear(ctx, messages...) log.Debug(). Int("message_count", len(messages)). - Time("last_due", messages[len(messages)-1].DisappearAt). + Time("last_due", lastDisappearTime). Msg("Checking for disappearing messages again immediately") continue + } else if len(messages) >= MessageLimit && lastDisappearTime.Add(5*time.Second).Before(dl.NextCheck) { + log.Debug(). + Int("message_count", len(messages)). + Time("last_due", lastDisappearTime). + Msg("Using lower disappearing message check interval as the limit was reached, but the last message isn't due yet") + dl.NextCheck = lastDisappearTime.Add(5 * time.Second) } go dl.sleepAndDisappear(ctx, messages...) }