Переглянути джерело

Merge pull request #15773 from mckellyln/hpcc-27190

HPCC-27190 Roxie crash updating packagemaps

Reviewed-By: Gavin Halliday <gavin.halliday@lexisnexis.com>
Reviewed-By: Richard Chapman <rchapman@hpccsystems.com>
Richard Chapman 3 роки тому
батько
коміт
3e296066ff
2 змінених файлів з 13 додано та 9 видалено
  1. 12 9
      common/workunit/workunit.cpp
  2. 1 0
      common/workunit/workunit.ipp

+ 12 - 9
common/workunit/workunit.cpp

@@ -10085,17 +10085,20 @@ IPropertyTree * CLocalWUGraph::getXGMMLTreeRaw() const
 
 IPropertyTree * CLocalWUGraph::getXGMMLTree(bool doMergeProgress, bool doFormatStats) const
 {
-    if (!graph)
     {
-        // NB: although graphBin introduced in wuidVersion==2,
-        // daliadmin can retrospectively compress existing graphs, so need to check for all versions
-        MemoryBuffer mb;
-        if (p->getPropBin("xgmml/graphBin", mb))
-            graph.setown(createPTree(mb, ipt_lowmem));
-        else
-            graph.setown(p->getBranch("xgmml/graph"));
+        CriticalBlock block(owner.crit);
         if (!graph)
-            return NULL;
+        {
+            // NB: although graphBin introduced in wuidVersion==2,
+            // daliadmin can retrospectively compress existing graphs, so need to check for all versions
+            MemoryBuffer mb;
+            if (p->getPropBin("xgmml/graphBin", mb))
+                graph.setown(createPTree(mb, ipt_lowmem));
+            else
+                graph.setown(p->getBranch("xgmml/graph"));
+            if (!graph)
+                return NULL;
+        }
     }
     if (!doMergeProgress)
         return graph.getLink();

+ 1 - 0
common/workunit/workunit.ipp

@@ -143,6 +143,7 @@ class WORKUNIT_API CLocalWorkUnit : implements IWorkUnit , implements IExtendedW
 {
     friend StringBuffer &exportWorkUnitToXML(const IConstWorkUnit *wu, StringBuffer &str, bool decodeGraphs, bool includeProgress, bool hidePasswords);
     friend void exportWorkUnitToXMLFile(const IConstWorkUnit *wu, const char * filename, unsigned extraXmlFlags, bool decodeGraphs, bool includeProgress, bool hidePasswords, bool regressionTest);
+    friend class CLocalWUGraph;
 
 protected:
     Owned<IPropertyTree> p;