fs: Fix setting new deployment ID in format when not present (#8517)

The code does not properly set a new deployemnt ID when not present
in format.json: it loops twice without releasing write lock on format.json
causing an infinite locking error on the same file.

This commit fixes and simplifies a little the code.
master
Anis Elleuch 5 years ago committed by kannappanr
parent e9b2bf00ad
commit 60690a7e1d
  1. 35
      cmd/format-fs.go

@ -350,27 +350,24 @@ func formatFSFixDeploymentID(fsFormatPath string) error {
logger.Info("Another minio process(es) might be holding a lock to the file %s. Please kill that minio process(es) (elapsed %s)\n", fsFormatPath, getElapsedTime()) logger.Info("Another minio process(es) might be holding a lock to the file %s. Please kill that minio process(es) (elapsed %s)\n", fsFormatPath, getElapsedTime())
continue continue
} }
if err != nil { break
break }
} if err != nil {
return err
}
if err = jsonLoad(wlk, format); err != nil { defer wlk.Close()
break
}
// Check if format needs to be updated if err = jsonLoad(wlk, format); err != nil {
if format.ID != "" { return err
err = nil
break
}
format.ID = mustGetUUID()
if err = jsonSave(wlk, format); err != nil {
break
}
} }
if wlk != nil {
wlk.Close() // Check if format needs to be updated
if format.ID != "" {
return nil
} }
return err
// Set new UUID to the format and save it
format.ID = mustGetUUID()
return jsonSave(wlk, format)
} }

Loading…
Cancel
Save