@@ -5,12 +5,14 @@ import (
55 "errors"
66 "flag"
77 "fmt"
8+ "github.com/e2b-dev/infra/packages/orchestrator/internal/proxy"
89 "log"
910 "os"
1011 "os/signal"
1112 "sync"
1213 "sync/atomic"
1314 "syscall"
15+ "time"
1416
1517 "go.uber.org/zap"
1618 "go.uber.org/zap/zapcore"
@@ -24,8 +26,9 @@ import (
2426)
2527
2628const (
27- defaultPort = 5008
28- ServiceName = "orchestrator"
29+ defaultPort = 5008
30+ defaultProxyPort = 5007
31+ ServiceName = "orchestrator"
2932)
3033
3134var commitSHA string
@@ -38,8 +41,10 @@ func main() {
3841 defer sigCancel ()
3942
4043 var port uint
41-
4244 flag .UintVar (& port , "port" , defaultPort , "orchestrator server port" )
45+
46+ var proxyPort uint
47+ flag .UintVar (& proxyPort , "proxy-port" , defaultProxyPort , "orchestrator proxy port" )
4348 flag .Parse ()
4449
4550 wg := & sync.WaitGroup {}
@@ -97,8 +102,9 @@ func main() {
97102 log .Println ("Starting orchestrator" , "commit" , commitSHA )
98103
99104 clientID := consul .GetClientID ()
105+ sessionProxy := proxy .New (proxyPort )
100106
101- srv , err := server .New (ctx , port , clientID )
107+ srv , err := server .New (ctx , port , clientID , sessionProxy )
102108 if err != nil {
103109 zap .L ().Fatal ("failed to create server" , zap .Error (err ))
104110 }
@@ -149,6 +155,32 @@ func main() {
149155 }
150156 }()
151157
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+
152184 wg .Wait ()
153185
154186 os .Exit (int (exitCode .Load ()))
0 commit comments