XL: pickValidXLMeta should return error instead of panic'ing (#3277)

This commit is contained in:
Krishnan Parthasarathi
2016-11-21 10:26:44 +05:30
committed by Harshavardhana
parent 0b9f0d14a1
commit eed9ab0464
5 changed files with 85 additions and 11 deletions

View File

@@ -381,7 +381,10 @@ func (xl xlObjects) PutObjectPart(bucket, object, uploadID string, partID int, s
onlineDisks, modTime := listOnlineDisks(xl.storageDisks, partsMetadata, errs)
// Pick one from the first valid metadata.
xlMeta := pickValidXLMeta(partsMetadata, modTime)
xlMeta, err := pickValidXLMeta(partsMetadata, modTime)
if err != nil {
return "", err
}
onlineDisks = getOrderedDisks(xlMeta.Erasure.Distribution, onlineDisks)
_ = getOrderedPartsMetadata(xlMeta.Erasure.Distribution, partsMetadata)
@@ -493,7 +496,10 @@ func (xl xlObjects) PutObjectPart(bucket, object, uploadID string, partID int, s
onlineDisks, modTime = listOnlineDisks(onlineDisks, partsMetadata, errs)
// Pick one from the first valid metadata.
xlMeta = pickValidXLMeta(partsMetadata, modTime)
xlMeta, err = pickValidXLMeta(partsMetadata, modTime)
if err != nil {
return "", err
}
// Once part is successfully committed, proceed with updating XL metadata.
xlMeta.Stat.ModTime = time.Now().UTC()
@@ -684,7 +690,10 @@ func (xl xlObjects) CompleteMultipartUpload(bucket string, object string, upload
var objectSize int64
// Pick one from the first valid metadata.
xlMeta := pickValidXLMeta(partsMetadata, modTime)
xlMeta, err := pickValidXLMeta(partsMetadata, modTime)
if err != nil {
return "", err
}
// Order online disks in accordance with distribution order.
onlineDisks = getOrderedDisks(xlMeta.Erasure.Distribution, onlineDisks)