Skip to content

Commit a14c80f

Browse files
Use the Init and Exit error signals provided by the Extension API (#145)
* Use Init and Exit error codes (incl. demo code) * Remove APM example * Increase the range of valid StatusCodes Co-authored-by: Felix Barnsteiner <[email protected]> * Remove demonstration code * Quick fix : make changes compatible with logger Co-authored-by: Felix Barnsteiner <[email protected]>
1 parent c0c3cc3 commit a14c80f

File tree

2 files changed

+18
-4
lines changed

2 files changed

+18
-4
lines changed

apm-lambda-extension/extension/client.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ func (e *Client) InitError(ctx context.Context, errorType string) (*StatusRespon
160160
}
161161
defer httpRes.Body.Close()
162162

163-
if httpRes.StatusCode != 200 {
163+
if httpRes.StatusCode > 299 {
164164
return nil, fmt.Errorf("initialization error request failed with status %s", httpRes.Status)
165165
}
166166
res := StatusResponse{}
@@ -187,7 +187,7 @@ func (e *Client) ExitError(ctx context.Context, errorType string) (*StatusRespon
187187
}
188188
defer httpRes.Body.Close()
189189

190-
if httpRes.StatusCode != 200 {
190+
if httpRes.StatusCode > 299 {
191191
return nil, fmt.Errorf("exit error request failed with status %s", httpRes.Status)
192192
}
193193
res := StatusResponse{}

apm-lambda-extension/main.go

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ var (
3939
/* --- elastic vars --- */
4040

4141
func main() {
42+
4243
ctx, cancel := context.WithCancel(context.Background())
4344

4445
// Trigger ctx.Done() in all relevant goroutines when main ends
@@ -59,7 +60,14 @@ func main() {
5960
// register extension with AWS Extension API
6061
res, err := extensionClient.Register(ctx, extensionName)
6162
if err != nil {
62-
panic(err)
63+
status, errRuntime := extensionClient.InitError(ctx, err.Error())
64+
if errRuntime != nil {
65+
panic(errRuntime)
66+
}
67+
extension.Log.Errorf("Error: %s", err)
68+
extension.Log.Infof("Init error signal sent to runtime : %s", status)
69+
extension.Log.Infof("Exiting")
70+
return
6371
}
6472
extension.Log.Debugf("Register response: %v", extension.PrettyPrint(res))
6573

@@ -105,7 +113,13 @@ func main() {
105113
extension.Log.Infof("Waiting for next event...")
106114
event, err := extensionClient.NextEvent(ctx)
107115
if err != nil {
108-
extension.Log.Errorf("Error: %v\n. Exiting.", err)
116+
status, err := extensionClient.ExitError(ctx, err.Error())
117+
if err != nil {
118+
panic(err)
119+
}
120+
extension.Log.Errorf("Error: %s", err)
121+
extension.Log.Infof("Exit signal sent to runtime : %s", status)
122+
extension.Log.Infof("Exiting")
109123
return
110124
}
111125
extension.Log.Debug("Received event.")

0 commit comments

Comments
 (0)