From 6d3d7553fbe2d92b2faf9b5b7abdfee31fe311d5 Mon Sep 17 00:00:00 2001 From: Jordan Liggitt Date: Thu, 2 Oct 2025 08:50:17 -0400 Subject: [PATCH] Lock all mutable fields when printing gc node --- pkg/controller/garbagecollector/graph.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/pkg/controller/garbagecollector/graph.go b/pkg/controller/garbagecollector/graph.go index de017b4c40b..77715309729 100644 --- a/pkg/controller/garbagecollector/graph.go +++ b/pkg/controller/garbagecollector/graph.go @@ -206,10 +206,17 @@ func ownerReferenceMatchesCoordinates(a, b metav1.OwnerReference) bool { } // String renders node as a string using fmt. Acquires a read lock to ensure the -// reflective dump of dependents doesn't race with any concurrent writes. +// reflective dump of fields doesn't race with any concurrent writes. func (n *node) String() string { + n.beingDeletedLock.RLock() + defer n.beingDeletedLock.RUnlock() + + n.virtualLock.RLock() + defer n.virtualLock.RUnlock() + n.dependentsLock.RLock() defer n.dependentsLock.RUnlock() + return fmt.Sprintf("%#v", n) }