mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
Purge remote endpoints from watch if it is local
A local endpoint is known to the watch database only during Join. But the same endpoint can be known to the watch database as remote endpoint well before the Join because a CreateEndpoint updates the endpoint to the store. So on Join when you come to know that this is indeed a local endpoint remove it from remote endpoint list and add it to local endpoint list. Signed-off-by: Jana Radhakrishnan <mrjana@docker.com>
This commit is contained in:
parent
cdb82dc22d
commit
c3c4825f80
3 changed files with 49 additions and 0 deletions
|
@ -308,6 +308,11 @@ func (c *controller) processEndpointCreate(nmap map[string]*netWatch, ep *endpoi
|
||||||
|
|
||||||
c.Lock()
|
c.Lock()
|
||||||
nw.localEps[ep.ID()] = ep
|
nw.localEps[ep.ID()] = ep
|
||||||
|
|
||||||
|
// If we had learned that from the kv store remove it
|
||||||
|
// from remote ep list now that we know that this is
|
||||||
|
// indeed a local endpoint
|
||||||
|
delete(nw.remoteEps, ep.ID())
|
||||||
c.Unlock()
|
c.Unlock()
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
|
@ -291,3 +291,42 @@ function test_overlay() {
|
||||||
|
|
||||||
dnet_cmd $(inst_id2port 2) network rm multihost
|
dnet_cmd $(inst_id2port 2) network rm multihost
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function test_overlay_singlehost() {
|
||||||
|
dnet_suffix=$1
|
||||||
|
shift
|
||||||
|
|
||||||
|
echo $(docker ps)
|
||||||
|
|
||||||
|
start=1
|
||||||
|
end=3
|
||||||
|
# Setup overlay network and connect containers ot it
|
||||||
|
dnet_cmd $(inst_id2port 1) network create -d overlay multihost
|
||||||
|
for i in `seq ${start} ${end}`;
|
||||||
|
do
|
||||||
|
dnet_cmd $(inst_id2port 1) container create container_${i}
|
||||||
|
net_connect 1 container_${i} multihost
|
||||||
|
done
|
||||||
|
|
||||||
|
# Now test connectivity between all the containers using service names
|
||||||
|
for i in `seq ${start} ${end}`;
|
||||||
|
do
|
||||||
|
for j in `seq ${start} ${end}`;
|
||||||
|
do
|
||||||
|
if [ "$i" -eq "$j" ]; then
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
runc $(dnet_container_name 1 $dnet_suffix) $(get_sbox_id 1 container_${i}) \
|
||||||
|
"ping -c 1 container_$j"
|
||||||
|
done
|
||||||
|
done
|
||||||
|
|
||||||
|
# Teardown the container connections and the network
|
||||||
|
for i in `seq ${start} ${end}`;
|
||||||
|
do
|
||||||
|
net_disconnect 1 container_${i} multihost
|
||||||
|
dnet_cmd $(inst_id2port 1) container rm container_${i}
|
||||||
|
done
|
||||||
|
|
||||||
|
dnet_cmd $(inst_id2port 1) network rm multihost
|
||||||
|
}
|
||||||
|
|
|
@ -7,3 +7,8 @@ load helpers
|
||||||
skip_for_circleci
|
skip_for_circleci
|
||||||
test_overlay consul
|
test_overlay consul
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@test "Test overlay network singlehost with consul" {
|
||||||
|
skip_for_circleci
|
||||||
|
test_overlay_singlehost consul
|
||||||
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue