mirror of
https://github.com/minio/minio.git
synced 2025-04-20 18:44:21 -04:00
fix: do not log concurrently when multiple disks return errors (#15044)
since the values inside 'context' are mutated internally by logger, make sure to log serially upon errors not concurrently.
This commit is contained in:
parent
31c4fdbf79
commit
df9eeb7f8f
@ -137,24 +137,26 @@ func readAllFileInfo(ctx context.Context, disks []StorageAPI, bucket, object, ve
|
|||||||
return errDiskNotFound
|
return errDiskNotFound
|
||||||
}
|
}
|
||||||
metadataArray[index], err = disks[index].ReadVersion(ctx, bucket, object, versionID, readData)
|
metadataArray[index], err = disks[index].ReadVersion(ctx, bucket, object, versionID, readData)
|
||||||
if err != nil {
|
|
||||||
if !IsErr(err, []error{
|
|
||||||
errFileNotFound,
|
|
||||||
errVolumeNotFound,
|
|
||||||
errFileVersionNotFound,
|
|
||||||
errDiskNotFound,
|
|
||||||
}...) {
|
|
||||||
logger.LogOnceIf(ctx, fmt.Errorf("Drive %s, path (%s/%s) returned an error (%w)",
|
|
||||||
disks[index], bucket, object, err),
|
|
||||||
disks[index].String())
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return err
|
return err
|
||||||
}, index)
|
}, index)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
errs := g.Wait()
|
||||||
|
for index, err := range errs {
|
||||||
|
if !IsErr(err, []error{
|
||||||
|
errFileNotFound,
|
||||||
|
errVolumeNotFound,
|
||||||
|
errFileVersionNotFound,
|
||||||
|
errDiskNotFound,
|
||||||
|
}...) {
|
||||||
|
logger.LogOnceIf(ctx, fmt.Errorf("Drive %s, path (%s/%s) returned an error (%w)",
|
||||||
|
disks[index], bucket, object, err),
|
||||||
|
disks[index].String())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Return all the metadata.
|
// Return all the metadata.
|
||||||
return metadataArray, g.Wait()
|
return metadataArray, errs
|
||||||
}
|
}
|
||||||
|
|
||||||
// shuffleDisksAndPartsMetadataByIndex this function should be always used by GetObjectNInfo()
|
// shuffleDisksAndPartsMetadataByIndex this function should be always used by GetObjectNInfo()
|
||||||
|
@ -476,16 +476,6 @@ func readAllXL(ctx context.Context, disks []StorageAPI, bucket, object string, r
|
|||||||
}
|
}
|
||||||
rf, err := disks[index].ReadXL(ctx, bucket, object, readData)
|
rf, err := disks[index].ReadXL(ctx, bucket, object, readData)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if !IsErr(err, []error{
|
|
||||||
errFileNotFound,
|
|
||||||
errVolumeNotFound,
|
|
||||||
errFileVersionNotFound,
|
|
||||||
errDiskNotFound,
|
|
||||||
}...) {
|
|
||||||
logger.LogOnceIf(ctx, fmt.Errorf("Drive %s, path (%s/%s) returned an error (%w)",
|
|
||||||
disks[index], bucket, object, err),
|
|
||||||
disks[index].String())
|
|
||||||
}
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -502,6 +492,19 @@ func readAllXL(ctx context.Context, disks []StorageAPI, bucket, object string, r
|
|||||||
}
|
}
|
||||||
|
|
||||||
errs := g.Wait()
|
errs := g.Wait()
|
||||||
|
for index, err := range errs {
|
||||||
|
if !IsErr(err, []error{
|
||||||
|
errFileNotFound,
|
||||||
|
errVolumeNotFound,
|
||||||
|
errFileVersionNotFound,
|
||||||
|
errDiskNotFound,
|
||||||
|
}...) {
|
||||||
|
logger.LogOnceIf(ctx, fmt.Errorf("Drive %s, path (%s/%s) returned an error (%w)",
|
||||||
|
disks[index], bucket, object, err),
|
||||||
|
disks[index].String())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
for index := range metadataArray {
|
for index := range metadataArray {
|
||||||
if metadataArray[index] != nil {
|
if metadataArray[index] != nil {
|
||||||
metadataShallowVersions[index] = metadataArray[index].versions
|
metadataShallowVersions[index] = metadataArray[index].versions
|
||||||
|
@ -2066,7 +2066,7 @@ func skipAccessChecks(volume string) (ok bool) {
|
|||||||
// RenameData - rename source path to destination path atomically, metadata and data directory.
|
// RenameData - rename source path to destination path atomically, metadata and data directory.
|
||||||
func (s *xlStorage) RenameData(ctx context.Context, srcVolume, srcPath string, fi FileInfo, dstVolume, dstPath string) (err error) {
|
func (s *xlStorage) RenameData(ctx context.Context, srcVolume, srcPath string, fi FileInfo, dstVolume, dstPath string) (err error) {
|
||||||
defer func() {
|
defer func() {
|
||||||
if err != nil && !contextCanceled(ctx) {
|
if err != nil && !contextCanceled(ctx) && !errors.Is(err, errFileNotFound) {
|
||||||
// Only log these errors if context is not yet canceled.
|
// Only log these errors if context is not yet canceled.
|
||||||
logger.LogIf(ctx, fmt.Errorf("srcVolume: %s, srcPath: %s, dstVolume: %s:, dstPath: %s - error %v",
|
logger.LogIf(ctx, fmt.Errorf("srcVolume: %s, srcPath: %s, dstVolume: %s:, dstPath: %s - error %v",
|
||||||
srcVolume, srcPath,
|
srcVolume, srcPath,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user