[Libreoffice-commits] online.git: loolwsd/LOOLBroker.cpp loolwsd/LOOLKit.cpp loolwsd/LOOLWSD.cpp

Ashod Nakashian ashod.nakashian at collabora.co.uk
Sun Dec 27 20:07:56 PST 2015


 loolwsd/LOOLBroker.cpp |    8 ++++++--
 loolwsd/LOOLKit.cpp    |   36 +++++++++++++++++++++++++++++-------
 loolwsd/LOOLWSD.cpp    |   17 ++++++++++++-----
 3 files changed, 47 insertions(+), 14 deletions(-)

New commits:
commit fe0c11333f096a69ed29feb5b6b62931b2f489ab
Author: Ashod Nakashian <ashod.nakashian at collabora.co.uk>
Date:   Sat Dec 26 11:33:01 2015 -0500

    loolwsd: thread lifecycle markers
    
    Change-Id: I704e37e797224c9dbd024fcab3d8e917584be152
    Reviewed-on: https://gerrit.libreoffice.org/20975
    Reviewed-by: Ashod Nakashian <ashnakash at gmail.com>
    Tested-by: Ashod Nakashian <ashnakash at gmail.com>

diff --git a/loolwsd/LOOLBroker.cpp b/loolwsd/LOOLBroker.cpp
index bb3e3b7..99e4e8d 100644
--- a/loolwsd/LOOLBroker.cpp
+++ b/loolwsd/LOOLBroker.cpp
@@ -440,10 +440,12 @@ public:
         pStart = aBuffer;
         pEnd   = aBuffer;
 
+        static const std::string thread_name = "broker_pipe_reader";
 #ifdef __linux
-        if (prctl(PR_SET_NAME, reinterpret_cast<unsigned long>("pipe_reader"), 0, 0, 0) != 0)
-            Log::error("Cannot set thread name.");
+        if (prctl(PR_SET_NAME, reinterpret_cast<unsigned long>(thread_name.c_str()), 0, 0, 0) != 0)
+            Log::error("Cannot set thread name to " + thread_name + ".");
 #endif
+        Log::debug("Thread [" + thread_name + "] started.");
 
         while (true)
         {
@@ -497,6 +499,8 @@ public:
                 }
             }
         }
+
+        Log::debug("Thread [" + thread_name + "] finished.");
     }
 
 private:
diff --git a/loolwsd/LOOLKit.cpp b/loolwsd/LOOLKit.cpp
index 28cb506..3745089 100644
--- a/loolwsd/LOOLKit.cpp
+++ b/loolwsd/LOOLKit.cpp
@@ -234,6 +234,13 @@ public:
 
     void run()
     {
+        static const std::string thread_name = "lokit_callback_handler";
+#ifdef __linux
+        if (prctl(PR_SET_NAME, reinterpret_cast<unsigned long>(thread_name.c_str()), 0, 0, 0) != 0)
+            Log::error("Cannot set thread name to " + thread_name + ".");
+#endif
+        Log::debug("Thread [" + thread_name + "] started.");
+
         while ( true )
         {
             Notification::Ptr aNotification(_queue.waitDequeueNotification());
@@ -268,6 +275,8 @@ public:
             }
             else break;
         }
+
+        Log::debug("Thread [" + thread_name + "] finished.");
     }
 
 private:
@@ -290,10 +299,13 @@ public:
 
     void run() override
     {
+        static const std::string thread_name = "lokit_queue_handler";
 #ifdef __linux
-        if (prctl(PR_SET_NAME, reinterpret_cast<unsigned long>("queue_handler"), 0, 0, 0) != 0)
-            Log::error("Cannot set thread name.");
+        if (prctl(PR_SET_NAME, reinterpret_cast<unsigned long>(thread_name.c_str()), 0, 0, 0) != 0)
+            Log::error("Cannot set thread name to " + thread_name + ".");
 #endif
+        Log::debug("Thread [" + thread_name + "] started.");
+
         try
         {
             while (true)
@@ -315,6 +327,8 @@ public:
             Log::error("Unexpected Exception.");
             raise(SIGABRT);
         }
+
+        Log::debug("Thread [" + thread_name + "] finished.");
     }
 
 private:
