aboutsummaryrefslogtreecommitdiff
path: root/go/weed
diff options
context:
space:
mode:
authorchrislusf <chris.lu@gmail.com>2016-04-14 01:30:26 -0700
committerchrislusf <chris.lu@gmail.com>2016-04-14 01:30:26 -0700
commit0649d778a72d4c0c27b3f2049fdb6f6e18956a65 (patch)
treefd8f58c8639aba6038cf6bef0d382fc806a8b48c /go/weed
parent95e0d2f1b236f97f70d51a62c3df6a937a27286d (diff)
downloadseaweedfs-0649d778a72d4c0c27b3f2049fdb6f6e18956a65.tar.xz
seaweedfs-0649d778a72d4c0c27b3f2049fdb6f6e18956a65.zip
pooling []byte
reduce the number of requests to make([]byte)
Diffstat (limited to 'go/weed')
-rw-r--r--go/weed/signal_handling.go3
-rw-r--r--go/weed/weed_server/volume_server_handlers_read.go1
-rw-r--r--go/weed/weed_server/volume_server_handlers_sync.go3
-rw-r--r--go/weed/weed_server/volume_server_handlers_write.go8
4 files changed, 12 insertions, 3 deletions
diff --git a/go/weed/signal_handling.go b/go/weed/signal_handling.go
index 2004bb088..a8f166382 100644
--- a/go/weed/signal_handling.go
+++ b/go/weed/signal_handling.go
@@ -20,7 +20,8 @@ func OnInterrupt(fn func()) {
// syscall.SIGHUP,
syscall.SIGINT,
syscall.SIGTERM,
- syscall.SIGQUIT)
+ // syscall.SIGQUIT,
+ )
go func() {
for _ = range signalChan {
fn()
diff --git a/go/weed/weed_server/volume_server_handlers_read.go b/go/weed/weed_server/volume_server_handlers_read.go
index 52b22426f..6ce648062 100644
--- a/go/weed/weed_server/volume_server_handlers_read.go
+++ b/go/weed/weed_server/volume_server_handlers_read.go
@@ -66,6 +66,7 @@ func (vs *VolumeServer) GetOrHeadHandler(w http.ResponseWriter, r *http.Request)
cookie := n.Cookie
count, e := vs.store.ReadVolumeNeedle(volumeId, n)
glog.V(4).Infoln("read bytes", count, "error", e)
+ defer n.ReleaseMemory()
if e != nil || count <= 0 {
glog.V(0).Infoln("read error:", e, r.URL.Path)
w.WriteHeader(http.StatusNotFound)
diff --git a/go/weed/weed_server/volume_server_handlers_sync.go b/go/weed/weed_server/volume_server_handlers_sync.go
index c650e5f53..cb24f7cd6 100644
--- a/go/weed/weed_server/volume_server_handlers_sync.go
+++ b/go/weed/weed_server/volume_server_handlers_sync.go
@@ -50,7 +50,8 @@ func (vs *VolumeServer) getVolumeDataContentHandler(w http.ResponseWriter, r *ht
}
offset := uint32(util.ParseUint64(r.FormValue("offset"), 0))
size := uint32(util.ParseUint64(r.FormValue("size"), 0))
- content, err := storage.ReadNeedleBlob(v.DataFile(), int64(offset)*storage.NeedlePaddingSize, size)
+ content, rawBytes, err := storage.ReadNeedleBlob(v.DataFile(), int64(offset)*storage.NeedlePaddingSize, size)
+ defer storage.ReleaseBytes(rawBytes)
if err != nil {
writeJsonError(w, r, http.StatusInternalServerError, err)
return
diff --git a/go/weed/weed_server/volume_server_handlers_write.go b/go/weed/weed_server/volume_server_handlers_write.go
index 3d2afaf77..58733ea11 100644
--- a/go/weed/weed_server/volume_server_handlers_write.go
+++ b/go/weed/weed_server/volume_server_handlers_write.go
@@ -55,7 +55,9 @@ func (vs *VolumeServer) DeleteHandler(w http.ResponseWriter, r *http.Request) {
cookie := n.Cookie
- if _, ok := vs.store.ReadVolumeNeedle(volumeId, n); ok != nil {
+ _, ok := vs.store.ReadVolumeNeedle(volumeId, n)
+ defer n.ReleaseMemory()
+ if ok != nil {
m := make(map[string]uint32)
m["size"] = 0
writeJsonQuiet(w, r, http.StatusNotFound, m)
@@ -120,6 +122,7 @@ func (vs *VolumeServer) batchDeleteHandler(w http.ResponseWriter, r *http.Reques
Status: http.StatusNotFound,
Error: err.Error(),
})
+ n.ReleaseMemory()
continue
}
@@ -129,6 +132,7 @@ func (vs *VolumeServer) batchDeleteHandler(w http.ResponseWriter, r *http.Reques
Status: http.StatusNotAcceptable,
Error: "ChunkManifest: not allowed in batch delete mode.",
})
+ n.ReleaseMemory()
continue
}
@@ -139,6 +143,7 @@ func (vs *VolumeServer) batchDeleteHandler(w http.ResponseWriter, r *http.Reques
Error: "File Random Cookie does not match.",
})
glog.V(0).Infoln("deleting", fid, "with unmaching cookie from ", r.RemoteAddr, "agent", r.UserAgent())
+ n.ReleaseMemory()
return
}
if size, err := vs.store.Delete(volumeId, n); err != nil {
@@ -154,6 +159,7 @@ func (vs *VolumeServer) batchDeleteHandler(w http.ResponseWriter, r *http.Reques
Size: int(size)},
)
}
+ n.ReleaseMemory()
}
writeJsonQuiet(w, r, http.StatusAccepted, ret)