From 0a39aa4d326153bc10c64ef675be93cd18536ad7 Mon Sep 17 00:00:00 2001 From: Nick Craig-Wood Date: Mon, 13 Jul 2026 13:53:29 +0100 Subject: [PATCH] hdfs: fix incorrect modtime after uploading a file or setting its modtime SetModTime (which Put and Update also use) kept the caller's full precision modtime in memory while Chtimes sets it with second precision, so until the object was re-read the modtime did not match what a fresh listing would report. This broke wrappers which compare exact modtimes, such as the hasher backend's fingerprint and the VFS cache. Truncate the modtime to second precision to match what the server stores. --- backend/hdfs/object.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/backend/hdfs/object.go b/backend/hdfs/object.go index d6d25297f..688e663ea 100644 --- a/backend/hdfs/object.go +++ b/backend/hdfs/object.go @@ -50,7 +50,10 @@ func (o *Object) SetModTime(ctx context.Context, modTime time.Time) error { if err != nil { return err } - o.modTime = modTime + // Chtimes sets the modtime with second precision so truncate + // here too to keep the in-memory modtime identical to the one a + // fresh listing returns. + o.modTime = modTime.Truncate(time.Second) return nil }