From 789af91838584ae0d5d8766e67e9313604eea179 Mon Sep 17 00:00:00 2001 From: Hemant Singh Date: Thu, 25 Jan 2024 17:30:02 +0530 Subject: [PATCH] fixes the incorrect remaining items count in a paginated list items query Signed-off-by: Hemant Singh --- pkg/server/list.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/pkg/server/list.go b/pkg/server/list.go index ebec0df7..e256e415 100644 --- a/pkg/server/list.go +++ b/pkg/server/list.go @@ -53,6 +53,14 @@ func (l *LimitedServer) list(ctx context.Context, r *etcdserverpb.RangeRequest) if limit > 0 && resp.Count > r.Limit { resp.More = true resp.Kvs = kvs[0 : limit-1] + + // count the actual number of results if there are more items in the db. + _, count, err := l.backend.Count(ctx, prefix) + if err != nil { + return nil, err + } + logrus.Tracef("LIST COUNT key=%s, end=%s, revision=%d, currentRev=%d count=%d", r.Key, r.RangeEnd, r.Revision, rev, count) + resp.Count = count } return resp, nil