You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by nn...@apache.org on 2014/10/11 00:04:30 UTC
git commit: Added libprocess finalization.
Repository: mesos
Updated Branches:
refs/heads/master 2d78336ea -> 29a82c97c
Added libprocess finalization.
Introduced a finalize() function to match the initialize() function in
process.hpp. Use this at the unit test runner for libprocess to start
getting more valuable valgrind feedback.
Added cleanup of remaining Processes in ~ProcessManager() as a start.
Review: https://reviews.apache.org/r/26533
Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/29a82c97
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/29a82c97
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/29a82c97
Branch: refs/heads/master
Commit: 29a82c97c74ff72c2542bf554066ac76daa02664
Parents: 2d78336
Author: Joris Van Remoortere <jo...@gmail.com>
Authored: Fri Oct 10 14:43:36 2014 -0700
Committer: Niklas Q. Nielsen <ni...@mesosphere.io>
Committed: Fri Oct 10 14:43:36 2014 -0700
----------------------------------------------------------------------
3rdparty/libprocess/include/process/process.hpp | 6 +++++
3rdparty/libprocess/src/process.cpp | 23 +++++++++++++++++++-
3rdparty/libprocess/src/tests/main.cpp | 5 ++++-
3 files changed, 32 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/mesos/blob/29a82c97/3rdparty/libprocess/include/process/process.hpp
----------------------------------------------------------------------
diff --git a/3rdparty/libprocess/include/process/process.hpp b/3rdparty/libprocess/include/process/process.hpp
index 270ca28..81a1f7a 100644
--- a/3rdparty/libprocess/include/process/process.hpp
+++ b/3rdparty/libprocess/include/process/process.hpp
@@ -270,6 +270,12 @@ void initialize(const std::string& delegate = "");
/**
+ * Clean up the library.
+ */
+void finalize();
+
+
+/**
* Returns the IP address associated with this instance of the
* library.
*/
http://git-wip-us.apache.org/repos/asf/mesos/blob/29a82c97/3rdparty/libprocess/src/process.cpp
----------------------------------------------------------------------
diff --git a/3rdparty/libprocess/src/process.cpp b/3rdparty/libprocess/src/process.cpp
index d30ed63..85fb995 100644
--- a/3rdparty/libprocess/src/process.cpp
+++ b/3rdparty/libprocess/src/process.cpp
@@ -1673,6 +1673,12 @@ void initialize(const string& delegate)
}
+void finalize()
+{
+ delete process_manager;
+}
+
+
uint32_t ip()
{
process::initialize();
@@ -2435,7 +2441,22 @@ ProcessManager::ProcessManager(const string& _delegate)
}
-ProcessManager::~ProcessManager() {}
+ProcessManager::~ProcessManager()
+{
+ ProcessBase* process = NULL;
+ // Pop a process off the top and terminate it. Don't hold the lock
+ // or process the whole map as terminating one process might
+ // trigger other terminations. Deal with them one at a time.
+ do {
+ synchronized (processes) {
+ process = !processes.empty() ? processes.begin()->second : NULL;
+ }
+ if (process != NULL) {
+ process::terminate(process);
+ process::wait(process);
+ }
+ } while (process != NULL);
+}
ProcessReference ProcessManager::use(const UPID& pid)
http://git-wip-us.apache.org/repos/asf/mesos/blob/29a82c97/3rdparty/libprocess/src/tests/main.cpp
----------------------------------------------------------------------
diff --git a/3rdparty/libprocess/src/tests/main.cpp b/3rdparty/libprocess/src/tests/main.cpp
index 0a3ba4e..63f31f5 100644
--- a/3rdparty/libprocess/src/tests/main.cpp
+++ b/3rdparty/libprocess/src/tests/main.cpp
@@ -35,5 +35,8 @@ int main(int argc, char** argv)
listeners.Append(process::ClockTestEventListener::instance());
listeners.Append(process::FilterTestEventListener::instance());
- return RUN_ALL_TESTS();
+ int result = RUN_ALL_TESTS();
+
+ process::finalize();
+ return result;
}