aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKonstantin Lebedev <9497591+kmlebedev@users.noreply.github.com>2025-11-05 18:39:21 +0500
committerKonstantin Lebedev <9497591+kmlebedev@users.noreply.github.com>2025-11-05 18:39:21 +0500
commitcf75abb408b0233072655067b386ac6b8b2ad92b (patch)
treec8e75d9df14147a2dbc3d7cce858c529656d1f08
parent360c2387db7c31590ca9c066055a41207b799e8e (diff)
downloadseaweedfs-cf75abb408b0233072655067b386ac6b8b2ad92b.tar.xz
seaweedfs-cf75abb408b0233072655067b386ac6b8b2ad92b.zip
resolv comment
-rw-r--r--weed/filer/filer.go2
-rw-r--r--weed/s3api/filer_util.go22
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
})