mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
rafthttp: not log expected timeout as error
The network timeout from stream with etcd 2.0 is expected because etcd 2.0 doesn't heartbeat on idle connections.
This commit is contained in:
parent
38b8e848ac
commit
fad2c09fa8
@ -282,7 +282,15 @@ func (cr *streamReader) run() {
|
||||
}
|
||||
} else {
|
||||
err := cr.decodeLoop(rc, t)
|
||||
if err != io.EOF && !isClosedConnectionError(err) {
|
||||
switch {
|
||||
// all data is read out
|
||||
case err == io.EOF:
|
||||
// connection is closed by the remote
|
||||
case isClosedConnectionError(err):
|
||||
// stream msgapp is only used for etcd 2.0, and etcd 2.0 doesn't
|
||||
// heartbeat on the idle stream, so it is expected to time out.
|
||||
case t == streamTypeMsgApp && isNetworkTimeoutError(err):
|
||||
default:
|
||||
log.Printf("rafthttp: failed to read message on stream %s due to %v", t, err)
|
||||
}
|
||||
}
|
||||
@ -481,3 +489,8 @@ func checkStreamSupport(v *semver.Version, t streamType) bool {
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func isNetworkTimeoutError(err error) bool {
|
||||
nerr, ok := err.(net.Error)
|
||||
return ok && nerr.Timeout()
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user