You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by bm...@apache.org on 2015/06/04 01:55:32 UTC

[2/2] mesos git commit: Fixed a deadlock in libprocess Metrics initialization.

Fixed a deadlock in libprocess Metrics initialization.

Review: https://reviews.apache.org/r/34968


Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/a3382d4e
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/a3382d4e
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/a3382d4e

Branch: refs/heads/master
Commit: a3382d4e8fb0bba329ef5234293157bb6f2b50f8
Parents: 796f6a6
Author: Benjamin Mahler <be...@gmail.com>
Authored: Tue Jun 2 17:55:19 2015 -0700
Committer: Benjamin Mahler <be...@gmail.com>
Committed: Wed Jun 3 16:45:54 2015 -0700

----------------------------------------------------------------------
 3rdparty/libprocess/src/metrics/metrics.cpp | 8 ++++++++
 1 file changed, 8 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/a3382d4e/3rdparty/libprocess/src/metrics/metrics.cpp
----------------------------------------------------------------------
diff --git a/3rdparty/libprocess/src/metrics/metrics.cpp b/3rdparty/libprocess/src/metrics/metrics.cpp
index 38905d3..a97b613 100644
--- a/3rdparty/libprocess/src/metrics/metrics.cpp
+++ b/3rdparty/libprocess/src/metrics/metrics.cpp
@@ -23,6 +23,14 @@ namespace internal {
 
 MetricsProcess* MetricsProcess::instance()
 {
+  // To prevent a deadlock, we must ensure libprocess is
+  // initialized. Otherwise, libprocess will be implicitly
+  // initialized inside the 'once' block below, which in
+  // turns initializes metrics, and we arrive back here
+  // and deadlock by calling 'once()' without allowing
+  // 'done()' to ever be called.
+  process::initialize();
+
   static MetricsProcess* singleton = NULL;
   static Once* initialized = new Once();