فهرست منبع

*: 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
Yicheng Qin 11 سال پیش
والد
کامیت
2c94e2d771
5فایلهای تغییر یافته به همراه6 افزوده شده و 5 حذف شده
  1. 1 1
      etcdmain/etcd.go
  2. 1 1
      integration/cluster_test.go
  3. 2 2
      pkg/transport/timeout_transport.go
  4. 1 1
      pkg/transport/timeout_transport_test.go
  5. 1 0
      rafthttp/peer.go

+ 1 - 1
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
 	}

+ 1 - 1
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)
 	}

+ 2 - 2
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,

+ 1 - 1
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)
 	}

+ 1 - 0
rafthttp/peer.go

@@ -30,6 +30,7 @@ const (
 	appRespBatchMs = 50
 	propBatchMs    = 10
 
+	DialTimeout      = time.Second
 	ConnReadTimeout  = 5 * time.Second
 	ConnWriteTimeout = 5 * time.Second
 )