Sfoglia il codice sorgente

Merge branch 'candidate-8.2.x'

Signed-off-by: Richard Chapman <rchapman@hpccsystems.com>
Richard Chapman 3 anni fa
parent
commit
6c81c161d2

+ 1 - 0
dali/base/dacoven.cpp

@@ -936,6 +936,7 @@ ICoven &queryCoven()
 {
     if (coven==NULL)
     {
+        PrintStackReport();
         Owned<IException> e = MakeStringException(-1, "No access to Dali - this normally means a plugin call is being called from a thorslave");
         EXCLOG(e, NULL);
         throw e.getClear();

+ 1 - 1
dockerfiles/platform-gnn-gpu/Dockerfile

@@ -133,7 +133,7 @@ ENV LANG C.UTF-8
 # Set --build-arg TF_PACKAGE_VERSION=1.11.0rc0 to install a specific version.
 # Installs the latest version by default.
 ARG TF_PACKAGE=tensorflow
-ARG TF_PACKAGE_VERSION=
+ARG TF_PACKAGE_VERSION=2.6.0
 RUN python3 -m pip install --no-cache-dir ${TF_PACKAGE}${TF_PACKAGE_VERSION:+==${TF_PACKAGE_VERSION}}
 
 USER hpcc

+ 1 - 1
dockerfiles/platform-gnn/Dockerfile

@@ -33,6 +33,6 @@ RUN pip3 install       \
     networkx           \
     setuptools==46.1.3 \
     scipy==1.4.1       \
-    tensorflow==2.5.0
+    tensorflow==2.6.0
 
 USER hpcc

+ 2 - 44
thorlcr/activities/wuidread/thwuidread.cpp

@@ -27,7 +27,7 @@ class CWorkUnitReadMaster : public CMasterActivity
 public:
     CWorkUnitReadMaster(CMasterGraphElement * info) : CMasterActivity(info) { }
 
-    virtual void handleSlaveMessage(CMessageBuffer &msg)
+    virtual void handleSlaveMessage(CMessageBuffer &msg) override
     {
         IHThorWorkunitReadArg *helper = (IHThorWorkunitReadArg *)queryHelper();
         size32_t lenData;
@@ -43,49 +43,7 @@ public:
     }
 };
 
-static bool getWorkunitResultFilename(CGraphElementBase &container, StringBuffer & diskFilename, const char * wuid, const char * stepname, int sequence)
-{
-    try
-    {
-        Owned<IConstWUResult> result;
-        if (wuid)
-            result.setown(container.queryCodeContext()->getExternalResult(wuid, stepname, sequence));
-        else
-            result.setown(container.queryCodeContext()->getResultForGet(stepname, sequence));
-        if (!result)
-            throw MakeThorException(TE_FailedToRetrieveWorkunitValue, "Failed to find value %s:%d in workunit %s", stepname?stepname:"(null)", sequence, wuid?wuid:"(null)");
-
-        SCMStringBuffer tempFilename;
-        result->getResultFilename(tempFilename);
-        if (tempFilename.length() == 0)
-            return false;
-
-        diskFilename.append("~").append(tempFilename.str());
-        return true;
-    }
-    catch (IException * e) 
-    {
-        StringBuffer text; 
-        e->errorMessage(text); 
-        e->Release();
-        throw MakeThorException(TE_FailedToRetrieveWorkunitValue, "Failed to find value %s:%d in workunit %s [%s]", stepname?stepname:"(null)", sequence, wuid?wuid:"(null)", text.str());
-    }
-    return false;
-}
-
-
 CActivityBase *createWorkUnitActivityMaster(CMasterGraphElement *container)
 {
-    StringBuffer diskFilename;
-    IHThorWorkunitReadArg *wuReadHelper = (IHThorWorkunitReadArg *)container->queryHelper();
-    wuReadHelper->onCreate(container->queryCodeContext(), NULL, NULL);
-    OwnedRoxieString fromWuid(wuReadHelper->getWUID());
-    if (getWorkunitResultFilename(*container, diskFilename, fromWuid, wuReadHelper->queryName(), wuReadHelper->querySequence()))
-    {
-        Owned<IHThorDiskReadArg> diskReadHelper = createWorkUnitReadArg(diskFilename, LINK(wuReadHelper));
-        Owned<CActivityBase> retAct = createDiskReadActivityMaster(container, diskReadHelper);
-        return retAct.getClear();
-    }
-    else
-        return new CWorkUnitReadMaster(container);
+    return new CWorkUnitReadMaster(container);
 }

+ 3 - 1
thorlcr/graph/thgraphmaster.cpp

@@ -1575,6 +1575,7 @@ void CJobMaster::sendQuery()
     const char *soName = queryDllEntry().queryName();
     PROGLOG("Query dll: %s", soName);
     tmp.append(soName);
+#ifndef _CONTAINERIZED
     tmp.append(sendSo);
     if (sendSo)
     {
@@ -1586,6 +1587,8 @@ void CJobMaster::sendQuery()
         read(iFileIO, 0, sz, tmp);
         PROGLOG("Loading query for serialization to slaves took %d ms", atimer.elapsed());
     }
+    queryJobManager().addCachedSo(soName);
+#endif
     Owned<IPropertyTree> deps = createPTree(queryXGMML()->queryName());
     Owned<IPropertyTreeIterator> edgeIter = queryXGMML()->getElements("edge"); // JCSMORE trim to those actually needed
     ForEach (*edgeIter)
@@ -1604,7 +1607,6 @@ void CJobMaster::sendQuery()
     CTimeMon queryToSlavesTimer;
     broadcast(queryNodeComm(), msg, masterSlaveMpTag, LONGTIMEOUT, "sendQuery");
     PROGLOG("Serialization of query init info (%d bytes) to slaves took %d ms", msg.length(), queryToSlavesTimer.elapsed());
-    queryJobManager().addCachedSo(soName);
     querySent = true;
 }
 