@@ -351,10 +365,13 @@ public:
 
     void run() override
     {
+        static const std::string thread_name = "lokit_connection";
 #ifdef __linux
-        if (prctl(PR_SET_NAME, reinterpret_cast<unsigned long>("lokit_connection"), 0, 0, 0) != 0)
-            Log::error("Cannot set thread name.");
+        if (prctl(PR_SET_NAME, reinterpret_cast<unsigned long>(thread_name.c_str()), 0, 0, 0) != 0)
+            Log::error("Cannot set thread name to " + thread_name + ".");
 #endif
+        Log::debug("Thread [" + thread_name + "] started.");
+
         try
         {
             // Open websocket connection between the child process and the
@@ -414,6 +431,8 @@ public:
         {
             Log::error(std::string("Exception: ") + exc.what());
         }
+
+        Log::debug("Thread [" + thread_name + "] finished.");
     }
 
     ~Connection()
@@ -453,10 +472,12 @@ void run_lok_main(const std::string &loSubPath, Poco::UInt64 _childId, const std
     assert (_childId != 0);
     assert (!loSubPath.empty());
 
+    static const std::string thread_name = "libreofficekit";
 #ifdef __linux
-    if (prctl(PR_SET_NAME, reinterpret_cast<unsigned long>("libreofficekit"), 0, 0, 0) != 0)
-        Log::error("Cannot set thread name.");
+    if (prctl(PR_SET_NAME, reinterpret_cast<unsigned long>(thread_name.c_str()), 0, 0, 0) != 0)
+        Log::error("Cannot set thread name to " + thread_name + ".");
 #endif
+    Log::debug("Thread [" + thread_name + "] started.");
 
     static const std::string instdir_path =
 #ifdef __APPLE__
@@ -644,7 +665,7 @@ void run_lok_main(const std::string &loSubPath, Poco::UInt64 _childId, const std
     // Destroy LibreOfficeKit
     loKit->pClass->destroy(loKit.get());
 
-    Log::info("Kit process " + std::to_string(Process::id()) + " finished.");
+    Log::debug("Thread [" + thread_name + "] finished.");
 }
 
 #ifndef LOOLKIT_NO_MAIN
@@ -720,6 +741,7 @@ int main(int argc, char** argv)
 
     run_lok_main(loSubPath, _childId, _pipe);
 
+    Log::info("loolkit finished OK!");
     return 0;
 }
 
diff --git a/loolwsd/LOOLWSD.cpp b/loolwsd/LOOLWSD.cpp
index a046ad2..5d80a7e 100644
--- a/loolwsd/LOOLWSD.cpp
+++ b/loolwsd/LOOLWSD.cpp
@@ -244,10 +244,12 @@ public:
 
     void run() override
     {
+        static const std::string thread_name = "wsd_pipe_reader";
 #ifdef __linux
-        if (prctl(PR_SET_NAME, reinterpret_cast<unsigned long>("queue_handler"), 0, 0, 0) != 0)
-            Log::error("Cannot set thread name.");
+        if (prctl(PR_SET_NAME, reinterpret_cast<unsigned long>(thread_name.c_str()), 0, 0, 0) != 0)
+            Log::error("Cannot set thread name to " + thread_name + ".");
 #endif
+        Log::debug("Thread [" + thread_name + "] started.");
 
         while (true)
         {
@@ -257,6 +259,8 @@ public:
             if (!_session->handleInput(input.c_str(), input.size()))
                 break;
         }
+
+        Log::debug("Thread [" + thread_name + "] finished.");
     }
 
 private:
@@ -301,8 +305,8 @@ public:
     }
 };
 
+/// Handle a WebSocket connection or a simple HTTP request.
 class RequestHandler: public HTTPRequestHandler
-    /// Handle a WebSocket connection or a simple HTTP request.
 {
 public:
     RequestHandler()
@@ -311,16 +315,17 @@ public:
 
     void handleRequest(HTTPServerRequest& request, HTTPServerResponse& response) override
     {
-#ifdef __linux
         std::string thread_name;
         if (request.serverAddress().port() == LOOLWSD::MASTER_PORT_NUMBER)
             thread_name = "prision_socket";
         else
             thread_name = "client_socket";
 
+#ifdef __linux
         if (prctl(PR_SET_NAME, reinterpret_cast<unsigned long>(thread_name.c_str()), 0, 0, 0) != 0)
-            Log::error("Cannot set thread name.");
+            Log::error("Cannot set thread name to " + thread_name + ".");
 #endif
+        Log::debug("Thread [" + thread_name + "] started.");
 
         if (!(request.find("Upgrade") != request.end() && Poco::icompare(request["Upgrade"], "websocket") == 0))
         {
@@ -542,6 +547,8 @@ public:
         {
             Log::error("IOException: " + exc.message());
         }
+
+        Log::debug("Thread [" + thread_name + "] finished.");
     }
 };
 


More information about the Libreoffice-commits mailing list