From 6cc39819fdfbc221a43b482747661c25de6373b1 Mon Sep 17 00:00:00 2001 From: Mikhail Mazurskiy Date: Mon, 15 Jun 2020 21:17:45 +1000 Subject: [PATCH] Make inClusterConfigProvider thread safe If configuration object is used concurrently it is not safe to mutate self. There is no need for mutation so avoid it just in case. Kubernetes-commit: 9e360eb05efafd0fcabd5a065b62cb8226da94c2 --- tools/clientcmd/client_config.go | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/tools/clientcmd/client_config.go b/tools/clientcmd/client_config.go index fc180676..a50ce5e3 100644 --- a/tools/clientcmd/client_config.go +++ b/tools/clientcmd/client_config.go @@ -548,11 +548,12 @@ func (config *inClusterClientConfig) RawConfig() (clientcmdapi.Config, error) { } func (config *inClusterClientConfig) ClientConfig() (*restclient.Config, error) { - if config.inClusterConfigProvider == nil { - config.inClusterConfigProvider = restclient.InClusterConfig + inClusterConfigProvider := config.inClusterConfigProvider + if inClusterConfigProvider == nil { + inClusterConfigProvider = restclient.InClusterConfig } - icc, err := config.inClusterConfigProvider() + icc, err := inClusterConfigProvider() if err != nil { return nil, err } @@ -572,7 +573,7 @@ func (config *inClusterClientConfig) ClientConfig() (*restclient.Config, error) } } - return icc, err + return icc, nil } func (config *inClusterClientConfig) Namespace() (string, bool, error) {