+ 2 - 0
thorlcr/graph/thgraphmaster.hpp

@@ -48,7 +48,9 @@ interface IJobManager : extends IInterface
     virtual void setWuid(const char *wuid, const char *cluster=NULL) = 0;
     virtual IDeMonServer *queryDeMonServer() = 0;
     virtual void fatal(IException *e) = 0;
+#ifndef _CONTAINERIZED
     virtual void addCachedSo(const char *name) = 0;
+#endif
     virtual void updateWorkUnitLog(IWorkUnit &workunit) = 0;
 };
 

+ 63 - 9
thorlcr/master/thactivitymaster.cpp

@@ -80,28 +80,82 @@ MODULE_INIT(INIT_PRIORITY_STANDARD)
 
 CActivityBase *createGroupActivityMaster(CMasterGraphElement *container);
 
+static bool getWorkunitResultFilename(CGraphElementBase &container, StringBuffer & diskFilename, const char * wuid, const char * stepname, int sequence)
+{
+    try
+    {
+        Owned<IConstWUResult> result;
+        if (wuid)
+            result.setown(container.queryCodeContext()->getExternalResult(wuid, stepname, sequence));
+        else
+            result.setown(container.queryCodeContext()->getResultForGet(stepname, sequence));
+        if (!result)
+            throw MakeThorException(TE_FailedToRetrieveWorkunitValue, "Failed to find value %s:%d in workunit %s", stepname?stepname:"(null)", sequence, wuid?wuid:"(null)");
+
+        SCMStringBuffer tempFilename;
+        result->getResultFilename(tempFilename);
+        if (tempFilename.length() == 0)
+            return false;
+
+        diskFilename.append("~").append(tempFilename.str());
+        return true;
+    }
+    catch (IException * e) 
+    {
+        StringBuffer text; 
+        e->errorMessage(text); 
+        e->Release();
+        throw MakeThorException(TE_FailedToRetrieveWorkunitValue, "Failed to find value %s:%d in workunit %s [%s]", stepname?stepname:"(null)", sequence, wuid?wuid:"(null)", text.str());
+    }
+    return false;
+}
+
+
 class CGenericMasterGraphElement : public CMasterGraphElement
 {
+    StringBuffer wuidDiskFilename;
+    bool wuidDiskReadChecked = false;
+
+    void checkWuidDiskRead()
+    {
+        if (wuidDiskReadChecked)
+            return;
+        // replace wuidread act. with diskread act. if needed
+        wuidDiskFilename.clear();
+        IHThorWorkunitReadArg *wuReadHelper = (IHThorWorkunitReadArg *)queryHelper();
+        wuReadHelper->onCreate(queryCodeContext(), NULL, NULL);
+        OwnedRoxieString fromWuid(wuReadHelper->getWUID());
+        if (getWorkunitResultFilename(*this, wuidDiskFilename, fromWuid, wuReadHelper->queryName(), wuReadHelper->querySequence()))
+        {
+            Owned<IHThorDiskReadArg> diskReadHelper = createWorkUnitReadArg(wuidDiskFilename, LINK(wuReadHelper));
+            activity.setown(createDiskReadActivityMaster(this, diskReadHelper));
+        }
+        else
+            activity.setown(factory(kind));
+        wuidDiskReadChecked = true;
+    }
 public:
     CGenericMasterGraphElement(CGraphBase &owner, IPropertyTree &xgmml) : CMasterGraphElement(owner, xgmml)
     {
     }
-    virtual void serializeCreateContext(MemoryBuffer &mb)
+    virtual void serializeCreateContext(MemoryBuffer &mb) override
     {
         // bit of hack, need to tell slave if wuidread converted to diskread (see master activity)
         CMasterGraphElement::serializeCreateContext(mb);
         if (kind == TAKworkunitread)
         {
-            if (!activity)
-                doCreateActivity();
-            IHThorArg *helper = activity->queryHelper();
-            IHThorDiskReadArg *diskHelper = QUERYINTERFACE(helper, IHThorDiskReadArg);
-            mb.append(NULL != diskHelper); // flag to slaves that they should create diskread
-            if (diskHelper)
+            checkWuidDiskRead();
+
+            /* the meta information below is used by the worker at factory time
+             * to create the correct activity
+             */
+            if (wuidDiskFilename.length())
             {
-                OwnedRoxieString fileName(diskHelper->getFileName());
-                mb.append(fileName);
+                mb.append(true); // flag to slaves that they should create diskread
+                mb.append(wuidDiskFilename);
             }
+            else
+                mb.append(false);
         }
     }
     virtual CActivityBase *factory(ThorActivityKind kind)

+ 20 - 5
thorlcr/master/thgraphmanager.cpp

@@ -55,7 +55,9 @@ class CJobManager : public CSimpleInterface, implements IJobManager, implements
     Owned<IConversation> conversation;
     StringAttr queueName;
     CriticalSection replyCrit, jobCrit;
+#ifndef _CONTAINERIZED
     CFifoFileCache querySoCache;
+#endif
     Owned<IJobQueue> jobq;
     ICopyArrayOf<CJobMaster> jobs;
     Owned<IException> exitException;
@@ -248,7 +250,9 @@ public:
     virtual void setWuid(const char *wuid, const char *cluster=NULL);
     virtual IDeMonServer *queryDeMonServer() { return demonServer; }
     virtual void fatal(IException *e);
+#ifndef _CONTAINERIZED
     virtual void addCachedSo(const char *name);
+#endif
     virtual void updateWorkUnitLog(IWorkUnit &workunit);
 };
 
