diff --git a/storage/remote/client.go b/storage/remote/client.go index 483037291..a98d5876f 100644 --- a/storage/remote/client.go +++ b/storage/remote/client.go @@ -14,6 +14,7 @@ package remote import ( + "bufio" "bytes" "fmt" "io/ioutil" @@ -117,7 +118,12 @@ func (c *Client) Store(samples model.Samples) error { defer httpResp.Body.Close() if httpResp.StatusCode/100 != 2 { - err = fmt.Errorf("server returned HTTP status %s", httpResp.Status) + scanner := bufio.NewScanner(httpResp.Body) + line := "" + if scanner.Scan() { + line = scanner.Text() + } + err = fmt.Errorf("server returned HTTP status %s: %s", httpResp.Status, line) } if httpResp.StatusCode/100 == 5 { return recoverableError{err} diff --git a/storage/remote/client_test.go b/storage/remote/client_test.go index 6f3645b39..9f0980b35 100644 --- a/storage/remote/client_test.go +++ b/storage/remote/client_test.go @@ -37,15 +37,15 @@ func TestStoreHTTPErrorHandling(t *testing.T) { }, { code: 300, - err: fmt.Errorf("server returned HTTP status 300 Multiple Choices"), + err: fmt.Errorf("server returned HTTP status 300 Multiple Choices: test error"), }, { code: 404, - err: fmt.Errorf("server returned HTTP status 404 Not Found"), + err: fmt.Errorf("server returned HTTP status 404 Not Found: test error"), }, { code: 500, - err: recoverableError{fmt.Errorf("server returned HTTP status 500 Internal Server Error")}, + err: recoverableError{fmt.Errorf("server returned HTTP status 500 Internal Server Error: test error")}, }, } @@ -68,7 +68,7 @@ func TestStoreHTTPErrorHandling(t *testing.T) { err = c.Store(nil) if !reflect.DeepEqual(err, test.err) { - t.Fatalf("%d. Unexpected error; want %v, got %v", i, test.err, err) + t.Errorf("%d. Unexpected error; want %v, got %v", i, test.err, err) } server.Close()