From 8e1b5abd1b394205a6b1702917935a9cc75021e1 Mon Sep 17 00:00:00 2001 From: Neil Alexander Date: Tue, 26 Apr 2022 16:24:09 +0100 Subject: [PATCH] Only force a notifier update if we have to --- syncapi/streams/stream_presence.go | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/syncapi/streams/stream_presence.go b/syncapi/streams/stream_presence.go index e9c739b32..a4d513d06 100644 --- a/syncapi/streams/stream_presence.go +++ b/syncapi/streams/stream_presence.go @@ -87,6 +87,7 @@ func (p *PresenceStreamProvider) populatePresence( presences map[string]*types.PresenceInternal, ignoreCache bool, ) error { + var changesMade bool for _, room := range req.Response.Rooms.Join { for _, stateEvent := range append(room.State.Events, room.Timeline.Events...) { switch { @@ -108,13 +109,17 @@ func (p *PresenceStreamProvider) populatePresence( if err != nil && err != sql.ErrNoRows { return err } + changesMade = true } } - // TODO: This is expensive, why do we do this? - if err := p.notifier.Load(ctx, p.DB); err != nil { - req.Log.WithError(err).Error("unable to refresh notifier lists") - return err + if changesMade { + // TODO: This is expensive, but seems to be the only thing that + // stops sytest from racing on a couple of remote user tests. + if err := p.notifier.Load(ctx, p.DB); err != nil { + req.Log.WithError(err).Error("unable to refresh notifier lists") + return err + } } for _, presence := range presences {