aboutsummaryrefslogtreecommitdiff
path: root/weed/storage/volume_write.go
diff options
context:
space:
mode:
authorChris Lu <chris.lu@gmail.com>2021-08-13 01:54:35 -0700
committerChris Lu <chris.lu@gmail.com>2021-08-13 01:54:35 -0700
commita8617c1a39f78f43f546755e87d895ccbcafc0fb (patch)
treefa19e3d8c3d415f05b46113ec0bcb1e10749e75c /weed/storage/volume_write.go
parent5a0f92423eb4f89d35b245b1913eb7ba60436742 (diff)
downloadseaweedfs-a8617c1a39f78f43f546755e87d895ccbcafc0fb.tar.xz
seaweedfs-a8617c1a39f78f43f546755e87d895ccbcafc0fb.zip
tail volume: fix zero cookie problem from batch deletion
Diffstat (limited to 'weed/storage/volume_write.go')
-rw-r--r--weed/storage/volume_write.go5
1 files changed, 4 insertions, 1 deletions
diff --git a/weed/storage/volume_write.go b/weed/storage/volume_write.go
index a286c5dd5..ad3dad388 100644
--- a/weed/storage/volume_write.go
+++ b/weed/storage/volume_write.go
@@ -143,7 +143,10 @@ func (v *Volume) doWriteRequest(n *needle.Needle) (offset uint64, size Size, isU
err = fmt.Errorf("reading existing needle: %v", existingNeedleReadErr)
return
}
- if existingNeedle.Cookie != n.Cookie {
+ if n.Cookie == 0 {
+ // this is from batch deletion, and read back again when tailing a remote volume
+ n.Cookie = existingNeedle.Cookie
+ } else if existingNeedle.Cookie != n.Cookie {
glog.V(0).Infof("write cookie mismatch: existing %s, new %s",
needle.NewFileIdFromNeedle(v.Id, existingNeedle), needle.NewFileIdFromNeedle(v.Id, n))
err = fmt.Errorf("mismatching cookie %x", n.Cookie)