瀏覽代碼

HPCC-2964 Configmgr - Allow swapping of Thor Master

- From code review: Fix memory leak
- From code review: Refactor/common up code

Signed-off-by: Gleb Aronsky <gleb.aronsky@lexisnexis.com>
Gleb Aronsky 12 年之前
父節點
當前提交
18eda8cbbc
共有 1 個文件被更改,包括 14 次插入13 次删除
  1. 14 13
      deployment/deployutils/configenvhelper.cpp

+ 14 - 13
deployment/deployutils/configenvhelper.cpp

@@ -1281,22 +1281,23 @@ bool CConfigEnvHelper::AddNewNodes(IPropertyTree* pThor, const char* szType, int
 
         sName.appendf("temp%d", i + 1);
 
-        // Add process node
-        IPropertyTree* pProcessNode = createPTree(szType);
+        IPropertyTree *pTree = (szType == NULL || strcmp(szType, XML_TAG_THORMASTERPROCESS) != 0) ? NULL : pThor->queryPropTree(sThorMasterProcess.str());
+        bool bAdd = false;
 
-        if(szType == NULL || strcmp(szType, XML_TAG_THORMASTERPROCESS) != 0  || !pThor->queryPropTree(sThorMasterProcess.str()))
+        if (pTree == NULL)
         {
-          pProcessNode->addProp(XML_ATTR_NAME, sName);
-          pProcessNode->addProp(XML_ATTR_COMPUTER, computers[i]->queryProp(XML_ATTR_NAME));
-          if (nPort != 0) pProcessNode->addPropInt(XML_ATTR_PORT, nPort);
-            addNode(pProcessNode, pThor);
-        }
-        else
-        {
-          pThor->queryPropTree(sThorMasterProcess.str())->setProp(XML_ATTR_NAME,sName);
-          pThor->queryPropTree(sThorMasterProcess.str())->setProp(XML_ATTR_COMPUTER, computers[i]->queryProp(XML_ATTR_NAME));
-          if (nPort != 0) pThor->queryPropTree(sThorMasterProcess.str())->setPropInt(XML_ATTR_PORT, nPort);
+          bAdd = true;
+          pTree = createPTree(szType);
         }
+
+        pTree->setProp(XML_ATTR_NAME,sName);
+        pTree->setProp(XML_ATTR_COMPUTER, computers[i]->queryProp(XML_ATTR_NAME));
+
+        if (nPort != 0)
+          pTree->setPropInt(XML_ATTR_PORT, nPort);
+
+        if (bAdd == true)
+          addNode(pTree, pThor);
    }
 
     RenameThorInstances(pThor);