Browse Source

Remote write: read first line of response and include it in the error.

pull/2786/head
Tom Wilkie 8 years ago
parent
commit
46abe8cbf2
  1. 8
      storage/remote/client.go
  2. 8
      storage/remote/client_test.go

8
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}

8
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()

Loading…
Cancel
Save