From b6300d119d386521785d434d6a51464bf2b57336 Mon Sep 17 00:00:00 2001 From: Andy Goldstein Date: Fri, 3 Dec 2021 14:42:27 -0500 Subject: [PATCH] Improve pathrecorder duplicate registration info Print information from both the original path registration and the new path registration stack traces when encountering a duplicate. This helps the developer determine where the duplication is coming from and makes it much easier to resolve. Signed-off-by: Andy Goldstein Kubernetes-commit: 04aa8f9dcdbc575fde37e25e45315359b0aa1ca6 --- pkg/server/mux/pathrecorder.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pkg/server/mux/pathrecorder.go b/pkg/server/mux/pathrecorder.go index cb4941f02..beb7a8d80 100644 --- a/pkg/server/mux/pathrecorder.go +++ b/pkg/server/mux/pathrecorder.go @@ -103,10 +103,11 @@ func (m *PathRecorderMux) ListedPaths() []string { } func (m *PathRecorderMux) trackCallers(path string) { + stack := string(debug.Stack()) if existingStack, ok := m.pathStacks[path]; ok { - utilruntime.HandleError(fmt.Errorf("registered %q from %v", path, existingStack)) + utilruntime.HandleError(fmt.Errorf("duplicate path registration of %q: original registration from %v\n\nnew registration from %v", path, existingStack, stack)) } - m.pathStacks[path] = string(debug.Stack()) + m.pathStacks[path] = stack } // refreshMuxLocked creates a new mux and must be called while locked. Otherwise the view of handlers may