Skip to content

Commit 9df4e76

Browse files
committed
Handling panic case
1 parent 39700b5 commit 9df4e76

File tree

3 files changed

+16
-7
lines changed

3 files changed

+16
-7
lines changed

internal/wrapper/wrap_handler.go

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ import (
1313
"encoding/json"
1414
"errors"
1515
"fmt"
16-
1716
"github.com/DataDog/datadog-lambda-go/internal/extension"
1817
"github.com/DataDog/datadog-lambda-go/internal/logger"
1918
"github.com/aws/aws-lambda-go/lambda"
@@ -134,6 +133,16 @@ func validateHandler(handler interface{}) error {
134133
}
135134

136135
func callHandler(ctx context.Context, msg json.RawMessage, handler interface{}) (interface{}, error) {
136+
var response interface{}
137+
var errResponse error
138+
defer func() {
139+
if r := recover(); r != nil {
140+
fmt.Println(r)
141+
response = nil
142+
errResponse = fmt.Errorf("recovered from: %v", r)
143+
}
144+
}()
145+
137146
ev, err := unmarshalEventForHandler(msg, handler)
138147
if err != nil {
139148
return nil, err
@@ -160,9 +169,6 @@ func callHandler(ctx context.Context, msg json.RawMessage, handler interface{})
160169
handlerValue := reflect.ValueOf(handler)
161170
output := handlerValue.Call(args)
162171

163-
var response interface{}
164-
var errResponse error
165-
166172
if len(output) > 0 {
167173
// If there are any output values, the last should always be an error
168174
val := output[len(output)-1].Interface()

tests/integration_tests/hello/go.mod

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,11 @@ toolchain go1.21.5
77
require (
88
github.com/DataDog/datadog-lambda-go v1.14.0
99
github.com/aws/aws-lambda-go v1.46.0
10-
gopkg.in/DataDog/dd-trace-go.v1 v1.60.0
10+
gopkg.in/DataDog/dd-trace-go.v1 v1.60.3
1111
)
1212

1313
require (
14-
github.com/DataDog/appsec-internal-go v1.4.0 // indirect
14+
github.com/DataDog/appsec-internal-go v1.4.1 // indirect
1515
github.com/DataDog/datadog-agent/pkg/obfuscate v0.50.2 // indirect
1616
github.com/DataDog/datadog-agent/pkg/remoteconfig/state v0.50.2 // indirect
1717
github.com/DataDog/datadog-go/v5 v5.5.0 // indirect
@@ -67,7 +67,7 @@ require (
6767
golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 // indirect
6868
google.golang.org/genproto/googleapis/rpc v0.0.0-20240125205218-1f4bbc51befe // indirect
6969
google.golang.org/grpc v1.61.0 // indirect
70-
google.golang.org/protobuf v1.32.0 // indirect
70+
google.golang.org/protobuf v1.33.0 // indirect
7171
inet.af/netaddr v0.0.0-20230525184311-b8eac61e914a // indirect
7272
)
7373

tests/integration_tests/hello/go.sum

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ github.com/DataDog/appsec-internal-go v1.0.2 h1:Z+YWPlkQN+324zIk+BzKlPA1/6guKgGm
33
github.com/DataDog/appsec-internal-go v1.0.2/go.mod h1:+Y+4klVWKPOnZx6XESG7QHydOaUGEXyH2j/vSg9JiNM=
44
github.com/DataDog/appsec-internal-go v1.4.0 h1:KFI8ElxkJOgpw+cUm9TXK/jh5EZvRaWM07sXlxGg9Ck=
55
github.com/DataDog/appsec-internal-go v1.4.0/go.mod h1:ONW8aV6R7Thgb4g0bB9ZQCm+oRgyz5eWiW7XoQ19wIc=
6+
github.com/DataDog/appsec-internal-go v1.4.1/go.mod h1:rmZ+tpq5ZPKmeOUMYjWFg+q1mRd13mxZwSLBG+xa1ik=
67
github.com/DataDog/datadog-agent/pkg/obfuscate v0.48.0 h1:bUMSNsw1iofWiju9yc1f+kBd33E3hMJtq9GuU602Iy8=
78
github.com/DataDog/datadog-agent/pkg/obfuscate v0.48.0/go.mod h1:HzySONXnAgSmIQfL6gOv9hWprKJkx8CicuXuUbmgWfo=
89
github.com/DataDog/datadog-agent/pkg/obfuscate v0.50.2 h1:y08IzbpFM/HBaKfgayFZe1FpcbZn6bVPXoZ++93vxv8=
@@ -316,10 +317,12 @@ google.golang.org/protobuf v1.30.0 h1:kPPoIgf3TsEvrm0PFe15JQ+570QVxYzEvvHqChK+cn
316317
google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
317318
google.golang.org/protobuf v1.32.0 h1:pPC6BG5ex8PDFnkbrGU3EixyhKcQ2aDuBS36lqK/C7I=
318319
google.golang.org/protobuf v1.32.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
320+
google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
319321
gopkg.in/DataDog/dd-trace-go.v1 v1.58.0 h1:ixIUarsu0RrOt7xfdrE5YSFvjgaWsP3cC3G342jTIuw=
320322
gopkg.in/DataDog/dd-trace-go.v1 v1.58.0/go.mod h1:SmnEjjV9ZQr4MWRSUYEpoPyNtmtRK5J6UuJdAma+Yxw=
321323
gopkg.in/DataDog/dd-trace-go.v1 v1.60.0 h1:hjDiU6PWRgMoUeSJkXdtimUP76cFzREPIGIIQJD0mYU=
322324
gopkg.in/DataDog/dd-trace-go.v1 v1.60.0/go.mod h1:6aArYrAHjnuaofJ3lKuSRQbhrBx1LcSpiEYCIScJE5Y=
325+
gopkg.in/DataDog/dd-trace-go.v1 v1.60.3/go.mod h1:XF/Y0lFGnmgedNXnltCm6hXkt9iwyeVVVFbKhJvVwtY=
323326
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
324327
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
325328
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=

0 commit comments

Comments
 (0)