Don't run the latest events updater at all for KindOld

This commit is contained in:
Neil Alexander 2020-10-16 11:31:05 +01:00
parent 2f6b009fdb
commit 35d2972494
No known key found for this signature in database
GPG key ID: A02A2019A2BB0944
3 changed files with 34 additions and 39 deletions

View file

@ -85,6 +85,7 @@ func (r *Inputer) WriteOutputEvents(roomID string, updates []api.OutputEvent) er
logger = logger.WithFields(log.Fields{ logger = logger.WithFields(log.Fields{
"event_type": updates[i].NewRoomEvent.Event.Type(), "event_type": updates[i].NewRoomEvent.Event.Type(),
"event_id": updates[i].NewRoomEvent.Event.EventID(), "event_id": updates[i].NewRoomEvent.Event.EventID(),
"is_fwd_extrem": updates[i].NewRoomEvent.IsForwardExtremity,
"adds_state": len(updates[i].NewRoomEvent.AddsStateEventIDs), "adds_state": len(updates[i].NewRoomEvent.AddsStateEventIDs),
"removes_state": len(updates[i].NewRoomEvent.RemovesStateEventIDs), "removes_state": len(updates[i].NewRoomEvent.RemovesStateEventIDs),
"send_as_server": updates[i].NewRoomEvent.SendAsServer, "send_as_server": updates[i].NewRoomEvent.SendAsServer,

View file

@ -136,17 +136,18 @@ func (r *Inputer) processRoomEvent(
return event.EventID(), rejectionErr return event.EventID(), rejectionErr
} }
if err = r.updateLatestEvents( if input.Kind == api.KindNew {
ctx, // context if err = r.updateLatestEvents(
roomInfo, // room info for the room being updated ctx, // context
stateAtEvent, // state at event (below) roomInfo, // room info for the room being updated
input.Kind, // kind of event stateAtEvent, // state at event (below)
event, // event event, // event
input.SendAsServer, // send as server input.SendAsServer, // send as server
input.TransactionID, // transaction ID input.TransactionID, // transaction ID
input.HasState, // rewrites state? input.HasState, // rewrites state?
); err != nil { ); err != nil {
return "", fmt.Errorf("r.updateLatestEvents: %w", err) return "", fmt.Errorf("r.updateLatestEvents: %w", err)
}
} }
// processing this event resulted in an event (which may not be the one we're processing) // processing this event resulted in an event (which may not be the one we're processing)

View file

@ -52,7 +52,6 @@ func (r *Inputer) updateLatestEvents(
ctx context.Context, ctx context.Context,
roomInfo *types.RoomInfo, roomInfo *types.RoomInfo,
stateAtEvent types.StateAtEvent, stateAtEvent types.StateAtEvent,
kind api.Kind,
event gomatrixserverlib.Event, event gomatrixserverlib.Event,
sendAsServer string, sendAsServer string,
transactionID *api.TransactionID, transactionID *api.TransactionID,
@ -71,7 +70,6 @@ func (r *Inputer) updateLatestEvents(
updater: updater, updater: updater,
roomInfo: roomInfo, roomInfo: roomInfo,
stateAtEvent: stateAtEvent, stateAtEvent: stateAtEvent,
kind: kind,
event: event, event: event,
sendAsServer: sendAsServer, sendAsServer: sendAsServer,
transactionID: transactionID, transactionID: transactionID,
@ -97,7 +95,6 @@ type latestEventsUpdater struct {
roomInfo *types.RoomInfo roomInfo *types.RoomInfo
stateAtEvent types.StateAtEvent stateAtEvent types.StateAtEvent
event gomatrixserverlib.Event event gomatrixserverlib.Event
kind api.Kind
transactionID *api.TransactionID transactionID *api.TransactionID
rewritesState bool rewritesState bool
// Which server to send this event as. // Which server to send this event as.
@ -144,33 +141,29 @@ func (u *latestEventsUpdater) doUpdateLatestEvents() error {
return nil return nil
} }
var updates []api.OutputEvent // Work out what the latest events are. This will include the new
var err error // event if it is not already referenced.
if u.kind == api.KindNew { if err := u.calculateLatest(
// Work out what the latest events are. This will include the new oldLatest,
// event if it is not already referenced. types.StateAtEventAndReference{
if err = u.calculateLatest( EventReference: u.event.EventReference(),
oldLatest, StateAtEvent: u.stateAtEvent,
types.StateAtEventAndReference{ },
EventReference: u.event.EventReference(), ); err != nil {
StateAtEvent: u.stateAtEvent, return fmt.Errorf("u.calculateLatest: %w", err)
}, }
); err != nil {
return fmt.Errorf("u.calculateLatest: %w", err)
}
// Now that we know what the latest events are, it's time to get the // Now that we know what the latest events are, it's time to get the
// latest state. // latest state.
if err = u.latestState(); err != nil { if err := u.latestState(); err != nil {
return fmt.Errorf("u.latestState: %w", err) return fmt.Errorf("u.latestState: %w", err)
} }
// If we need to generate any output events then here's where we do it. // If we need to generate any output events then here's where we do it.
// TODO: Move this! // TODO: Move this!
updates, err = u.api.updateMemberships(u.ctx, u.updater, u.removed, u.added) updates, err := u.api.updateMemberships(u.ctx, u.updater, u.removed, u.added)
if err != nil { if err != nil {
return fmt.Errorf("u.api.updateMemberships: %w", err) return fmt.Errorf("u.api.updateMemberships: %w", err)
}
} }
update, err := u.makeOutputNewRoomEvent() update, err := u.makeOutputNewRoomEvent()