From 7b4b56169bd6306fd057045275bab20589dc2c86 Mon Sep 17 00:00:00 2001 From: Alessandro Boch Date: Tue, 27 Oct 2015 10:14:54 -0700 Subject: [PATCH] Some functions' logic cleanup Signed-off-by: Alessandro Boch --- libnetwork/endpoint.go | 2 +- libnetwork/endpoint_cnt.go | 18 +++++++----------- libnetwork/sandbox.go | 17 ++++++----------- 3 files changed, 14 insertions(+), 23 deletions(-) diff --git a/libnetwork/endpoint.go b/libnetwork/endpoint.go index 29656d5229..de7b652dc5 100644 --- a/libnetwork/endpoint.go +++ b/libnetwork/endpoint.go @@ -471,7 +471,7 @@ func (ep *endpoint) rename(name string) error { // benign error. Besides there is no meaningful recovery that // we can do. When the cluster recovers subsequent EpCnt update // will force the peers to get the correct EP name. - _ = n.getEpCnt().updateStore() + n.getEpCnt().updateStore() return err } diff --git a/libnetwork/endpoint_cnt.go b/libnetwork/endpoint_cnt.go index 976e184455..507de393b8 100644 --- a/libnetwork/endpoint_cnt.go +++ b/libnetwork/endpoint_cnt.go @@ -109,22 +109,18 @@ func (ec *endpointCnt) EndpointCnt() uint64 { } func (ec *endpointCnt) updateStore() error { -retry: store := ec.n.getController().getStore(ec.DataScope()) if store == nil { - return fmt.Errorf("store not found for scope %s", ec.DataScope()) + return fmt.Errorf("store not found for scope %s on endpoint count update", ec.DataScope()) } - - if err := ec.n.getController().updateToStore(ec); err != nil { - if err == datastore.ErrKeyModified { - if err := store.GetObject(datastore.Key(ec.Key()...), ec); err != nil { - return fmt.Errorf("could not update the kvobject to latest on rename: %v", err) - } - goto retry + for { + if err := ec.n.getController().updateToStore(ec); err == nil || err != datastore.ErrKeyModified { + return err + } + if err := store.GetObject(datastore.Key(ec.Key()...), ec); err != nil { + return fmt.Errorf("could not update the kvobject to latest on endpoint count update: %v", err) } - return err } - return nil } func (ec *endpointCnt) atomicIncDecEpCnt(inc bool) error { diff --git a/libnetwork/sandbox.go b/libnetwork/sandbox.go index c8d912406b..bb5097935c 100644 --- a/libnetwork/sandbox.go +++ b/libnetwork/sandbox.go @@ -205,7 +205,6 @@ func (sb *sandbox) Delete() error { func (sb *sandbox) Rename(name string) error { var err error - undo := []func(){} for _, ep := range sb.getConnectedEndpoints() { if ep.endpointInGWNetwork() { @@ -217,18 +216,14 @@ func (sb *sandbox) Rename(name string) error { if err = ep.rename(name); err != nil { break } - undo = append(undo, - func() { - // Ignore the error while undoing - _ = lEp.rename(oldName) - }) + + defer func() { + if err != nil { + lEp.rename(oldName) + } + }() } - if err != nil { - for _, f := range undo { - f() - } - } return err }