aboutsummaryrefslogtreecommitdiff
path: root/weed/server/volume_tcp_file.go
diff options
context:
space:
mode:
authorChris Lu <chris.lu@gmail.com>2020-02-14 22:24:38 -0800
committerChris Lu <chris.lu@gmail.com>2020-02-14 22:24:38 -0800
commitc7ac94ea9a3bc2842ce41c1fcad6fc23781c1296 (patch)
treea311bf1155c110610519186113889f8943407193 /weed/server/volume_tcp_file.go
parentbe415f4e3c5ddb96577ae5e0fd86e612f6122078 (diff)
downloadseaweedfs-c7ac94ea9a3bc2842ce41c1fcad6fc23781c1296.tar.xz
seaweedfs-c7ac94ea9a3bc2842ce41c1fcad6fc23781c1296.zip
skip EOF message
now tcp Concurrency Level: 16 Time taken for tests: 22.963 seconds Complete requests: 1048576 Failed requests: 0 Total transferred: 1106755384 bytes Requests per second: 45663.49 [#/sec] Transfer rate: 47067.47 [Kbytes/sec] vs normal Concurrency Level: 16 Time taken for tests: 22.286 seconds Complete requests: 1048576 Failed requests: 0 Total transferred: 1106754345 bytes Requests per second: 47050.30 [#/sec] Transfer rate: 48496.88 [Kbytes/sec]
Diffstat (limited to 'weed/server/volume_tcp_file.go')
-rw-r--r--weed/server/volume_tcp_file.go28
1 files changed, 17 insertions, 11 deletions
diff --git a/weed/server/volume_tcp_file.go b/weed/server/volume_tcp_file.go
index d7298aae7..295e5f96a 100644
--- a/weed/server/volume_tcp_file.go
+++ b/weed/server/volume_tcp_file.go
@@ -4,6 +4,7 @@ import (
"context"
"encoding/json"
"fmt"
+ "io"
"net"
"net/http"
"strings"
@@ -16,19 +17,23 @@ import (
func (vs *VolumeServer) HandleTcpConnection(conn net.Conn) error {
- // println("handle tcp conn", conn.RemoteAddr())
- tcpMessage := &volume_server_pb.TcpRequestHeader{}
- if err := util.ReadMessage(conn, tcpMessage); err != nil {
- return fmt.Errorf("read message: %v", err)
- }
+ defer conn.Close()
+ for {
+ // println("handle tcp conn", conn.RemoteAddr())
+ tcpMessage := &volume_server_pb.TcpRequestHeader{}
+ if err := util.ReadMessage(conn, tcpMessage); err != nil {
+ if err == io.EOF {
+ return nil
+ }
+ return fmt.Errorf("read message: %v", err)
+ }
- if tcpMessage.Get != nil {
- vs.handleFileGet(conn, tcpMessage.Get)
- }
+ if tcpMessage.Get != nil {
+ vs.handleFileGet(conn, tcpMessage.Get)
+ }
- err := util.WriteMessageEOF(conn)
- // println("processed", tcpMessage.Get.FileId)
- return err
+ // println("processed", tcpMessage.Get.FileId)
+ }
}
func (vs *VolumeServer) handleFileGet(conn net.Conn, req *volume_server_pb.FileGetRequest) error {
@@ -135,6 +140,7 @@ func (vs *VolumeServer) handleFileGet(conn net.Conn, req *volume_server_pb.FileG
t = &volume_server_pb.FileGetResponse{}
}
t.Data = n.Data[bytesRead:stopIndex]
+ t.IsLast = stopIndex == bytesToRead
err = util.WriteMessage(conn, t)
t = nil