From 35d29724943e123d866c4c49c8a42a18543fa6cb Mon Sep 17 00:00:00 2001 From: Neil Alexander Date: Fri, 16 Oct 2020 11:31:05 +0100 Subject: [PATCH] Don't run the latest events updater at all for KindOld --- roomserver/internal/input/input.go | 1 + roomserver/internal/input/input_events.go | 23 ++++----- .../internal/input/input_latest_events.go | 49 ++++++++----------- 3 files changed, 34 insertions(+), 39 deletions(-) diff --git a/roomserver/internal/input/input.go b/roomserver/internal/input/input.go index d340ac218..b5d20a05e 100644 --- a/roomserver/internal/input/input.go +++ b/roomserver/internal/input/input.go @@ -85,6 +85,7 @@ func (r *Inputer) WriteOutputEvents(roomID string, updates []api.OutputEvent) er logger = logger.WithFields(log.Fields{ "event_type": updates[i].NewRoomEvent.Event.Type(), "event_id": updates[i].NewRoomEvent.Event.EventID(), + "is_fwd_extrem": updates[i].NewRoomEvent.IsForwardExtremity, "adds_state": len(updates[i].NewRoomEvent.AddsStateEventIDs), "removes_state": len(updates[i].NewRoomEvent.RemovesStateEventIDs), "send_as_server": updates[i].NewRoomEvent.SendAsServer, diff --git a/roomserver/internal/input/input_events.go b/roomserver/internal/input/input_events.go index 270f243c9..1fcdc0c11 100644 --- a/roomserver/internal/input/input_events.go +++ b/roomserver/internal/input/input_events.go @@ -136,17 +136,18 @@ func (r *Inputer) processRoomEvent( return event.EventID(), rejectionErr } - if err = r.updateLatestEvents( - ctx, // context - roomInfo, // room info for the room being updated - stateAtEvent, // state at event (below) - input.Kind, // kind of event - event, // event - input.SendAsServer, // send as server - input.TransactionID, // transaction ID - input.HasState, // rewrites state? - ); err != nil { - return "", fmt.Errorf("r.updateLatestEvents: %w", err) + if input.Kind == api.KindNew { + if err = r.updateLatestEvents( + ctx, // context + roomInfo, // room info for the room being updated + stateAtEvent, // state at event (below) + event, // event + input.SendAsServer, // send as server + input.TransactionID, // transaction ID + input.HasState, // rewrites state? + ); err != nil { + return "", fmt.Errorf("r.updateLatestEvents: %w", err) + } } // processing this event resulted in an event (which may not be the one we're processing) diff --git a/roomserver/internal/input/input_latest_events.go b/roomserver/internal/input/input_latest_events.go index 5ef5b93b2..81e5eb663 100644 --- a/roomserver/internal/input/input_latest_events.go +++ b/roomserver/internal/input/input_latest_events.go @@ -52,7 +52,6 @@ func (r *Inputer) updateLatestEvents( ctx context.Context, roomInfo *types.RoomInfo, stateAtEvent types.StateAtEvent, - kind api.Kind, event gomatrixserverlib.Event, sendAsServer string, transactionID *api.TransactionID, @@ -71,7 +70,6 @@ func (r *Inputer) updateLatestEvents( updater: updater, roomInfo: roomInfo, stateAtEvent: stateAtEvent, - kind: kind, event: event, sendAsServer: sendAsServer, transactionID: transactionID, @@ -97,7 +95,6 @@ type latestEventsUpdater struct { roomInfo *types.RoomInfo stateAtEvent types.StateAtEvent event gomatrixserverlib.Event - kind api.Kind transactionID *api.TransactionID rewritesState bool // Which server to send this event as. @@ -144,33 +141,29 @@ func (u *latestEventsUpdater) doUpdateLatestEvents() error { return nil } - var updates []api.OutputEvent - var err error - if u.kind == api.KindNew { - // Work out what the latest events are. This will include the new - // event if it is not already referenced. - if err = u.calculateLatest( - oldLatest, - types.StateAtEventAndReference{ - EventReference: u.event.EventReference(), - StateAtEvent: u.stateAtEvent, - }, - ); err != nil { - return fmt.Errorf("u.calculateLatest: %w", err) - } + // Work out what the latest events are. This will include the new + // event if it is not already referenced. + if err := u.calculateLatest( + oldLatest, + types.StateAtEventAndReference{ + EventReference: u.event.EventReference(), + StateAtEvent: u.stateAtEvent, + }, + ); err != nil { + return fmt.Errorf("u.calculateLatest: %w", err) + } - // Now that we know what the latest events are, it's time to get the - // latest state. - if err = u.latestState(); err != nil { - return fmt.Errorf("u.latestState: %w", err) - } + // Now that we know what the latest events are, it's time to get the + // latest state. + if err := u.latestState(); err != nil { + return fmt.Errorf("u.latestState: %w", err) + } - // If we need to generate any output events then here's where we do it. - // TODO: Move this! - updates, err = u.api.updateMemberships(u.ctx, u.updater, u.removed, u.added) - if err != nil { - return fmt.Errorf("u.api.updateMemberships: %w", err) - } + // If we need to generate any output events then here's where we do it. + // TODO: Move this! + updates, err := u.api.updateMemberships(u.ctx, u.updater, u.removed, u.added) + if err != nil { + return fmt.Errorf("u.api.updateMemberships: %w", err) } update, err := u.makeOutputNewRoomEvent()