|
|
@ -328,7 +328,9 @@ func (er erasureObjects) getObjectWithFileInfo(ctx context.Context, bucket, obje |
|
|
|
} |
|
|
|
} |
|
|
|
if scan != madmin.HealUnknownScan { |
|
|
|
if scan != madmin.HealUnknownScan { |
|
|
|
healOnce.Do(func() { |
|
|
|
healOnce.Do(func() { |
|
|
|
|
|
|
|
if _, healing := er.getOnlineDisksWithHealing(); !healing { |
|
|
|
go healObject(bucket, object, fi.VersionID, scan) |
|
|
|
go healObject(bucket, object, fi.VersionID, scan) |
|
|
|
|
|
|
|
} |
|
|
|
}) |
|
|
|
}) |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
@ -438,8 +440,10 @@ func (er erasureObjects) getObjectFileInfo(ctx context.Context, bucket, object s |
|
|
|
|
|
|
|
|
|
|
|
// if missing metadata can be reconstructed, attempt to reconstruct.
|
|
|
|
// if missing metadata can be reconstructed, attempt to reconstruct.
|
|
|
|
if missingBlocks > 0 && missingBlocks < readQuorum { |
|
|
|
if missingBlocks > 0 && missingBlocks < readQuorum { |
|
|
|
|
|
|
|
if _, healing := er.getOnlineDisksWithHealing(); !healing { |
|
|
|
go healObject(bucket, object, fi.VersionID, madmin.HealNormalScan) |
|
|
|
go healObject(bucket, object, fi.VersionID, madmin.HealNormalScan) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
return fi, metaArr, onlineDisks, nil |
|
|
|
return fi, metaArr, onlineDisks, nil |
|
|
|
} |
|
|
|
} |
|
|
|