From e50a7f3dbc18bfcd0cd0179bfb65e03fedcc331e Mon Sep 17 00:00:00 2001 From: Michael Aspinwall Date: Mon, 18 May 2026 18:19:58 +0000 Subject: [PATCH] Fix nil check for store metrics --- .../src/k8s.io/client-go/tools/cache/store.go | 3 +++ .../k8s.io/client-go/tools/cache/store_test.go | 17 +++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/staging/src/k8s.io/client-go/tools/cache/store.go b/staging/src/k8s.io/client-go/tools/cache/store.go index 261ed60d9ca..76cb70c5693 100644 --- a/staging/src/k8s.io/client-go/tools/cache/store.go +++ b/staging/src/k8s.io/client-go/tools/cache/store.go @@ -402,6 +402,9 @@ func WithTransformer(transformer TransformFunc) StoreOption { func WithStoreMetrics(identifier InformerNameAndResource, metrics InformerMetricsProvider) StoreOption { return func(c *cache) { c.identifier = identifier + if metrics == nil { + metrics = globalInformerMetricsProvider + } c.metrics = metrics } } diff --git a/staging/src/k8s.io/client-go/tools/cache/store_test.go b/staging/src/k8s.io/client-go/tools/cache/store_test.go index f3c018c11ac..7cee3722ed6 100644 --- a/staging/src/k8s.io/client-go/tools/cache/store_test.go +++ b/staging/src/k8s.io/client-go/tools/cache/store_test.go @@ -22,6 +22,7 @@ import ( "testing" "github.com/stretchr/testify/assert" + "k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/apimachinery/pkg/util/sets" ) @@ -246,3 +247,19 @@ func TestCacheTransactionShouldIndexErrors(t *testing.T) { }) } } + +func TestWithStoreMetricsDefaulting(t *testing.T) { + name, err := NewInformerName("test-informer") + if err != nil { + t.Fatalf("failed to create informer name: %v", err) + } + defer name.Release() + gvr := schema.GroupVersionResource{Group: "apps", Version: "v1", Resource: "deployments"} + id := name.WithResource(gvr) + + s := NewStore(testStoreKeyFunc, WithStoreMetrics(id, nil)).(*cache) + + if s.metrics == nil { + t.Errorf("expected c.metrics to be populated, got nil") + } +}