Skip to content

Commit b008b82

Browse files
drichardsonnmanoogian
authored andcommitted
Fix race condition in concurrent creation of config and fallback dirs
1 parent 12947ee commit b008b82

File tree

2 files changed

+8
-13
lines changed

2 files changed

+8
-13
lines changed

pkg/cmd/run.go

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -564,13 +564,11 @@ func initFallbackDir(cmd *cobra.Command, config models.ScopedOptions, format mod
564564
legacyFallbackPath = legacyFallbackFile(config.EnclaveProject.Value, config.EnclaveConfig.Value)
565565
}
566566

567-
if !utils.Exists(configuration.UserFallbackDir) {
568-
err := os.Mkdir(configuration.UserFallbackDir, 0700)
569-
if err != nil {
570-
utils.LogDebug("Unable to create directory for fallback file")
571-
if exitOnWriteFailure {
572-
utils.HandleError(err, "Unable to create directory for fallback file", strings.Join(controllers.WriteFailureMessage(), "\n"))
573-
}
567+
err := os.Mkdir(configuration.UserFallbackDir, 0700)
568+
if err != nil && !os.IsExist(err) {
569+
utils.LogDebug("Unable to create directory for fallback file")
570+
if exitOnWriteFailure {
571+
utils.HandleError(err, "Unable to create directory for fallback file", strings.Join(controllers.WriteFailureMessage(), "\n"))
574572
}
575573
}
576574
}

pkg/configuration/config.go

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -70,12 +70,9 @@ func Setup() {
7070
utils.LogDebug(fmt.Sprintf("Using config dir %s", UserConfigDir))
7171
utils.LogDebug(fmt.Sprintf("Using config file %s", UserConfigFile))
7272

73-
if !utils.Exists(UserConfigDir) {
74-
utils.LogDebug(fmt.Sprintf("Creating the config directory %s", UserConfigDir))
75-
err := os.Mkdir(UserConfigDir, 0700)
76-
if err != nil {
77-
utils.HandleError(err, fmt.Sprintf("Unable to create config directory %s", UserConfigDir))
78-
}
73+
err := os.Mkdir(UserConfigDir, 0700)
74+
if err != nil && !os.IsExist(err) {
75+
utils.HandleError(err, fmt.Sprintf("Unable to create config directory %s", UserConfigDir))
7976
}
8077

8178
// This may be different from `UserConfigDir` if `--configuration` was provided

0 commit comments

Comments
 (0)