From 330a27b3a089bc64db1edd9adc16076fbc068aee Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Thu, 15 Jun 2017 14:25:21 -0700 Subject: [PATCH] Fix removing all downstream nodes in settings not killing nodes --- domain-server/src/DomainServer.cpp | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/domain-server/src/DomainServer.cpp b/domain-server/src/DomainServer.cpp index be75ad61ee..9a69e3077e 100644 --- a/domain-server/src/DomainServer.cpp +++ b/domain-server/src/DomainServer.cpp @@ -2227,11 +2227,12 @@ static const QString REPLICATION_SETTINGS_KEY = "replication"; void DomainServer::updateDownstreamNodes() { auto settings = _settingsManager.getSettingsMap(); if (settings.contains(REPLICATION_SETTINGS_KEY)) { + auto nodeList = DependencyManager::get(); + std::vector downstreamNodesInSettings; auto replicationSettings = settings.value(REPLICATION_SETTINGS_KEY).toMap(); if (replicationSettings.contains("downstream_servers")) { auto serversSettings = replicationSettings.value("downstream_servers").toList(); - auto nodeList = DependencyManager::get(); std::vector knownDownstreamNodes; nodeList->eachNode([&](const SharedNodePointer& otherNode) { if (NodeType::isDownstream(otherNode->getType())) { @@ -2239,8 +2240,6 @@ void DomainServer::updateDownstreamNodes() { } }); - std::vector downstreamNodesInSettings; - for (auto& server : serversSettings) { auto downstreamServer = server.toMap(); @@ -2277,20 +2276,20 @@ void DomainServer::updateDownstreamNodes() { } } - std::vector nodesToKill; - nodeList->eachNode([&](const SharedNodePointer& otherNode) { - if (NodeType::isDownstream(otherNode->getType())) { - bool nodeInSettings = find(downstreamNodesInSettings.cbegin(), downstreamNodesInSettings.cend(), - otherNode->getPublicSocket()) != downstreamNodesInSettings.cend(); - if (!nodeInSettings) { - qDebug() << "Removing downstream node:" << otherNode->getUUID() << otherNode->getPublicSocket(); - nodesToKill.push_back(otherNode); - } + } + std::vector nodesToKill; + nodeList->eachNode([&](const SharedNodePointer& otherNode) { + if (NodeType::isDownstream(otherNode->getType())) { + bool nodeInSettings = find(downstreamNodesInSettings.cbegin(), downstreamNodesInSettings.cend(), + otherNode->getPublicSocket()) != downstreamNodesInSettings.cend(); + if (!nodeInSettings) { + qDebug() << "Removing downstream node:" << otherNode->getUUID() << otherNode->getPublicSocket(); + nodesToKill.push_back(otherNode); } - }); - for (auto& node : nodesToKill) { - handleKillNode(node); } + }); + for (auto& node : nodesToKill) { + handleKillNode(node); } } }