Skip to content

Commit 0ca99ca

Browse files
committed
Don’t attempt to read the response body of redirects, as it appears to bonk
1 parent a946cae commit 0ca99ca

File tree

1 file changed

+23
-18
lines changed

1 file changed

+23
-18
lines changed

lambda/lambda.go

Lines changed: 23 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,8 @@ func fetch(loadTestStartTime time.Time, client *http.Client, address string, req
214214
buf := []byte(" ")
215215
timedOut := false
216216
connectionError := false
217-
if err != nil && !strings.Contains(err.Error(), "redirect") {
217+
isRedirect := err != nil && strings.Contains(err.Error(), "redirect")
218+
if err != nil && !isRedirect {
218219
status = fmt.Sprintf("ERROR: %s\n", err)
219220
switch err := err.(type) {
220221
case *url.Error:
@@ -233,24 +234,28 @@ func fetch(loadTestStartTime time.Time, client *http.Client, address string, req
233234
} else {
234235
statusCode = response.StatusCode
235236
elapsedFirstByte = time.Since(start)
236-
_, err = response.Body.Read(buf)
237-
firstByteRead := true
238-
if err != nil {
239-
status = fmt.Sprintf("reading first byte failed: %s\n", err)
240-
firstByteRead = false
241-
}
242-
body, err := ioutil.ReadAll(response.Body)
243-
response.Body.Close()
244-
if firstByteRead {
245-
bytesRead = len(body) + 1
246-
}
247-
elapsedLastByte = time.Since(start)
248-
if err != nil {
249-
// todo: detect timeout here as well
250-
status = fmt.Sprintf("reading response body failed: %s\n", err)
251-
connectionError = true
237+
if !isRedirect {
238+
_, err = response.Body.Read(buf)
239+
firstByteRead := true
240+
if err != nil {
241+
status = fmt.Sprintf("reading first byte failed: %s\n", err)
242+
firstByteRead = false
243+
}
244+
body, err := ioutil.ReadAll(response.Body)
245+
response.Body.Close()
246+
if firstByteRead {
247+
bytesRead = len(body) + 1
248+
}
249+
elapsedLastByte = time.Since(start)
250+
if err != nil {
251+
// todo: detect timeout here as well
252+
status = fmt.Sprintf("reading response body failed: %s\n", err)
253+
connectionError = true
254+
} else {
255+
status = "Success"
256+
}
252257
} else {
253-
status = "Success"
258+
status = "Redirect"
254259
}
255260
elapsed = time.Since(start)
256261
}

0 commit comments

Comments
 (0)