From 151f42aeaa062535246a38330a78700398de53cd Mon Sep 17 00:00:00 2001 From: Flavio Crisciani Date: Tue, 22 Jan 2019 15:57:03 -0800 Subject: [PATCH] Fix possible nil pointer exception It is possible that the node is not yet present in the node list map. In this case just print a warning and return. The next iteration would be fine Signed-off-by: Flavio Crisciani --- libnetwork/network.go | 8 +++----- libnetwork/networkdb/cluster.go | 7 ++++++- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/libnetwork/network.go b/libnetwork/network.go index 0a4a2277b0..f128cac785 100644 --- a/libnetwork/network.go +++ b/libnetwork/network.go @@ -396,11 +396,9 @@ func (n *network) validateConfiguration() error { driverOptions map[string]string opts interface{} ) - switch data.(type) { - case map[string]interface{}: - opts = data.(map[string]interface{}) - case map[string]string: - opts = data.(map[string]string) + switch t := data.(type) { + case map[string]interface{}, map[string]string: + opts = t } ba, err := json.Marshal(opts) if err != nil { diff --git a/libnetwork/networkdb/cluster.go b/libnetwork/networkdb/cluster.go index c989570848..2e7795440e 100644 --- a/libnetwork/networkdb/cluster.go +++ b/libnetwork/networkdb/cluster.go @@ -288,7 +288,12 @@ func (nDB *NetworkDB) rejoinClusterBootStrap() { return } - myself, _ := nDB.nodes[nDB.config.NodeID] + myself, ok := nDB.nodes[nDB.config.NodeID] + if !ok { + nDB.RUnlock() + logrus.Warnf("rejoinClusterBootstrap unable to find local node info using ID:%v", nDB.config.NodeID) + return + } bootStrapIPs := make([]string, 0, len(nDB.bootStrapIP)) for _, bootIP := range nDB.bootStrapIP { // botostrap IPs are usually IP:port from the Join