aboutsummaryrefslogtreecommitdiff
path: root/weed/storage/volume_write.go
diff options
context:
space:
mode:
authorchrislu <chris.lu@gmail.com>2022-10-13 23:15:00 -0700
committerchrislu <chris.lu@gmail.com>2022-10-13 23:15:00 -0700
commit9c8678ded97dac7359349b553c15386db7d626ca (patch)
treec3b4078e8d68083991d80b83cfc25eb66b631f55 /weed/storage/volume_write.go
parente05637c42cbb7519aa97c3b46a0305872fa6d11a (diff)
downloadseaweedfs-9c8678ded97dac7359349b553c15386db7d626ca.tar.xz
seaweedfs-9c8678ded97dac7359349b553c15386db7d626ca.zip
ensure monotonic n.AppendAtNs
fix https://github.com/seaweedfs/seaweedfs/issues/3852
Diffstat (limited to 'weed/storage/volume_write.go')
-rw-r--r--weed/storage/volume_write.go9
1 files changed, 8 insertions, 1 deletions
diff --git a/weed/storage/volume_write.go b/weed/storage/volume_write.go
index 223e19577..2dc813216 100644
--- a/weed/storage/volume_write.go
+++ b/weed/storage/volume_write.go
@@ -157,7 +157,7 @@ func (v *Volume) doWriteRequest(n *needle.Needle, checkCookie bool) (offset uint
}
// append to dat file
- n.AppendAtNs = uint64(time.Now().UnixNano())
+ n.AppendAtNs = max(uint64(time.Now().UnixNano()), v.lastAppendAtNs+1)
offset, size, _, err = n.Append(v.DataBackend, v.Version())
v.checkReadWriteError(err)
if err != nil {
@@ -330,3 +330,10 @@ func (v *Volume) WriteNeedleBlob(needleId NeedleId, needleBlob []byte, size Size
return err
}
+
+func max(x, y uint64) uint64 {
+ if x <= y {
+ return y
+ }
+ return x
+}