From c2651a85a8668428babe4210b34d133ab8a61f12 Mon Sep 17 00:00:00 2001 From: flyflypeng Date: Wed, 20 Jun 2018 07:38:24 +0800 Subject: [PATCH] virtcontainers: add kata-proxy rollback If some errors occur after kata-proxy start, we need to rollback to kill kata-proxy process Fixes: #297 Signed-off-by: flyflypeng --- virtcontainers/kata_agent.go | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/virtcontainers/kata_agent.go b/virtcontainers/kata_agent.go index 53559ca90c..f3fcdb3f64 100644 --- a/virtcontainers/kata_agent.go +++ b/virtcontainers/kata_agent.go @@ -450,6 +450,8 @@ func (k *kataAgent) generateInterfacesAndRoutes(networkNS NetworkNamespace) ([]* } func (k *kataAgent) startProxy(sandbox *Sandbox) error { + var err error + if k.proxy == nil { return errorMissingProxy } @@ -475,10 +477,18 @@ func (k *kataAgent) startProxy(sandbox *Sandbox) error { return err } + // If error occurs after kata-proxy process start, + // then rollback to kill kata-proxy process + defer func() { + if err != nil && pid > 0 { + k.proxy.stop(sandbox, pid) + } + }() + // Fill agent state with proxy information, and store them. k.state.ProxyPid = pid k.state.URL = uri - if err := sandbox.storage.storeAgentState(sandbox.id, k.state); err != nil { + if err = sandbox.storage.storeAgentState(sandbox.id, k.state); err != nil { return err }