File tree 2 files changed +11
-5
lines changed
2 files changed +11
-5
lines changed Original file line number Diff line number Diff line change @@ -17,6 +17,7 @@ import (
17
17
"bufio"
18
18
"bytes"
19
19
"fmt"
20
+ "io"
20
21
"io/ioutil"
21
22
"net/http"
22
23
"time"
@@ -32,6 +33,8 @@ import (
32
33
"github.com/prometheus/prometheus/util/httputil"
33
34
)
34
35
36
+ const maxErrMsgLen = 256
37
+
35
38
// Client allows reading and writing from/to a remote HTTP endpoint.
36
39
type Client struct {
37
40
index int // Used to differentiate metrics.
@@ -118,7 +121,7 @@ func (c *Client) Store(samples model.Samples) error {
118
121
defer httpResp .Body .Close ()
119
122
120
123
if httpResp .StatusCode / 100 != 2 {
121
- scanner := bufio .NewScanner (httpResp .Body )
124
+ scanner := bufio .NewScanner (io . LimitReader ( httpResp .Body , maxErrMsgLen ) )
122
125
line := ""
123
126
if scanner .Scan () {
124
127
line = scanner .Text ()
Original file line number Diff line number Diff line change @@ -19,13 +19,16 @@ import (
19
19
"net/http/httptest"
20
20
"net/url"
21
21
"reflect"
22
+ "strings"
22
23
"testing"
23
24
"time"
24
25
25
26
"github.com/prometheus/common/model"
26
27
"github.com/prometheus/prometheus/config"
27
28
)
28
29
30
+ var longErrMessage = strings .Repeat ("error message" , maxErrMsgLen )
31
+
29
32
func TestStoreHTTPErrorHandling (t * testing.T ) {
30
33
tests := []struct {
31
34
code int
@@ -37,22 +40,22 @@ func TestStoreHTTPErrorHandling(t *testing.T) {
37
40
},
38
41
{
39
42
code : 300 ,
40
- err : fmt .Errorf ("server returned HTTP status 300 Multiple Choices: test error" ),
43
+ err : fmt .Errorf ("server returned HTTP status 300 Multiple Choices: " + longErrMessage [: maxErrMsgLen ] ),
41
44
},
42
45
{
43
46
code : 404 ,
44
- err : fmt .Errorf ("server returned HTTP status 404 Not Found: test error" ),
47
+ err : fmt .Errorf ("server returned HTTP status 404 Not Found: " + longErrMessage [: maxErrMsgLen ] ),
45
48
},
46
49
{
47
50
code : 500 ,
48
- err : recoverableError {fmt .Errorf ("server returned HTTP status 500 Internal Server Error: test error" )},
51
+ err : recoverableError {fmt .Errorf ("server returned HTTP status 500 Internal Server Error: " + longErrMessage [: maxErrMsgLen ] )},
49
52
},
50
53
}
51
54
52
55
for i , test := range tests {
53
56
server := httptest .NewServer (
54
57
http .HandlerFunc (func (w http.ResponseWriter , r * http.Request ) {
55
- http .Error (w , "test error" , test .code )
58
+ http .Error (w , longErrMessage , test .code )
56
59
}),
57
60
)
58
61
You can’t perform that action at this time.
0 commit comments