From 2c94e2d7713a863032c28b877851d2ef4861d564 Mon Sep 17 00:00:00 2001 From: Yicheng Qin Date: Thu, 12 Feb 2015 22:23:10 -0800 Subject: [PATCH] *: make dial timeout configurable Dial timeout is set shorter because 1. etcd is supposed to work in good environment, and the new value is long enough 2. shorter dial timeout makes dial fail faster, which is good for performance --- etcdmain/etcd.go | 2 +- integration/cluster_test.go | 2 +- pkg/transport/timeout_transport.go | 4 ++-- pkg/transport/timeout_transport_test.go | 2 +- rafthttp/peer.go | 1 + 5 files changed, 6 insertions(+), 5 deletions(-) diff --git a/etcdmain/etcd.go b/etcdmain/etcd.go index 904c456f3..62503b57b 100644 --- a/etcdmain/etcd.go +++ b/etcdmain/etcd.go @@ -92,7 +92,7 @@ func startEtcd(cfg *config) (<-chan struct{}, error) { log.Printf("no data-dir provided, using default data-dir ./%s", cfg.dir) } - pt, err := transport.NewTimeoutTransport(cfg.peerTLSInfo, rafthttp.ConnReadTimeout, rafthttp.ConnWriteTimeout) + pt, err := transport.NewTimeoutTransport(cfg.peerTLSInfo, rafthttp.DialTimeout, rafthttp.ConnReadTimeout, rafthttp.ConnWriteTimeout) if err != nil { return nil, err } diff --git a/integration/cluster_test.go b/integration/cluster_test.go index 59d8ac38c..648d3de85 100644 --- a/integration/cluster_test.go +++ b/integration/cluster_test.go @@ -623,7 +623,7 @@ func mustNewHTTPClient(t *testing.T, eps []string) client.Client { } func mustNewTransport(t *testing.T) *http.Transport { - tr, err := transport.NewTimeoutTransport(transport.TLSInfo{}, rafthttp.ConnReadTimeout, rafthttp.ConnWriteTimeout) + tr, err := transport.NewTimeoutTransport(transport.TLSInfo{}, rafthttp.DialTimeout, rafthttp.ConnReadTimeout, rafthttp.ConnWriteTimeout) if err != nil { t.Fatal(err) } diff --git a/pkg/transport/timeout_transport.go b/pkg/transport/timeout_transport.go index ae8767f7a..322b7997e 100644 --- a/pkg/transport/timeout_transport.go +++ b/pkg/transport/timeout_transport.go @@ -23,14 +23,14 @@ import ( // NewTimeoutTransport returns a transport created using the given TLS info. // If read/write on the created connection blocks longer than its time limit, // it will return timeout error. -func NewTimeoutTransport(info TLSInfo, rdtimeoutd, wtimeoutd time.Duration) (*http.Transport, error) { +func NewTimeoutTransport(info TLSInfo, dialtimeoutd, rdtimeoutd, wtimeoutd time.Duration) (*http.Transport, error) { tr, err := NewTransport(info) if err != nil { return nil, err } tr.Dial = (&rwTimeoutDialer{ Dialer: net.Dialer{ - Timeout: 30 * time.Second, + Timeout: dialtimeoutd, KeepAlive: 30 * time.Second, }, rdtimeoutd: rdtimeoutd, diff --git a/pkg/transport/timeout_transport_test.go b/pkg/transport/timeout_transport_test.go index 71537a2e8..47ea216c2 100644 --- a/pkg/transport/timeout_transport_test.go +++ b/pkg/transport/timeout_transport_test.go @@ -24,7 +24,7 @@ import ( // TestNewTimeoutTransport tests that NewTimeoutTransport returns a transport // that can dial out timeout connections. func TestNewTimeoutTransport(t *testing.T) { - tr, err := NewTimeoutTransport(TLSInfo{}, time.Hour, time.Hour) + tr, err := NewTimeoutTransport(TLSInfo{}, time.Hour, time.Hour, time.Hour) if err != nil { t.Fatalf("unexpected NewTimeoutTransport error: %v", err) } diff --git a/rafthttp/peer.go b/rafthttp/peer.go index 3ecf0b05f..a4e7557d3 100644 --- a/rafthttp/peer.go +++ b/rafthttp/peer.go @@ -30,6 +30,7 @@ const ( appRespBatchMs = 50 propBatchMs = 10 + DialTimeout = time.Second ConnReadTimeout = 5 * time.Second ConnWriteTimeout = 5 * time.Second )