diff --git a/pkg/vitess/api_client.go b/pkg/vitess/api_client.go index a5fa31d7..c589449e 100644 --- a/pkg/vitess/api_client.go +++ b/pkg/vitess/api_client.go @@ -76,7 +76,7 @@ func filterReplicaTablets(settings config.VitessConfigurationSettings, tablets [ return replicas } -// ParseTablets reads from vitess /api/ks_tablets//[shard] and returns a +// ParseTablets reads from vitess /api/keyspace//tablets/[shard] and returns a // listing (mysql_hostname, mysql_port, type) of REPLICA tablets func ParseTablets(settings config.VitessConfigurationSettings) (tablets []Tablet, err error) { if settings.TimeoutSecs == 0 { @@ -90,13 +90,16 @@ func ParseTablets(settings config.VitessConfigurationSettings) (tablets []Tablet if err != nil { return tablets, err } - defer resp.Body.Close() + + if resp.StatusCode != http.StatusOK { + return tablets, fmt.Errorf("%v", resp.Status) + } + body, err := ioutil.ReadAll(resp.Body) if err != nil { return tablets, err } - err = json.Unmarshal(body, &tablets) return filterReplicaTablets(settings, tablets), err } diff --git a/pkg/vitess/api_client_test.go b/pkg/vitess/api_client_test.go index fcf84720..6ea8905f 100644 --- a/pkg/vitess/api_client_test.go +++ b/pkg/vitess/api_client_test.go @@ -56,7 +56,6 @@ func TestParseTablets(t *testing.T) { fmt.Fprint(w, string(data)) default: w.WriteHeader(http.StatusNotFound) - fmt.Fprint(w, "[]") } })) defer vitessApi.Close() @@ -125,11 +124,11 @@ func TestParseTablets(t *testing.T) { Keyspace: "not-found", Shard: "40-80", }) - if err != nil { - t.Fatalf("Expected no error, got %q", err) + if err == nil || err.Error() != "404 Not Found" { + t.Fatalf("Expected %q error, got %q", "404 Not Found", err) } - if len(tablets) > 0 { + if len(tablets) != 0 { t.Fatalf("Expected 0 tablets, got %d", len(tablets)) }