From 1aa88fa8704cd2e83e8ce4fa9e967cbcf652d3ac Mon Sep 17 00:00:00 2001 From: Madhu Venugopal Date: Tue, 17 Nov 2015 21:00:46 -0800 Subject: [PATCH] Allow endpoint delete if sandbox identifier is stale There are cases as seen in https://github.com/docker/docker/issues/17984 the sandbox could be stale in endpoint structure, when the actual sandbox is removed during the cleanup phase. Hence instead of just validating for sandboxID, make sure if it is actually present in the sandboxes DB managed by the controller. Signed-off-by: Madhu Venugopal --- libnetwork/endpoint.go | 3 ++- libnetwork/test/integration/dnet/multi.bats | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/libnetwork/endpoint.go b/libnetwork/endpoint.go index 02c7ba33162f3b4ff657dafb1f2aa173063d98f5..865f2aab70b4d55c6cd36e080cbe4e54625a8aab 100644 --- a/libnetwork/endpoint.go +++ b/libnetwork/endpoint.go @@ -584,7 +584,8 @@ func (ep *endpoint) Delete() error { ep.Lock() epid := ep.id name := ep.name - if ep.sandboxID != "" { + sb, _ := n.getController().SandboxByID(ep.sandboxID) + if sb != nil { ep.Unlock() return &ActiveContainerError{name: name, id: epid} } diff --git a/libnetwork/test/integration/dnet/multi.bats b/libnetwork/test/integration/dnet/multi.bats index ad773be0607cdcf02e838783e686c775569343cc..28cac6de3d5002b28e002cf19e019a6020ff665d 100644 --- a/libnetwork/test/integration/dnet/multi.bats +++ b/libnetwork/test/integration/dnet/multi.bats @@ -112,7 +112,7 @@ function is_network_exist() { for j in `seq 1 3`; do - run dnet_cmd $(inst_id2port 2) service unpublish ${osvc}.${oname} + run dnet_cmd $(inst_id2port $i) service unpublish ${osvc}.${oname} echo ${output} [ "$status" -ne 0 ] run dnet_cmd $(inst_id2port $j) network rm ${oname}