mirror of
https://github.com/pgsty/minio.git
synced 2026-07-19 04:00:25 +03:00
lifecycle: Fix object expiration date (#9791)
re-use PredictExpiryTime() in ComputeAction()
This commit is contained in:
@@ -122,20 +122,10 @@ func (lc Lifecycle) ComputeAction(objName, objTags string, modTime time.Time) (a
|
||||
if modTime.IsZero() {
|
||||
return
|
||||
}
|
||||
rules := lc.FilterActionableRules(objName, objTags)
|
||||
for _, rule := range rules {
|
||||
if !rule.Expiration.IsDateNull() {
|
||||
if time.Now().After(rule.Expiration.Date.Time) {
|
||||
action = DeleteAction
|
||||
return
|
||||
}
|
||||
}
|
||||
if !rule.Expiration.IsDaysNull() {
|
||||
if time.Now().After(expectedExpiryTime(modTime, rule.Expiration.Days)) {
|
||||
action = DeleteAction
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
_, expiryTime := lc.PredictExpiryTime(objName, modTime, objTags)
|
||||
if !expiryTime.IsZero() && time.Now().After(expiryTime) {
|
||||
return DeleteAction
|
||||
}
|
||||
return
|
||||
}
|
||||
@@ -152,7 +142,7 @@ func expectedExpiryTime(modTime time.Time, days ExpirationDays) time.Time {
|
||||
|
||||
// PredictExpiryTime returns the expiry date/time of a given object
|
||||
// after evaluting the current lifecycle document.
|
||||
func (lc Lifecycle) PredictExpiryTime(objName, objTags string) (string, time.Time) {
|
||||
func (lc Lifecycle) PredictExpiryTime(objName string, modTime time.Time, objTags string) (string, time.Time) {
|
||||
var finalExpiryDate time.Time
|
||||
var finalExpiryRuleID string
|
||||
|
||||
@@ -166,7 +156,7 @@ func (lc Lifecycle) PredictExpiryTime(objName, objTags string) (string, time.Tim
|
||||
}
|
||||
}
|
||||
if !rule.Expiration.IsDaysNull() {
|
||||
expectedExpiry := expectedExpiryTime(time.Now(), rule.Expiration.Days)
|
||||
expectedExpiry := expectedExpiryTime(modTime, rule.Expiration.Days)
|
||||
if finalExpiryDate.IsZero() || finalExpiryDate.After(expectedExpiry) {
|
||||
finalExpiryRuleID = rule.ID
|
||||
finalExpiryDate = expectedExpiry
|
||||
|
||||
Reference in New Issue
Block a user