mirror of
https://github.com/criyle/go-sandbox.git
synced 2025-11-04 14:49:53 +08:00
container: skip waitAll
This commit is contained in:
parent
ea0b084794
commit
1e890d6475
@ -124,6 +124,14 @@ func (c *containerServer) handleExecve(cmd *execCmd, msg unixsocket.Msg) error {
|
|||||||
if cmd.SyncAfter {
|
if cmd.SyncAfter {
|
||||||
if err := syncPid(1); err != nil {
|
if err := syncPid(1); err != nil {
|
||||||
syscall.Kill(-1, syscall.SIGKILL)
|
syscall.Kill(-1, syscall.SIGKILL)
|
||||||
|
|
||||||
|
c.waitPid <- pid
|
||||||
|
ret := <-c.waitPidResult
|
||||||
|
err := c.sendReply(convertReply(ret), unixsocket.Msg{})
|
||||||
|
|
||||||
|
c.waitAll <- struct{}{}
|
||||||
|
<-c.waitAllDone
|
||||||
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return c.handleExecveStarted(pid)
|
return c.handleExecveStarted(pid)
|
||||||
@ -164,7 +172,7 @@ func (c *containerServer) handleExecveStarted(pid int) error {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
<-c.waitAllDone
|
<-c.waitAllDone
|
||||||
return c.sendReply(reply{}, unixsocket.Msg{})
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func convertReply(ret waitPidResult) reply {
|
func convertReply(ret waitPidResult) reply {
|
||||||
|
|||||||
@ -45,7 +45,7 @@ type ExecveParam struct {
|
|||||||
SyncAfterExec bool
|
SyncAfterExec bool
|
||||||
}
|
}
|
||||||
|
|
||||||
// Execve runs process inside container. It accepts context cancelation as time limit exceeded.
|
// Execve runs process inside container. It accepts context cancellation as time limit exceeded.
|
||||||
func (c *container) Execve(ctx context.Context, param ExecveParam) runner.Result {
|
func (c *container) Execve(ctx context.Context, param ExecveParam) runner.Result {
|
||||||
c.mu.Lock()
|
c.mu.Lock()
|
||||||
defer c.mu.Unlock()
|
defer c.mu.Unlock()
|
||||||
@ -122,13 +122,11 @@ func (c *container) waitForDone(ctx context.Context, sTime time.Time) runner.Res
|
|||||||
|
|
||||||
case <-ctx.Done(): // cancel
|
case <-ctx.Done(): // cancel
|
||||||
c.sendCmd(cmd{Cmd: cmdKill}, unixsocket.Msg{}) // kill
|
c.sendCmd(cmd{Cmd: cmdKill}, unixsocket.Msg{}) // kill
|
||||||
reply, _, _ := c.recvReply()
|
reply, _, err := c.recvReply()
|
||||||
_, _, err := c.recvReply()
|
|
||||||
return convertReplyResult(reply, sTime, mTime, err)
|
return convertReplyResult(reply, sTime, mTime, err)
|
||||||
|
|
||||||
case ret := <-c.recvCh: // result
|
case ret := <-c.recvCh: // result
|
||||||
c.sendCmd(cmd{Cmd: cmdKill}, unixsocket.Msg{}) // kill
|
err := c.sendCmd(cmd{Cmd: cmdKill}, unixsocket.Msg{}) // kill
|
||||||
_, _, err := c.recvReply()
|
|
||||||
return convertReplyResult(ret.Reply, sTime, mTime, err)
|
return convertReplyResult(ret.Reply, sTime, mTime, err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
2
go.mod
2
go.mod
@ -4,6 +4,6 @@ go 1.24
|
|||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/elastic/go-seccomp-bpf v1.5.0
|
github.com/elastic/go-seccomp-bpf v1.5.0
|
||||||
golang.org/x/net v0.37.0
|
golang.org/x/net v0.38.0
|
||||||
golang.org/x/sys v0.31.0
|
golang.org/x/sys v0.31.0
|
||||||
)
|
)
|
||||||
|
|||||||
4
go.sum
4
go.sum
@ -6,8 +6,8 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb
|
|||||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||||
github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
|
github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
|
||||||
github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
|
github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
|
||||||
golang.org/x/net v0.37.0 h1:1zLorHbz+LYj7MQlSf1+2tPIIgibq2eL5xkrGk6f+2c=
|
golang.org/x/net v0.38.0 h1:vRMAPTMaeGqVhG5QyLJHqNDwecKTomGeqbnfZyKlBI8=
|
||||||
golang.org/x/net v0.37.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8=
|
golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8=
|
||||||
golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik=
|
golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik=
|
||||||
golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
|
golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
|
||||||
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user