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();