From fbfe52de6e26e2d3c3b56be905e5bd1bee520db8 Mon Sep 17 00:00:00 2001 From: Chris Lu Date: Sat, 13 Jun 2026 12:48:16 -0700 Subject: [PATCH] fix(tier): best-effort restore of data mtime on download A failed Chtimes should not abort an otherwise complete tier-down; warn and continue, matching the EC copy path. --- weed/server/volume_grpc_tier_download.go | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/weed/server/volume_grpc_tier_download.go b/weed/server/volume_grpc_tier_download.go index 31a3b72a5..afde9a44f 100644 --- a/weed/server/volume_grpc_tier_download.go +++ b/weed/server/volume_grpc_tier_download.go @@ -5,6 +5,7 @@ import ( "os" "time" + "github.com/seaweedfs/seaweedfs/weed/glog" "github.com/seaweedfs/seaweedfs/weed/pb/volume_server_pb" "github.com/seaweedfs/seaweedfs/weed/storage/backend" "github.com/seaweedfs/seaweedfs/weed/storage/needle" @@ -66,8 +67,10 @@ func (vs *VolumeServer) VolumeTierMoveDatFromRemote(req *volume_server_pb.Volume } if remoteFileModifiedTime > 0 { modifiedTime := time.Unix(int64(remoteFileModifiedTime), 0) - if err := os.Chtimes(v.FileName(".dat"), time.Now(), modifiedTime); err != nil { - return fmt.Errorf("restore data file %s modified time: %v", v.FileName(".dat"), err) + // best-effort: a cosmetic mtime failure should not abort an otherwise + // complete tier-down, matching the EC copy path + if err := os.Chtimes(v.FileName(".dat"), modifiedTime, modifiedTime); err != nil { + glog.Warningf("volume %d restore data file %s modified time: %v", v.Id, v.FileName(".dat"), err) } }