Don't dedupe if asking for full state

This commit is contained in:
Neil Alexander 2021-01-29 10:20:39 +00:00
parent 027793f122
commit 95329a024a
No known key found for this signature in database
GPG key ID: A02A2019A2BB0944

View file

@ -55,7 +55,7 @@ func (p *PDUStreamProvider) CompleteSync(
for _, roomID := range joinedRoomIDs { for _, roomID := range joinedRoomIDs {
var jr *types.JoinResponse var jr *types.JoinResponse
jr, err = p.getJoinResponseForCompleteSync( jr, err = p.getJoinResponseForCompleteSync(
ctx, roomID, r, &stateFilter, &eventFilter, req.Device, ctx, roomID, r, &stateFilter, &eventFilter, req.WantFullState, req.Device,
) )
if err != nil { if err != nil {
req.Log.WithError(err).Error("p.getJoinResponseForCompleteSync failed") req.Log.WithError(err).Error("p.getJoinResponseForCompleteSync failed")
@ -75,7 +75,7 @@ func (p *PDUStreamProvider) CompleteSync(
if !peek.Deleted { if !peek.Deleted {
var jr *types.JoinResponse var jr *types.JoinResponse
jr, err = p.getJoinResponseForCompleteSync( jr, err = p.getJoinResponseForCompleteSync(
ctx, peek.RoomID, r, &stateFilter, &eventFilter, req.Device, ctx, peek.RoomID, r, &stateFilter, &eventFilter, req.WantFullState, req.Device,
) )
if err != nil { if err != nil {
req.Log.WithError(err).Error("p.getJoinResponseForCompleteSync failed") req.Log.WithError(err).Error("p.getJoinResponseForCompleteSync failed")
@ -212,6 +212,7 @@ func (p *PDUStreamProvider) getJoinResponseForCompleteSync(
r types.Range, r types.Range,
stateFilter *gomatrixserverlib.StateFilter, stateFilter *gomatrixserverlib.StateFilter,
eventFilter *gomatrixserverlib.RoomEventFilter, eventFilter *gomatrixserverlib.RoomEventFilter,
wantFullState bool,
device *userapi.Device, device *userapi.Device,
) (jr *types.JoinResponse, err error) { ) (jr *types.JoinResponse, err error) {
// TODO: When filters are added, we may need to call this multiple times to get enough events. // TODO: When filters are added, we may need to call this multiple times to get enough events.
@ -224,10 +225,13 @@ func (p *PDUStreamProvider) getJoinResponseForCompleteSync(
} }
// Get the event IDs of the stream events we fetched. There's no point in us // Get the event IDs of the stream events we fetched. There's no point in us
excludingEventIDs := make([]string, 0, len(recentStreamEvents)) var excludingEventIDs []string
for _, event := range recentStreamEvents { if !wantFullState {
if event.StateKey() != nil { excludingEventIDs = make([]string, 0, len(recentStreamEvents))
excludingEventIDs = append(excludingEventIDs, event.EventID()) for _, event := range recentStreamEvents {
if event.StateKey() != nil {
excludingEventIDs = append(excludingEventIDs, event.EventID())
}
} }
} }