aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorskycope <wings.wyang@gmail.com>2024-01-12 12:23:46 +0800
committerGitHub <noreply@github.com>2024-01-11 20:23:46 -0800
commit0e8a54f6f67e534d3af01d70ce45bd9cbfe87d42 (patch)
tree0ab33c47805ec3b07ced64cf15211acdf6c2f7e5
parentb0ac3ebd6c782422aea62d1a7cf2c11bafbd0b91 (diff)
downloadseaweedfs-0e8a54f6f67e534d3af01d70ce45bd9cbfe87d42.tar.xz
seaweedfs-0e8a54f6f67e534d3af01d70ce45bd9cbfe87d42.zip
fix write volume over size MaxPossibleVolumeSize (#5190)
Co-authored-by: Yang Wang <yangwang@weride.ai>
-rw-r--r--weed/storage/needle/needle_write.go2
-rw-r--r--weed/storage/volume_write.go13
2 files changed, 1 insertions, 14 deletions
diff --git a/weed/storage/needle/needle_write.go b/weed/storage/needle/needle_write.go
index 60b6e7adb..6546f35a6 100644
--- a/weed/storage/needle/needle_write.go
+++ b/weed/storage/needle/needle_write.go
@@ -127,7 +127,7 @@ func (n *Needle) Append(w backend.BackendStorageFile, version Version) (offset u
err = fmt.Errorf("Cannot Read Current Volume Position: %v", e)
return
}
- if offset >= MaxPossibleVolumeSize && n.Size.IsValid() {
+ if offset >= MaxPossibleVolumeSize && len(n.Data) != 0 {
err = fmt.Errorf("Volume Size %d Exceeded %d", offset, MaxPossibleVolumeSize)
return
}
diff --git a/weed/storage/volume_write.go b/weed/storage/volume_write.go
index 56010cea2..8b731e028 100644
--- a/weed/storage/volume_write.go
+++ b/weed/storage/volume_write.go
@@ -107,16 +107,9 @@ func (v *Volume) asyncRequestAppend(request *needle.AsyncRequest) {
func (v *Volume) syncWrite(n *needle.Needle, checkCookie bool) (offset uint64, size Size, isUnchanged bool, err error) {
// glog.V(4).Infof("writing needle %s", needle.NewFileIdFromNeedle(v.Id, n).String())
- actualSize := needle.GetActualSize(Size(len(n.Data)), v.Version())
-
v.dataFileAccessLock.Lock()
defer v.dataFileAccessLock.Unlock()
- if MaxPossibleVolumeSize < v.nm.ContentSize()+uint64(actualSize) {
- err = fmt.Errorf("volume size limit %d exceeded! current size is %d", MaxPossibleVolumeSize, v.nm.ContentSize())
- return
- }
-
return v.doWriteRequest(n, checkCookie)
}
@@ -193,7 +186,6 @@ func (v *Volume) doWriteRequest(n *needle.Needle, checkCookie bool) (offset uint
func (v *Volume) syncDelete(n *needle.Needle) (Size, error) {
// glog.V(4).Infof("delete needle %s", needle.NewFileIdFromNeedle(v.Id, n).String())
- actualSize := needle.GetActualSize(0, v.Version())
v.dataFileAccessLock.Lock()
defer v.dataFileAccessLock.Unlock()
@@ -201,11 +193,6 @@ func (v *Volume) syncDelete(n *needle.Needle) (Size, error) {
return 0, nil
}
- if MaxPossibleVolumeSize < v.nm.ContentSize()+uint64(actualSize) {
- err := fmt.Errorf("volume size limit %d exceeded! current size is %d", MaxPossibleVolumeSize, v.nm.ContentSize())
- return 0, err
- }
-
return v.doDeleteRequest(n)
}