[prev in list] [next in list] [prev in thread] [next in thread]
List: mesos-commits
Subject: [3/8] mesos git commit: Maintenance Primitives: Updated master local state upon recovery.
From: joris () apache ! org
Date: 2015-08-31 17:19:26
Message-ID: ef01afcbafab46b7a8dd333e616ec910 () git ! apache ! org
[Download RAW message or body]
Maintenance Primitives: Updated master local state upon recovery.
Note: Tests will be added with the related HTTP endpoints and registrar
operations, later in this review chain.
Review: https://reviews.apache.org/r/37314
Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/691a40e7
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/691a40e7
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/691a40e7
Branch: refs/heads/master
Commit: 691a40e7e1c9d5db8d1869d0f61b7bac7bfdc915
Parents: 50344bc
Author: Joseph Wu <joseph@mesosphere.io>
Authored: Sun Aug 30 13:55:21 2015 -0400
Committer: Joris Van Remoortere <joris.van.remoortere@gmail.com>
Committed: Mon Aug 31 13:09:33 2015 -0400
----------------------------------------------------------------------
include/mesos/type_utils.hpp | 33 +++++++++++++++++++++++++++++++++
src/master/master.cpp | 10 ++++++++++
src/master/master.hpp | 11 +++++++++++
3 files changed, 54 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/mesos/blob/691a40e7/include/mesos/type_utils.hpp
----------------------------------------------------------------------
diff --git a/include/mesos/type_utils.hpp b/include/mesos/type_utils.hpp
index 1c8f95b..4fb0037 100644
--- a/include/mesos/type_utils.hpp
+++ b/include/mesos/type_utils.hpp
@@ -31,6 +31,7 @@
#include <stout/hashmap.hpp>
#include <stout/stringify.hpp>
+#include <stout/strings.hpp>
#include <stout/uuid.hpp>
// This file includes definitions for operators on public protobuf
@@ -143,6 +144,21 @@ inline bool operator==(const TaskID& left, const std::string& right)
}
+/**
+ * For machines to match, both the `hostname` and `ip` must be equivalent.
+ * Hostname is not case sensitive, so it is lowercased before comparison.
+ */
+inline bool operator==(const MachineID& left, const MachineID& right)
+{
+ // NOTE: Both fields default to the empty string if they are not specified,
+ // so the string comparisons are safe.
+ return left.has_hostname() == right.has_hostname() &&
+ strings::lower(left.hostname()) == strings::lower(right.hostname()) &&
+ left.has_ip() == right.has_ip() &&
+ left.ip() == right.ip();
+}
+
+
inline bool operator!=(const ContainerID& left, const ContainerID& right)
{
return left.value() != right.value();
@@ -570,6 +586,23 @@ struct hash<std::pair<mesos::FrameworkID, mesos::ExecutorID>>
}
};
+
+template <>
+struct hash<mesos::MachineID>
+{
+ typedef size_t result_type;
+
+ typedef mesos::MachineID argument_type;
+
+ result_type operator()(const argument_type& machineId) const
+ {
+ size_t seed = 0;
+ boost::hash_combine(seed, strings::lower(machineId.hostname()));
+ boost::hash_combine(seed, machineId.ip());
+ return seed;
+ }
+};
+
} // namespace std {
#endif // __MESOS_TYPE_UTILS_H__
http://git-wip-us.apache.org/repos/asf/mesos/blob/691a40e7/src/master/master.cpp
----------------------------------------------------------------------
diff --git a/src/master/master.cpp b/src/master/master.cpp
index b824f96..564fbcb 100644
--- a/src/master/master.cpp
+++ b/src/master/master.cpp
@@ -1331,6 +1331,16 @@ Future<Nothing> Master::_recover(const Registry& registry)
&Self::recoveredSlavesTimeout,
registry);
+ // Save the maintenance schedule.
+ foreach (const mesos::maintenance::Schedule& schedule, registry.schedules()) {
+ maintenance.schedules.push_back(schedule);
+ }
+
+ // Save the machine info for each machine.
+ foreach (const Registry::Machine& machine, registry.machines().machines()) {
+ machineInfos[machine.info().id()] = machine.info();
+ }
+
// Recovery is now complete!
LOG(INFO) << "Recovered " << registry.slaves().slaves().size() << " slaves"
<< " from the Registry (" << Bytes(registry.ByteSize()) << ")"
http://git-wip-us.apache.org/repos/asf/mesos/blob/691a40e7/src/master/master.hpp
----------------------------------------------------------------------
diff --git a/src/master/master.hpp b/src/master/master.hpp
index 36c6759..edcbeed 100644
--- a/src/master/master.hpp
+++ b/src/master/master.hpp
@@ -28,6 +28,7 @@
#include <boost/circular_buffer.hpp>
+#include <mesos/maintenance/maintenance.hpp>
#include <mesos/mesos.hpp>
#include <mesos/resources.hpp>
#include <mesos/scheduler/scheduler.hpp>
@@ -888,6 +889,16 @@ private:
MasterInfo info_;
+ // Holds some info which affects how a machine behaves.
+ // See the `MachineInfo` protobuf for more information.
+ hashmap<MachineID, MachineInfo> machineInfos;
+
+ struct Maintenance
+ {
+ // Holds the maintenance schedule, as given by the operator.
+ std::list<mesos::maintenance::Schedule> schedules;
+ } maintenance;
+
// Indicates when recovery is complete. Recovery begins once the
// master is elected as a leader.
Option<process::Future<Nothing>> recovered;
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic