Browse Source

move s3 delete expired entry to filer

pull/7426/head
Konstantin Lebedev 2 months ago
parent
commit
8d768885c5
  1. 7
      weed/filer/filer.go
  2. 3
      weed/s3api/filer_multipart.go
  3. 5
      weed/s3api/s3api_object_handlers.go
  4. 6
      weed/s3api/s3api_object_handlers_list.go

7
weed/filer/filer.go

@ -372,7 +372,12 @@ func (f *Filer) doListDirectoryEntries(ctx context.Context, p util.FullPath, sta
return false return false
default: default:
if entry.TtlSec > 0 { 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) f.Store.DeleteOneEntry(ctx, entry)
expiredCount++ expiredCount++
return true return true

3
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.Mime = mime
} }
entry.Attributes.FileSize = uint64(offset) entry.Attributes.FileSize = uint64(offset)
if s3a.option.AllowDeleteObjectsByTTL && entry.Attributes.TtlSec > 0 {
entry.Extended[s3_constants.SeaweedFSExpiresS3] = []byte("true")
}
}) })
if err != nil { if err != nil {

5
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 // Add object lock metadata to response headers if present
s3a.addObjectLockHeadersToResponse(w, entry) s3a.addObjectLockHeadersToResponse(w, entry)
} else { } 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) // Handle regular GET (non-versioned)
destUrl = s3a.toFilerUrl(bucket, object) destUrl = s3a.toFilerUrl(bucket, object)
} }

6
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 { if !delimiterFound {
contents = append(contents, newListEntry(entry, "", dirName, entryName, bucketPrefix, fetchOwner, false, false, s3a.iam)) contents = append(contents, newListEntry(entry, "", dirName, entryName, bucketPrefix, fetchOwner, false, false, s3a.iam))
cursor.maxKeys-- cursor.maxKeys--

Loading…
Cancel
Save