@@ -477,6 +481,7 @@ void CJobManager::run()
     LOG(MCdebugProgress, thorJob, "Listening for graph");
 
     setWuid(NULL);
+#ifndef _CONTAINERIZED
     StringBuffer soPath;
     globals->getProp("@query_so_dir", soPath);
     StringBuffer soPattern("*.");
@@ -487,7 +492,6 @@ void CJobManager::run()
 #endif
     querySoCache.init(soPath.str(), DEFAULT_QUERYSO_LIMIT, soPattern);
 
-#ifndef _CONTAINERIZED
     SCMStringBuffer _queueNames;
     const char *thorName = globals->queryProp("@name");
     if (!thorName) thorName = "thor";
@@ -930,16 +934,24 @@ bool CJobManager::executeGraph(IConstWorkUnit &workunit, const char *graphName,
     Owned<IConstWUQuery> query = workunit.getQuery();
     SCMStringBuffer soName;
     query->getQueryDllName(soName);
+#ifndef _CONTAINERIZED
     unsigned version = query->getQueryDllCrc();
+#endif
     query.clear();
 
+    bool sendSo = false;
+    Owned<ILoadedDllEntry> querySo;
     StringBuffer soPath;
+#ifdef _CONTAINERIZED
+    PROGLOG("Loading query name: %s", soName.str());
+    querySo.setown(queryDllServer().loadDll(soName.str(), DllLocationLocal));
+    soPath.append(querySo->queryName());
+#else
     globals->getProp("@query_so_dir", soPath);
     StringBuffer compoundPath;
     compoundPath.append(soPath.str());
     soPath.append(soName.str());
     getCompoundQueryName(compoundPath, soName.str(), version);
-    bool sendSo = false;
     if (querySoCache.isAvailable(compoundPath.str()))
         PROGLOG("Using existing local dll: %s", compoundPath.str()); // It is assumed if present here then _still_ present on slaves from previous send.
     else
@@ -962,15 +974,16 @@ bool CJobManager::executeGraph(IConstWorkUnit &workunit, const char *graphName,
         }
         sendSo = globals->getPropBool("Debug/@dllsToSlaves", true);
     }
