diff --git a/pkg/registry/apis/iam/resourcepermission/storage_backend.go b/pkg/registry/apis/iam/resourcepermission/storage_backend.go index 24f0f982823..97d252a6fd5 100644 --- a/pkg/registry/apis/iam/resourcepermission/storage_backend.go +++ b/pkg/registry/apis/iam/resourcepermission/storage_backend.go @@ -95,7 +95,7 @@ func (s *ResourcePermSqlBackend) ListIterator(ctx context.Context, req *resource } pagination := &common.Pagination{ - Limit: limit, + Limit: limit + 1, // fetch one more to determine if there is a next page Continue: token.offset, } diff --git a/pkg/registry/apis/iam/resourcepermission/storage_backend_test.go b/pkg/registry/apis/iam/resourcepermission/storage_backend_test.go index e42dd8830e5..aac5eb5d38d 100644 --- a/pkg/registry/apis/iam/resourcepermission/storage_backend_test.go +++ b/pkg/registry/apis/iam/resourcepermission/storage_backend_test.go @@ -580,6 +580,9 @@ func TestIntegration_ResourcePermSqlBackend_ListIterator(t *testing.T) { continueToken = it.ContinueToken() require.NoError(t, json.Unmarshal(it.Value(), &perm)) results = append(results, perm.Name) + if len(results) >= int(req.Limit) { + return nil + } } return nil }) @@ -591,6 +594,9 @@ func TestIntegration_ResourcePermSqlBackend_ListIterator(t *testing.T) { continueToken = it.ContinueToken() require.NoError(t, json.Unmarshal(it.Value(), &perm)) results = append(results, perm.Name) + if len(results) >= int(req.Limit) { + return nil + } } return nil }) @@ -603,6 +609,9 @@ func TestIntegration_ResourcePermSqlBackend_ListIterator(t *testing.T) { continueToken = it.ContinueToken() require.NoError(t, json.Unmarshal(it.Value(), &perm)) results = append(results, perm.Name) + if len(results) >= int(req.Limit) { + return nil + } } return nil })