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 {
var jr *types.JoinResponse
jr, err = p.getJoinResponseForCompleteSync(
ctx, roomID, r, &stateFilter, &eventFilter, req.Device,
ctx, roomID, r, &stateFilter, &eventFilter, req.WantFullState, req.Device,
)
if err != nil {
req.Log.WithError(err).Error("p.getJoinResponseForCompleteSync failed")
@ -75,7 +75,7 @@ func (p *PDUStreamProvider) CompleteSync(
if !peek.Deleted {
var jr *types.JoinResponse
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 {
req.Log.WithError(err).Error("p.getJoinResponseForCompleteSync failed")
@ -212,6 +212,7 @@ func (p *PDUStreamProvider) getJoinResponseForCompleteSync(
r types.Range,
stateFilter *gomatrixserverlib.StateFilter,
eventFilter *gomatrixserverlib.RoomEventFilter,
wantFullState bool,
device *userapi.Device,
) (jr *types.JoinResponse, err error) {
// TODO: When filters are added, we may need to call this multiple times to get enough events.
@ -224,12 +225,15 @@ func (p *PDUStreamProvider) getJoinResponseForCompleteSync(
}
// 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
if !wantFullState {
excludingEventIDs = make([]string, 0, len(recentStreamEvents))
for _, event := range recentStreamEvents {
if event.StateKey() != nil {
excludingEventIDs = append(excludingEventIDs, event.EventID())
}
}
}
stateEvents, err := p.DB.CurrentState(ctx, roomID, stateFilter, excludingEventIDs)
if err != nil {