Browse Source

HPCC-20619 Prevent backupnode and thor master are on the same node
Disable adding backupnode instance automatically.
Resume every component has at least one instance except backupnode if ip/ipfile provided

xwang2713 6 years ago
parent
commit
2f92a679b4
42 changed files with 408 additions and 168 deletions
  1. 1 0
      deployment/configenv/ConfigEnvError.hpp
  2. 2 0
      deployment/configenv/xml_jlibpt/CMakeLists.txt
  3. 3 1
      deployment/configenv/xml_jlibpt/ComponentBase.cpp
  4. 2 1
      deployment/configenv/xml_jlibpt/EnvHelper.cpp
  5. 62 0
      deployment/configenv/xml_jlibpt/SWBackupNode.cpp
  6. 37 0
      deployment/configenv/xml_jlibpt/SWBackupNode.hpp
  7. 3 1
      deployment/configenv/xml_jlibpt/SWProcess.cpp
  8. 9 0
      deployment/configenv/xml_jlibpt/Software.cpp
  9. 43 3
      deployment/deployutils/deployutils.cpp
  10. 7 3
      deployment/deployutils/wizardInputs.cpp
  11. 1 1
      deployment/envgen/main.cpp
  12. 2 0
      deployment/envgen2/EnvGen.cpp
  13. 16 0
      deployment/envgen2/test/add-node
  14. 18 5
      deployment/envgen2/test/src/result_comparison/add_binding_esdl_1.diff
  15. 20 0
      deployment/envgen2/test/src/result_comparison/add_bkupnode_instance_1.diff
  16. 10 3
      deployment/envgen2/test/src/result_comparison/add_dynamicesdl_1.diff
  17. 1 1
      deployment/envgen2/test/src/result_comparison/add_topo_w_xml_file_1.diff
  18. 3 3
      deployment/envgen2/test/src/result_comparison/computer_mod_ip_1.diff
  19. 11 11
      deployment/envgen2/test/src/result_comparison/computer_mod_ip_2.diff
  20. 12 12
      deployment/envgen2/test/src/result_comparison/computer_rmv_ip_1.diff
  21. 3 3
      deployment/envgen2/test/src/result_comparison/dali_mod_ip_1.diff
  22. 3 3
      deployment/envgen2/test/src/result_comparison/dropzone_add_ip_1.diff
  23. 7 6
      deployment/envgen2/test/src/result_comparison/ecl_new_group.diff
  24. 29 5
      deployment/envgen2/test/src/result_comparison/env_base.xml
  25. 1 1
      deployment/envgen2/test/src/result_comparison/hd_add_computer_1.diff
  26. 39 48
      deployment/envgen2/test/src/result_comparison/manually_add_all.diff
  27. 1 1
      deployment/envgen2/test/src/result_comparison/mod_binding_1.diff
  28. 15 19
      deployment/envgen2/test/src/result_comparison/no_instance.diff
  29. 1 1
      deployment/envgen2/test/src/result_comparison/rmv_binding_1.diff
  30. 3 3
      deployment/envgen2/test/src/result_comparison/roxie_add_ip_1.diff
  31. 3 3
      deployment/envgen2/test/src/result_comparison/roxie_add_ip_2.diff
  32. 3 3
      deployment/envgen2/test/src/result_comparison/roxie_add_ip_range.diff
  33. 3 3
      deployment/envgen2/test/src/result_comparison/roxie_add_ipfile_1.diff
  34. 3 3
      deployment/envgen2/test/src/result_comparison/roxie_add_ipfile_2.diff
  35. 6 3
      deployment/envgen2/test/src/result_comparison/roxie_add_new_cluster.diff
  36. 7 3
      deployment/envgen2/test/src/result_comparison/roxie_clone_cluster_w_ips.diff
  37. 1 1
      deployment/envgen2/test/src/result_comparison/set_category_w_o_option_1.diff
  38. 3 3
      deployment/envgen2/test/src/result_comparison/set_sw_attr_w_override_option_1.diff
  39. 1 1
      deployment/envgen2/test/src/result_comparison/set_xpat_attr_1.diff
  40. 3 3
      deployment/envgen2/test/src/result_comparison/thor_add_new_cluster.diff
  41. 8 7
      deployment/envgen2/test/src/result_comparison/topo_thor2.diff
  42. 2 0
      deployment/envgen2/test/test.sh.in

+ 1 - 0
deployment/configenv/ConfigEnvError.hpp

@@ -29,6 +29,7 @@ enum CfgEnvErrorCode
    UnknownCompoent=2002,
    CannotCreateCompoent=2003,
    UnknownTask=2004,
+   MissingRequiredParam=2005,
 
    InvalidIPRange=2100,
    InvalidIP=2101,

+ 2 - 0
deployment/configenv/xml_jlibpt/CMakeLists.txt