-
-    Owned<ILoadedDllEntry> querySo = createDllEntry(compoundPath.str(), false, NULL, false);
+    querySo.setown(createDllEntry(compoundPath.str(), false, NULL, false));
+    soPath.swapWith(compoundPath);
+#endif
 
     SCMStringBuffer eclstr;
     StringAttr user(workunit.queryUser());
 
     PROGLOG("Started wuid=%s, user=%s, graph=%s\n", wuid.str(), user.str(), graphName);
 
-    PROGLOG("Query %s loaded", compoundPath.str());
+    PROGLOG("Query %s loaded", soPath.str());
     Owned<CJobMaster> job = createThorGraph(graphName, workunit, querySo, sendSo, agentEp);
     unsigned wfid = job->getWfid();
     StringBuffer graphScope;
@@ -1038,10 +1051,12 @@ bool CJobManager::executeGraph(IConstWorkUnit &workunit, const char *graphName,
     return allDone;
 }
 
+#ifndef _CONTAINERIZED
 void CJobManager::addCachedSo(const char *name)
 {
     querySoCache.add(name);
 }
+#endif
 
 static int exitCode = -1;
 void setExitCode(int code) { exitCode = code; }

+ 31 - 29
thorlcr/master/thmastermain.cpp

@@ -66,7 +66,9 @@
 #include "thexception.hpp"
 #include "thmem.hpp"
 
+#ifndef _CONTAINERIED
 #define DEFAULT_QUERY_SO_DIR "sodir"
+#endif
 #define MAX_SLAVEREG_DELAY 60*1000*15 // 15 mins
 #define SLAVEREG_VERIFY_DELAY 5*1000
 #define SHUTDOWN_IN_PARALLEL 20
@@ -836,6 +838,16 @@ int main( int argc, const char *argv[]  )
         PROGLOG("Global memory size = %d MB", mmemSize);
         roxiemem::setTotalMemoryLimit(gmemAllowHugePages, gmemAllowTransparentHugePages, gmemRetainMemory, ((memsize_t)mmemSize) * 0x100000, 0, thorAllocSizes, NULL);
 
+        char thorPath[1024];
+        if (!GetCurrentDirectory(1024, thorPath))
+        {
+            OERRLOG("ThorMaster::main: Current directory path too big, setting it to null");
+            thorPath[0] = 0;
+        }
+        unsigned l = strlen(thorPath);
+        if (l) { thorPath[l] = PATHSEPCHAR; thorPath[l+1] = '\0'; }
+        globals->setProp("@thorPath", thorPath);
+
 #ifndef _CONTAINERIZED
         const char * overrideBaseDirectory = globals->queryProp("@thorDataDirectory");
         const char * overrideReplicateDirectory = globals->queryProp("@thorReplicateDirectory");
@@ -849,6 +861,25 @@ int main( int argc, const char *argv[]  )
             setBaseDirectory(overrideBaseDirectory, false);
         if (overrideReplicateDirectory&&*overrideBaseDirectory)
             setBaseDirectory(overrideReplicateDirectory, true);
+
+        StringBuffer soDir, soPath;
+        if (getConfigurationDirectory(globals->queryPropTree("Directories"),"query","thor",globals->queryProp("@name"),soDir))
+            globals->setProp("@query_so_dir", soDir.str());
+        else if (!globals->getProp("@query_so_dir", soDir)) {
+            globals->setProp("@query_so_dir", DEFAULT_QUERY_SO_DIR); 
+            soDir.append(DEFAULT_QUERY_SO_DIR);
+        }
+        if (isAbsolutePath(soDir.str()))
+            soPath.append(soDir);
+        else
+        {
+            soPath.append(thorPath);
+            addPathSepChar(soPath);
+            soPath.append(soDir);
+        }
+        addPathSepChar(soPath);
+        globals->setProp("@query_so_dir", soPath.str());
+        recursiveCreateDirectory(soPath.str());
 #endif
 
         StringBuffer tempDirStr;
