Browse Source

Merge pull request #265 from xiangli-cmu/fix-timeout

headerTimeout should be longer and body should be shorter
Ben Johnson 12 years ago
parent
commit
378c3d1dcf
1 changed files with 8 additions and 6 deletions
  1. 8 6
      server/transporter.go

+ 8 - 6
server/transporter.go

@@ -18,13 +18,15 @@ import (
 // This should not exceed 3 * RTT
 var dailTimeout = 3 * HeartbeatTimeout
 
-// Timeout for setup internal raft http connection + receive response header
-// This should not exceed 3 * RTT + RTT
-var responseHeaderTimeout = 4 * HeartbeatTimeout
+// Timeout for setup internal raft http connection + receive all post body
+// The raft server will not send back response header until it received all the
+// post body.
+// This should not exceed dailTimeout + electionTimeout
+var responseHeaderTimeout = 3*HeartbeatTimeout + ElectionTimeout
 
 // Timeout for receiving the response body from the server
-// This should not exceed election timeout
-var tranTimeout = ElectionTimeout
+// This should not exceed heartbeatTimeout
+var tranTimeout = HeartbeatTimeout
 
 // Transporter layer for communication between raft nodes
 type transporter struct {
@@ -221,7 +223,7 @@ func (t *transporter) Get(urlStr string) (*http.Response, *http.Request, error)
 // Cancel the on fly HTTP transaction when timeout happens.
 func (t *transporter) CancelWhenTimeout(req *http.Request) {
 	go func() {
-		time.Sleep(ElectionTimeout)
+		time.Sleep(tranTimeout)
 		t.transport.CancelRequest(req)
 	}()
 }