unified-storage: use name instead of offset in kvstore continue token (#113560)

* unified-storage: use name instead of offset in kvstore continue token

---------

Co-authored-by: Georges Chaudy <chaudyg@gmail.com>
This commit is contained in:
Will Assis
2025-12-02 10:35:03 -05:00
committed by GitHub
co-authored by Georges Chaudy
parent bdf529c545
commit 047e6d45fa
11 changed files with 236 additions and 115 deletions
+10 -19
View File
@@ -440,16 +440,14 @@ func runTestIntegrationBackendList(t *testing.T, backend resource.StorageBackend
require.NoError(t, err)
require.Nil(t, res.Error)
require.Len(t, res.Items, 3)
continueToken, err := resource.GetContinueToken(res.NextPageToken)
require.NoError(t, err)
require.Contains(t, string(res.Items[0].Value), "item1 ADDED")
require.Contains(t, string(res.Items[1].Value), "item2 MODIFIED")
require.Contains(t, string(res.Items[2].Value), "item4 ADDED")
require.GreaterOrEqual(t, continueToken.ResourceVersion, rv8)
require.NotEmpty(t, res.NextPageToken)
res, err = server.List(ctx, &resourcepb.ListRequest{
Limit: 3,
NextPageToken: continueToken.String(),
NextPageToken: res.NextPageToken,
Options: &resourcepb.ListOptions{
Key: &resourcepb.ResourceKey{
Namespace: ns,
@@ -460,6 +458,8 @@ func runTestIntegrationBackendList(t *testing.T, backend resource.StorageBackend
})
require.NoError(t, err)
require.Nil(t, res.Error)
require.Contains(t, string(res.Items[0].Value), "item5 ADDED")
require.Contains(t, string(res.Items[1].Value), "item6 ADDED")
require.Len(t, res.Items, 2)
require.Empty(t, res.NextPageToken)
})
@@ -504,15 +504,12 @@ func runTestIntegrationBackendList(t *testing.T, backend resource.StorageBackend
require.Contains(t, string(res.Items[0].Value), "item1 ADDED")
require.Contains(t, string(res.Items[1].Value), "item2 MODIFIED")
require.Contains(t, string(res.Items[2].Value), "item4 ADDED")
continueToken, err := resource.GetContinueToken(res.NextPageToken)
require.NoError(t, err)
require.Equal(t, rv7, continueToken.ResourceVersion)
require.NotEmpty(t, res.NextPageToken)
res, err = server.List(ctx, &resourcepb.ListRequest{
Limit: 3,
ResourceVersion: rv7,
NextPageToken: continueToken.String(),
NextPageToken: res.NextPageToken,
Options: &resourcepb.ListOptions{
Key: &resourcepb.ResourceKey{
Namespace: ns,
@@ -756,10 +753,7 @@ func runTestIntegrationBackendListHistory(t *testing.T, backend resource.Storage
require.GreaterOrEqual(t, res.ResourceVersion, tc.minExpectedHeadRV)
// Check continue token
continueToken, err := resource.GetContinueToken(res.NextPageToken)
require.NoError(t, err)
require.Equal(t, tc.expectedContinueRV, continueToken.ResourceVersion)
require.Equal(t, tc.expectedSortAsc, continueToken.SortAscending)
require.NotEmpty(t, res.NextPageToken)
})
}
@@ -775,10 +769,7 @@ func runTestIntegrationBackendListHistory(t *testing.T, backend resource.Storage
}
firstPageRes, err := server.List(ctx, firstRequest)
require.NoError(t, err)
// Get continue token for second page
continueToken, err := resource.GetContinueToken(firstPageRes.NextPageToken)
require.NoError(t, err)
require.NotEmpty(t, firstPageRes.NextPageToken)
// Get second page
secondPageRes, err := server.List(ctx, &resourcepb.ListRequest{
@@ -786,12 +777,13 @@ func runTestIntegrationBackendListHistory(t *testing.T, backend resource.Storage
Source: resourcepb.ListRequest_HISTORY,
ResourceVersion: rv1,
VersionMatchV2: resourcepb.ResourceVersionMatchV2_NotOlderThan,
NextPageToken: continueToken.String(),
NextPageToken: firstPageRes.NextPageToken,
Options: &resourcepb.ListOptions{Key: baseKey},
})
require.NoError(t, err)
require.Nil(t, secondPageRes.Error)
require.Len(t, secondPageRes.Items, 3)
require.Empty(t, secondPageRes.NextPageToken)
// Second page should continue in ascending order
expectedRVs := []int64{rvHistory3, rvHistory4, rvHistory5}
@@ -829,7 +821,6 @@ func runTestIntegrationBackendListHistory(t *testing.T, backend resource.Storage
t.Run("fetch second page of history at revision", func(t *testing.T) {
continueToken := &resource.ContinueToken{
ResourceVersion: rvHistory3,
StartOffset: 2,
SortAscending: false,
}
res, err := server.List(ctx, &resourcepb.ListRequest{