From 74cf6224633f8e2e5da2243868a76e1455662e67 Mon Sep 17 00:00:00 2001 From: Alexander Morozov Date: Fri, 29 Jan 2016 10:29:18 -0800 Subject: [PATCH] Fix some races in getNetworkFromStore Signed-off-by: Alexander Morozov --- libnetwork/endpoint.go | 2 +- libnetwork/store.go | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/libnetwork/endpoint.go b/libnetwork/endpoint.go index 08ea9ae815..38506c82a8 100644 --- a/libnetwork/endpoint.go +++ b/libnetwork/endpoint.go @@ -343,7 +343,7 @@ func (ep *endpoint) getNetworkFromStore() (*network, error) { return nil, fmt.Errorf("invalid network object in endpoint %s", ep.Name()) } - return ep.network.ctrlr.getNetworkFromStore(ep.network.id) + return ep.network.getController().getNetworkFromStore(ep.network.id) } func (ep *endpoint) Join(sbox Sandbox, options ...EndpointOption) error { diff --git a/libnetwork/store.go b/libnetwork/store.go index 89248800c9..bd39638b3c 100644 --- a/libnetwork/store.go +++ b/libnetwork/store.go @@ -141,8 +141,10 @@ func (c *controller) getNetworksFromStore() ([]*network, error) { return nil, fmt.Errorf("could not find endpoint count key %s for network %s while listing: %v", datastore.Key(ec.Key()...), n.Name(), err) } + n.Lock() n.epCnt = ec n.scope = store.Scope() + n.Unlock() nl = append(nl, n) } }