|
@@ -131,6 +131,7 @@ type Transport struct {
|
|
|
peers map[types.ID]Peer // peers map
|
|
peers map[types.ID]Peer // peers map
|
|
|
|
|
|
|
|
pipelineProber probing.Prober
|
|
pipelineProber probing.Prober
|
|
|
|
|
+ streamProber probing.Prober
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
func (t *Transport) Start() error {
|
|
func (t *Transport) Start() error {
|
|
@@ -146,6 +147,7 @@ func (t *Transport) Start() error {
|
|
|
t.remotes = make(map[types.ID]*remote)
|
|
t.remotes = make(map[types.ID]*remote)
|
|
|
t.peers = make(map[types.ID]Peer)
|
|
t.peers = make(map[types.ID]Peer)
|
|
|
t.pipelineProber = probing.NewProber(t.pipelineRt)
|
|
t.pipelineProber = probing.NewProber(t.pipelineRt)
|
|
|
|
|
+ t.streamProber = probing.NewProber(t.streamRt)
|
|
|
|
|
|
|
|
// If client didn't provide dial retry frequency, use the default
|
|
// If client didn't provide dial retry frequency, use the default
|
|
|
// (100ms backoff between attempts to create a new stream),
|
|
// (100ms backoff between attempts to create a new stream),
|
|
@@ -222,6 +224,7 @@ func (t *Transport) Stop() {
|
|
|
p.stop()
|
|
p.stop()
|
|
|
}
|
|
}
|
|
|
t.pipelineProber.RemoveAll()
|
|
t.pipelineProber.RemoveAll()
|
|
|
|
|
+ t.streamProber.RemoveAll()
|
|
|
if tr, ok := t.streamRt.(*http.Transport); ok {
|
|
if tr, ok := t.streamRt.(*http.Transport); ok {
|
|
|
tr.CloseIdleConnections()
|
|
tr.CloseIdleConnections()
|
|
|
}
|
|
}
|
|
@@ -318,6 +321,7 @@ func (t *Transport) AddPeer(id types.ID, us []string) {
|
|
|
fs := t.LeaderStats.Follower(id.String())
|
|
fs := t.LeaderStats.Follower(id.String())
|
|
|
t.peers[id] = startPeer(t, urls, id, fs)
|
|
t.peers[id] = startPeer(t, urls, id, fs)
|
|
|
addPeerToProber(t.Logger, t.pipelineProber, id.String(), us, RoundTripperNameSnapshot, rttSec)
|
|
addPeerToProber(t.Logger, t.pipelineProber, id.String(), us, RoundTripperNameSnapshot, rttSec)
|
|
|
|
|
+ addPeerToProber(t.Logger, t.streamProber, id.String(), us, RoundTripperNameRaftMessage, rttSec)
|
|
|
|
|
|
|
|
if t.Logger != nil {
|
|
if t.Logger != nil {
|
|
|
t.Logger.Info(
|
|
t.Logger.Info(
|
|
@@ -359,6 +363,7 @@ func (t *Transport) removePeer(id types.ID) {
|
|
|
delete(t.peers, id)
|
|
delete(t.peers, id)
|
|
|
delete(t.LeaderStats.Followers, id.String())
|
|
delete(t.LeaderStats.Followers, id.String())
|
|
|
t.pipelineProber.Remove(id.String())
|
|
t.pipelineProber.Remove(id.String())
|
|
|
|
|
+ t.streamProber.Remove(id.String())
|
|
|
|
|
|
|
|
if t.Logger != nil {
|
|
if t.Logger != nil {
|
|
|
t.Logger.Info(
|
|
t.Logger.Info(
|
|
@@ -390,6 +395,8 @@ func (t *Transport) UpdatePeer(id types.ID, us []string) {
|
|
|
|
|
|
|
|
t.pipelineProber.Remove(id.String())
|
|
t.pipelineProber.Remove(id.String())
|
|
|
addPeerToProber(t.Logger, t.pipelineProber, id.String(), us, RoundTripperNameSnapshot, rttSec)
|
|
addPeerToProber(t.Logger, t.pipelineProber, id.String(), us, RoundTripperNameSnapshot, rttSec)
|
|
|
|
|
+ t.streamProber.Remove(id.String())
|
|
|
|
|
+ addPeerToProber(t.Logger, t.streamProber, id.String(), us, RoundTripperNameRaftMessage, rttSec)
|
|
|
|
|
|
|
|
if t.Logger != nil {
|
|
if t.Logger != nil {
|
|
|
t.Logger.Info(
|
|
t.Logger.Info(
|