@@ -870,35 +901,6 @@ int main( int argc, const char *argv[]  )
         SetTempDir(0, tempDirStr.str(), tempPrefix.str(), true);
         DBGLOG("Temp directory: %s", queryTempDir());
 
-        char thorPath[1024];
-        if (!GetCurrentDirectory(1024, thorPath))
-        {
-            OERRLOG("ThorMaster::main: Current directory path too big, setting it to null");
-            thorPath[0] = 0;
-        }
-        unsigned l = strlen(thorPath);
-        if (l) { thorPath[l] = PATHSEPCHAR; thorPath[l+1] = '\0'; }
-        globals->setProp("@thorPath", thorPath);
-
-        StringBuffer soDir, soPath;
-        if (getConfigurationDirectory(globals->queryPropTree("Directories"),"query","thor",globals->queryProp("@name"),soDir))
-            globals->setProp("@query_so_dir", soDir.str());
-        else if (!globals->getProp("@query_so_dir", soDir)) {
-            globals->setProp("@query_so_dir", DEFAULT_QUERY_SO_DIR); 
-            soDir.append(DEFAULT_QUERY_SO_DIR);
-        }
-        if (isAbsolutePath(soDir.str()))
-            soPath.append(soDir);
-        else
-        {
-            soPath.append(thorPath);
-            addPathSepChar(soPath);
-            soPath.append(soDir);
-        }
-        addPathSepChar(soPath);
-        globals->setProp("@query_so_dir", soPath.str());
-        recursiveCreateDirectory(soPath.str());
-
         startLogMsgParentReceiver();    
         connectLogMsgManagerToDali();
         if (globals->getPropBool("@cache_dafilesrv_master",false))

+ 1 - 1
thorlcr/msort/tsorts.cpp

@@ -1352,7 +1352,7 @@ public:
     {
         return useTLS;
     }
-    virtual bool queryTraceLevel() const override
+    virtual unsigned queryTraceLevel() const override
     {
         return traceLevel;
     }

+ 1 - 1
thorlcr/msort/tsorts.hpp

@@ -99,7 +99,7 @@ interface ISortSlaveBase  // for global merging
     virtual unsigned getTransferPort() = 0;
     virtual void startMerging(IArrayOf<IRowStream> &readers, rowcount_t _totalrows) = 0;
     virtual bool queryTLS() const = 0;
-    virtual bool queryTraceLevel() const = 0;
+    virtual unsigned queryTraceLevel() const = 0;
 };
 
 

+ 2 - 2
thorlcr/msort/tsorts1.cpp

@@ -71,7 +71,7 @@ public:
         {
             Owned<ISecureSocket> ssock = secureContextClient->createSecureSocket(socket.getClear());
             int tlsTraceLevel = SSLogMin;
-            if (sortTraceLevel >= MPVerboseMsgThreshold)
+            if (sortTraceLevel >= ExtraneousMsgThreshold)
                 tlsTraceLevel = SSLogMax;
             int status = ssock->secure_connect(tlsTraceLevel);
             if (status < 0)
@@ -371,7 +371,7 @@ public:
                     Owned<ISecureSocket> ssock = secureContextServer->createSecureSocket(socket.getClear());
                     int tlsTraceLevel = SSLogMin;
                     unsigned sortTraceLevel = slave.queryTraceLevel();
-                    if (sortTraceLevel >= MPVerboseMsgThreshold)
+                    if (sortTraceLevel >= ExtraneousMsgThreshold)
                         tlsTraceLevel = SSLogMax;
                     int status = ssock->secure_accept(tlsTraceLevel);
                     if (status < 0)

+ 18 - 3
thorlcr/slave/slavmain.cpp

@@ -1601,7 +1601,9 @@ class CJobListener : public CSimpleInterface
     bool &stopped;
     CriticalSection crit;
     OwningStringSuperHashTableOf<CJobSlave> jobs;
+#ifndef _CONTAINERIZED
     CFifoFileCache querySoCache; // used to mirror master cache
+#endif
     IArrayOf<IMPServer> mpServers;
     unsigned channelsPerSlave;
 
@@ -1748,6 +1750,7 @@ public:
                 verifyThreads.append(*new CVerifyThread(*this, c));
         }
 
+#ifndef _CONTAINERIZED
         StringBuffer soPath;
         globals->getProp("@query_so_dir", soPath);
         StringBuffer soPattern("*.");
