From bb3566a64933306c999947d3120c6dd2245e23d5 Mon Sep 17 00:00:00 2001 From: Till Faelligen <2353100+S7evinK@users.noreply.github.com> Date: Tue, 11 Jul 2023 11:21:07 +0200 Subject: [PATCH] Return r.from instead of an empty token --- syncapi/routing/messages.go | 12 ++++++------ syncapi/storage/storage_test.go | 3 ++- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/syncapi/routing/messages.go b/syncapi/routing/messages.go index 361581230..6905e25c7 100644 --- a/syncapi/routing/messages.go +++ b/syncapi/routing/messages.go @@ -336,10 +336,10 @@ func (r *messagesReq) retrieveEvents(ctx context.Context, rsAPI api.SyncRoomserv // removed all of them. This means there are no events for this user // anymore. Let them know. if errors.Is(err, shared.ErrNoEventsForFilter) { - return []synctypes.ClientEvent{}, emptyToken, emptyToken, nil + return []synctypes.ClientEvent{}, *r.from, emptyToken, nil } err = fmt.Errorf("GetEventsInRange: %w", err) - return []synctypes.ClientEvent{}, emptyToken, emptyToken, err + return []synctypes.ClientEvent{}, *r.from, emptyToken, err } var events []*rstypes.HeaderedEvent @@ -354,17 +354,17 @@ func (r *messagesReq) retrieveEvents(ctx context.Context, rsAPI api.SyncRoomserv // on the ordering), or we've reached a backward extremity. if len(streamEvents) == 0 { if events, err = r.handleEmptyEventsSlice(); err != nil { - return []synctypes.ClientEvent{}, emptyToken, emptyToken, err + return []synctypes.ClientEvent{}, *r.from, emptyToken, err } } else { if events, err = r.handleNonEmptyEventsSlice(streamEvents); err != nil { - return []synctypes.ClientEvent{}, emptyToken, emptyToken, err + return []synctypes.ClientEvent{}, *r.from, emptyToken, err } } // If we didn't get any event, we don't need to proceed any further. if len(events) == 0 { - return []synctypes.ClientEvent{}, emptyToken, emptyToken, nil + return []synctypes.ClientEvent{}, *r.from, emptyToken, nil } // Apply room history visibility filter @@ -382,7 +382,7 @@ func (r *messagesReq) retrieveEvents(ctx context.Context, rsAPI api.SyncRoomserv // No events left after applying history visibility if len(filteredEvents) == 0 { - return []synctypes.ClientEvent{}, emptyToken, emptyToken, nil + return []synctypes.ClientEvent{}, *r.from, emptyToken, nil } // Get the position of the first and the last event in the room's topology. diff --git a/syncapi/storage/storage_test.go b/syncapi/storage/storage_test.go index 11d47cee7..a4eb9412a 100644 --- a/syncapi/storage/storage_test.go +++ b/syncapi/storage/storage_test.go @@ -224,7 +224,8 @@ func TestGetEventsInRangeWithTopologyToken(t *testing.T) { }) } -// The purpose of this test is to ensure that backfill does indeed go backwards, using a topology token +// The purpose of this test is to ensure that backfilling returns no start/end if a given filter removes +// all events. func TestGetEventsInRangeWithTopologyTokenNoEventsForFilter(t *testing.T) { test.WithAllDatabases(t, func(t *testing.T, dbType test.DBType) { db, close := MustCreateDatabase(t, dbType)