From 7d2085472678fe82e317c85fba12b486a157002b Mon Sep 17 00:00:00 2001
From: mattijs <mattijs>
Date: Wed, 8 Sep 2021 09:02:51 +0100
Subject: [PATCH] BUG: fileHandler: disable parallel inside master-only ops.
 See #806.

---
 .../masterUncollatedFileOperation.C                 | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/src/OpenFOAM/global/fileOperations/masterUncollatedFileOperation/masterUncollatedFileOperation.C b/src/OpenFOAM/global/fileOperations/masterUncollatedFileOperation/masterUncollatedFileOperation.C
index 29d72055a8e..c7babbd03ab 100644
--- a/src/OpenFOAM/global/fileOperations/masterUncollatedFileOperation/masterUncollatedFileOperation.C
+++ b/src/OpenFOAM/global/fileOperations/masterUncollatedFileOperation/masterUncollatedFileOperation.C
@@ -1138,6 +1138,8 @@ Foam::fileName Foam::fileOperations::masterUncollatedFileOperation::filePath
 
     if (Pstream::master(comm_))
     {
+        const bool oldParRun(Pstream::parRun(false));
+
         // All masters search locally. Note that global objects might
         // fail (except on master). This gets handled later on (in PARENTOBJECT)
         objPath =
@@ -1152,6 +1154,8 @@ Foam::fileName Foam::fileOperations::masterUncollatedFileOperation::filePath
                 newInstancePath
             );
 
+        Pstream::parRun(oldParRun);
+
         if (debug)
         {
             Pout<< "masterUncollatedFileOperation::filePath :"
@@ -1278,6 +1282,8 @@ Foam::fileName Foam::fileOperations::masterUncollatedFileOperation::dirPath
 
     if (Pstream::master(comm_))
     {
+        const bool oldParRun(Pstream::parRun(false));
+
         objPath = filePathInfo
         (
             checkGlobal,
@@ -1288,6 +1294,8 @@ Foam::fileName Foam::fileOperations::masterUncollatedFileOperation::dirPath
             procsDir,
             newInstancePath
         );
+
+        Pstream::parRun(oldParRun);
     }
 
     {
@@ -1459,10 +1467,12 @@ Foam::fileOperations::masterUncollatedFileOperation::findInstance
     // if (Pstream::master(comm_))
     if (Pstream::master(UPstream::worldComm))
     {
+        const bool oldParRun(Pstream::parRun(false));
         if (exists(pDirs, io))
         {
             foundInstance = io.instance();
         }
+        Pstream::parRun(oldParRun);
     }
 
     // Do parallel early exit to avoid calling time.times()
@@ -1488,6 +1498,8 @@ Foam::fileOperations::masterUncollatedFileOperation::findInstance
     // if (Pstream::master(comm_))
     if (Pstream::master(UPstream::worldComm))
     {
+        const bool oldParRun(Pstream::parRun(false));
+
         label instanceI;
 
         for (instanceI = ts.size()-1; instanceI >= 0; --instanceI)
@@ -1608,6 +1620,7 @@ Foam::fileOperations::masterUncollatedFileOperation::findInstance
                 foundInstance = time.constant();
             }
         }
+        Pstream::parRun(oldParRun);
     }
 
     // Pstream::scatter(foundInstance, Pstream::msgType(), comm_);
-- 
GitLab