浏览代码

Merge pull request #5014 from wangkx/h10242

HPCC-10242 Fix preflight not working for roxie server and thor master

Reviewed-By: Richard Chapman <rchapman@hpccsystems.com>
Richard Chapman 11 年之前
父节点
当前提交
9ab2e5a99a
共有 2 个文件被更改,包括 12 次插入8 次删除
  1. 11 7
      esp/services/ws_machine/ws_machineService.cpp
  2. 1 1
      esp/services/ws_machine/ws_machineService.hpp

+ 11 - 7
esp/services/ws_machine/ws_machineService.cpp

@@ -648,7 +648,7 @@ void Cws_machineEx::readTargetClusterProcesses(IPropertyTree &processNode, const
         if (!pEnvironmentDirectories || !getConfigurationDirectory(pEnvironmentDirectories, "run", nodeType, process, dirStr))
             dirStr.clear().append(processNode.queryProp("@directory"));
 
-        getProcesses(constEnv, pEnvironmentSoftware, process, nodeType, dirStr.str(), machineInfoData, uniqueProcesses);
+        getProcesses(constEnv, pEnvironmentSoftware, process, nodeType, dirStr.str(), machineInfoData, false, uniqueProcesses);
         return;
     }
 
@@ -657,14 +657,14 @@ void Cws_machineEx::readTargetClusterProcesses(IPropertyTree &processNode, const
 
     if (strieq(nodeType, eqThorCluster))
     {
-        getProcesses(constEnv, pClusterProcess, process, eqThorMasterProcess, dirStr.str(), machineInfoData, uniqueProcesses);
+        getProcesses(constEnv, pClusterProcess, process, eqThorMasterProcess, dirStr.str(), machineInfoData, true, uniqueProcesses);
         getThorProcesses(constEnv, pClusterProcess, process, eqThorSlaveProcess, dirStr.str(), machineInfoData, uniqueProcesses);
         getThorProcesses(constEnv, pClusterProcess, process, eqThorSpareProcess, dirStr.str(), machineInfoData, uniqueProcesses);
     }
     else if (strieq(nodeType, eqRoxieCluster))
     {
         BoolHash uniqueRoxieProcesses;
-        getProcesses(constEnv, pClusterProcess, process, eqRoxieServerProcess, dirStr.str(), machineInfoData, uniqueProcesses, &uniqueRoxieProcesses);
+        getProcesses(constEnv, pClusterProcess, process, eqRoxieServerProcess, dirStr.str(), machineInfoData, true, uniqueProcesses, &uniqueRoxieProcesses);
     }
 }
 
@@ -734,7 +734,7 @@ void Cws_machineEx::getThorProcesses(IConstEnvironment* constEnv, IPropertyTree*
 
 void Cws_machineEx::getProcesses(IConstEnvironment* constEnv, IPropertyTree* environment, const char* processName,
                                  const char* processType, const char* directory, CGetMachineInfoData& machineInfoData,
-                                 BoolHash& uniqueProcesses, BoolHash* uniqueRoxieProcesses)
+                                 bool isThorOrRoxieProcess, BoolHash& uniqueProcesses, BoolHash* uniqueRoxieProcesses)
 {
     Owned<IPropertyTreeIterator> processes= environment->getElements(processType);
     ForEach(*processes)
@@ -742,9 +742,13 @@ void Cws_machineEx::getProcesses(IConstEnvironment* constEnv, IPropertyTree* env
         StringArray processInstances, directories;
 
         IPropertyTree &process = processes->query();
-        const char* name = process.queryProp("@name");
-        if (!name || !*name || !streq(name, processName))
-            continue;
+        //Thor master and roxie server has been checked before this call.
+        if (!isThorOrRoxieProcess)
+        {
+            const char* name = process.queryProp("@name");
+            if (!name || !*name || !streq(name, processName))
+                continue;
+        }
 
         const char* computerName = process.queryProp("@computer");
         if (computerName && *computerName)

+ 1 - 1
esp/services/ws_machine/ws_machineService.hpp

@@ -653,7 +653,7 @@ private:
     bool isLegacyFilter(const char* processType, const char* dependency);
     bool excludePartition(const char* partition) const;
     void appendProcessInstance(const char* name, const char* directory1, const char* directory2, StringArray& machineInstances, StringArray& directories);
-    void getProcesses(IConstEnvironment* constEnv, IPropertyTree* envRoot, const char* processName, const char* processType, const char* directory, CGetMachineInfoData& machineInfoData, BoolHash& uniqueProcesses, BoolHash* uniqueRoxieProcesses = NULL);
+    void getProcesses(IConstEnvironment* constEnv, IPropertyTree* envRoot, const char* processName, const char* processType, const char* directory, CGetMachineInfoData& machineInfoData, bool isThorOrRoxieProcess, BoolHash& uniqueProcesses, BoolHash* uniqueRoxieProcesses = NULL);
     void getThorProcesses(IConstEnvironment* constEnv,  IPropertyTree* cluster, const char* processName, const char* processType, const char* directory, CGetMachineInfoData& machineInfoData, BoolHash& uniqueProcesses);
     const char* getProcessTypeFromMachineType(const char* machineType);
     void readSettingsForTargetClusters(IEspContext& context, StringArray& targetClusters, CGetMachineInfoData& machineInfoData, IPropertyTree* targetClustersOut);