File tree Expand file tree Collapse file tree 2 files changed +19
-31
lines changed Expand file tree Collapse file tree 2 files changed +19
-31
lines changed Original file line number Diff line number Diff line change 6
6
"errors"
7
7
"fmt"
8
8
"net/http"
9
- "time"
10
9
11
10
"github.com/aws/aws-sdk-go/aws"
12
11
"github.com/localstack/lambda-runtime-init/internal/localstack"
@@ -32,35 +31,6 @@ func NewInteropServer(ls *localstack.LocalStackClient) *LocalStackInteropsServer
32
31
}
33
32
}
34
33
35
- func (c * LocalStackInteropsServer ) Init (initRequest * interop.Init , timeoutMs int64 ) error {
36
- // This allows us to properly timeout when an INIT request -- which is unimplemented in the upstream.
37
-
38
- initStart := metering .Monotime ()
39
-
40
- initDone := make (chan error , 1 )
41
- go func () {
42
- initDone <- c .Server .Init (initRequest , timeoutMs )
43
- }()
44
-
45
- var err error
46
- select {
47
- case err = <- initDone :
48
- case <- time .After (time .Duration (timeoutMs ) * time .Millisecond ):
49
- if _ , resetErr := c .Server .Reset ("timeout" , 2000 ); resetErr != nil {
50
- log .WithError (resetErr ).Error ("Failed to reset after init timeout" )
51
- }
52
- err = errors .New ("timeout" )
53
- }
54
-
55
- initDuration := float64 (metering .Monotime ()- initStart ) / float64 (time .Millisecond )
56
-
57
- if err != nil {
58
- log .WithError (err ).WithField ("duration" , initDuration ).Error ("Init failed" )
59
- }
60
-
61
- return err
62
- }
63
-
64
34
func (c * LocalStackInteropsServer ) Execute (ctx context.Context , responseWriter http.ResponseWriter , invoke * interop.Invoke ) error {
65
35
ctx , cancel := context .WithTimeout (context .Background (), c .Server .GetInvokeTimeout ())
66
36
defer cancel ()
Original file line number Diff line number Diff line change 4
4
"context"
5
5
"encoding/base64"
6
6
"encoding/json"
7
+ "errors"
7
8
"fmt"
8
9
"math"
9
10
"os"
@@ -24,6 +25,8 @@ import (
24
25
"go.amzn.com/lambda/rapidcore/env"
25
26
)
26
27
28
+ var errTimeout = errors .New ("timeout" )
29
+
27
30
type LocalStackService struct {
28
31
sandbox * LocalStackInteropsServer
29
32
adapter * localstack.LocalStackClient
@@ -129,7 +132,22 @@ func (ls *LocalStackService) Initialize(bs interop.Bootstrap) error {
129
132
}
130
133
131
134
initStart := metering .Monotime ()
132
- err = ls .sandbox .Init (initRequest , initRequest .InitTimeoutMs )
135
+
136
+ initDone := make (chan error , 1 )
137
+ go func () {
138
+ initDone <- ls .sandbox .Init (initRequest , initRequest .InvokeTimeoutMs )
139
+ }()
140
+
141
+ select {
142
+ case err = <- initDone :
143
+ case <- time .After (initTimeout ):
144
+ _ , resetFailure := ls .sandbox .Reset ("timeout" , 2000 )
145
+ if resetFailure != nil {
146
+ log .WithError (resetFailure ).Error ("Failed to reset after init timeout" )
147
+ }
148
+ err = errTimeout
149
+ }
150
+
133
151
ls .initDuration = float64 (metering .Monotime ()- initStart ) / float64 (time .Millisecond )
134
152
135
153
if err != nil {
You can’t perform that action at this time.
0 commit comments