You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by mz...@apache.org on 2019/08/20 00:10:21 UTC
[mesos] 03/04: Made RoleTree class default constructable.
This is an automated email from the ASF dual-hosted git repository.
mzhu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mesos.git
commit f4db86c525affd8b875b6ddb8f1a608eee830ce6
Author: Meng Zhu <mz...@mesosphere.io>
AuthorDate: Mon Aug 19 13:57:07 2019 -0700
Made RoleTree class default constructable.
This makes the metric handler optional. This is mainly for
unit testing purpose.
Review: https://reviews.apache.org/r/71312
---
src/master/allocator/mesos/hierarchical.cpp | 14 ++++++++++++--
src/master/allocator/mesos/hierarchical.hpp | 4 +++-
2 files changed, 15 insertions(+), 3 deletions(-)
diff --git a/src/master/allocator/mesos/hierarchical.cpp b/src/master/allocator/mesos/hierarchical.cpp
index 852d426..b8b9241 100644
--- a/src/master/allocator/mesos/hierarchical.cpp
+++ b/src/master/allocator/mesos/hierarchical.cpp
@@ -224,6 +224,9 @@ void Role::removeChild(Role* child)
}
+RoleTree::RoleTree() : root_(new Role("", nullptr)) {}
+
+
RoleTree::RoleTree(Metrics* metrics_)
: root_(new Role("", nullptr)), metrics(metrics_) {}
@@ -268,7 +271,10 @@ Role& RoleTree::operator[](const std::string& rolePath)
current == root_ ? token : strings::join("/", current->role, token);
CHECK_NOT_CONTAINS(roles_, newRolePath);
roles_.put(newRolePath, Role(newRolePath, current));
- metrics->addRole(newRolePath);
+
+ if (metrics.isSome()) {
+ (*metrics)->addRole(newRolePath);
+ }
Role& role = roles_.at(newRolePath);
current->addChild(&role);
@@ -300,7 +306,11 @@ bool RoleTree::tryRemove(const std::string& role)
Role* parent = CHECK_NOTNULL(current->parent);
parent->removeChild(current);
- metrics->removeRole(current->role);
+
+ if (metrics.isSome()) {
+ (*metrics)->removeRole(current->role);
+ }
+
roles_.erase(current->role);
current = parent;
diff --git a/src/master/allocator/mesos/hierarchical.hpp b/src/master/allocator/mesos/hierarchical.hpp
index db26a2a..035fd3d 100644
--- a/src/master/allocator/mesos/hierarchical.hpp
+++ b/src/master/allocator/mesos/hierarchical.hpp
@@ -188,6 +188,8 @@ private:
class RoleTree
{
public:
+ RoleTree(); // Only used in tests.
+
RoleTree(Metrics* metrics);
~RoleTree();
@@ -234,7 +236,7 @@ private:
Role* root_;
// Allocator's metrics handle for publishing role related metrics.
- Metrics* metrics;
+ Option<Metrics*> metrics;
// A map of role and `Role` pairs for quick lookup.
hashmap<std::string, Role> roles_;