etcdserver: improve error message when timeout due to leader fail

This commit is contained in:
Yicheng Qin 2015-08-13 15:46:21 -07:00
parent 084936a920
commit 27bfb3fcb2
3 changed files with 3 additions and 3 deletions

View File

@ -29,7 +29,7 @@ var (
ErrPeerURLexists = errors.New("etcdserver: peerURL exists") ErrPeerURLexists = errors.New("etcdserver: peerURL exists")
ErrCanceled = errors.New("etcdserver: request cancelled") ErrCanceled = errors.New("etcdserver: request cancelled")
ErrTimeout = errors.New("etcdserver: request timed out") ErrTimeout = errors.New("etcdserver: request timed out")
ErrTimeoutDueToLeaderLost = errors.New("etcdserver: request timed out, possibly due to leader lost") ErrTimeoutDueToLeaderFail = errors.New("etcdserver: request timed out, possibly due to previous leader failure")
) )
func isKeyNotFound(err error) bool { func isKeyNotFound(err error) bool {

View File

@ -60,7 +60,7 @@ func writeError(w http.ResponseWriter, err error) {
herr := httptypes.NewHTTPError(e.HTTPStatus(), e.Error()) herr := httptypes.NewHTTPError(e.HTTPStatus(), e.Error())
herr.WriteTo(w) herr.WriteTo(w)
default: default:
if err == etcdserver.ErrTimeoutDueToLeaderLost { if err == etcdserver.ErrTimeoutDueToLeaderFail {
plog.Error(err) plog.Error(err)
} else { } else {
plog.Errorf("got unexpected response error (%v)", err) plog.Errorf("got unexpected response error (%v)", err)

View File

@ -1012,7 +1012,7 @@ func (s *EtcdServer) parseProposeCtxErr(err error, start time.Time) error {
curLeadElected := s.r.leadElectedTime() curLeadElected := s.r.leadElectedTime()
prevLeadLost := curLeadElected.Add(-2 * time.Duration(s.cfg.ElectionTicks) * time.Duration(s.cfg.TickMs) * time.Millisecond) prevLeadLost := curLeadElected.Add(-2 * time.Duration(s.cfg.ElectionTicks) * time.Duration(s.cfg.TickMs) * time.Millisecond)
if start.After(prevLeadLost) && start.Before(curLeadElected) { if start.After(prevLeadLost) && start.Before(curLeadElected) {
return ErrTimeoutDueToLeaderLost return ErrTimeoutDueToLeaderFail
} }
return ErrTimeout return ErrTimeout
default: default: