瀏覽代碼

etcdserver: use timeout transport as peer transport

This pairs with remote timeout listeners.

etcd uses timeout listener, and times out the accepted connections
if there is no activity. So the idle connections may time out easily.
Becaus timeout transport doesn't reuse connections, it prevents using
timeouted connection.

This fixes the problem that etcd fail to get version of peers.
Yicheng Qin 10 年之前
父節點
當前提交
0eee88a3d9
共有 2 個文件被更改,包括 4 次插入2 次删除
  1. 2 1
      etcdserver/server.go
  2. 2 1
      rafthttp/transport.go

+ 2 - 1
etcdserver/server.go

@@ -211,7 +211,8 @@ func NewServer(cfg *ServerConfig) (*EtcdServer, error) {
 	haveWAL := wal.Exist(cfg.WALDir())
 	ss := snap.New(cfg.SnapDir())
 
-	pt, err := transport.NewTransport(cfg.PeerTLSInfo, cfg.peerDialTimeout())
+	// use timeout transport to pair with remote timeout listeners
+	pt, err := transport.NewTimeoutTransport(cfg.PeerTLSInfo, cfg.peerDialTimeout(), 0, 0)
 	if err != nil {
 		return nil, err
 	}

+ 2 - 1
rafthttp/transport.go

@@ -143,7 +143,8 @@ func (t *Transport) Start() error {
 	if err != nil {
 		return err
 	}
-	t.pipelineRt, err = transport.NewTransport(t.TLSInfo, t.DialTimeout)
+	// use timeout transport to pair with remote timeout listeners
+	t.pipelineRt, err = transport.NewTimeoutTransport(t.TLSInfo, t.DialTimeout, 0, 0)
 	if err != nil {
 		return err
 	}