mirror of
https://mau.dev/mautrix/go.git
synced 2026-03-14 14:25:53 +01:00
bridgev2/disappear: reduce disappear loop interval when there are lots of messages
This commit is contained in:
parent
7ffdbe8bfc
commit
8efdbc029b
1 changed files with 9 additions and 2 deletions
|
|
@ -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...)
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue