From 33bcd4d80ae9a9a962b7d04c806e24bf5054cf30 Mon Sep 17 00:00:00 2001 From: Thorsten Klein Date: Tue, 1 Feb 2022 15:13:36 +0100 Subject: [PATCH] fix: mutex on ensureToolsNode to avoid duplicate container name causing error (#952) --- pkg/client/tools.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/pkg/client/tools.go b/pkg/client/tools.go index e328d79a..777ed38a 100644 --- a/pkg/client/tools.go +++ b/pkg/client/tools.go @@ -382,7 +382,13 @@ func runToolsNode(ctx context.Context, runtime runtimes.Runtime, cluster *k3d.Cl return node, nil } +var EnsureToolsNodeMutex sync.Mutex + func EnsureToolsNode(ctx context.Context, runtime runtimes.Runtime, cluster *k3d.Cluster) (*k3d.Node, error) { + // Mutex to prevent simultaneous creation of two tools-nodes, e.g. due to slow network connection cause the image pulling to take too long + // FIXME: could be prevented completely by having a smarter image pre-pulling mechanism + EnsureToolsNodeMutex.Lock() + defer EnsureToolsNodeMutex.Unlock() var toolsNode *k3d.Node toolsNode, err := runtime.GetNode(ctx, &k3d.Node{Name: fmt.Sprintf("%s-%s-tools", k3d.DefaultObjectNamePrefix, cluster.Name)})