mirror of
https://github.com/matrix-org/dendrite.git
synced 2026-01-04 12:43:10 -06:00
Only force a notifier update if we have to
This commit is contained in:
parent
9f155c8f97
commit
8e1b5abd1b
|
|
@ -87,6 +87,7 @@ func (p *PresenceStreamProvider) populatePresence(
|
||||||
presences map[string]*types.PresenceInternal,
|
presences map[string]*types.PresenceInternal,
|
||||||
ignoreCache bool,
|
ignoreCache bool,
|
||||||
) error {
|
) error {
|
||||||
|
var changesMade bool
|
||||||
for _, room := range req.Response.Rooms.Join {
|
for _, room := range req.Response.Rooms.Join {
|
||||||
for _, stateEvent := range append(room.State.Events, room.Timeline.Events...) {
|
for _, stateEvent := range append(room.State.Events, room.Timeline.Events...) {
|
||||||
switch {
|
switch {
|
||||||
|
|
@ -108,13 +109,17 @@ func (p *PresenceStreamProvider) populatePresence(
|
||||||
if err != nil && err != sql.ErrNoRows {
|
if err != nil && err != sql.ErrNoRows {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
changesMade = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: This is expensive, why do we do this?
|
if changesMade {
|
||||||
if err := p.notifier.Load(ctx, p.DB); err != nil {
|
// TODO: This is expensive, but seems to be the only thing that
|
||||||
req.Log.WithError(err).Error("unable to refresh notifier lists")
|
// stops sytest from racing on a couple of remote user tests.
|
||||||
return err
|
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 {
|
for _, presence := range presences {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue