Skip to content

Commit 8c18e35

Browse files
committed
refactor: centralize invoke report timing
1 parent fe7881b commit 8c18e35

2 files changed

Lines changed: 14 additions & 14 deletions

File tree

internal/lambda/rie/handlers.go

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,16 @@ func formatInitDuration(initStart time.Time, initEnd time.Time, timeoutDuration
101101
float64(timeoutDuration.Nanoseconds())) / float64(time.Millisecond)
102102
return fmt.Sprintf("Init Duration: %.2f ms\t", initTimeMS)
103103
}
104+
105+
func printInvokeReport(sandbox Sandbox, invokeID string, initStart time.Time, invokeStart time.Time, memorySize string, timeoutDuration time.Duration) {
106+
initEnd := sandbox.AwaitInitCompletion()
107+
initDuration := formatInitDuration(initStart, initEnd, timeoutDuration)
108+
if !initStart.IsZero() && initEnd.After(invokeStart) {
109+
invokeStart = initEnd
110+
}
111+
printEndReports(invokeID, initDuration, memorySize, invokeStart, timeoutDuration)
112+
}
113+
104114
func InvokeHandler(w http.ResponseWriter, r *http.Request, sandbox Sandbox, bs interop.Bootstrap) {
105115
log.Debugf("invoke: -> %s %s %v", r.Method, r.URL, r.Header)
106116
bodyBytes, err := ioutil.ReadAll(r.Body)
@@ -211,12 +221,7 @@ func InvokeHandler(w http.ResponseWriter, r *http.Request, sandbox Sandbox, bs i
211221
w.WriteHeader(http.StatusGatewayTimeout)
212222
return
213223
case rapidcore.ErrInvokeTimeout:
214-
initEnd := sandbox.AwaitInitCompletion()
215-
initDuration := formatInitDuration(initStart, initEnd, timeoutDuration)
216-
if !initStart.IsZero() && initEnd.After(invokeStart) {
217-
invokeStart = initEnd
218-
}
219-
printEndReports(invokePayload.ID, initDuration, memorySize, invokeStart, timeoutDuration)
224+
printInvokeReport(sandbox, invokePayload.ID, initStart, invokeStart, memorySize, timeoutDuration)
220225

221226
w.Write([]byte(fmt.Sprintf("Task timed out after %d.00 seconds", timeout)))
222227
time.Sleep(100 * time.Millisecond)
@@ -225,12 +230,7 @@ func InvokeHandler(w http.ResponseWriter, r *http.Request, sandbox Sandbox, bs i
225230
}
226231
}
227232

228-
initEnd := sandbox.AwaitInitCompletion()
229-
initDuration := formatInitDuration(initStart, initEnd, timeoutDuration)
230-
if !initStart.IsZero() && initEnd.After(invokeStart) {
231-
invokeStart = initEnd
232-
}
233-
printEndReports(invokePayload.ID, initDuration, memorySize, invokeStart, timeoutDuration)
233+
printInvokeReport(sandbox, invokePayload.ID, initStart, invokeStart, memorySize, timeoutDuration)
234234

235235
if invokeResp.StatusCode != 0 {
236236
w.WriteHeader(invokeResp.StatusCode)

internal/lambda/rie/handlers_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ func TestInvokeHandlerReportsInitDurationWhenInitTimesOut(t *testing.T) {
159159
require.Len(t, matches, 2)
160160
durationMilliseconds, err := strconv.ParseFloat(matches[1], 64)
161161
require.NoError(t, err)
162-
require.Less(t, durationMilliseconds, float64(40))
162+
require.Less(t, durationMilliseconds, initDurationMilliseconds)
163163
require.LessOrEqual(t, initDurationMilliseconds+durationMilliseconds, float64(1020))
164164
}
165165

@@ -206,7 +206,7 @@ func TestInvokeHandlerSeparatesInitFromTimedOutInvocation(t *testing.T) {
206206
durationMilliseconds, err := strconv.ParseFloat(durationMatches[1], 64)
207207
require.NoError(t, err)
208208
require.GreaterOrEqual(t, durationMilliseconds, float64(40))
209-
require.Less(t, durationMilliseconds, float64(90))
209+
require.Less(t, durationMilliseconds, initDurationMilliseconds*1.5)
210210
require.LessOrEqual(t, initDurationMilliseconds+durationMilliseconds, float64(1020))
211211
}
212212

0 commit comments

Comments
 (0)