aboutsummaryrefslogtreecommitdiff
path: root/go/storage/volume.go
diff options
context:
space:
mode:
Diffstat (limited to 'go/storage/volume.go')
-rw-r--r--go/storage/volume.go3
1 files changed, 3 insertions, 0 deletions
diff --git a/go/storage/volume.go b/go/storage/volume.go
index 5c6b12e9b..af552a10f 100644
--- a/go/storage/volume.go
+++ b/go/storage/volume.go
@@ -159,6 +159,7 @@ 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
@@ -288,6 +289,7 @@ 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)
@@ -304,6 +306,7 @@ func (v *Volume) readNeedle(n *Needle) (int, error) {
if uint64(time.Now().Unix()) < n.LastModified+uint64(ttlMinutes*60) {
return bytesRead, nil
}
+ n.ReleaseMemory()
return -1, errors.New("Not Found")
}