diff options
| author | skycope <wings.wyang@gmail.com> | 2024-01-12 12:23:46 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-01-11 20:23:46 -0800 |
| commit | 0e8a54f6f67e534d3af01d70ce45bd9cbfe87d42 (patch) | |
| tree | 0ab33c47805ec3b07ced64cf15211acdf6c2f7e5 | |
| parent | b0ac3ebd6c782422aea62d1a7cf2c11bafbd0b91 (diff) | |
| download | seaweedfs-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.go | 2 | ||||
| -rw-r--r-- | weed/storage/volume_write.go | 13 |
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) } |
