diff --git a/virtcontainers/kata_agent.go b/virtcontainers/kata_agent.go index 06b505dbcd..2260bb64ad 100644 --- a/virtcontainers/kata_agent.go +++ b/virtcontainers/kata_agent.go @@ -616,6 +616,7 @@ func (k *kataAgent) startProxy(sandbox *Sandbox) error { proxyParams := proxyParams{ id: sandbox.id, + hid: sandbox.hypervisor.pid(), path: sandbox.config.ProxyConfig.Path, agentURL: agentURL, consoleURL: consoleURL, @@ -1600,7 +1601,14 @@ func (k *kataAgent) connect() error { return nil } - k.Logger().WithField("url", k.state.URL).Info("New client") + if k.state.ProxyPid > 0 { + // check that proxy is running before talk with it avoiding long timeouts + if err := syscall.Kill(k.state.ProxyPid, syscall.Signal(0)); err != nil { + return errors.New("Proxy is not running") + } + } + + k.Logger().WithField("url", k.state.URL).WithField("proxy", k.state.ProxyPid).Info("New client") client, err := kataclient.NewAgentClient(k.ctx, k.state.URL, k.proxyBuiltIn) if err != nil { k.dead = true @@ -1792,13 +1800,6 @@ func (k *kataAgent) sendReq(request interface{}) (interface{}, error) { span.SetTag("request", request) defer span.Finish() - if k.state.ProxyPid > 0 { - // check that proxy is running before talk with it avoiding long timeouts - if err := syscall.Kill(k.state.ProxyPid, syscall.Signal(0)); err != nil { - return nil, fmt.Errorf("Proxy is not running: %v", err) - } - } - if err := k.connect(); err != nil { return nil, err } diff --git a/virtcontainers/kata_builtin_proxy.go b/virtcontainers/kata_builtin_proxy.go index 8ac90d84de..a3717dfd32 100644 --- a/virtcontainers/kata_builtin_proxy.go +++ b/virtcontainers/kata_builtin_proxy.go @@ -64,7 +64,7 @@ func (p *kataBuiltInProxy) start(params proxyParams) (int, string, error) { } } - return -1, params.agentURL, nil + return params.hid, params.agentURL, nil } // stop is the proxy stop implementation for kata builtin proxy. diff --git a/virtcontainers/no_proxy.go b/virtcontainers/no_proxy.go index a97270c3d2..8fb54d9f2d 100644 --- a/virtcontainers/no_proxy.go +++ b/virtcontainers/no_proxy.go @@ -34,7 +34,7 @@ func (p *noProxy) start(params proxyParams) (int, string, error) { return -1, "", fmt.Errorf("AgentURL cannot be empty") } - return 0, params.agentURL, nil + return params.hid, params.agentURL, nil } // stop is noProxy stop implementation for proxy interface. diff --git a/virtcontainers/noop_proxy.go b/virtcontainers/noop_proxy.go index 5a80f7b60d..d72f71e574 100644 --- a/virtcontainers/noop_proxy.go +++ b/virtcontainers/noop_proxy.go @@ -14,7 +14,7 @@ var noopProxyURL = "noopProxyURL" // register is the proxy start implementation for testing purpose. // It does nothing. func (p *noopProxy) start(params proxyParams) (int, string, error) { - return 0, noopProxyURL, nil + return params.hid, noopProxyURL, nil } // stop is the proxy stop implementation for testing purpose. diff --git a/virtcontainers/proxy.go b/virtcontainers/proxy.go index 46c266d30a..8c0ec4a49c 100644 --- a/virtcontainers/proxy.go +++ b/virtcontainers/proxy.go @@ -28,6 +28,7 @@ type proxyParams struct { agentURL string consoleURL string logger *logrus.Entry + hid int debug bool }