diff --git a/client/client.go b/client/client.go index 31134251d..018f80559 100644 --- a/client/client.go +++ b/client/client.go @@ -261,8 +261,13 @@ func (c *httpClusterClient) Do(ctx context.Context, act httpAction) (*http.Respo continue } if resp.StatusCode/100 == 5 { - // TODO: make sure this is a no leader response - cerr.Errors = append(cerr.Errors, fmt.Errorf("client: etcd member %s has no leader", eps[k].String())) + switch resp.StatusCode { + case http.StatusInternalServerError, http.StatusServiceUnavailable: + // TODO: make sure this is a no leader response + cerr.Errors = append(cerr.Errors, fmt.Errorf("client: etcd member %s has no leader", eps[k].String())) + default: + cerr.Errors = append(cerr.Errors, fmt.Errorf("client: etcd member %s returns server error [%s]", eps[k].String(), http.StatusText(resp.StatusCode))) + } continue } if k != pinned {