@@ -47,6 +47,7 @@ set (    INCLUDES
          ConfigEnvFactory.hpp
          ComponentFromXSD.hpp
          environment.hpp
+         SWBackupNode.hpp
 
     )
 set (    SRCS
@@ -69,6 +70,7 @@ set (    SRCS
          SWThorCluster.cpp
          SWTopology.cpp
          ComponentFromXSD.cpp
+         SWBackupNode.cpp
     )
 
 include_directories (

+ 3 - 1
deployment/configenv/xml_jlibpt/ComponentBase.cpp

@@ -375,8 +375,10 @@ void ComponentBase::resolveSelector(const char* selector, const char* key, Strin
    String lwSelector(selector);
    if ((lwSelector.toLowerCase())->startsWith("instance"))
       out.clear().appendf("%s[@netAddress=\"%s\"]", selector, key);
-   else
+   else if (key)
       out.clear().appendf("%s[@name=\"%s\"]", selector, key);
+   else
+      out.clear().appendf("%s", selector);
 
 }
 

+ 2 - 1
deployment/configenv/xml_jlibpt/EnvHelper.cpp

@@ -349,7 +349,8 @@ const char* EnvHelper::getXMLTagName(const char* name)
       return XML_TAG_TOPOLOGY;
    else if (!strcmp(nameLC, "ftslave") || !strcmp(nameLC, "ftslaveprocess"))
       return "FTSlaveProcess";
-
+   else if (!strcmp(nameLC, "backupnode") || !strcmp(nameLC, "backup") || !strcmp(nameLC, "BackupNodeProcess"))
+      return "BackupNodeProcess";
    else
       return name;
 }

+ 62 - 0
deployment/configenv/xml_jlibpt/SWBackupNode.cpp

@@ -0,0 +1,62 @@
+/*##############################################################################
+
+    HPCC SYSTEMS software Copyright (C) 2018 HPCC Systems®.
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+############################################################################## */
+
+#include "SWBackupNode.hpp"
+#include "deployutils.hpp"
+
+namespace ech
+{
+
+SWBackupNode::SWBackupNode(const char* name, EnvHelper * envHelper):SWProcess(name, envHelper)
+{
+}
+
+unsigned SWBackupNode::add(IPropertyTree *params)
+{
+   unsigned rc = SWProcess::add(params);
+
+   IPropertyTree * envTree = m_envHelper->getEnvTree();
+   const char* key = params->queryProp("@key");
+   StringBuffer xpath;
+   xpath.clear().appendf(XML_TAG_SOFTWARE "/%s[@name=\"%s\"]", m_processName.str(), key);
+   IPropertyTree * compTree = envTree->queryPropTree(xpath.str());
+   assert(compTree);
+   const char* selector = params->queryProp("@selector");
+   if (selector && !stricmp("NodeGroup", selector))
+   {
+       IPropertyTree *nodeGroup = createPTree(selector);
+       IPropertyTree* pAttrs = params->queryPropTree("Attributes");
+       updateNode(nodeGroup, pAttrs, NULL);
+       if (!nodeGroup->hasProp("@interval"))
+       {
+          xpath.clear().appendf("xs:element/xs:complexType/xs:sequence/xs:element[@name=\"NodeGroup\"]/xs:complexType/xs:attribute[@name=\"interval\"]/@default");
+          const char *interval = m_pSchema->queryProp(xpath.str());
+          if ( interval && *interval )
+          {
+              nodeGroup->addProp("@interval", interval);
+          }
+          else
+          {
+              throw MakeStringException(CfgEnvErrorCode::MissingRequiredParam,
+                  "Missing required paramter \"interval\" and there is no default value.");
+          }
+       }
+       compTree->addPropTree(selector, nodeGroup);
+   }
+   return rc;
+}
+}

+ 37 - 0
deployment/configenv/xml_jlibpt/SWBackupNode.hpp

@@ -0,0 +1,37 @@
+/*##############################################################################
+
+    HPCC SYSTEMS software Copyright (C) 2018 HPCC Systems®.
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+############################################################################## */
+#ifndef _SWBACKUPNODE_HPP_
+#define _SWBACKUPNODE_HPP_
+
+#include "EnvHelper.hpp"
+#include "SWProcess.hpp"
+
+namespace ech
+{
+
+class SWBackupNode : public SWProcess
+{
+public:
+    SWBackupNode(const char* name, EnvHelper * envHelper);
+    virtual unsigned add(IPropertyTree *params);
+
+//protected:
+
+};
+
+}
+#endif

+ 3 - 1
deployment/configenv/xml_jlibpt/SWProcess.cpp

@@ -82,7 +82,7 @@ void SWProcess::create(IPropertyTree *params)
 
 unsigned SWProcess::add(IPropertyTree *params)
 {
-  int rc = SWComponentBase::add(params);
+  unsigned rc = SWComponentBase::add(params);
 
   IPropertyTree * envTree = m_envHelper->getEnvTree();
   const char* key = params->queryProp("@key");
@@ -98,6 +98,8 @@ unsigned SWProcess::add(IPropertyTree *params)
      {
         addInstances(compTree, params);
      }
+     // Other selectors handled by concrete software process,
+     // For example, NodeGroup in BackupNodeProcess, EspBinding in EspProcess
   }
 
   return rc;

+ 9 - 0
deployment/configenv/xml_jlibpt/Software.cpp

@@ -24,6 +24,7 @@
 #include "SWEspService.hpp"
 #include "SWDirectories.hpp"
 #include "SWDaliProcess.hpp"
+#include "SWBackupNode.hpp"
 #include "SWTopology.hpp"
 #include "deployutils.hpp"
 #include "ComponentBase.hpp"
@@ -159,6 +160,10 @@ void Software::getSWCompName(const char *inputName, StringBuffer& out)
    {
       out.append("loggingmanager");
    }
+   else if (!stricmp(compNameLC, "backup") || !stricmp(compNameLC, "backupnode"))
+   {
+      out.append("backupnode");
+   }
    else if (!stricmp(compNameLC, "agent") || !stricmp(compNameLC, "eclagent") ||
          !stricmp(compNameLC, "EclAgentiProcess"))
    {
@@ -287,6 +292,10 @@ IConfigComp* Software::getSWComp(const char *compName)
    {
       pComp = (IConfigComp*) new SWProcess(buildSetName, m_envHelper);
    }
+   else if (!stricmp(buildSetName, "backupnode"))
+   {
+      pComp = (IConfigComp*) new SWBackupNode(buildSetName, m_envHelper);
+   }
    else
    {
       pComp = (IConfigComp*) new SWProcess(buildSetName, m_envHelper);

+ 43 - 3
deployment/deployutils/deployutils.cpp

@@ -3890,6 +3890,39 @@ void getTempPath(char* tempPath, unsigned int bufsize, const char* subdir/*=NULL
 }
 #endif
 
+int   validateBackupNode(IPropertyTree * pEnvRoot, StringBuffer &sbErrMsg)
+{
+   int errCount = 0;
+   StringBuffer xpath;
+   xpath.clear().appendf("%s/BackupNodeProcess", XML_TAG_SOFTWARE);
+   Owned<IPropertyTreeIterator> backupNodeIter = pEnvRoot->getElements(xpath.str());
+   if (backupNodeIter == NULL) return errCount;
+   ForEach(*backupNodeIter)
+   {
+      IPropertyTree* pBackupNodeTree = &backupNodeIter->query();
+      Owned<IPropertyTreeIterator> backupNodeInstIter = pBackupNodeTree->getElements("Instance");
+      ForEach(*backupNodeInstIter)
+      {
+         IPropertyTree* pBackupNodeInstTree = &backupNodeInstIter->query();
+         const char * computerName =  pBackupNodeInstTree->queryProp(XML_ATTR_COMPUTER);
+         xpath.clear().appendf("%s/ThorCluster", XML_TAG_SOFTWARE);
+         if (computerName && *computerName)
+         {
+            xpath.clear().appendf("%s/ThorCluster/ThorMasterProcess[@computer=\"%s\"]/%s", XML_TAG_SOFTWARE, computerName, XML_ATTR_NAME);
+            if (pEnvRoot->queryProp(xpath.str()))
+            {
+               sbErrMsg.appendf("Error: a BackupNodeProcess instance has the same computer %s as thor master node\n", computerName);
+               errCount++;
+            }
+         }
+      }
+   }
+
+   return errCount;
+
+
+}
+
 bool validateEnv(IConstEnvironment* pConstEnv, bool abortOnException)
 {
   char tempdir[_MAX_PATH];
@@ -3919,12 +3952,19 @@ bool validateEnv(IConstEnvironment* pConstEnv, bool abortOnException)
     configGenMgr->deploy(DEFLAGS_CONFIGFILES, DEBACKUP_NONE, false, false);
     deleteRecursive(tempdir);
     const char* msg = callback.getErrorMsg();
+
+    StringBuffer sbErrMsg;
+    sbErrMsg.clear();
+    int bkupErrCount = validateBackupNode(pEnvRoot, sbErrMsg);
+
     if (msg && *msg)
+       sbErrMsg.append(msg).append("\n");
+
+    if (!sbErrMsg.isEmpty())
     {
       StringBuffer sb("Errors or warnings were found when validating the environment.\n\n");
-      sb.append(msg).append("\n");
-      sb.appendf("Total errors/warnings: %d", callback.getErrorCount() - 1);
-      throw MakeStringExceptionDirect(-1, sb.str());
+      sb.appendf("Total errors/warnings: %d", callback.getErrorCount() - 1 + bkupErrCount);
+      throw MakeStringExceptionDirect(-1, sbErrMsg.str());
     }
   }
   catch(IException* e)

+ 7 - 3
deployment/deployutils/wizardInputs.cpp

@@ -280,13 +280,14 @@ CInstDetails* CWizardInputs::getServerIPMap(const char* compName, const char* bu
     if (m_arrBuildSetsWithAssignedIPs.find(buildSetName) != NotFound)
         instDetails = new CInstDetails(compName, getIpAddrMap(buildSetName));
 
-    if (m_ipaddress.ordinality() + m_supportNodes == 1 && instDetails == NULL)
+    if (m_ipaddress.ordinality() + m_supportNodes == 1 && instDetails == NULL && strcmp(buildSetName, "backupnode"))
     {
       instDetails = new CInstDetails(compName, m_ipaddress.item(0));
       m_compIpMap.setValue(buildSetName,instDetails);
       return instDetails;
     }
-    else if (m_supportNodes == 1 && strcmp(buildSetName, "roxie") && strcmp(buildSetName, "thor" ) && instDetails == NULL)
+    else if (m_supportNodes == 1 && strcmp(buildSetName, "roxie") && strcmp(buildSetName, "thor" )
+         && strcmp(buildSetName, "backupnode") && instDetails == NULL)
     {
       instDetails = new CInstDetails(compName, m_ipaddressSupport.item(0));
       m_compIpMap.setValue(buildSetName,instDetails);
@@ -294,6 +295,9 @@ CInstDetails* CWizardInputs::getServerIPMap(const char* compName, const char* bu
     }
     else
     {
+      if (!strcmp(buildSetName, "backupnode") && m_arrBuildSetsWithAssignedIPs.find(buildSetName) == NotFound)
+         return NULL;
+
       unsigned x = 0;
       unsigned origNumOfNodes(numOfNodes);
 
@@ -341,7 +345,7 @@ CInstDetails* CWizardInputs::getServerIPMap(const char* compName, const char* bu
               numOfNodes--;
             }
           }
-          else if (!strcmp(buildSetName, "roxie"))
+          else if (!strcmp(buildSetName, "roxie") || !strcmp(buildSetName, "backupnode"))
             sb.clear().append("non-support ");
 
           if (m_arrBuildSetsWithAssignedIPs.find(buildSetName) == NotFound)

+ 1 - 1
deployment/envgen/main.cpp

@@ -121,7 +121,7 @@ int main(int argc, char** argv)
   const char* out_envname = NULL;
   const char* in_ipfilename;
   StringBuffer ipAddrs;
-  int roxieNodes=0, thorNodes=0, slavesPerNode=1, supportNodes=0, espNodes=1;
+  int roxieNodes=1, thorNodes=1, slavesPerNode=1, supportNodes=1, espNodes=1;
   bool roxieOnDemand = true;
   MapStringTo<StringBuffer> dirMap;
   StringArray overrides;

+ 2 - 0
deployment/envgen2/EnvGen.cpp

@@ -782,6 +782,8 @@ void CEnvGen::usage_update_input_format_2()
   puts("For examples:");
   puts("   -add sw:roxie#myroxie:instance@ip=1.0.0.22;1.0.0.23");
   puts("   -mod sw:dali#mydali:instance@ip=1.0.0.20");
+  puts("   -mod sw:thor#mythor@channelsPerSlave=4");
+  puts("   -mod sw:backupnode#mybackupnode:NodeGroup@name=thor2");
   puts("   -rmv hd:computer@ip=1.1.0.30");
   puts("");
 }

+ 16 - 0
deployment/envgen2/test/add-node

@@ -217,3 +217,19 @@ EOF
    fi
    run_one_test -env-in ${in_dir}/env_base.xml -env-out ${out_dir}/${test_id}.xml -add-node computer@ip=1.1.0.10
 }
+
+add_backup()
+{
+   # Test add_backupnode_instance_1
+   #--------------------------------
+   test_id=add_bkupnode_instance_1
+   if [[ $verbose -ne 0 ]]
+   then
+      cat << EOF
+
+Add a instance with ip 40.1.0.10 to BackupNode. Also add a new NodeGroup "newthorgroup"
+envgen2 -env-in env_base.xml -env-out ${test_id}.xml -add-node backupnod#mybackupnodee@ip=40.1.0.10 -add sw:backupnode#mybackupnode:NodeGroup@name=newthorgroup
+EOF
+   fi
+   run_one_test -env-in ${in_dir}/env_base.xml -env-out ${out_dir}/${test_id}.xml -add-node backupnode#mybackupnode@ip=40.1.0.10 -add sw:backupnode#mybackupnode:NodeGroup@name=newthorgroup
+}

+ 18 - 5
deployment/envgen2/test/src/result_comparison/add_binding_esdl_1.diff

@@ -1,4 +1,4 @@
-734a735,744
+749a750,765
 >    <EspBinding defaultForPort="true"
 >                defaultServiceVersion=""
 >                name="mydesdl"
@@ -8,18 +8,31 @@
 >                service="dynamicesdl"
 >                type=""
 >                workunitsBasedn="ou=workunits,ou=ecl"
->                wsdlServiceAddress=""/>
-965a976,988
+>                wsdlServiceAddress="">
+>     <Authenticate access="Access"
+>                   description="DESDLServiceAccess"
+>                   path="/"
+>                   required="Read"
+>                   resource="Access"/>
+>    </EspBinding>
+984a1001,1020
+>    </Properties>
 >   </EspService>
 >   <EspService build="_"
 >               buildSet="DynamicESDL"
 >               description="My ESDL Based Web Service Interface"
 >               LoggingManager=""
 >               name="dynamicesdl"
->               namespaceBase="urn:hpccsystems:ws">
+>               namespaceBase="urn:hpccsystems:ws"
+>               namespaceScheme="">
 >    <Properties bindingType="EsdlBinding"
 >                defaultPort="8043"
 >                defaultResourcesBasedn="ou=EspServices,ou=ecl"
 >                defaultSecurePort="18043"
 >                plugin="esdl_svc_engine"
->                type="DynamicESDL"/>
+>                type="DynamicESDL">
+>     <Authenticate access="Access"
+>                   description="DESDLServiceAccess"
+>                   path="/"
+>                   required="Read"
+>                   resource="Access"/>

+ 20 - 0
deployment/envgen2/test/src/result_comparison/add_bkupnode_instance_1.diff

@@ -0,0 +1,20 @@
+35a36,39
+>   <Computer computerType="linuxmachine"
+>             domain="localdomain"
+>             name="node000010"
+>             netAddress="40.1.0.10"/>
+423a428,431
+>    <Instance computer="node000010"
+>              directory="/var/lib/HPCCSystems/mybackupnode"
+>              name="s"
+>              netAddress="40.1.0.10"/>
+424a433
+>    <NodeGroup interval="24" name="newthorgroup"/>
+437a447,453
+>              parallelRequestLimit="20"
+>              throttleCPULimit="75"
+>              throttleDelayMs="5000"/>
+>    <Instance computer="node000010"
+>              directory="/var/lib/HPCCSystems/mydafilesrv"
+>              name="s"
+>              netAddress="40.1.0.10"

+ 10 - 3
deployment/envgen2/test/src/result_comparison/add_dynamicesdl_1.diff

@@ -1,14 +1,21 @@
-966a967,979
+986a987,1006
 >   <EspService build="_"
 >               buildSet="DynamicESDL"
 >               description="My ESDL Based Web Service Interface"
 >               LoggingManager=""
 >               name="dynamicesdl"
->               namespaceBase="urn:hpccsystems:ws">
+>               namespaceBase="urn:hpccsystems:ws"
+>               namespaceScheme="">
 >    <Properties bindingType="EsdlBinding"
 >                defaultPort="8043"
 >                defaultResourcesBasedn="ou=EspServices,ou=ecl"
 >                defaultSecurePort="18043"
 >                plugin="esdl_svc_engine"
->                type="DynamicESDL"/>
+>                type="DynamicESDL">
+>     <Authenticate access="Access"
+>                   description="DESDLServiceAccess"
+>                   path="/"
+>                   required="Read"
+>                   resource="Access"/>
+>    </Properties>
 >   </EspService>

+ 1 - 1
deployment/envgen2/test/src/result_comparison/add_topo_w_xml_file_1.diff

@@ -1,4 +1,4 @@
-1253a1254,1259
+1277a1278,1283
 >    <Cluster alias="" name="thor2" prefix="thor2">
 >     <EclAgentProcess process="myeclagent2"/>
 >     <EclCCServerProcess process="myeclccserver2"/>

+ 3 - 3
deployment/envgen2/test/src/result_comparison/computer_mod_ip_1.diff

@@ -7,7 +7,7 @@
 >             domain="localdomain"
 >             name="node000031"
 >             netAddress="1.0.0.31"/>
-428a437,450
+440a449,462
 >    <Instance computer="node000030"
 >              directory="/var/lib/HPCCSystems/mydafilesrv"
 >              name="s"
@@ -22,7 +22,7 @@
 >              parallelRequestLimit="20"
 >              throttleCPULimit="75"
 >              throttleDelayMs="5000"/>
-976a999,1008
+996a1019,1028
 >    <Instance computer="node000030"
 >              directory="/var/lib/HPCCSystems/myftslave"
 >              name="s"
@@ -33,6 +33,6 @@
 >              name="s_2"
 >              netAddress="1.0.0.31"
 >              program="/opt/HPCCSystems/bin/ftslave"/>
-1135a1168,1169
+1159a1192,1193
 >    <RoxieServerProcess computer="node000030" name="s" netAddress="1.1.0.50"/>
 >    <RoxieServerProcess computer="node000031" name="s_2" netAddress="1.0.0.31"/>

+ 11 - 11
deployment/envgen2/test/src/result_comparison/computer_mod_ip_2.diff

@@ -2,47 +2,47 @@
 <             netAddress="."/>
 ---
 >             netAddress="1.1.0.60"/>
-425c425
+437c437
 <              netAddress="."
 ---
 >              netAddress="1.1.0.60"
-438c438
+450c450
 <              netAddress="."
 ---
 >              netAddress="1.1.0.60"
-453c453
+465c465
 <              netAddress="."/>
 ---
 >              netAddress="1.1.0.60"/>
-479c479
+491c491
 <    <ServerList server="."/>
 ---
 >    <ServerList server="1.1.0.60"/>
-500c500
+512c512
 <              netAddress="."/>
 ---
 >              netAddress="1.1.0.60"/>
-515c515
+528c528
 <              netAddress="."/>
 ---
 >              netAddress="1.1.0.60"/>
-525c525
+538c538
 <              netAddress="."/>
 ---
 >              netAddress="1.1.0.60"/>
-755c755
+770c770
 <              netAddress="."/>
 ---
 >              netAddress="1.1.0.60"/>
-975c975
+995c995
 <              netAddress="."
 ---
 >              netAddress="1.1.0.60"
-1135c1135
+1159c1159
 <    <RoxieServerProcess computer="node002015" name="node002015" netAddress="."/>
 ---
 >    <RoxieServerProcess computer="node002015" name="node002015" netAddress="1.1.0.60"/>
-1192c1192
+1216c1216
 <              netAddress="."
 ---
 >              netAddress="1.1.0.60"

+ 12 - 12
deployment/envgen2/test/src/result_comparison/computer_rmv_ip_1.diff

@@ -3,7 +3,7 @@
 <             domain="localdomain"
 <             name="node002015"
 <             netAddress="."/>
-421,429c417
+433,441c429
 <                     version="1">
 <    <Instance computer="node002015"
 <              directory="/var/lib/HPCCSystems/mydafilesrv"
@@ -15,7 +15,7 @@
 <   </DafilesrvProcess>
 ---
 >                     version="1"/>
-434,440c422
+446,452c434
 <                      recoverFromIncErrors="true">
 <    <Instance computer="node002015"
 <              directory="/var/lib/HPCCSystems/mydali"
@@ -25,18 +25,18 @@
 <   </DaliServerProcess>
 ---
 >                      recoverFromIncErrors="true"/>
-450,453d431
+462,465d443
 <    <Instance computer="node002015"
 <              directory="/var/lib/HPCCSystems/mydfuserver"
 <              name="s1"
 <              netAddress="."/>
-478,480c456
+490,492c468
 <             umask="022">
 <    <ServerList server="."/>
 <   </DropZone>
 ---
 >             umask="022"/>
-496,501c472
+508,513c484
 <                    wuQueueName="myeclagent_queue">
 <    <Instance computer="node002015"
 <              directory="/var/lib/HPCCSystems/myeclagent"
@@ -45,7 +45,7 @@
 <   </EclAgentProcess>
 ---
 >                    wuQueueName="myeclagent_queue"/>
-511,516c482
+524,529c495
 <                       traceLevel="1">
 <    <Instance computer="node002015"
 <              directory="/var/lib/HPCCSystems/myeclccserver"
@@ -54,7 +54,7 @@
 <   </EclCCServerProcess>
 ---
 >                       traceLevel="1"/>
-521,526c487
+534,539c500
 <                        name="myeclscheduler">
 <    <Instance computer="node002015"
 <              directory="/var/lib/HPCCSystems/myeclscheduler"
@@ -63,13 +63,13 @@
 <   </EclSchedulerProcess>
 ---
 >                        name="myeclscheduler"/>
-751,755d711
+766,770d726
 <    <Instance computer="node002015"
 <              directory="/var/lib/HPCCSystems/myesp"
 <              FQDN=""
 <              name="s"
 <              netAddress="."/>
-971,977c927
+991,997c947
 <                   version="1">
 <    <Instance computer="node002015"
 <              directory="/var/lib/HPCCSystems/myftslave"
@@ -79,9 +79,9 @@
 <   </FTSlaveProcess>
 ---
 >                   version="1"/>
-1135d1084
+1159d1108
 <    <RoxieServerProcess computer="node002015" name="node002015" netAddress="."/>
-1188,1194c1137
+1212,1218c1161
 <                       xrefMaxScanThreads="500">
 <    <Instance computer="node002015"
 <              directory="/var/lib/HPCCSystems/mysasha"
@@ -91,6 +91,6 @@
 <   </SashaServerProcess>
 ---
 >                       xrefMaxScanThreads="500"/>
-1228,1229d1170
+1252,1253d1194
 <    <ThorMasterProcess computer="node002015" name="m1"/>
 <    <ThorSlaveProcess computer="node002015" name="s1"/>

+ 3 - 3
deployment/envgen2/test/src/result_comparison/dali_mod_ip_1.diff

@@ -3,7 +3,7 @@
 >             domain="localdomain"
 >             name="node000020"
 >             netAddress="1.0.0.20"/>
-428a433,439
+440a445,451
 >    <Instance computer="node000020"
 >              directory="/var/lib/HPCCSystems/mydafilesrv"
 >              name="s"
@@ -11,11 +11,11 @@
 >              parallelRequestLimit="20"
 >              throttleCPULimit="75"
 >              throttleDelayMs="5000"/>
-435c446
+447c458
 <    <Instance computer="node002015"
 ---
 >    <Instance computer="node000020"
-438c449
+450c461
 <              netAddress="."
 ---
 >              netAddress="1.0.0.20"

+ 3 - 3
deployment/envgen2/test/src/result_comparison/dropzone_add_ip_1.diff

@@ -3,7 +3,7 @@
 >             domain="localdomain"
 >             name="node000010"
 >             netAddress="1.0.0.10"/>
-428a433,439
+440a445,451
 >    <Instance computer="node000010"
 >              directory="/var/lib/HPCCSystems/mydafilesrv"
 >              name="s"
@@ -11,9 +11,9 @@
 >              parallelRequestLimit="20"
 >              throttleCPULimit="75"
 >              throttleDelayMs="5000"/>
-479a491
+491a503
 >    <ServerList name="s" server="1.0.0.10"/>
-975a988,992
+995a1008,1012
 >              program="/opt/HPCCSystems/bin/ftslave"/>
 >    <Instance computer="node000010"
 >              directory="/var/lib/HPCCSystems/myftslave"

+ 7 - 6
deployment/envgen2/test/src/result_comparison/ecl_new_group.diff

@@ -23,7 +23,7 @@
 >             domain="localdomain"
 >             name="node010030"
 >             netAddress="1.20.10.30"/>
-428a453,494
+440a465,506
 >    <Instance computer="node000026"
 >              directory="/var/lib/HPCCSystems/mydafilesrv"
 >              name="s"
@@ -66,7 +66,7 @@
 >              parallelRequestLimit="20"
 >              throttleCPULimit="75"
 >              throttleDelayMs="5000"/>
-501a568,588
+513a580,600
 >   <EclAgentProcess allowedPipePrograms="*"
 >                    build="_"
 >                    buildSet="eclagent"
@@ -88,7 +88,7 @@
 >              name="s"
 >              netAddress="1.20.10.10"/>
 >   </EclAgentProcess>
-516a604,618
+529a617,632
 >   <EclCCServerProcess build="_"
 >                       buildSet="eclccserver"
 >                       daliServers="mydali"
@@ -97,6 +97,7 @@
 >                       enableSysLog="true"
 >                       generatePrecompiledHeader="true"
 >                       maxEclccProcesses="4"
+>                       monitorInterval="60"
 >                       name="myeclccserver2"
 >                       traceLevel="1">
 >    <Instance computer="node010030"
@@ -104,7 +105,7 @@
 >              name="s"
 >              netAddress="1.20.10.30"/>
 >   </EclCCServerProcess>
-526a629,638
+539a643,652
 >   <EclSchedulerProcess build="_"
 >                        buildSet="eclscheduler"
 >                        daliServers="mydali"
@@ -115,7 +116,7 @@
 >              name="s"
 >              netAddress="1.20.10.20"/>
 >   </EclSchedulerProcess>
-976a1089,1103
+996a1110,1124
 >    <Instance computer="node000026"
 >              directory="/var/lib/HPCCSystems/myftslave"
 >              name="s"
@@ -131,7 +132,7 @@
 >              name="s_3"
 >              netAddress="1.0.0.28"
 >              program="/opt/HPCCSystems/bin/ftslave"/>
-1229a1357,1423
+1253a1382,1448
 >   </ThorCluster>
 >   <ThorCluster affinity=""
 >                allowedPipePrograms="*"

+ 29 - 5
deployment/envgen2/test/src/result_comparison/env_base.xml

@@ -353,7 +353,13 @@
                 defaultResourcesBasedn="ou=EspServices,ou=ecl"
                 defaultSecurePort="18043"
                 plugin="esdl_svc_engine"
-                type="DynamicESDL"/>
+                type="DynamicESDL">
+     <Authenticate access="Access"
+                   description="DESDLServiceAccess"
+                   path="/"
+                   required="Read"
+                   resource="Access"/>
+    </Properties>
    </BuildSet>
    <BuildSet deployable="no"
              installSet="deploy_map.xml"
@@ -411,6 +417,12 @@
   </Build>
  </Programs>
  <Software>
+  <BackupNodeProcess build="_"
+                     buildSet="backupnode"
+                     description="BackupNode process"
+                     name="mybackupnode">
+   <NodeGroup interval="24" name="mythor"/>
+  </BackupNodeProcess>
   <DafilesrvProcess build="_"
                     buildSet="dafilesrv"
                     description="DaFileSrv process"
@@ -507,6 +519,7 @@
                       enableSysLog="true"
                       generatePrecompiledHeader="true"
                       maxEclccProcesses="4"
+                      monitorInterval="60"
                       name="myeclccserver"
                       traceLevel="1">
    <Instance computer="node002015"
@@ -540,11 +553,13 @@
               logResponses="false"
               maxBacklogQueueSize="200"
               maxConcurrentThreads="0"
+              MaxFileAccessExpirySeconds="86400"
               MaxPageCacheItems="1000"
               maxPersistentIdleTime="60"
               maxPersistentRequests="100"
               maxRequestEntityLength="8000000"
               name="myesp"
+              namespaceScheme="basic"
               PageCacheTimeoutSeconds="600"
               perfReportDelay="60"
               portalurl="http://hpccsystems.com/download"
@@ -742,7 +757,7 @@
           enableVerification="false"
           organization="Customer of HPCCSystems"
           organizationalUnit=""
-          passphrase="hpccsystems-platform"
+          passphrase=""
           privateKeyFileName="/home/hpcc/certificate/key.pem"
           regenerateCredentials="false"
           requireAddressMatch="false"
@@ -763,7 +778,7 @@
               defaultTargetCluster=""
               description="ESP services for SMC"
               disableUppercaseTranslation="false"
-              elasticSearchAdresses=""
+              elasticSearchAddresses=""
               elasticSearchPort="9200"
               enableLogDaliConnection="false"
               enableSystemUseRewrite="false"
@@ -772,7 +787,7 @@
               kibanaAddress="localhost"
               kibanaEntryPointURI=""
               kibanaPort="5601"
-              logStashAdresses=""
+              logStashAddresses=""
               logStashPort=""
               monitorDaliFileServer="false"
               name="EclWatch"
@@ -785,7 +800,12 @@
               viewTimeout="1000"
               warnIfCpuLoadOver="95"
               warnIfFreeMemoryUnder="5"
-              warnIfFreeStorageUnder="5">
+              warnIfFreeStorageUnder="5"
+              ZAPEmailFrom=""
+              ZAPEmailMaxAttachmentSize=""
+              ZAPEmailServer=""
+              ZAPEmailServerPort=""
+              ZAPEmailTo="">
    <Properties defaultPort="8010"
                defaultResourcesBasedn="ou=SMC,ou=EspServices,ou=ecl"
                defaultSecurePort="18010"
@@ -988,6 +1008,7 @@
                 channelsPerNode="1"
                 checkCompleted="true"
                 checkFileDate="true"
+                collectFactoryStatistics="true"
                 copyResources="false"
                 coresPerQuery="0"
                 cyclicOffset="1"
@@ -1060,6 +1081,9 @@
                 multicastBase="239.1.1.1"
                 multicastLast="239.1.254.254"
                 multicastTTL="1"
+                mysqlCacheCheckPeriod="10000"
+                mysqlCacheTimeoutPeriod="60000"
+                mysqlConnectionCacheSize="10"
                 name="myroxie"
                 nodeCacheMem="100"
                 nodeCachePreload="false"

+ 1 - 1
deployment/envgen2/test/src/result_comparison/hd_add_computer_1.diff

@@ -3,7 +3,7 @@
 >             domain="localdomain"
 >             name="node000010"
 >             netAddress="1.1.0.10"/>
-425a430,436
+437a442,448
 >              parallelRequestLimit="20"
 >              throttleCPULimit="75"
 >              throttleDelayMs="5000"/>

+ 39 - 48
deployment/envgen2/test/src/result_comparison/manually_add_all.diff

@@ -32,11 +32,11 @@
 >             domain="localdomain"
 >             name="node000028"
 >             netAddress="1.0.0.28"/>
-422c450
+434c462
 <    <Instance computer="node002015"
 ---
 >    <Instance computer="node000021"
-424,425c452,502
+436,437c464,514
 <              name="s1"
 <              netAddress="."
 ---
@@ -91,80 +91,72 @@
 >              directory="/var/lib/HPCCSystems/mydafilesrv"
 >              name="s_8"
 >              netAddress="1.0.0.28"
-435c512
+447c524
 <    <Instance computer="node002015"
 ---
 >    <Instance computer="node000021"
-437,438c514,515
+449,450c526,527
 <              name="s1"
 <              netAddress="."
 ---
 >              name="s"
 >              netAddress="1.0.0.21"
-450c527
+462c539
 <    <Instance computer="node002015"
 ---
 >    <Instance computer="node000022"
-452,453c529,530
+464,465c541,542
 <              name="s1"
 <              netAddress="."/>
 ---
 >              name="s"
 >              netAddress="1.0.0.22"/>
-479c556,557
+491c568,569
 <    <ServerList server="."/>
 ---
 >    <ServerList server=""/>
 >    <ServerList name="s" server="1.0.0.23"/>
-497c575
+509c587
 <    <Instance computer="node002015"
 ---
 >    <Instance computer="node000022"
-499,500c577,578
+511,512c589,590
 <              name="s1"
 <              netAddress="."/>
 ---
 >              name="s"
 >              netAddress="1.0.0.22"/>
-512c590
+525c603
 <    <Instance computer="node002015"
 ---
 >    <Instance computer="node000023"
-514,515c592,593
+527,528c605,606
 <              name="s1"
 <              netAddress="."/>
 ---
 >              name="s"
 >              netAddress="1.0.0.23"/>
-522c600
+535c613
 <    <Instance computer="node002015"
 ---
 >    <Instance computer="node000022"
-524,525c602,603
+537,538c615,616
 <              name="s1"
 <              netAddress="."/>
 ---
 >              name="s"
 >              netAddress="1.0.0.22"/>
-751c829
+766c844
 <    <Instance computer="node002015"
 ---
 >    <Instance computer="node000024"
-753d830
+768d845
 <              FQDN=""
-755c832
+770c847
 <              netAddress="."/>
 ---
 >              netAddress="1.0.0.24"/>
-766c843
-<               elasticSearchAdresses=""
----
->               elasticSearchAddresses=""
-775c852
-<               logStashAdresses=""
----
->               logStashAddresses=""
-972c1049,1069
+992c1069,1089
 <    <Instance computer="node002015"
 ---
 >    <Instance computer="node000023"
@@ -188,39 +180,38 @@
 >              netAddress="1.0.0.27"
 >              program="/opt/HPCCSystems/bin/ftslave"/>
 >    <Instance computer="node000028"
-974,975c1071,1072
+994,995c1091,1092
 <              name="s1"
 <              netAddress="."
 ---
 >              name="s_5"
 >              netAddress="1.0.0.28"
-991c1088,1089
+1012c1109
 <                 copyResources="false"
 ---
->                 collectFactoryStatistics="true"
 >                 copyResources="true"
-1012c1110
+1033c1130
 <                 directory="/var/lib/HPCCSystems/myroxie"
 ---
 >                 directory="/var/lib/HPCCSystems/roxie/"
-1033c1131
+1054c1151
 <                 lazyOpen="true"
 ---
 >                 lazyOpen="smart"
-1125c1223
+1149c1246
 <                      name="farm1"
 ---
 >                      name="farm"
-1131c1229
+1155c1252
 <                      name="farm2"
 ---
 >                      name="farm_2"
-1135c1233,1234
+1159c1256,1257
 <    <RoxieServerProcess computer="node002015" name="node002015" netAddress="."/>
 ---
 >    <RoxieServerProcess computer="node000025" name="s" netAddress="1.0.0.25"/>
 >    <RoxieServerProcess computer="node000026" name="s_2" netAddress="1.0.0.26"/>
-1188,1195c1287,1290
+1212,1219c1310,1313
 <                       xrefMaxScanThreads="500">
 <    <Instance computer="node002015"
 <              directory="/var/lib/HPCCSystems/mysasha"
@@ -234,48 +225,48 @@
 >   <ThorCluster affinity=""
 >                allowedPipePrograms="*"
 >                autoAffinity="true"
-1199a1295
+1223a1318
 >                checkPointRecovery="false"
-1201c1297
+1225c1320
 <                computer="node002015"
 ---
 >                computer="node000027"
-1202a1299
+1226a1322
 >                defaultOutputNodeGroup=""
-1203a1301
+1227a1324
 >                externalProgDir=""
-1204a1303,1304
+1228a1326,1327
 >                globalMemorySize=""
 >                heapMasterUseHugePages=""
-1208c1308,1311
+1232c1331,1334
 <                localThor="true"
 ---
 >                httpCallerIdHeader="HPCC-Caller-Id"
 >                httpGlobalIdHeader="HPCC-Global-Id"
 >                idleRestartPeriod="480"
 >                localThor="false"
-1209a1313
+1233a1336
 >                masterMemorySize=""
-1210a1315,1316
+1234a1338,1339
 >                maxActivityCores="0"
 >                memorySpillAt=""
-1211a1318,1320
+1235a1341,1343
 >                multiThorExclusionLockName=""
 >                multiThorMemoryThreshold=""
 >                multiThorPriorityLock="false"
-1212a1322
+1236a1345
 >                nodeGroup=""
-1215,1216c1325,1327
+1239,1240c1348,1350
 <                replicateAsync="false"
 <                replicateOutputs="false"
 ---
 >                replicateAsync="true"
 >                replicateOutputs="true"
 >                slaveDownTimeout="300"
-1218a1330,1331
+1242a1353,1354
 >                smallSortThreshold="1024"
 >                verifyDaliConnectionInterval="300"
-1220,1221c1333,1338
+1244,1245c1356,1361
 <                watchdogProgressEnabled="true">
 <    <Debug/>
 ---
@@ -285,7 +276,7 @@
 >           crcWriteEnabled="true"
 >           dllsToSlaves="true"
 >           slaveDaliClient="false"/>
-1227,1229c1344,1353
+1251,1253c1367,1376
 <    <SwapNode AutoSwapNode="false"/>
 <    <ThorMasterProcess computer="node002015" name="m1"/>
 <    <ThorSlaveProcess computer="node002015" name="s1"/>

+ 1 - 1
deployment/envgen2/test/src/result_comparison/mod_binding_1.diff

@@ -1,4 +1,4 @@
-565c565
+580c580
 <                port="8010"
 ---
 >                port="8020"

+ 15 - 19
deployment/envgen2/test/src/result_comparison/no_instance.diff

@@ -3,7 +3,7 @@
 <             domain="localdomain"
 <             name="node002015"
 <             netAddress="."/>
-421,429c417
+433,441c429
 <                     version="1">
 <    <Instance computer="node002015"
 <              directory="/var/lib/HPCCSystems/mydafilesrv"
@@ -15,7 +15,7 @@
 <   </DafilesrvProcess>
 ---
 >                     version="1"/>
-434,440c422
+446,452c434
 <                      recoverFromIncErrors="true">
 <    <Instance computer="node002015"
 <              directory="/var/lib/HPCCSystems/mydali"
@@ -25,16 +25,16 @@
 <   </DaliServerProcess>
 ---
 >                      recoverFromIncErrors="true"/>
-450,453d431
+462,465d443
 <    <Instance computer="node002015"
 <              directory="/var/lib/HPCCSystems/mydfuserver"
 <              name="s1"
 <              netAddress="."/>
-479c457
+491c469
 <    <ServerList server="."/>
 ---
 >    <ServerList server=""/>
-496,501c474
+508,513c486
 <                    wuQueueName="myeclagent_queue">
 <    <Instance computer="node002015"
 <              directory="/var/lib/HPCCSystems/myeclagent"
@@ -43,7 +43,7 @@
 <   </EclAgentProcess>
 ---
 >                    wuQueueName="myeclagent_queue"/>
-511,516c484
+524,529c497
 <                       traceLevel="1">
 <    <Instance computer="node002015"
 <              directory="/var/lib/HPCCSystems/myeclccserver"
@@ -52,7 +52,7 @@
 <   </EclCCServerProcess>
 ---
 >                       traceLevel="1"/>
-521,526c489
+534,539c502
 <                        name="myeclscheduler">
 <    <Instance computer="node002015"
 <              directory="/var/lib/HPCCSystems/myeclscheduler"
@@ -61,21 +61,13 @@
 <   </EclSchedulerProcess>
 ---
 >                        name="myeclscheduler"/>
-751,755d713
+766,770d728
 <    <Instance computer="node002015"
 <              directory="/var/lib/HPCCSystems/myesp"
 <              FQDN=""
 <              name="s"
 <              netAddress="."/>
-766c724
-<               elasticSearchAdresses=""
----
->               elasticSearchAddresses=""
-775c733
-<               logStashAdresses=""
----
->               logStashAddresses=""
-971,1136c929
+991,1160c949
 <                   version="1">
 <    <Instance computer="node002015"
 <              directory="/var/lib/HPCCSystems/myftslave"
@@ -96,6 +88,7 @@
 <                 channelsPerNode="1"
 <                 checkCompleted="true"
 <                 checkFileDate="true"
+<                 collectFactoryStatistics="true"
 <                 copyResources="false"
 <                 coresPerQuery="0"
 <                 cyclicOffset="1"
@@ -168,6 +161,9 @@
 <                 multicastBase="239.1.1.1"
 <                 multicastLast="239.1.254.254"
 <                 multicastTTL="1"
+<                 mysqlCacheCheckPeriod="10000"
+<                 mysqlCacheTimeoutPeriod="60000"
+<                 mysqlConnectionCacheSize="10"
 <                 name="myroxie"
 <                 nodeCacheMem="100"
 <                 nodeCachePreload="false"
@@ -244,7 +240,7 @@
 <   </RoxieCluster>
 ---
 >                   version="1"/>
-1188,1230c981
+1212,1254c1001
 <                       xrefMaxScanThreads="500">
 <    <Instance computer="node002015"
 <              directory="/var/lib/HPCCSystems/mysasha"
@@ -290,7 +286,7 @@
 <   </ThorCluster>
 ---
 >                       xrefMaxScanThreads="500"/>
-1236,1252d986
+1260,1276d1006
 <    </Cluster>
 <    <Cluster alias="" name="thor" prefix="thor">
 <     <EclAgentProcess process="myeclagent"/>

+ 1 - 1
deployment/envgen2/test/src/result_comparison/rmv_binding_1.diff

@@ -1,4 +1,4 @@
-564,684d563
+579,699d578
 <                name="myespsmc"
 <                port="8010"
 <                protocol="http"

+ 3 - 3
deployment/envgen2/test/src/result_comparison/roxie_add_ip_1.diff

@@ -3,7 +3,7 @@
 >             domain="localdomain"
 >             name="node000022"
 >             netAddress="1.0.0.22"/>
-428a433,439
+440a445,451
 >    <Instance computer="node000022"
 >              directory="/var/lib/HPCCSystems/mydafilesrv"
 >              name="s"
@@ -11,11 +11,11 @@
 >              parallelRequestLimit="20"
 >              throttleCPULimit="75"
 >              throttleDelayMs="5000"/>
-976a988,992
+996a1008,1012
 >    <Instance computer="node000022"
 >              directory="/var/lib/HPCCSystems/myftslave"
 >              name="s"
 >              netAddress="1.0.0.22"
 >              program="/opt/HPCCSystems/bin/ftslave"/>
-1135a1152
+1159a1176
 >    <RoxieServerProcess computer="node000022" name="s" netAddress="1.0.0.22"/>

+ 3 - 3
deployment/envgen2/test/src/result_comparison/roxie_add_ip_2.diff

@@ -7,7 +7,7 @@
 >             domain="localdomain"
 >             name="node000023"
 >             netAddress="1.0.0.23"/>
-428a437,450
+440a449,462
 >    <Instance computer="node000022"
 >              directory="/var/lib/HPCCSystems/mydafilesrv"
 >              name="s"
@@ -22,7 +22,7 @@
 >              parallelRequestLimit="20"
 >              throttleCPULimit="75"
 >              throttleDelayMs="5000"/>
-976a999,1008
+996a1019,1028
 >    <Instance computer="node000022"
 >              directory="/var/lib/HPCCSystems/myftslave"
 >              name="s"
@@ -33,6 +33,6 @@
 >              name="s_2"
 >              netAddress="1.0.0.23"
 >              program="/opt/HPCCSystems/bin/ftslave"/>
-1135a1168,1169
+1159a1192,1193
 >    <RoxieServerProcess computer="node000022" name="s" netAddress="1.0.0.22"/>
 >    <RoxieServerProcess computer="node000023" name="s_2" netAddress="1.0.0.23"/>

+ 3 - 3
deployment/envgen2/test/src/result_comparison/roxie_add_ip_range.diff

@@ -7,7 +7,7 @@
 >             domain="localdomain"
 >             name="node000023"
 >             netAddress="1.0.0.23"/>
-428a437,450
+440a449,462
 >    <Instance computer="node000022"
 >              directory="/var/lib/HPCCSystems/mydafilesrv"
 >              name="s"
@@ -22,7 +22,7 @@
 >              parallelRequestLimit="20"
 >              throttleCPULimit="75"
 >              throttleDelayMs="5000"/>
-976a999,1008
+996a1019,1028
 >    <Instance computer="node000022"
 >              directory="/var/lib/HPCCSystems/myftslave"
 >              name="s"
@@ -33,6 +33,6 @@
 >              name="s_2"
 >              netAddress="1.0.0.23"
 >              program="/opt/HPCCSystems/bin/ftslave"/>
-1135a1168,1169
+1159a1192,1193
 >    <RoxieServerProcess computer="node000022" name="s" netAddress="1.0.0.22"/>
 >    <RoxieServerProcess computer="node000023" name="s_2" netAddress="1.0.0.23"/>

+ 3 - 3
deployment/envgen2/test/src/result_comparison/roxie_add_ipfile_1.diff

@@ -11,7 +11,7 @@
 >             domain="localdomain"
 >             name="node020013"
 >             netAddress="10.230.20.13"/>
-428a441,461
+440a453,473
 >    <Instance computer="node020010"
 >              directory="/var/lib/HPCCSystems/mydafilesrv"
 >              name="s"
@@ -33,7 +33,7 @@
 >              parallelRequestLimit="20"
 >              throttleCPULimit="75"
 >              throttleDelayMs="5000"/>
-976a1010,1024
+996a1030,1044
 >    <Instance computer="node020010"
 >              directory="/var/lib/HPCCSystems/myftslave"
 >              name="s"
@@ -49,7 +49,7 @@
 >              name="s_3"
 >              netAddress="10.230.20.13"
 >              program="/opt/HPCCSystems/bin/ftslave"/>
-1135a1184,1186
+1159a1208,1210
 >    <RoxieServerProcess computer="node020010" name="s" netAddress="10.230.20.10"/>
 >    <RoxieServerProcess computer="node020012" name="s_2" netAddress="10.230.20.12"/>
 >    <RoxieServerProcess computer="node020013" name="s_3" netAddress="10.230.20.13"/>

+ 3 - 3
deployment/envgen2/test/src/result_comparison/roxie_add_ipfile_2.diff

@@ -11,7 +11,7 @@
 >             domain="localdomain"
 >             name="node020013"
 >             netAddress="10.230.20.13"/>
-428a441,461
+440a453,473
 >    <Instance computer="node020010"
 >              directory="/var/lib/HPCCSystems/mydafilesrv"
 >              name="s"
@@ -33,7 +33,7 @@
 >              parallelRequestLimit="20"
 >              throttleCPULimit="75"
 >              throttleDelayMs="5000"/>
-976a1010,1024
+996a1030,1044
 >    <Instance computer="node020010"
 >              directory="/var/lib/HPCCSystems/myftslave"
 >              name="s"
@@ -49,7 +49,7 @@
 >              name="s_3"
 >              netAddress="10.230.20.13"
 >              program="/opt/HPCCSystems/bin/ftslave"/>
-1135a1184,1186
+1159a1208,1210
 >    <RoxieServerProcess computer="node020010" name="s" netAddress="10.230.20.10"/>
 >    <RoxieServerProcess computer="node020012" name="s_2" netAddress="10.230.20.12"/>
 >    <RoxieServerProcess computer="node020013" name="s_3" netAddress="10.230.20.13"/>

+ 6 - 3
deployment/envgen2/test/src/result_comparison/roxie_add_new_cluster.diff

@@ -7,7 +7,7 @@
 >             domain="localdomain"
 >             name="node000023"
 >             netAddress="1.0.0.23"/>
-428a437,450
+440a449,462
 >    <Instance computer="node000022"
 >              directory="/var/lib/HPCCSystems/mydafilesrv"
 >              name="s"
@@ -22,7 +22,7 @@
 >              parallelRequestLimit="20"
 >              throttleCPULimit="75"
 >              throttleDelayMs="5000"/>
-976a999,1008
+996a1019,1028
 >    <Instance computer="node000022"
 >              directory="/var/lib/HPCCSystems/myftslave"
 >              name="s"
@@ -33,7 +33,7 @@
 >              name="s_2"
 >              netAddress="1.0.0.23"
 >              program="/opt/HPCCSystems/bin/ftslave"/>
-1135a1168,1328
+1159a1192,1355
 >   </RoxieCluster>
 >   <RoxieCluster affinity="0"
 >                 allFilesDynamic="false"
@@ -121,6 +121,9 @@
 >                 multicastBase="239.1.1.1"
 >                 multicastLast="239.1.254.254"
 >                 multicastTTL="1"
+>                 mysqlCacheCheckPeriod="10000"
+>                 mysqlCacheTimeoutPeriod="60000"
+>                 mysqlConnectionCacheSize="10"
 >                 name="newroxie"
 >                 nodeCacheMem="100"
 >                 nodeCachePreload="false"

+ 7 - 3
deployment/envgen2/test/src/result_comparison/roxie_clone_cluster_w_ips.diff

@@ -7,7 +7,7 @@
 >             domain="localdomain"
 >             name="node000043"
 >             netAddress="1.0.0.43"/>
-428a437,450
+440a449,462
 >    <Instance computer="node000042"
 >              directory="/var/lib/HPCCSystems/mydafilesrv"
 >              name="s"
@@ -22,7 +22,7 @@
 >              parallelRequestLimit="20"
 >              throttleCPULimit="75"
 >              throttleDelayMs="5000"/>
-976a999,1008
+996a1019,1028
 >    <Instance computer="node000042"
 >              directory="/var/lib/HPCCSystems/myftslave"
 >              name="s"
@@ -33,7 +33,7 @@
 >              name="s_2"
 >              netAddress="1.0.0.43"
 >              program="/opt/HPCCSystems/bin/ftslave"/>
-1135a1168,1340
+1159a1192,1368
 >   </RoxieCluster>
 >   <RoxieCluster affinity="0"
 >                 allFilesDynamic="false"
@@ -48,6 +48,7 @@
 >                 channelsPerNode="1"
 >                 checkCompleted="true"
 >                 checkFileDate="true"
+>                 collectFactoryStatistics="true"
 >                 copyResources="false"
 >                 coresPerQuery="0"
 >                 cyclicOffset="1"
@@ -121,6 +122,9 @@
 >                 multicastBase="239.1.1.1"
 >                 multicastLast="239.1.254.254"
 >                 multicastTTL="1"
+>                 mysqlCacheCheckPeriod="10000"
+>                 mysqlCacheTimeoutPeriod="60000"
+>                 mysqlConnectionCacheSize="10"
 >                 name="newroxie"
 >                 nodeCacheMem="100"
 >                 nodeCachePreload="false"

+ 1 - 1
deployment/envgen2/test/src/result_comparison/set_category_w_o_option_1.diff

@@ -1,4 +1,4 @@
-461c461
+473c473
 <    <Category dir="/var/log/[NAME]/[INST]" name="log"/>
 ---
 >    <Category dir="/var/logs/[NAME]/mylogs2[INST]" name="log"/>

+ 3 - 3
deployment/envgen2/test/src/result_comparison/set_sw_attr_w_override_option_1.diff

@@ -1,8 +1,8 @@
-769c769
+784c784
 <               enableSystemUseRewrite="false"
 ---
 >               enableSystemUseRewrite="ture"
-913a914
+933a934
 >               enableSystemUseRewrite="ture"
-942a944
+962a964
 >               enableSystemUseRewrite="ture"

+ 1 - 1
deployment/envgen2/test/src/result_comparison/set_xpat_attr_1.diff

@@ -1,4 +1,4 @@
-1241c1241
+1265c1265
 <     <ThorCluster process="mythor"/>
 ---
 >     <ThorCluster process="thor123"/>

+ 3 - 3
deployment/envgen2/test/src/result_comparison/thor_add_new_cluster.diff

@@ -11,7 +11,7 @@
 >             domain="localdomain"
 >             name="node000028"
 >             netAddress="1.0.0.28"/>
-428a441,461
+440a453,473
 >    <Instance computer="node000026"
 >              directory="/var/lib/HPCCSystems/mydafilesrv"
 >              name="s"
@@ -33,7 +33,7 @@
 >              parallelRequestLimit="20"
 >              throttleCPULimit="75"
 >              throttleDelayMs="5000"/>
-976a1010,1024
+996a1030,1044
 >    <Instance computer="node000026"
 >              directory="/var/lib/HPCCSystems/myftslave"
 >              name="s"
@@ -49,7 +49,7 @@
 >              name="s_3"
 >              netAddress="1.0.0.28"
 >              program="/opt/HPCCSystems/bin/ftslave"/>
-1229a1278,1344
+1253a1302,1368
 >   </ThorCluster>
 >   <ThorCluster affinity=""
 >                allowedPipePrograms="*"

+ 8 - 7
deployment/envgen2/test/src/result_comparison/topo_thor2.diff

@@ -23,7 +23,7 @@
 >             domain="localdomain"
 >             name="node010030"
 >             netAddress="1.20.10.30"/>
-428a453,494
+440a465,506
 >    <Instance computer="node000026"
 >              directory="/var/lib/HPCCSystems/mydafilesrv"
 >              name="s"
@@ -66,7 +66,7 @@
 >              parallelRequestLimit="20"
 >              throttleCPULimit="75"
 >              throttleDelayMs="5000"/>
-501a568,588
+513a580,600
 >   <EclAgentProcess allowedPipePrograms="*"
 >                    build="_"
 >                    buildSet="eclagent"
@@ -88,7 +88,7 @@
 >              name="s"
 >              netAddress="1.20.10.10"/>
 >   </EclAgentProcess>
-516a604,618
+529a617,632
 >   <EclCCServerProcess build="_"
 >                       buildSet="eclccserver"
 >                       daliServers="mydali"
@@ -97,6 +97,7 @@
 >                       enableSysLog="true"
 >                       generatePrecompiledHeader="true"
 >                       maxEclccProcesses="4"
+>                       monitorInterval="60"
 >                       name="myeclccserver2"
 >                       traceLevel="1">
 >    <Instance computer="node010030"
@@ -104,7 +105,7 @@
 >              name="s"
 >              netAddress="1.20.10.30"/>
 >   </EclCCServerProcess>
-526a629,638
+539a643,652
 >   <EclSchedulerProcess build="_"
 >                        buildSet="eclscheduler"
 >                        daliServers="mydali"
@@ -115,7 +116,7 @@
 >              name="s"
 >              netAddress="1.20.10.20"/>
 >   </EclSchedulerProcess>
-976a1089,1103
+996a1110,1124
 >    <Instance computer="node000026"
 >              directory="/var/lib/HPCCSystems/myftslave"
 >              name="s"
@@ -131,7 +132,7 @@
 >              name="s_3"
 >              netAddress="1.0.0.28"
 >              program="/opt/HPCCSystems/bin/ftslave"/>
-1230a1358,1424
+1254a1383,1449
 >   <ThorCluster affinity=""
 >                allowedPipePrograms="*"
 >                autoAffinity="true"
@@ -199,7 +200,7 @@
 >    <ThorSlaveProcess computer="node000027" name="s"/>
 >    <ThorSlaveProcess computer="node000028" name="s_2"/>
 >   </ThorCluster>
-1252a1447,1452
+1276a1472,1477
 >    </Cluster>
 >    <Cluster alias="" name="thor2" prefix="thor2">
 >     <EclAgentProcess process="myeclagent2"/>

+ 2 - 0
deployment/envgen2/test/test.sh.in

@@ -190,6 +190,8 @@ run_test_suite mod_binding
 
 run_test_suite rmv_binding
 
+run_test_suite add_backup
+
 if [[ $verbose -ne 2 ]] && [[ $show_input_only -ne 1 ]]
 then
    printf "\n\nSummery\n"