Skip to content

Commit 5515e31

Browse files
committed
pkg/client/config/config.go: make loading thread safe
1 parent dd4f940 commit 5515e31

File tree

1 file changed

+4
-5
lines changed

1 file changed

+4
-5
lines changed

pkg/client/config/config.go

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -121,20 +121,19 @@ func loadConfig(context string) (*rest.Config, error) {
121121
// is no in-cluster config, try the default recommended locations.
122122
//
123123
// NOTE: For default config file locations, upstream only checks
124-
// $HOME for the user's home directory, but we can also use
124+
// $HOME for the user's home directory, but we can also try
125125
// os/user.HomeDir when $HOME is unset.
126126
//
127127
// TODO(jlanford): could this be done upstream?
128+
loadingRules := clientcmd.NewDefaultClientConfigLoadingRules()
128129
if _, ok := os.LookupEnv("HOME"); !ok {
129130
u, err := user.Current()
130131
if err != nil {
131132
return nil, fmt.Errorf("could not get current user: %v", err)
132133
}
133-
oldRecommendedHomeFile := clientcmd.RecommendedHomeFile
134-
clientcmd.RecommendedHomeFile = path.Join(u.HomeDir, clientcmd.RecommendedHomeDir, clientcmd.RecommendedFileName)
135-
defer func() { clientcmd.RecommendedHomeFile = oldRecommendedHomeFile }()
134+
loadingRules.Precedence = append(loadingRules.Precedence, path.Join(u.HomeDir, clientcmd.RecommendedHomeDir, clientcmd.RecommendedFileName))
136135
}
137-
if c, err := loadConfigWithContext(apiServerURL, clientcmd.NewDefaultClientConfigLoadingRules(), context); err == nil {
136+
if c, err := loadConfigWithContext(apiServerURL, loadingRules, context); err == nil {
138137
return c, nil
139138
}
140139

0 commit comments

Comments
 (0)