oops! fat fingered. I'll delete the branch.
On Thu, Jun 16, 2016 at 10:47 AM, <[email protected]> wrote: > Repository: mesos > Updated Branches: > refs/heads/metrics_replicated_log [created] 07bff092e > > > Added a metric to replicated log. > > This is a gauge indicating if the replicated log has recovered or not. > > Review: https://reviews.apache.org/r/48801 > > > Project: http://git-wip-us.apache.org/repos/asf/mesos/repo > Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/14858cd2 > Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/14858cd2 > Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/14858cd2 > > Branch: refs/heads/metrics_replicated_log > Commit: 14858cd2a2bb55cacf6279059dd913a40971a284 > Parents: 161e049 > Author: Jie Yu <[email protected]> > Authored: Wed Jun 15 22:28:02 2016 -0700 > Committer: Jie Yu <[email protected]> > Committed: Thu Jun 16 10:28:15 2016 -0700 > > ---------------------------------------------------------------------- > include/mesos/log/log.hpp | 6 +++-- > src/log/log.cpp | 50 +++++++++++++++++++++++++++++++++++------- > src/log/log.hpp | 22 +++++++++++++++++-- > 3 files changed, 66 insertions(+), 12 deletions(-) > ---------------------------------------------------------------------- > > > > http://git-wip-us.apache.org/repos/asf/mesos/blob/14858cd2/include/mesos/log/log.hpp > ---------------------------------------------------------------------- > diff --git a/include/mesos/log/log.hpp b/include/mesos/log/log.hpp > index 9c86349..0f69848 100644 > --- a/include/mesos/log/log.hpp > +++ b/include/mesos/log/log.hpp > @@ -192,7 +192,8 @@ public: > Log(int quorum, > const std::string& path, > const std::set<process::UPID>& pids, > - bool autoInitialize = false); > + bool autoInitialize = false, > + const Option<std::string>& metricsPrefix = None()); > > // Creates a new replicated log that assumes the specified quorum > // size, is backed by a file at the specified path, and coordinates > @@ -204,7 +205,8 @@ public: > const Duration& timeout, > const std::string& znode, > const Option<zookeeper::Authentication>& auth = None(), > - bool autoInitialize = false); > + bool autoInitialize = false, > + const Option<std::string>& metricsPrefix = None()); > > ~Log(); > > > http://git-wip-us.apache.org/repos/asf/mesos/blob/14858cd2/src/log/log.cpp > ---------------------------------------------------------------------- > diff --git a/src/log/log.cpp b/src/log/log.cpp > index c0f1cb3..f8e439f 100644 > --- a/src/log/log.cpp > +++ b/src/log/log.cpp > @@ -28,6 +28,8 @@ > #include <process/process.hpp> > #include <process/shared.hpp> > > +#include <process/metrics/metrics.hpp> > + > #include <stout/check.hpp> > #include <stout/foreach.hpp> > #include <stout/lambda.hpp> > @@ -64,13 +66,15 @@ LogProcess::LogProcess( > size_t _quorum, > const string& path, > const set<UPID>& pids, > - bool _autoInitialize) > + bool _autoInitialize, > + const Option<string>& metricsPrefix) > : ProcessBase(ID::generate("log")), > quorum(_quorum), > replica(new Replica(path)), > network(new Network(pids + (UPID) replica->pid())), > autoInitialize(_autoInitialize), > - group(nullptr) {} > + group(nullptr), > + metrics(*this, metricsPrefix) {} > > > LogProcess::LogProcess( > @@ -80,7 +84,8 @@ LogProcess::LogProcess( > const Duration& timeout, > const string& znode, > const Option<zookeeper::Authentication>& auth, > - bool _autoInitialize) > + bool _autoInitialize, > + const Option<string>& metricsPrefix) > : ProcessBase(ID::generate("log")), > quorum(_quorum), > replica(new Replica(path)), > @@ -91,7 +96,8 @@ LogProcess::LogProcess( > auth, > Set<UPID>((UPID) replica->pid()))), > autoInitialize(_autoInitialize), > - group(new zookeeper::Group(servers, timeout, znode, auth)) {} > + group(new zookeeper::Group(servers, timeout, znode, auth)), > + metrics(*this, metricsPrefix) {} > > > void LogProcess::initialize() > @@ -236,6 +242,12 @@ void LogProcess::_recover() > } > > > +double LogProcess::_recovered() > +{ > + return recovered.future().isReady() ? 1 : 0; > +} > + > + > void LogProcess::watch( > const UPID& pid, > const set<zookeeper::Group::Membership>& memberships) > @@ -268,6 +280,23 @@ void LogProcess::discarded() > } > > > +LogProcess::Metrics::Metrics( > + const LogProcess& process, > + const Option<string>& prefix) > + : recovered( > + prefix.getOrElse("") + "log/recovered", > + defer(process, &LogProcess::_recovered)) > +{ > + process::metrics::add(recovered); > +} > + > + > +LogProcess::Metrics::~Metrics() > +{ > + process::metrics::remove(recovered); > +} > + > + > ///////////////////////////////////////////////// > // Implementation of LogReaderProcess. > ///////////////////////////////////////////////// > @@ -610,7 +639,8 @@ Log::Log( > int quorum, > const string& path, > const set<UPID>& pids, > - bool autoInitialize) > + bool autoInitialize, > + const Option<string>& metricsPrefix) > { > GOOGLE_PROTOBUF_VERIFY_VERSION; > > @@ -619,11 +649,13 @@ Log::Log( > quorum, > path, > pids, > - autoInitialize); > + autoInitialize, > + metricsPrefix); > > spawn(process); > } > > + > Log::Log( > int quorum, > const string& path, > @@ -631,7 +663,8 @@ Log::Log( > const Duration& timeout, > const string& znode, > const Option<zookeeper::Authentication>& auth, > - bool autoInitialize) > + bool autoInitialize, > + const Option<string>& metricsPrefix) > { > GOOGLE_PROTOBUF_VERIFY_VERSION; > > @@ -643,7 +676,8 @@ Log::Log( > timeout, > znode, > auth, > - autoInitialize); > + autoInitialize, > + metricsPrefix); > > spawn(process); > } > > http://git-wip-us.apache.org/repos/asf/mesos/blob/14858cd2/src/log/log.hpp > ---------------------------------------------------------------------- > diff --git a/src/log/log.hpp b/src/log/log.hpp > index 6e75773..a600025 100644 > --- a/src/log/log.hpp > +++ b/src/log/log.hpp > @@ -26,6 +26,8 @@ > #include <process/process.hpp> > #include <process/shared.hpp> > > +#include <process/metrics/gauge.hpp> > + > #include <stout/nothing.hpp> > > #include "log/coordinator.hpp" > @@ -44,7 +46,8 @@ public: > size_t _quorum, > const std::string& path, > const std::set<process::UPID>& pids, > - bool _autoInitialize); > + bool _autoInitialize, > + const Option<std::string>& metricsPrefix); > > LogProcess( > size_t _quorum, > @@ -53,7 +56,8 @@ public: > const Duration& timeout, > const std::string& znode, > const Option<zookeeper::Authentication>& auth, > - bool _autoInitialize); > + bool _autoInitialize, > + const Option<std::string>& metricsPrefix); > > // Recovers the log by catching up if needed. Returns a shared > // pointer to the local replica if the recovery succeeds. > @@ -70,6 +74,9 @@ private: > // Continuations. > void _recover(); > > + // Return true if the log has finished recovery. > + double _recovered(); > + > // TODO(benh): Factor this out into "membership renewer". > void watch( > const process::UPID& pid, > @@ -92,6 +99,17 @@ private: > // continually renew the replicas membership (when using ZooKeeper). > zookeeper::Group* group; > process::Future<zookeeper::Group::Membership> membership; > + > + struct Metrics > + { > + explicit Metrics( > + const LogProcess& process, > + const Option<std::string>& prefix); > + > + ~Metrics(); > + > + process::metrics::Gauge recovered; > + } metrics; > }; > > > >
