diff options
| -rw-r--r-- | weed/filer/filer.go | 7 | ||||
| -rw-r--r-- | weed/s3api/filer_multipart.go | 3 | ||||
| -rw-r--r-- | weed/s3api/s3api_object_handlers.go | 5 | ||||
| -rw-r--r-- | weed/s3api/s3api_object_handlers_list.go | 6 |
4 files changed, 9 insertions, 12 deletions
diff --git a/weed/filer/filer.go b/weed/filer/filer.go index 6f498ce58..b61da85f6 100644 --- a/weed/filer/filer.go +++ b/weed/filer/filer.go @@ -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()) { f.Store.DeleteOneEntry(ctx, entry) expiredCount++ return true diff --git a/weed/s3api/filer_multipart.go b/weed/s3api/filer_multipart.go index cb4c73692..946e9b798 100644 --- a/weed/s3api/filer_multipart.go +++ b/weed/s3api/filer_multipart.go @@ -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 { diff --git a/weed/s3api/s3api_object_handlers.go b/weed/s3api/s3api_object_handlers.go index a7b6ed736..b6c04dcd7 100644 --- a/weed/s3api/s3api_object_handlers.go +++ b/weed/s3api/s3api_object_handlers.go @@ -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) } diff --git a/weed/s3api/s3api_object_handlers_list.go b/weed/s3api/s3api_object_handlers_list.go index f6d24bc95..9e6376a0e 100644 --- a/weed/s3api/s3api_object_handlers_list.go +++ b/weed/s3api/s3api_object_handlers_list.go @@ -303,12 +303,6 @@ func (s3a *S3ApiServer) listFilerEntries(bucket string, originalPrefix string, m } } } - if s3a.option.AllowDeleteObjectsByTTL && entry.IsExpired() { - if delErr := doDeleteEntry(client, dirName, entryName, true, false); delErr != nil { - glog.Errorf("delete expired entries %s/%s: %v", dirName, entryName, delErr) - } - return - } if !delimiterFound { contents = append(contents, newListEntry(entry, "", dirName, entryName, bucketPrefix, fetchOwner, false, false, s3a.iam)) cursor.maxKeys-- |
