-
Notifications
You must be signed in to change notification settings - Fork 35
Description
This is the tail end of a AWS Lambda log for a small Node.js function execution. It shows a panic in the extension:
...
2022-02-23T23:00:11.485000+00:00 2022/02/23/[$LATEST]743a0f5ca5744087a061a92d7cb56e5e {"log.level":"trace","@timestamp":"2022-02-23T23:00:11.485Z","log":{"logger":"elastic-apm-node"},"event.module":"apmclient","reqId":"e3f64a016331cdefab5ad1fe46b854d2","timeline":[[219.337168,"completePart gzipStream",null],[219.811828,"completePart intakeReq",null],[357.343887,"completePart intakeRes",null]],"bytesWritten":800,"backoffDelayMs":0,"ecs":{"version":"1.6.0"},"message":"conclude intake request: success"}
2022-02-23T23:00:11.507000+00:00 2022/02/23/[$LATEST]743a0f5ca5744087a061a92d7cb56e5e 2022-02-23T23:00:11.485Z e3918d8f-7391-4bea-a6e2-9fdefc4c9037 INFO XXX onFlushed in _writeFlush called
2022-02-23T23:00:11.524000+00:00 2022/02/23/[$LATEST]743a0f5ca5744087a061a92d7cb56e5e 2022-02-23T23:00:11.524Z e3918d8f-7391-4bea-a6e2-9fdefc4c9037 INFO XXX _signalLambdaEnd start
2022-02-23T23:00:11.526000+00:00 2022/02/23/[$LATEST]743a0f5ca5744087a061a92d7cb56e5e {"log.level":"trace","@timestamp":"2022-02-23T23:00:11.525Z","log":{"logger":"elastic-apm-node"},"awsRequestId":"e3918d8f-7391-4bea-a6e2-9fdefc4c9037","ecs":{"version":"1.6.0"},"message":"lambda: flushed"}
2022-02-23T23:00:11.565000+00:00 2022/02/23/[$LATEST]743a0f5ca5744087a061a92d7cb56e5e 2022/02/23 23:00:11 Received agent done signal
2022-02-23T23:00:11.566000+00:00 2022/02/23/[$LATEST]743a0f5ca5744087a061a92d7cb56e5e {"log.level":"trace","@timestamp":"2022-02-23T23:00:11.566Z","log":{"logger":"elastic-apm-node"},"event.module":"apmclient","durationMs":41.77897899993695,"ecs":{"version":"1.6.0"},"message":"signaled lambda invocation done"}
2022-02-23T23:00:11.585000+00:00 2022/02/23/[$LATEST]743a0f5ca5744087a061a92d7cb56e5e 2022/02/23 23:00:11 Received log event platform.runtimeDone
2022-02-23T23:00:11.585000+00:00 2022/02/23/[$LATEST]743a0f5ca5744087a061a92d7cb56e5e 2022/02/23 23:00:11 Received runtimeDone event for this function invocation
2022-02-23T23:00:11.764000+00:00 2022/02/23/[$LATEST]743a0f5ca5744087a061a92d7cb56e5e 2022/02/23 23:00:11 APM server response body:
2022-02-23T23:00:11.764000+00:00 2022/02/23/[$LATEST]743a0f5ca5744087a061a92d7cb56e5e 2022/02/23 23:00:11 APM server response status code: 202
2022-02-23T23:00:11.764000+00:00 2022/02/23/[$LATEST]743a0f5ca5744087a061a92d7cb56e5e 2022/02/23 23:00:11 Checking for agent data
2022-02-23T23:00:11.764000+00:00 2022/02/23/[$LATEST]743a0f5ca5744087a061a92d7cb56e5e 2022/02/23 23:00:11 No agent data on buffer
2022-02-23T23:00:11.764000+00:00 2022/02/23/[$LATEST]743a0f5ca5744087a061a92d7cb56e5e 2022/02/23 23:00:11 Waiting for next event...
2022-02-23T23:00:11.765000+00:00 2022/02/23/[$LATEST]743a0f5ca5744087a061a92d7cb56e5e 2022/02/23 23:00:11 funcDone signal received, not processing any more agent data
2022-02-23T23:00:11.766000+00:00 2022/02/23/[$LATEST]743a0f5ca5744087a061a92d7cb56e5e {"log.level":"debug","@timestamp":"2022-02-23T23:00:11.766Z","log":{"logger":"elastic-apm-node"},"event.module":"apmclient","apmServerVersion":"7.15.0","ecs":{"version":"1.6.0"},"message":"fetched APM Server version"}
2022-02-23T23:00:11.768000+00:00 2022/02/23/[$LATEST]743a0f5ca5744087a061a92d7cb56e5e panic: send on closed channel
2022-02-23T23:00:11.768000+00:00 2022/02/23/[$LATEST]743a0f5ca5744087a061a92d7cb56e5e
2022-02-23T23:00:11.768000+00:00 2022/02/23/[$LATEST]743a0f5ca5744087a061a92d7cb56e5e goroutine 36 [running]:
2022-02-23T23:00:11.768000+00:00 2022/02/23/[$LATEST]743a0f5ca5744087a061a92d7cb56e5e main.main.func3()
2022-02-23T23:00:11.768000+00:00 2022/02/23/[$LATEST]743a0f5ca5744087a061a92d7cb56e5e /var/lib/jenkins/workspace/ibrary_apm-aws-lambda-mbp_PR-120/src/github.com/elastic/apm-aws-lambda/apm-lambda-extension/main.go:170 +0x209
2022-02-23T23:00:11.768000+00:00 2022/02/23/[$LATEST]743a0f5ca5744087a061a92d7cb56e5e created by main.main
2022-02-23T23:00:11.768000+00:00 2022/02/23/[$LATEST]743a0f5ca5744087a061a92d7cb56e5e /var/lib/jenkins/workspace/ibrary_apm-aws-lambda-mbp_PR-120/src/github.com/elastic/apm-aws-lambda/apm-lambda-extension/main.go:157 +0x6af
2022-02-23T23:00:11.827000+00:00 2022/02/23/[$LATEST]743a0f5ca5744087a061a92d7cb56e5e END RequestId: e3918d8f-7391-4bea-a6e2-9fdefc4c9037
2022-02-23T23:00:11.827000+00:00 2022/02/23/[$LATEST]743a0f5ca5744087a061a92d7cb56e5e REPORT RequestId: e3918d8f-7391-4bea-a6e2-9fdefc4c9037 Duration: 1141.18 ms Billed Duration: 1142 ms Memory Size: 128 MB Max Memory Used: 98 MB Init Duration: 654.65 ms
2022-02-23T23:00:11.827000+00:00 2022/02/23/[$LATEST]743a0f5ca5744087a061a92d7cb56e5e RequestId: e3918d8f-7391-4bea-a6e2-9fdefc4c9037 Error: exit status 2
Extension.Crash
This is running extension version "arn:aws:lambda:us-west-2:267093732750:layer:elastic-apm-extension-ver0-0-3-x86_64:3" and an in-development APM Node.js agent that has support for the ?flushed=true
request to signal the function is complete.
This panic does not happen everytime. I think it is a timing issue.
The main.go:170
stacktrace reference is to https://github.com/elastic/apm-aws-lambda/blob/v0.0.3/apm-lambda-extension/main.go#L170
runtimeDoneSignal <- struct{}{}
The earlier Waiting for next event...
log line (from the top of the for-loop) shows that all three channels had been closed: https://github.com/elastic/apm-aws-lambda/blob/v0.0.3/apm-lambda-extension/main.go#L203-L205
close(funcDone)
close(runtimeDoneSignal)
close(extension.AgentDoneSignal)
The funcDone signal received, not processing any more agent data
log line shows that the case <-funcDone:
path was taken for the agent data select
. However there is no funcDone signal received, not processing any more log events
log line for the Logs API events select
.
My naivete with Go channels starts here.