mailru: fix incorrect modtime after updating a file or setting its modtime

Update and SetModTime kept the caller's full precision modtime in
memory while the server stores 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.
This commit is contained in:
Nick Craig-Wood
2026-07-13 13:49:11 +01:00
parent 7dd42c93cf
commit 047e0daae3
+9 -2
View File
@@ -1733,7 +1733,10 @@ func (o *Object) Update(ctx context.Context, in io.Reader, src fs.ObjectInfo, op
}
o.mrHash = newHash
o.size = size
o.modTime = src.ModTime(ctx)
// The server stores modtimes with second precision so truncate
// here too to keep the in-memory modtime identical to the one a
// fresh listing returns.
o.modTime = src.ModTime(ctx).Truncate(time.Second)
return o.addFileMetaData(ctx, true)
}
@@ -2036,7 +2039,11 @@ func (o *Object) Storable() bool {
// Commits the datastore
func (o *Object) SetModTime(ctx context.Context, modTime time.Time) error {
// fs.Debugf(o, ">>> SetModTime [%v]", modTime)
o.modTime = modTime
//
// The server stores modtimes 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 o.addFileMetaData(ctx, true)
}