Skip to content

Commit db3aaa3

Browse files
authored
Merge pull request #4619 from AkihiroSuda/fix-4618
Fix regression `/run/buildkit is inaccessible for socket user`
2 parents 1057dc2 + 29292e6 commit db3aaa3

1 file changed

Lines changed: 16 additions & 6 deletions

File tree

cmd/buildkitd/main.go

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)