Procházet zdrojové kódy

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

client: return correct error for 50x response
Yicheng Qin před 10 roky
rodič
revize
25ad71fbac
1 změnil soubory, kde provedl 7 přidání a 2 odebrání
  1. 7 2
      client/client.go

+ 7 - 2
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 {