Merge pull request #3225 from yichengq/client-record-err

client: return correct error for 50x response
This commit is contained in:
Yicheng Qin 2015-08-06 14:40:38 -07:00
commit 25ad71fbac

View File

@ -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 {