@@ -5,12 +5,14 @@ import (
5
5
"errors"
6
6
"flag"
7
7
"fmt"
8
+ "github.com/e2b-dev/infra/packages/orchestrator/internal/proxy"
8
9
"log"
9
10
"os"
10
11
"os/signal"
11
12
"sync"
12
13
"sync/atomic"
13
14
"syscall"
15
+ "time"
14
16
15
17
"go.uber.org/zap"
16
18
"go.uber.org/zap/zapcore"
@@ -24,8 +26,9 @@ import (
24
26
)
25
27
26
28
const (
27
- defaultPort = 5008
28
- ServiceName = "orchestrator"
29
+ defaultPort = 5008
30
+ defaultProxyPort = 5007
31
+ ServiceName = "orchestrator"
29
32
)
30
33
31
34
var commitSHA string
@@ -38,8 +41,10 @@ func main() {
38
41
defer sigCancel ()
39
42
40
43
var port uint
41
-
42
44
flag .UintVar (& port , "port" , defaultPort , "orchestrator server port" )
45
+
46
+ var proxyPort uint
47
+ flag .UintVar (& proxyPort , "proxy-port" , defaultProxyPort , "orchestrator proxy port" )
43
48
flag .Parse ()
44
49
45
50
wg := & sync.WaitGroup {}
@@ -97,8 +102,9 @@ func main() {
97
102
log .Println ("Starting orchestrator" , "commit" , commitSHA )
98
103
99
104
clientID := consul .GetClientID ()
105
+ sessionProxy := proxy .New (proxyPort )
100
106
101
- srv , err := server .New (ctx , port , clientID )
107
+ srv , err := server .New (ctx , port , clientID , sessionProxy )
102
108
if err != nil {
103
109
zap .L ().Fatal ("failed to create server" , zap .Error (err ))
104
110
}
@@ -149,6 +155,32 @@ func main() {
149
155
}
150
156
}()
151
157
158
+ wg .Add (1 )
159
+ go func () {
160
+ defer wg .Done ()
161
+
162
+ errChan := make (chan error , 1 )
163
+ go func () {
164
+ err := sessionProxy .Start ()
165
+ errChan <- err
166
+ }()
167
+
168
+ select {
169
+ case <- ctx .Done ():
170
+ case <- errChan :
171
+ if err != nil {
172
+ zap .L ().Error ("session proxy failed" , zap .Error (err ))
173
+ exitCode .Add (1 )
174
+ cancel ()
175
+ }
176
+ }
177
+
178
+ // close session proxy, wait 5 seconds until all connections are closed
179
+ shutdownCtx , shutdownCtxCancel := context .WithTimeout (context .Background (), 5 * time .Second )
180
+ defer shutdownCtxCancel ()
181
+ defer sessionProxy .Shutdown (shutdownCtx )
182
+ }()
183
+
152
184
wg .Wait ()
153
185
154
186
os .Exit (int (exitCode .Load ()))
0 commit comments