From d0bc148fe065a94ba4b10e719afe7f623f0be175 Mon Sep 17 00:00:00 2001 From: bin Date: Wed, 14 Jul 2021 17:20:53 +0800 Subject: [PATCH 1/2] runtime: Register defer function at early stage Register defer function at early stage ensure that it can be called if the startSandbox fails. Fixes: #2230 Signed-off-by: bin --- src/runtime/virtcontainers/sandbox.go | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/runtime/virtcontainers/sandbox.go b/src/runtime/virtcontainers/sandbox.go index 0348dc783c..77078c86fc 100644 --- a/src/runtime/virtcontainers/sandbox.go +++ b/src/runtime/virtcontainers/sandbox.go @@ -1008,6 +1008,12 @@ func (s *Sandbox) startVM(ctx context.Context) (err error) { s.cw = consoleWatcher } + defer func() { + if err != nil { + s.hypervisor.stopSandbox(ctx, false) + } + }() + if err := s.network.Run(ctx, s.networkNS.NetNsPath, func() error { if s.factory != nil { vm, err := s.factory.GetVM(ctx, VMConfig{ @@ -1027,12 +1033,6 @@ func (s *Sandbox) startVM(ctx context.Context) (err error) { return err } - defer func() { - if err != nil { - s.hypervisor.stopSandbox(ctx, false) - } - }() - // In case of vm factory, network interfaces are hotplugged // after vm is started. if s.factory != nil { From 39546a107078e41c17504c404abaa408083ccb32 Mon Sep 17 00:00:00 2001 From: bin Date: Wed, 14 Jul 2021 19:33:21 +0800 Subject: [PATCH 2/2] runtime: delete not used functions Delete some not used functions in sandbox.go Fixes: #2230 Signed-off-by: bin --- src/runtime/virtcontainers/sandbox.go | 13 +------------ src/runtime/virtcontainers/sandbox_test.go | 15 --------------- 2 files changed, 1 insertion(+), 27 deletions(-) diff --git a/src/runtime/virtcontainers/sandbox.go b/src/runtime/virtcontainers/sandbox.go index 77078c86fc..3891a52e05 100644 --- a/src/runtime/virtcontainers/sandbox.go +++ b/src/runtime/virtcontainers/sandbox.go @@ -1555,18 +1555,7 @@ func (s *Sandbox) Stop(ctx context.Context, force bool) error { return nil } -// list lists all sandbox running on the host. -func (s *Sandbox) list() ([]Sandbox, error) { - return nil, nil -} - -// enter runs an executable within a sandbox. -func (s *Sandbox) enter(args []string) error { - return nil -} - -// setSandboxState sets both the in-memory and on-disk state of the -// sandbox. +// setSandboxState sets the in-memory state of the sandbox. func (s *Sandbox) setSandboxState(state types.StateString) error { if state == "" { return vcTypes.ErrNeedState diff --git a/src/runtime/virtcontainers/sandbox_test.go b/src/runtime/virtcontainers/sandbox_test.go index e91650fdee..27df559d36 100644 --- a/src/runtime/virtcontainers/sandbox_test.go +++ b/src/runtime/virtcontainers/sandbox_test.go @@ -181,21 +181,6 @@ func TestCreateSandboxEmptyID(t *testing.T) { defer cleanUp() } -func TestSandboxListSuccessful(t *testing.T) { - sandbox := &Sandbox{} - - sandboxList, err := sandbox.list() - assert.NoError(t, err) - assert.Nil(t, sandboxList) -} - -func TestSandboxEnterSuccessful(t *testing.T) { - sandbox := &Sandbox{} - - err := sandbox.enter([]string{}) - assert.NoError(t, err) -} - func testCheckInitSandboxAndContainerStates(p *Sandbox, initialSandboxState types.SandboxState, c *Container, initialContainerState types.ContainerState) error { if p.state.State != initialSandboxState.State { return fmt.Errorf("Expected sandbox state %v, got %v", initialSandboxState.State, p.state.State)