mirror of
https://github.com/pgsty/minio.git
synced 2026-11-02 05:42:06 +03:00
fix(ilm): do not let a free version make the latest version noncurrent
Signed-off-by: Denis Babchuk <babchukdenis@icloud.com>
This commit is contained in:
@@ -19,6 +19,7 @@ package cmd
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"time"
|
||||
|
||||
"github.com/zeebo/xxh3"
|
||||
)
|
||||
@@ -28,6 +29,8 @@ import (
|
||||
// - fivs.FreeVersions has all the free versions
|
||||
//
|
||||
// if inclFreeVersions is true all the versions are in fivs.Versions, free and non-free versions alike.
|
||||
// Otherwise IsLatest, SuccessorModTime and LatestModTime are those of the
|
||||
// non-free versions.
|
||||
//
|
||||
// Note: Only the scanner requires fivs.Versions to have exclusively non-free versions. This is used while enforcing NewerNoncurrentVersions lifecycle element.
|
||||
func getFileInfoVersions(xlMetaBuf []byte, volume, path string, inclFreeVersions bool) (FileInfoVersions, error) {
|
||||
@@ -56,6 +59,19 @@ func getFileInfoVersions(xlMetaBuf []byte, volume, path string, inclFreeVersions
|
||||
}
|
||||
if !inclFreeVersions {
|
||||
fivs.Versions = fivs.Versions[:n]
|
||||
// A free version is not a version of the object. The latest
|
||||
// version, and the successor of each other version, is among
|
||||
// the rest.
|
||||
for i := range fivs.Versions {
|
||||
fivs.Versions[i].IsLatest = i == 0
|
||||
fivs.Versions[i].SuccessorModTime = time.Time{}
|
||||
if i > 0 {
|
||||
fivs.Versions[i].SuccessorModTime = fivs.Versions[i-1].ModTime
|
||||
}
|
||||
}
|
||||
if n > 0 {
|
||||
fivs.LatestModTime = fivs.Versions[0].ModTime
|
||||
}
|
||||
}
|
||||
// Update numversions
|
||||
for i := range fivs.Versions {
|
||||
|
||||
Reference in New Issue
Block a user