@ -372,7 +372,12 @@ func (f *Filer) doListDirectoryEntries(ctx context.Context, p util.FullPath, sta
return false
default:
if entry.TtlSec > 0 {
if entry.Crtime.Add(time.Duration(entry.TtlSec) * time.Second).Before(time.Now()) {
if entry.IsExpireS3Enabled() {
if entry.GetS3ExpireTime().Before(time.Now()) {
f.Store.DeleteOneEntry(ctx, entry)
return true
}
} else if entry.Crtime.Add(time.Duration(entry.TtlSec) * time.Second).Before(time.Now()) {
expiredCount++
@ -468,6 +468,9 @@ func (s3a *S3ApiServer) completeMultipartUpload(r *http.Request, input *s3.Compl
entry.Attributes.Mime = mime
entry.Attributes.FileSize = uint64(offset)
if s3a.option.AllowDeleteObjectsByTTL && entry.Attributes.TtlSec > 0 {
entry.Extended[s3_constants.SeaweedFSExpiresS3] = []byte("true")
})
if err != nil {
@ -348,11 +348,6 @@ func (s3a *S3ApiServer) GetObjectHandler(w http.ResponseWriter, r *http.Request)
// Add object lock metadata to response headers if present
s3a.addObjectLockHeadersToResponse(w, entry)
} else {
if s3a.option.AllowDeleteObjectsByTTL && entry.IsExpired() {
s3err.WriteErrorResponse(w, r, s3err.ErrNoSuchKey)
s3a.removeExpiredObject(w, r, entry, bucket, object)
return
// Handle regular GET (non-versioned)
destUrl = s3a.toFilerUrl(bucket, object)
@ -303,12 +303,6 @@ func (s3a *S3ApiServer) listFilerEntries(bucket string, originalPrefix string, m
if delErr := doDeleteEntry(client, dirName, entryName, true, false); delErr != nil {
glog.Errorf("delete expired entries %s/%s: %v", dirName, entryName, delErr)
if !delimiterFound {
contents = append(contents, newListEntry(entry, "", dirName, entryName, bucketPrefix, fetchOwner, false, false, s3a.iam))
cursor.maxKeys--