properly release memory
fix https://github.com/chrislusf/seaweedfs/issues/301
This commit is contained in:
@@ -66,7 +66,9 @@ func getBytesForFileBlock(r *os.File, offset int64, readSize int) (dataSlice []b
|
||||
}
|
||||
|
||||
func (n *Needle) ReleaseMemory() {
|
||||
n.rawBlock.decreaseReference()
|
||||
if n.rawBlock != nil {
|
||||
n.rawBlock.decreaseReference()
|
||||
}
|
||||
}
|
||||
func ReleaseBytes(b []byte) {
|
||||
bytesPool.Put(b)
|
||||
|
||||
@@ -144,10 +144,10 @@ func ReadNeedleBlob(r *os.File, offset int64, size uint32) (dataSlice []byte, bl
|
||||
|
||||
func (n *Needle) ReadData(r *os.File, offset int64, size uint32, version Version) (err error) {
|
||||
bytes, block, err := ReadNeedleBlob(r, offset, size)
|
||||
n.rawBlock = block
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
n.rawBlock = block
|
||||
n.ParseNeedleHeader(bytes)
|
||||
if n.Size != size {
|
||||
return fmt.Errorf("File Entry Not Found. Needle %d Memory %d", n.Size, size)
|
||||
|
||||
@@ -159,11 +159,11 @@ func (v *Volume) isFileUnchanged(n *Needle) bool {
|
||||
if ok && nv.Offset > 0 {
|
||||
oldNeedle := new(Needle)
|
||||
err := oldNeedle.ReadData(v.dataFile, int64(nv.Offset)*NeedlePaddingSize, nv.Size, v.Version())
|
||||
defer oldNeedle.ReleaseMemory()
|
||||
if err != nil {
|
||||
glog.V(0).Infof("Failed to check updated file %v", err)
|
||||
return false
|
||||
}
|
||||
defer oldNeedle.ReleaseMemory()
|
||||
if oldNeedle.Checksum == n.Checksum && bytes.Equal(oldNeedle.Data, n.Data) {
|
||||
n.DataSize = oldNeedle.DataSize
|
||||
return true
|
||||
@@ -289,7 +289,6 @@ func (v *Volume) readNeedle(n *Needle) (int, error) {
|
||||
}
|
||||
err := n.ReadData(v.dataFile, int64(nv.Offset)*NeedlePaddingSize, nv.Size, v.Version())
|
||||
if err != nil {
|
||||
n.ReleaseMemory()
|
||||
return 0, err
|
||||
}
|
||||
bytesRead := len(n.Data)
|
||||
|
||||
Reference in New Issue
Block a user