[Libreoffice-commits] online.git: 2 commits - loolwsd/LOOLForKit.cpp loolwsd/LOOLWSD.cpp

Ashod Nakashian ashod.nakashian at collabora.co.uk
Wed Nov 16 04:43:28 UTC 2016


 loolwsd/LOOLForKit.cpp |   20 +++++++++++---------
 loolwsd/LOOLWSD.cpp    |    9 +++++----
 2 files changed, 16 insertions(+), 13 deletions(-)

New commits:
commit cf2f4ed712d87ba46055f9a0666447fdd727d8e4
Author: Ashod Nakashian <ashod.nakashian at collabora.co.uk>
Date:   Tue Nov 15 22:03:49 2016 -0500

    loolwsd: improve interrupted pipe-reading handling in forkit
    
    Change-Id: Iabaadee064bb1178cc6b1bd3482608a758d65506
    Reviewed-on: https://gerrit.libreoffice.org/30892
    Reviewed-by: Ashod Nakashian <ashnakash at gmail.com>
    Tested-by: Ashod Nakashian <ashnakash at gmail.com>

diff --git a/loolwsd/LOOLForKit.cpp b/loolwsd/LOOLForKit.cpp
index 8509446..ab3d2c3 100644
--- a/loolwsd/LOOLForKit.cpp
+++ b/loolwsd/LOOLForKit.cpp
@@ -72,20 +72,22 @@ public:
     {
         std::string message;
         const auto ready = readLine(message, [](){ return TerminationFlag.load(); });
-        if (ready == 0)
-        {
-            // Timeout.
-            return true;
-        }
-        else if (ready < 0)
+        if (ready <= 0)
         {
             // Termination is done via SIGTERM, which breaks the wait.
-            if (!TerminationFlag)
+            if (TerminationFlag)
             {
-                Log::error("Error reading from pipe [" + getName() + "].");
+                if (ready < 0)
+                {
+                    LOG_INF("Poll interrupted in " << getName() << " and Termination flag set.");
+                }
+
+                // Break.
+                return false;
             }
 
-            return false;
+            // Timeout.
+            return true;
         }
 
         LOG_INF("ForKit command: [" << message << "].");
commit 4c9a2e821d5f32005be3a10ceecb107ea20ecc29
Author: Ashod Nakashian <ashod.nakashian at collabora.co.uk>
Date:   Tue Nov 15 22:03:11 2016 -0500

    loolwsd: don't set TerminationFlag unnecessarily
    
    Change-Id: I993e1c5bfdb5b4a5d9a421bc61fa90fdfd1ba00b
    Reviewed-on: https://gerrit.libreoffice.org/30891
    Reviewed-by: Ashod Nakashian <ashnakash at gmail.com>
    Tested-by: Ashod Nakashian <ashnakash at gmail.com>

diff --git a/loolwsd/LOOLWSD.cpp b/loolwsd/LOOLWSD.cpp
index 94be625..c0d19aa 100644
--- a/loolwsd/LOOLWSD.cpp
+++ b/loolwsd/LOOLWSD.cpp
@@ -2032,7 +2032,6 @@ int LOOLWSD::main(const std::vector<std::string>& /*args*/)
             {
                 // No child processes.
                 LOG_FTL("No Forkit instance. Terminating.");
-                TerminationFlag = true;
                 break;
             }
         }
@@ -2072,7 +2071,6 @@ int LOOLWSD::main(const std::vector<std::string>& /*args*/)
         if (careerSpanSeconds > 0 && time(nullptr) > startTimeSpan + careerSpanSeconds)
         {
             LOG_INF((time(nullptr) - startTimeSpan) << " seconds gone, finishing as requested.");
-            TerminationFlag = true;
             break;
         }
 #endif
@@ -2080,8 +2078,10 @@ int LOOLWSD::main(const std::vector<std::string>& /*args*/)
 
     // Stop the listening to new connections
     // and wait until sockets close.
-    LOG_INF("Stopping server socket listening.");
+    LOG_INF("Stopping server socket listening. ShutdownFlag: " <<
+            ShutdownFlag << ", TerminationFlag: " << TerminationFlag);
     Util::alertAllUsers("internal", "shutdown");
+
     srv.stop();
     srv2.stop();
     threadPool.joinAll();
@@ -2094,10 +2094,11 @@ int LOOLWSD::main(const std::vector<std::string>& /*args*/)
         child->close(true);
     }
 
-    // Wait for forkit process finish
+    // Wait for forkit process finish.
     waitpid(forKitPid, &status, WUNTRACED);
     close(ForKitWritePipe);
 
+    // In case forkit didn't cleanup fully.'
     LOG_INF("Cleaning up childroot directory [" << ChildRoot << "].");
     std::vector<std::string> jails;
     File(ChildRoot).list(jails);


More information about the Libreoffice-commits mailing list