Skip to content

Commit

Permalink
Fix regression /run/buildkit is inaccessible for socket user
Browse files Browse the repository at this point in the history
Fix issue 4618 (regression in v0.13.0-beta1)

Signed-off-by: Akihiro Suda <[email protected]>
  • Loading branch information
AkihiroSuda committed Feb 3, 2024
1 parent b09a9f1 commit 29292e6
Showing 1 changed file with 16 additions and 6 deletions.
22 changes: 16 additions & 6 deletions cmd/buildkitd/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -316,6 +316,13 @@ func main() {
os.RemoveAll(lockPath)
}()

// listeners have to be initialized before the controller
// https://github.com/moby/buildkit/issues/4618
listeners, err := newGRPCListeners(cfg.GRPC)
if err != nil {
return err
}

controller, err := newController(c, &cfg)
if err != nil {
return err
Expand Down Expand Up @@ -347,7 +354,7 @@ func main() {
}

errCh := make(chan error, 1)
if err := serveGRPC(cfg.GRPC, server, errCh); err != nil {
if err := serveGRPC(server, listeners, errCh); err != nil {
return err
}

Expand Down Expand Up @@ -381,32 +388,35 @@ func main() {
}
}

func serveGRPC(cfg config.GRPCConfig, server *grpc.Server, errCh chan error) error {
func newGRPCListeners(cfg config.GRPCConfig) ([]net.Listener, error) {
addrs := cfg.Address
if len(addrs) == 0 {
return errors.New("--addr cannot be empty")
return nil, errors.New("--addr cannot be empty")
}
tlsConfig, err := serverCredentials(cfg.TLS)
if err != nil {
return err
return nil, err
}
eg, _ := errgroup.WithContext(context.Background())
listeners := make([]net.Listener, 0, len(addrs))
for _, addr := range addrs {
l, err := getListener(addr, *cfg.UID, *cfg.GID, tlsConfig)
if err != nil {
for _, l := range listeners {
l.Close()
}
return err
return listeners, err
}
listeners = append(listeners, l)
}
return listeners, nil
}

func serveGRPC(server *grpc.Server, listeners []net.Listener, errCh chan error) error {
if os.Getenv("NOTIFY_SOCKET") != "" {
notified, notifyErr := sddaemon.SdNotify(false, sddaemon.SdNotifyReady)
bklog.L.Debugf("SdNotifyReady notified=%v, err=%v", notified, notifyErr)
}
eg, _ := errgroup.WithContext(context.Background())
for _, l := range listeners {
func(l net.Listener) {
eg.Go(func() error {
Expand Down

0 comments on commit 29292e6

Please sign in to comment.