in lambda/invoke_loop.go [39:67]
func handleInvoke(invoke *invoke, function *Function) error {
functionRequest, err := convertInvokeRequest(invoke)
if err != nil {
return fmt.Errorf("unexpected error occurred when parsing the invoke: %v", err)
}
functionResponse := &messages.InvokeResponse{}
if err := function.Invoke(functionRequest, functionResponse); err != nil {
return fmt.Errorf("unexpected error occurred when invoking the handler: %v", err)
}
if functionResponse.Error != nil {
errorPayload := safeMarshal(functionResponse.Error)
log.Printf("%s", errorPayload)
if err := invoke.failure(errorPayload, contentTypeJSON); err != nil {
return fmt.Errorf("unexpected error occurred when sending the function error to the API: %v", err)
}
if functionResponse.Error.ShouldExit {
return fmt.Errorf("calling the handler function resulted in a panic, the process should exit")
}
return nil
}
if err := invoke.success(functionResponse.Payload, contentTypeJSON); err != nil {
return fmt.Errorf("unexpected error occurred when sending the function functionResponse to the API: %v", err)
}
return nil
}