@@ -1758,6 +1761,7 @@ public:
 #endif
         if (globals->getPropBool("Debug/@dllsToSlaves",true))
             querySoCache.init(soPath.str(), DEFAULT_QUERYSO_LIMIT, soPattern);
+#endif
         Owned<ISlaveWatchdog> watchdog;
         if (globals->getPropBool("@watchdogEnabled"))
             watchdog.setown(createProgressHandler(globals->getPropBool("@useUDPWatchdog")));
@@ -1782,10 +1786,20 @@ public:
                         mptag_t slaveMsgTag;
                         deserializeMPtag(msg, slaveMsgTag);
                         queryNodeComm().flush(slaveMsgTag);
-                        StringBuffer soPath, soPathTail;
-                        StringAttr wuid, graphName, remoteSoPath;
+                        StringAttr wuid, graphName;
+                        StringBuffer soPath;
                         msg.read(wuid);
                         msg.read(graphName);
+
+                        Owned<ILoadedDllEntry> querySo;
+#ifdef _CONTAINERIZED
+                        StringAttr soName;
+                        msg.read(soName);
+                        querySo.setown(createDllEntry(soName.str(), false, NULL, false));
+                        soPath.append(soName);
+#else
+                        StringBuffer soPathTail;
+                        StringAttr remoteSoPath;
                         msg.read(remoteSoPath);
                         bool sendSo;
                         msg.read(sendSo);
@@ -1857,7 +1871,8 @@ public:
                             soPath.clear().append(tempSo.str());
                         }
 #endif
-                        Owned<ILoadedDllEntry> querySo = createDllEntry(soPath.str(), false, NULL, false);
+                        querySo.setown(createDllEntry(soPath.str(), false, NULL, false));
+#endif
 
                         Owned<IPropertyTree> workUnitInfo = createPTree(msg);
                         StringBuffer user;

+ 21 - 20
thorlcr/slave/thslavemain.cpp

@@ -460,6 +460,27 @@ int main( int argc, const char *argv[]  )
                 setBaseDirectory(overrideBaseDirectory, false);
             if (!isEmptyString(overrideReplicateDirectory))
                 setBaseDirectory(overrideReplicateDirectory, true);
+
+            if (getConfigurationDirectory(globals->queryPropTree("Directories"),"query","thor",globals->queryProp("@name"),str.clear()))
+                globals->setProp("@query_so_dir", str.str());
+            else
+                globals->getProp("@query_so_dir", str.clear());
+            if (str.length())
+            {
+                if (globals->getPropBool("Debug/@dllsToSlaves", true))
+                {
+                    StringBuffer uniqSoPath;
+                    if (PATHSEPCHAR == str.charAt(str.length()-1))
+                        uniqSoPath.append(str.length()-1, str.str());
+                    else
+                        uniqSoPath.append(str);
+                    uniqSoPath.append("_").append(getMachinePortBase());
+                    str.swapWith(uniqSoPath);
+                    globals->setProp("@query_so_dir", str.str());
+                }
+                PROGLOG("Using querySo directory: %s", str.str());
+                recursiveCreateDirectory(str.str());
+            }
 #endif
 
             StringBuffer tempDirStr;
@@ -488,26 +509,6 @@ int main( int argc, const char *argv[]  )
                 LOG(MCdebugProgress, thorJob, "%d%% disk free\n",pc);
             }
 #endif
-            if (getConfigurationDirectory(globals->queryPropTree("Directories"),"query","thor",globals->queryProp("@name"),str.clear()))
-                globals->setProp("@query_so_dir", str.str());
-            else
-                globals->getProp("@query_so_dir", str.clear());
-            if (str.length())
-            {
-                if (globals->getPropBool("Debug/@dllsToSlaves", true))
-                {
-                    StringBuffer uniqSoPath;
-                    if (PATHSEPCHAR == str.charAt(str.length()-1))
-                        uniqSoPath.append(str.length()-1, str.str());
-                    else
-                        uniqSoPath.append(str);
-                    uniqSoPath.append("_").append(getMachinePortBase());
-                    str.swapWith(uniqSoPath);
-                    globals->setProp("@query_so_dir", str.str());
-                }
-                PROGLOG("Using querySo directory: %s", str.str());
-                recursiveCreateDirectory(str.str());
-            }
      
             multiThorMemoryThreshold = globals->getPropInt("@multiThorMemoryThreshold")*0x100000;
             if (multiThorMemoryThreshold) {