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 2018/09/07 00:21:38 UTC
[mesos] branch master updated: Avoided double copying of outgoing
messages in the master.
This is an automated email from the ASF dual-hosted git repository.
bmahler pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mesos.git
The following commit(s) were added to refs/heads/master by this push:
new 8983494 Avoided double copying of outgoing messages in the master.
8983494 is described below
commit 898349458e1a95c52a2f347ed997d381d36f22f3
Author: Benjamin Mahler <bm...@apache.org>
AuthorDate: Thu Sep 6 15:31:48 2018 -0700
Avoided double copying of outgoing messages in the master.
When framework metrics were introduced, there was an evolve + devolve
conversion occuring in order to map old style messages to the new
`scheduler::Event::Type`. This results in copying all outgoing
messages twice.
This patch avoids the copying by adding overloads for the old style
messages.
Review: https://reviews.apache.org/r/68662
---
src/master/master.hpp | 4 +-
src/master/metrics.cpp | 100 +++++++++++++++++++++++++++++++++++++++++++++++--
src/master/metrics.hpp | 14 +++++++
3 files changed, 112 insertions(+), 6 deletions(-)
diff --git a/src/master/master.hpp b/src/master/master.hpp
index ec2ae01..ea7e924 100644
--- a/src/master/master.hpp
+++ b/src/master/master.hpp
@@ -2598,9 +2598,7 @@ void Framework::send(const Message& message)
<< " framework " << *this;
}
- // TODO(gilbert): add a helper to transform `SchedulerDriver` API messages
- // directly to v0 events.
- metrics.incrementEvent(devolve(evolve(message)));
+ metrics.incrementEvent(message);
if (http.isSome()) {
if (!http->send(message)) {
diff --git a/src/master/metrics.cpp b/src/master/metrics.cpp
index 655c75a..56a7eef 100644
--- a/src/master/metrics.cpp
+++ b/src/master/metrics.cpp
@@ -755,10 +755,104 @@ string getFrameworkMetricPrefix(const FrameworkInfo& frameworkInfo)
void FrameworkMetrics::incrementEvent(const scheduler::Event& event)
{
- CHECK(event_types.contains(event.type()));
+ ++CHECK_NOTNONE(event_types.get(event.type()));
+ ++events;
+}
+
+
+void FrameworkMetrics::incrementEvent(
+ const FrameworkErrorMessage& message)
+{
+ ++CHECK_NOTNONE(event_types.get(scheduler::Event::ERROR));
+ ++events;
+}
+
+
+void FrameworkMetrics::incrementEvent(
+ const ExitedExecutorMessage& message)
+{
+ ++CHECK_NOTNONE(event_types.get(scheduler::Event::FAILURE));
+ ++events;
+}
+
+
+void FrameworkMetrics::incrementEvent(
+ const LostSlaveMessage& message)
+{
+ ++CHECK_NOTNONE(event_types.get(scheduler::Event::FAILURE));
+ ++events;
+}
+
+
+void FrameworkMetrics::incrementEvent(
+ const InverseOffersMessage& message)
+{
+ ++CHECK_NOTNONE(event_types.get(scheduler::Event::INVERSE_OFFERS));
+ ++events;
+}
+
- event_types.get(event.type()).get()++;
- events++;
+void FrameworkMetrics::incrementEvent(
+ const ExecutorToFrameworkMessage& message)
+{
+ ++CHECK_NOTNONE(event_types.get(scheduler::Event::MESSAGE));
+ ++events;
+}
+
+
+void FrameworkMetrics::incrementEvent(
+ const ResourceOffersMessage& message)
+{
+ ++CHECK_NOTNONE(event_types.get(scheduler::Event::OFFERS));
+ ++events;
+}
+
+
+void FrameworkMetrics::incrementEvent(
+ const RescindResourceOfferMessage& message)
+{
+ ++CHECK_NOTNONE(event_types.get(scheduler::Event::RESCIND));
+ ++events;
+}
+
+
+void FrameworkMetrics::incrementEvent(
+ const RescindInverseOfferMessage& message)
+{
+ ++CHECK_NOTNONE(event_types.get(scheduler::Event::RESCIND_INVERSE_OFFER));
+ ++events;
+}
+
+
+void FrameworkMetrics::incrementEvent(
+ const FrameworkRegisteredMessage& message)
+{
+ ++CHECK_NOTNONE(event_types.get(scheduler::Event::SUBSCRIBED));
+ ++events;
+}
+
+
+void FrameworkMetrics::incrementEvent(
+ const FrameworkReregisteredMessage& message)
+{
+ ++CHECK_NOTNONE(event_types.get(scheduler::Event::SUBSCRIBED));
+ ++events;
+}
+
+
+void FrameworkMetrics::incrementEvent(
+ const StatusUpdateMessage& message)
+{
+ ++CHECK_NOTNONE(event_types.get(scheduler::Event::UPDATE));
+ ++events;
+}
+
+
+void FrameworkMetrics::incrementEvent(
+ const UpdateOperationStatusMessage& message)
+{
+ ++CHECK_NOTNONE(event_types.get(scheduler::Event::UPDATE_OPERATION_STATUS));
+ ++events;
}
} // namespace master {
diff --git a/src/master/metrics.hpp b/src/master/metrics.hpp
index 14f894a..e1da18e 100644
--- a/src/master/metrics.hpp
+++ b/src/master/metrics.hpp
@@ -228,6 +228,20 @@ struct FrameworkMetrics
void incrementEvent(const mesos::scheduler::Event& event);
+ // Overloads to convert unversioned messages into events.
+ void incrementEvent(const FrameworkErrorMessage& message);
+ void incrementEvent(const ExitedExecutorMessage& message);
+ void incrementEvent(const LostSlaveMessage& message);
+ void incrementEvent(const InverseOffersMessage& message);
+ void incrementEvent(const ExecutorToFrameworkMessage& message);
+ void incrementEvent(const ResourceOffersMessage& message);
+ void incrementEvent(const RescindResourceOfferMessage& message);
+ void incrementEvent(const RescindInverseOfferMessage& message);
+ void incrementEvent(const FrameworkRegisteredMessage& message);
+ void incrementEvent(const FrameworkReregisteredMessage& message);
+ void incrementEvent(const StatusUpdateMessage& message);
+ void incrementEvent(const UpdateOperationStatusMessage& message);
+
void incrementTaskState(const TaskState& state);
void decrementActiveTaskState(const TaskState& state);