mirror of
https://github.com/minio/minio.git
synced 2025-11-09 13:39:46 -05:00
fix: Better printing of XL config init error (#5284)
This commit is contained in:
committed by
Nitish Tiwari
parent
e3d841ffd1
commit
2244adff07
@@ -98,23 +98,48 @@ const (
|
||||
Abort
|
||||
)
|
||||
|
||||
// configErrs contains the list of configuration errors.
|
||||
var configErrs = []error{
|
||||
errInvalidAccessKeyID,
|
||||
errAuthentication,
|
||||
errServerVersionMismatch,
|
||||
errServerTimeMismatch,
|
||||
}
|
||||
|
||||
// Quick error to actions converts looking for specific errors
|
||||
// which need to be returned quickly and server should wait instead.
|
||||
func quickErrToActions(errMap map[error]int) InitActions {
|
||||
var action InitActions
|
||||
switch {
|
||||
case errMap[errInvalidAccessKeyID] > 0:
|
||||
fallthrough
|
||||
case errMap[errAuthentication] > 0:
|
||||
fallthrough
|
||||
case errMap[errServerVersionMismatch] > 0:
|
||||
fallthrough
|
||||
case errMap[errServerTimeMismatch] > 0:
|
||||
action = WaitForConfig
|
||||
for _, configErr := range configErrs {
|
||||
if errMap[configErr] > 0 {
|
||||
action = WaitForConfig
|
||||
break
|
||||
}
|
||||
}
|
||||
return action
|
||||
}
|
||||
|
||||
// reduceInitXLErrs reduces errors found in distributed XL initialization
|
||||
func reduceInitXLErrs(storageDisks []StorageAPI, sErrs []error) error {
|
||||
var foundErrs int
|
||||
for i := range sErrs {
|
||||
if sErrs[i] != nil {
|
||||
foundErrs++
|
||||
}
|
||||
}
|
||||
if foundErrs == 0 {
|
||||
return nil
|
||||
}
|
||||
// Early quit if there is a config error
|
||||
for i := range sErrs {
|
||||
if contains(configErrs, sErrs[i]) {
|
||||
return fmt.Errorf("%s: %s", storageDisks[i], sErrs[i])
|
||||
}
|
||||
}
|
||||
// Combine all disk errors otherwise for user inspection
|
||||
return fmt.Errorf("%s", combineDiskErrs(storageDisks, sErrs))
|
||||
}
|
||||
|
||||
// Preparatory initialization stage for XL validates known errors.
|
||||
// Converts them into specific actions. These actions have special purpose
|
||||
// which caller decides on what needs to be done.
|
||||
@@ -262,7 +287,7 @@ func retryFormattingXLDisks(firstDisk bool, endpoints EndpointList, storageDisks
|
||||
// Check if this is a XL or distributed XL, anything > 1 is considered XL backend.
|
||||
switch prepForInitXL(firstDisk, sErrs, len(storageDisks)) {
|
||||
case Abort:
|
||||
return fmt.Errorf("%s", combineDiskErrs(storageDisks, sErrs))
|
||||
return reduceInitXLErrs(storageDisks, sErrs)
|
||||
case FormatDisks:
|
||||
console.Eraseline()
|
||||
printFormatMsg(endpoints, storageDisks, printOnceFn())
|
||||
@@ -289,7 +314,7 @@ func retryFormattingXLDisks(firstDisk bool, endpoints EndpointList, storageDisks
|
||||
)
|
||||
case WaitForConfig:
|
||||
// Print configuration errors.
|
||||
printConfigErrMsg(storageDisks, sErrs, printOnceFn())
|
||||
return reduceInitXLErrs(storageDisks, sErrs)
|
||||
case WaitForAll:
|
||||
console.Printf("Initializing data volume for first time. Waiting for other servers to come online (elapsed %s)\n", getElapsedTime())
|
||||
case WaitForFormatting:
|
||||
|
||||
Reference in New Issue
Block a user