From e9f61ce511d0ffdbc33b76def09955d3fe3721aa Mon Sep 17 00:00:00 2001 From: Aleksander Mistewicz Date: Wed, 10 Sep 2025 11:54:20 +0200 Subject: [PATCH] Move stats updates to getList Signed-off-by: Aleksander Mistewicz --- .../apiserver/pkg/storage/etcd3/store.go | 42 +++++++++---------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/staging/src/k8s.io/apiserver/pkg/storage/etcd3/store.go b/staging/src/k8s.io/apiserver/pkg/storage/etcd3/store.go index 82df6dbd556..798567d1cd1 100644 --- a/staging/src/k8s.io/apiserver/pkg/storage/etcd3/store.go +++ b/staging/src/k8s.io/apiserver/pkg/storage/etcd3/store.go @@ -778,8 +778,6 @@ func (s *store) GetList(ctx context.Context, key string, opts storage.ListOption metrics.RecordStorageListMetrics(s.groupResource, numFetched, numEvald, numReturn) }() - stats := s.getResourceSizeEstimator() - aggregator := s.listErrAggrFactory() for { getResp, err = s.getList(ctx, keyPrefix, opts.Recursive, kubernetes.ListOptions{ @@ -819,9 +817,6 @@ func (s *store) GetList(ctx context.Context, key string, opts storage.ListOption } else { growSlice(v, 2048, len(getResp.Kvs)) } - if stats != nil { - stats.Update(getResp.Kvs) - } // take items from the response until the bucket is full, filtering as we go for i, kv := range getResp.Kvs { @@ -903,26 +898,31 @@ func (s *store) GetList(ctx context.Context, key string, opts storage.ListOption return s.versioner.UpdateList(listObj, uint64(withRev), continueValue, remainingItemCount) } -func (s *store) getList(ctx context.Context, keyPrefix string, recursive bool, options kubernetes.ListOptions) (kubernetes.ListResponse, error) { +func (s *store) getList(ctx context.Context, keyPrefix string, recursive bool, options kubernetes.ListOptions) (resp kubernetes.ListResponse, err error) { startTime := time.Now() if recursive { - resp, err := s.client.Kubernetes.List(ctx, keyPrefix, options) + resp, err = s.client.Kubernetes.List(ctx, keyPrefix, options) metrics.RecordEtcdRequest("list", s.groupResource, err, startTime) - return resp, err - } - getResp, err := s.client.Kubernetes.Get(ctx, keyPrefix, kubernetes.GetOptions{ - Revision: options.Revision, - }) - metrics.RecordEtcdRequest("get", s.groupResource, err, startTime) - var resp kubernetes.ListResponse - if getResp.KV != nil { - resp.Kvs = []*mvccpb.KeyValue{getResp.KV} - resp.Count = 1 - resp.Revision = getResp.Revision } else { - resp.Kvs = []*mvccpb.KeyValue{} - resp.Count = 0 - resp.Revision = getResp.Revision + var getResp kubernetes.GetResponse + getResp, err = s.client.Kubernetes.Get(ctx, keyPrefix, kubernetes.GetOptions{ + Revision: options.Revision, + }) + metrics.RecordEtcdRequest("get", s.groupResource, err, startTime) + if getResp.KV != nil { + resp.Kvs = []*mvccpb.KeyValue{getResp.KV} + resp.Count = 1 + resp.Revision = getResp.Revision + } else { + resp.Kvs = []*mvccpb.KeyValue{} + resp.Count = 0 + resp.Revision = getResp.Revision + } + } + + stats := s.getResourceSizeEstimator() + if len(resp.Kvs) > 0 && stats != nil { + stats.Update(resp.Kvs) } return resp, err }