@@ -316,6 +316,13 @@ func main() {
316316 os .RemoveAll (lockPath )
317317 }()
318318
319+ // listeners have to be initialized before the controller
320+ // https://github.com/moby/buildkit/issues/4618
321+ listeners , err := newGRPCListeners (cfg .GRPC )
322+ if err != nil {
323+ return err
324+ }
325+
319326 controller , err := newController (c , & cfg )
320327 if err != nil {
321328 return err
@@ -347,7 +354,7 @@ func main() {
347354 }
348355
349356 errCh := make (chan error , 1 )
350- if err := serveGRPC (cfg . GRPC , server , errCh ); err != nil {
357+ if err := serveGRPC (server , listeners , errCh ); err != nil {
351358 return err
352359 }
353360
@@ -381,32 +388,35 @@ func main() {
381388 }
382389}
383390
384- func serveGRPC (cfg config.GRPCConfig , server * grpc. Server , errCh chan error ) error {
391+ func newGRPCListeners (cfg config.GRPCConfig ) ([]net. Listener , error ) {
385392 addrs := cfg .Address
386393 if len (addrs ) == 0 {
387- return errors .New ("--addr cannot be empty" )
394+ return nil , errors .New ("--addr cannot be empty" )
388395 }
389396 tlsConfig , err := serverCredentials (cfg .TLS )
390397 if err != nil {
391- return err
398+ return nil , err
392399 }
393- eg , _ := errgroup .WithContext (context .Background ())
394400 listeners := make ([]net.Listener , 0 , len (addrs ))
395401 for _ , addr := range addrs {
396402 l , err := getListener (addr , * cfg .UID , * cfg .GID , tlsConfig )
397403 if err != nil {
398404 for _ , l := range listeners {
399405 l .Close ()
400406 }
401- return err
407+ return listeners , err
402408 }
403409 listeners = append (listeners , l )
404410 }
411+ return listeners , nil
412+ }
405413
414+ func serveGRPC (server * grpc.Server , listeners []net.Listener , errCh chan error ) error {
406415 if os .Getenv ("NOTIFY_SOCKET" ) != "" {
407416 notified , notifyErr := sddaemon .SdNotify (false , sddaemon .SdNotifyReady )
408417 bklog .L .Debugf ("SdNotifyReady notified=%v, err=%v" , notified , notifyErr )
409418 }
419+ eg , _ := errgroup .WithContext (context .Background ())
410420 for _ , l := range listeners {
411421 func (l net.Listener ) {
412422 eg .Go (func () error {
0 commit comments