mirror of
https://github.com/minio/minio.git
synced 2025-02-28 05:49:16 -05:00
lifecycle: Fix object expiration date (#9791)
re-use PredictExpiryTime() in ComputeAction()
This commit is contained in:
parent
920b863955
commit
790323ac37
@ -257,7 +257,7 @@ func isETagEqual(left, right string) bool {
|
|||||||
// after analyzing the current bucket lifecycle rules if any.
|
// after analyzing the current bucket lifecycle rules if any.
|
||||||
func setAmzExpirationHeader(w http.ResponseWriter, bucket string, objInfo ObjectInfo) {
|
func setAmzExpirationHeader(w http.ResponseWriter, bucket string, objInfo ObjectInfo) {
|
||||||
if lc, err := globalLifecycleSys.Get(bucket); err == nil {
|
if lc, err := globalLifecycleSys.Get(bucket); err == nil {
|
||||||
ruleID, expiryTime := lc.PredictExpiryTime(objInfo.Name, objInfo.UserTags)
|
ruleID, expiryTime := lc.PredictExpiryTime(objInfo.Name, objInfo.ModTime, objInfo.UserTags)
|
||||||
if !expiryTime.IsZero() {
|
if !expiryTime.IsZero() {
|
||||||
w.Header()[xhttp.AmzExpiration] = []string{
|
w.Header()[xhttp.AmzExpiration] = []string{
|
||||||
fmt.Sprintf(`expiry-date="%s", rule-id="%s"`, expiryTime.Format(http.TimeFormat), ruleID),
|
fmt.Sprintf(`expiry-date="%s", rule-id="%s"`, expiryTime.Format(http.TimeFormat), ruleID),
|
||||||
|
@ -122,20 +122,10 @@ func (lc Lifecycle) ComputeAction(objName, objTags string, modTime time.Time) (a
|
|||||||
if modTime.IsZero() {
|
if modTime.IsZero() {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
rules := lc.FilterActionableRules(objName, objTags)
|
|
||||||
for _, rule := range rules {
|
_, expiryTime := lc.PredictExpiryTime(objName, modTime, objTags)
|
||||||
if !rule.Expiration.IsDateNull() {
|
if !expiryTime.IsZero() && time.Now().After(expiryTime) {
|
||||||
if time.Now().After(rule.Expiration.Date.Time) {
|
return DeleteAction
|
||||||
action = DeleteAction
|
|
||||||
return
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if !rule.Expiration.IsDaysNull() {
|
|
||||||
if time.Now().After(expectedExpiryTime(modTime, rule.Expiration.Days)) {
|
|
||||||
action = DeleteAction
|
|
||||||
return
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -152,7 +142,7 @@ func expectedExpiryTime(modTime time.Time, days ExpirationDays) time.Time {
|
|||||||
|
|
||||||
// PredictExpiryTime returns the expiry date/time of a given object
|
// PredictExpiryTime returns the expiry date/time of a given object
|
||||||
// after evaluting the current lifecycle document.
|
// 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 finalExpiryDate time.Time
|
||||||
var finalExpiryRuleID string
|
var finalExpiryRuleID string
|
||||||
|
|
||||||
@ -166,7 +156,7 @@ func (lc Lifecycle) PredictExpiryTime(objName, objTags string) (string, time.Tim
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if !rule.Expiration.IsDaysNull() {
|
if !rule.Expiration.IsDaysNull() {
|
||||||
expectedExpiry := expectedExpiryTime(time.Now(), rule.Expiration.Days)
|
expectedExpiry := expectedExpiryTime(modTime, rule.Expiration.Days)
|
||||||
if finalExpiryDate.IsZero() || finalExpiryDate.After(expectedExpiry) {
|
if finalExpiryDate.IsZero() || finalExpiryDate.After(expectedExpiry) {
|
||||||
finalExpiryRuleID = rule.ID
|
finalExpiryRuleID = rule.ID
|
||||||
finalExpiryDate = expectedExpiry
|
finalExpiryDate = expectedExpiry
|
||||||
|
Loading…
x
Reference in New Issue
Block a user