diff options
| author | Chris Lu <chris.lu@gmail.com> | 2020-02-14 22:24:38 -0800 |
|---|---|---|
| committer | Chris Lu <chris.lu@gmail.com> | 2020-02-14 22:24:38 -0800 |
| commit | c7ac94ea9a3bc2842ce41c1fcad6fc23781c1296 (patch) | |
| tree | a311bf1155c110610519186113889f8943407193 /weed/server/volume_tcp_file.go | |
| parent | be415f4e3c5ddb96577ae5e0fd86e612f6122078 (diff) | |
| download | seaweedfs-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.go | 28 |
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 |
