diff options
| author | Konstantin Lebedev <9497591+kmlebedev@users.noreply.github.com> | 2025-11-05 18:39:21 +0500 |
|---|---|---|
| committer | Konstantin Lebedev <9497591+kmlebedev@users.noreply.github.com> | 2025-11-05 18:39:21 +0500 |
| commit | cf75abb408b0233072655067b386ac6b8b2ad92b (patch) | |
| tree | c8e75d9df14147a2dbc3d7cce858c529656d1f08 | |
| parent | 360c2387db7c31590ca9c066055a41207b799e8e (diff) | |
| download | seaweedfs-cf75abb408b0233072655067b386ac6b8b2ad92b.tar.xz seaweedfs-cf75abb408b0233072655067b386ac6b8b2ad92b.zip | |
resolv comment
| -rw-r--r-- | weed/filer/filer.go | 2 | ||||
| -rw-r--r-- | weed/s3api/filer_util.go | 22 |
2 files changed, 15 insertions, 9 deletions
diff --git a/weed/filer/filer.go b/weed/filer/filer.go index 5671c1970..35ab7cd7b 100644 --- a/weed/filer/filer.go +++ b/weed/filer/filer.go @@ -354,7 +354,7 @@ func (f *Filer) FindEntry(ctx context.Context, p util.FullPath) (entry *Entry, e if entry.IsExpireS3Enabled() { if entry.GetS3ExpireTime().Before(time.Now()) { f.Store.DeleteOneEntry(ctx, entry) - if delErr := f.doDeleteEntryMetaAndData(ctx, entry, false, true, nil); delErr != nil { + if delErr := f.doDeleteEntryMetaAndData(ctx, entry, true, false, nil); delErr != nil { glog.ErrorfCtx(ctx, "FindEntry doDeleteEntryMetaAndData %s failed: %v", entry.FullPath, delErr) } return nil, filer_pb.ErrNotFound diff --git a/weed/s3api/filer_util.go b/weed/s3api/filer_util.go index 6cc40f25e..161570e01 100644 --- a/weed/s3api/filer_util.go +++ b/weed/s3api/filer_util.go @@ -111,31 +111,37 @@ func (s3a *S3ApiServer) updateEntry(parentDirectoryPath string, newEntry *filer_ } func (s3a *S3ApiServer) updateEntriesTTL(parentDirectoryPath string, ttlSec int32) error { + var updateErrors []error err := s3a.WithFilerClient(false, func(client filer_pb.SeaweedFilerClient) error { ctx := context.Background() - err := filer_pb.SeaweedList(ctx, client, parentDirectoryPath, "", func(entry *filer_pb.Entry, isLast bool) error { + _ = filer_pb.SeaweedList(ctx, client, parentDirectoryPath, "", func(entry *filer_pb.Entry, isLast bool) error { if entry.IsDirectory { - return s3a.updateEntriesTTL(fmt.Sprintf("%s/%s", strings.TrimRight(parentDirectoryPath, "/"), entry.Name), ttlSec) + if err := s3a.updateEntriesTTL(fmt.Sprintf("%s/%s", strings.TrimRight(parentDirectoryPath, "/"), entry.Name), ttlSec); err != nil { + updateErrors = append(updateErrors, fmt.Errorf("dir %s: %w", entry.Name, err)) + } + return nil } if entry.Attributes == nil { entry.Attributes = &filer_pb.FuseAttributes{} } + if entry.Extended == nil { + entry.Extended = make(map[string][]byte) + } entry.Extended[s3_constants.SeaweedFSExpiresS3] = []byte("true") if entry.Attributes.TtlSec == ttlSec { return nil } entry.Attributes.TtlSec = ttlSec - err := filer_pb.UpdateEntry(ctx, client, &filer_pb.UpdateEntryRequest{ + if err := filer_pb.UpdateEntry(ctx, client, &filer_pb.UpdateEntryRequest{ Directory: parentDirectoryPath, Entry: entry, - }) - if err != nil { - return err + }); err != nil { + updateErrors = append(updateErrors, fmt.Errorf("file %s: %w", entry.Name, err)) } return nil }, "", false, math.MaxInt32) - if err != nil { - return err + if len(updateErrors) > 0 { + return fmt.Errorf("failed to update %d entries: %v", len(updateErrors), updateErrors[0]) } return nil }) |
