From 6b46465c77bfbd6c553394d38d6d7bb81a68141c Mon Sep 17 00:00:00 2001 From: Audrius Butkevicius Date: Mon, 28 Jul 2014 00:20:36 +0100 Subject: [PATCH] Avoid resorting multiple times --- config/config.go | 32 ++++++++++---------------------- 1 file changed, 10 insertions(+), 22 deletions(-) diff --git a/config/config.go b/config/config.go index 2d17604f..5466d6d7 100644 --- a/config/config.go +++ b/config/config.go @@ -315,10 +315,12 @@ func Load(rd io.Reader, myID protocol.NodeID) (Configuration, error) { // Ensure that any loose nodes are not present in the wrong places // Ensure that there are no duplicate nodes cfg.Nodes = ensureNodePresent(cfg.Nodes, myID) + sort.Sort(NodeConfigurationList(cfg.Nodes)) for i := range cfg.Repositories { cfg.Repositories[i].Nodes = ensureNodePresent(cfg.Repositories[i].Nodes, myID) cfg.Repositories[i].Nodes = ensureExistingNodes(cfg.Repositories[i].Nodes, existingNodes) cfg.Repositories[i].Nodes = ensureNoDuplicates(cfg.Repositories[i].Nodes) + sort.Sort(NodeConfigurationList(cfg.Repositories[i].Nodes)) } // An empty address list is equivalent to a single "dynamic" entry @@ -383,23 +385,17 @@ func (l NodeConfigurationList) Len() int { } func ensureNodePresent(nodes []NodeConfiguration, myID protocol.NodeID) []NodeConfiguration { - var myIDExists bool for _, node := range nodes { if node.NodeID.Equals(myID) { - myIDExists = true - break + return nodes } } - if !myIDExists { - name, _ := os.Hostname() - nodes = append(nodes, NodeConfiguration{ - NodeID: myID, - Name: name, - }) - } - - sort.Sort(NodeConfigurationList(nodes)) + name, _ := os.Hostname() + nodes = append(nodes, NodeConfiguration{ + NodeID: myID, + Name: name, + }) return nodes } @@ -416,11 +412,7 @@ loop: } i++ } - nodes = nodes[0:count] - - sort.Sort(NodeConfigurationList(nodes)) - - return nodes + return nodes[0:count] } func ensureNoDuplicates(nodes []NodeConfiguration) []NodeConfiguration { @@ -438,9 +430,5 @@ loop: seenNodes[id] = true i++ } - nodes = nodes[0:count] - - sort.Sort(NodeConfigurationList(nodes)) - - return nodes + return nodes[0:count] }