mirror of
				https://gitea.com/Lydanne/buildx.git
				synced 2025-11-04 10:03:42 +08:00 
			
		
		
		
	lint: enable forbidigo context rules
Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
This commit is contained in:
		@@ -109,7 +109,7 @@ func (b *localController) Invoke(ctx context.Context, sessionID string, pid stri
 | 
			
		||||
 | 
			
		||||
	// Attach containerIn to this process
 | 
			
		||||
	ioCancelledCh := make(chan struct{})
 | 
			
		||||
	proc.ForwardIO(&ioset.In{Stdin: ioIn, Stdout: ioOut, Stderr: ioErr}, func() { close(ioCancelledCh) })
 | 
			
		||||
	proc.ForwardIO(&ioset.In{Stdin: ioIn, Stdout: ioOut, Stderr: ioErr}, func(error) { close(ioCancelledCh) })
 | 
			
		||||
 | 
			
		||||
	select {
 | 
			
		||||
	case <-ioCancelledCh:
 | 
			
		||||
@@ -117,7 +117,7 @@ func (b *localController) Invoke(ctx context.Context, sessionID string, pid stri
 | 
			
		||||
	case err := <-proc.Done():
 | 
			
		||||
		return err
 | 
			
		||||
	case <-ctx.Done():
 | 
			
		||||
		return ctx.Err()
 | 
			
		||||
		return context.Cause(ctx)
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -18,16 +18,16 @@ type Process struct {
 | 
			
		||||
	invokeConfig  *pb.InvokeConfig
 | 
			
		||||
	errCh         chan error
 | 
			
		||||
	processCancel func()
 | 
			
		||||
	serveIOCancel func()
 | 
			
		||||
	serveIOCancel func(error)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ForwardIO forwards process's io to the specified reader/writer.
 | 
			
		||||
// Optionally specify ioCancelCallback which will be called when
 | 
			
		||||
// the process closes the specified IO. This will be useful for additional cleanup.
 | 
			
		||||
func (p *Process) ForwardIO(in *ioset.In, ioCancelCallback func()) {
 | 
			
		||||
func (p *Process) ForwardIO(in *ioset.In, ioCancelCallback func(error)) {
 | 
			
		||||
	p.inEnd.SetIn(in)
 | 
			
		||||
	if f := p.serveIOCancel; f != nil {
 | 
			
		||||
		f()
 | 
			
		||||
		f(errors.WithStack(context.Canceled))
 | 
			
		||||
	}
 | 
			
		||||
	p.serveIOCancel = ioCancelCallback
 | 
			
		||||
}
 | 
			
		||||
@@ -124,9 +124,16 @@ func (m *Manager) StartProcess(pid string, resultCtx *build.ResultHandle, cfg *p
 | 
			
		||||
	f.SetOut(&out)
 | 
			
		||||
 | 
			
		||||
	// Register process
 | 
			
		||||
	ctx, cancel := context.WithCancel(context.TODO())
 | 
			
		||||
	ctx, cancel := context.WithCancelCause(context.TODO())
 | 
			
		||||
	var cancelOnce sync.Once
 | 
			
		||||
	processCancelFunc := func() { cancelOnce.Do(func() { cancel(); f.Close(); in.Close(); out.Close() }) }
 | 
			
		||||
	processCancelFunc := func() {
 | 
			
		||||
		cancelOnce.Do(func() {
 | 
			
		||||
			cancel(errors.WithStack(context.Canceled))
 | 
			
		||||
			f.Close()
 | 
			
		||||
			in.Close()
 | 
			
		||||
			out.Close()
 | 
			
		||||
		})
 | 
			
		||||
	}
 | 
			
		||||
	p := &Process{
 | 
			
		||||
		inEnd:         f,
 | 
			
		||||
		invokeConfig:  cfg,
 | 
			
		||||
 
 | 
			
		||||
@@ -62,9 +62,10 @@ func NewRemoteBuildxController(ctx context.Context, dockerCli command.Cli, opts
 | 
			
		||||
	serverRoot := filepath.Join(rootDir, "shared")
 | 
			
		||||
 | 
			
		||||
	// connect to buildx server if it is already running
 | 
			
		||||
	ctx2, cancel := context.WithTimeout(ctx, 1*time.Second)
 | 
			
		||||
	ctx2, cancel := context.WithCancelCause(ctx)
 | 
			
		||||
	ctx2, _ = context.WithTimeoutCause(ctx2, 1*time.Second, errors.WithStack(context.DeadlineExceeded))
 | 
			
		||||
	c, err := newBuildxClientAndCheck(ctx2, filepath.Join(serverRoot, defaultSocketFilename))
 | 
			
		||||
	cancel()
 | 
			
		||||
	cancel(errors.WithStack(context.Canceled))
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		if !errors.Is(err, context.DeadlineExceeded) {
 | 
			
		||||
			return nil, errors.Wrap(err, "cannot connect to the buildx server")
 | 
			
		||||
@@ -90,9 +91,10 @@ func NewRemoteBuildxController(ctx context.Context, dockerCli command.Cli, opts
 | 
			
		||||
		go wait()
 | 
			
		||||
 | 
			
		||||
		// wait for buildx server to be ready
 | 
			
		||||
		ctx2, cancel = context.WithTimeout(ctx, 10*time.Second)
 | 
			
		||||
		ctx2, cancel = context.WithCancelCause(ctx)
 | 
			
		||||
		ctx2, _ = context.WithTimeoutCause(ctx2, 10*time.Second, errors.WithStack(context.DeadlineExceeded))
 | 
			
		||||
		c, err = newBuildxClientAndCheck(ctx2, filepath.Join(serverRoot, defaultSocketFilename))
 | 
			
		||||
		cancel()
 | 
			
		||||
		cancel(errors.WithStack(context.Canceled))
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return errors.Wrap(err, "cannot connect to the buildx server")
 | 
			
		||||
		}
 | 
			
		||||
 
 | 
			
		||||
@@ -344,7 +344,7 @@ func receive(ctx context.Context, stream msgStream) (*pb.Message, error) {
 | 
			
		||||
	case err := <-errCh:
 | 
			
		||||
		return nil, err
 | 
			
		||||
	case <-ctx.Done():
 | 
			
		||||
		return nil, ctx.Err()
 | 
			
		||||
		return nil, context.Cause(ctx)
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -37,7 +37,7 @@ type Server struct {
 | 
			
		||||
type session struct {
 | 
			
		||||
	buildOnGoing atomic.Bool
 | 
			
		||||
	statusChan   chan *pb.StatusResponse
 | 
			
		||||
	cancelBuild  func()
 | 
			
		||||
	cancelBuild  func(error)
 | 
			
		||||
	buildOptions *pb.BuildOptions
 | 
			
		||||
	inputPipe    *io.PipeWriter
 | 
			
		||||
 | 
			
		||||
@@ -109,7 +109,7 @@ func (m *Server) Disconnect(ctx context.Context, req *pb.DisconnectRequest) (res
 | 
			
		||||
	m.sessionMu.Lock()
 | 
			
		||||
	if s, ok := m.session[sessionID]; ok {
 | 
			
		||||
		if s.cancelBuild != nil {
 | 
			
		||||
			s.cancelBuild()
 | 
			
		||||
			s.cancelBuild(errors.WithStack(context.Canceled))
 | 
			
		||||
		}
 | 
			
		||||
		s.cancelRunningProcesses()
 | 
			
		||||
		if s.result != nil {
 | 
			
		||||
@@ -127,7 +127,7 @@ func (m *Server) Close() error {
 | 
			
		||||
	for k := range m.session {
 | 
			
		||||
		if s, ok := m.session[k]; ok {
 | 
			
		||||
			if s.cancelBuild != nil {
 | 
			
		||||
				s.cancelBuild()
 | 
			
		||||
				s.cancelBuild(errors.WithStack(context.Canceled))
 | 
			
		||||
			}
 | 
			
		||||
			s.cancelRunningProcesses()
 | 
			
		||||
		}
 | 
			
		||||
@@ -199,8 +199,8 @@ func (m *Server) Build(ctx context.Context, req *pb.BuildRequest) (*pb.BuildResp
 | 
			
		||||
	pw := pb.NewProgressWriter(statusChan)
 | 
			
		||||
 | 
			
		||||
	// Build the specified request
 | 
			
		||||
	ctx, cancel := context.WithCancel(ctx)
 | 
			
		||||
	defer cancel()
 | 
			
		||||
	ctx, cancel := context.WithCancelCause(ctx)
 | 
			
		||||
	defer func() { cancel(errors.WithStack(context.Canceled)) }()
 | 
			
		||||
	resp, res, _, buildErr := m.buildFunc(ctx, req.Options, inR, pw)
 | 
			
		||||
	m.sessionMu.Lock()
 | 
			
		||||
	if s, ok := m.session[sessionID]; ok {
 | 
			
		||||
@@ -341,7 +341,7 @@ func (m *Server) Input(stream pb.Controller_InputServer) (err error) {
 | 
			
		||||
			select {
 | 
			
		||||
			case msg = <-msgCh:
 | 
			
		||||
			case <-ctx.Done():
 | 
			
		||||
				return errors.Wrap(ctx.Err(), "canceled")
 | 
			
		||||
				return context.Cause(ctx)
 | 
			
		||||
			}
 | 
			
		||||
			if msg == nil {
 | 
			
		||||
				return nil
 | 
			
		||||
@@ -370,9 +370,9 @@ func (m *Server) Invoke(srv pb.Controller_InvokeServer) error {
 | 
			
		||||
	initDoneCh := make(chan *processes.Process)
 | 
			
		||||
	initErrCh := make(chan error)
 | 
			
		||||
	eg, egCtx := errgroup.WithContext(context.TODO())
 | 
			
		||||
	srvIOCtx, srvIOCancel := context.WithCancel(egCtx)
 | 
			
		||||
	srvIOCtx, srvIOCancel := context.WithCancelCause(egCtx)
 | 
			
		||||
	eg.Go(func() error {
 | 
			
		||||
		defer srvIOCancel()
 | 
			
		||||
		defer srvIOCancel(errors.WithStack(context.Canceled))
 | 
			
		||||
		return serveIO(srvIOCtx, srv, func(initMessage *pb.InitMessage) (retErr error) {
 | 
			
		||||
			defer func() {
 | 
			
		||||
				if retErr != nil {
 | 
			
		||||
@@ -418,7 +418,7 @@ func (m *Server) Invoke(srv pb.Controller_InvokeServer) error {
 | 
			
		||||
		})
 | 
			
		||||
	})
 | 
			
		||||
	eg.Go(func() (rErr error) {
 | 
			
		||||
		defer srvIOCancel()
 | 
			
		||||
		defer srvIOCancel(errors.WithStack(context.Canceled))
 | 
			
		||||
		// Wait for init done
 | 
			
		||||
		var proc *processes.Process
 | 
			
		||||
		select {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user