mirror of
https://github.com/minio/minio.git
synced 2025-02-28 05:49:16 -05:00
Use async healing in PutObject call (#16431)
This commit is contained in:
parent
71c95ad0d0
commit
d98116559b
@ -773,7 +773,10 @@ func renameData(ctx context.Context, disks []StorageAPI, srcBucket, srcEntry str
|
|||||||
err := reduceWriteQuorumErrs(ctx, errs, objectOpIgnoredErrs, writeQuorum)
|
err := reduceWriteQuorumErrs(ctx, errs, objectOpIgnoredErrs, writeQuorum)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
versions := reduceCommonVersions(diskVersions, writeQuorum)
|
versions := reduceCommonVersions(diskVersions, writeQuorum)
|
||||||
for _, dversions := range diskVersions {
|
for index, dversions := range diskVersions {
|
||||||
|
if errs[index] != nil {
|
||||||
|
continue
|
||||||
|
}
|
||||||
if versions != dversions {
|
if versions != dversions {
|
||||||
versionsDisparity = true
|
versionsDisparity = true
|
||||||
break
|
break
|
||||||
@ -961,7 +964,7 @@ func healObjectVersionsDisparity(bucket string, entry metaCacheEntry) error {
|
|||||||
|
|
||||||
fivs, err := entry.fileInfoVersions(bucket)
|
fivs, err := entry.fileInfoVersions(bucket)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
healObject(bucket, entry.name, "", madmin.HealNormalScan)
|
go healObject(bucket, entry.name, "", madmin.HealNormalScan)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -971,7 +974,7 @@ func healObjectVersionsDisparity(bucket string, entry metaCacheEntry) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for _, version := range fivs.Versions {
|
for _, version := range fivs.Versions {
|
||||||
healObject(bucket, entry.name, version.VersionID, madmin.HealNormalScan)
|
go healObject(bucket, entry.name, version.VersionID, madmin.HealNormalScan)
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
@ -437,7 +437,8 @@ func (er *erasureObjects) healErasureSet(ctx context.Context, buckets []string,
|
|||||||
return retErr
|
return retErr
|
||||||
}
|
}
|
||||||
|
|
||||||
// healObject heals given object path in deep to fix bitrot.
|
// healObject sends the given object/version to the background healing workers
|
||||||
|
// and only returns when healing of the object is done.
|
||||||
func healObject(bucket, object, versionID string, scan madmin.HealScanMode) {
|
func healObject(bucket, object, versionID string, scan madmin.HealScanMode) {
|
||||||
// Get background heal sequence to send elements to heal
|
// Get background heal sequence to send elements to heal
|
||||||
globalHealStateLK.Lock()
|
globalHealStateLK.Lock()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user