mirror of
https://github.com/minio/minio.git
synced 2025-01-23 12:43:16 -05:00
always look for expired versions v/s remaining versions (#17479)
while decommissioning it can so happen that the non-current versions are all expired but there is a DEL marker as the latest version. For such objects, we should not decommission them instead calculate the remaining versions and if the remaining versions is one and that version is a DEL marker consider such an object not to be scheduled for decommissioning.
This commit is contained in:
parent
7c72b25ef0
commit
ccc5801112
@ -419,7 +419,9 @@ func (p poolMeta) save(ctx context.Context, pools []*erasureSets) error {
|
||||
// Saves on all pools to make sure decommissioning of first pool is allowed.
|
||||
for i, eset := range pools {
|
||||
if err = saveConfig(ctx, eset, poolMetaName, buf); err != nil {
|
||||
logger.LogIf(ctx, fmt.Errorf("saving pool.bin for pool index %d failed with: %v", i, err))
|
||||
if !errors.Is(err, context.Canceled) {
|
||||
logger.LogIf(ctx, fmt.Errorf("saving pool.bin for pool index %d failed with: %v", i, err))
|
||||
}
|
||||
return err
|
||||
}
|
||||
}
|
||||
@ -729,8 +731,10 @@ func (z *erasureServerPools) decommissionPool(ctx context.Context, idx int, pool
|
||||
}
|
||||
|
||||
// any object with only single DEL marker we don't need
|
||||
// to decommission, just skip it.
|
||||
if version.Deleted && len(fivs.Versions) == 1 {
|
||||
// to decommission, just skip it, this also includes
|
||||
// any other versions that have already expired.
|
||||
remainingVersions := len(fivs.Versions) - decommissionedCount
|
||||
if version.Deleted && remainingVersions == 1 {
|
||||
decommissionedCount++
|
||||
continue
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user