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

headerTimeout should be longer and body should be shorter
This commit is contained in:
Ben Johnson 2013-10-23 13:30:51 -07:00
commit 378c3d1dcf

View File

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