[prev in list] [next in list] [prev in thread] [next in thread] 

List:       mesos-commits
Subject:    [2/3] mesos git commit: Added 'updateSlave()' in master to handle oversubscribed resources.
From:       vinodkone () apache ! org
Date:       2015-05-29 1:02:46
Message-ID: 23fbb2edc07849cda5e205fd749d2202 () git ! apache ! org
[Download RAW message or body]

Added 'updateSlave()' in master to handle oversubscribed resources.

Review: https://reviews.apache.org/r/34730


Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/949e6ad1
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/949e6ad1
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/949e6ad1

Branch: refs/heads/master
Commit: 949e6ad1c6e24e3446c44519af28dd5f32e3c486
Parents: 0df7bb0
Author: Vinod Kone <vinodkone@gmail.com>
Authored: Wed May 20 19:11:44 2015 -0700
Committer: Vinod Kone <vinodkone@gmail.com>
Committed: Thu May 28 17:11:04 2015 -0700

----------------------------------------------------------------------
 src/master/master.cpp                | 19 +++++++++++++++++++
 src/master/master.hpp                |  4 ++++
 src/master/metrics.cpp               |  4 ++++
 src/master/metrics.hpp               |  1 +
 src/tests/oversubscription_tests.cpp | 20 ++++++++++++++------
 5 files changed, 42 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/949e6ad1/src/master/master.cpp
----------------------------------------------------------------------
diff --git a/src/master/master.cpp b/src/master/master.cpp
index 1526f59..d61b77b 100644
--- a/src/master/master.cpp
+++ b/src/master/master.cpp
@@ -718,6 +718,11 @@ void Master::initialize()
       &ExitedExecutorMessage::executor_id,
       &ExitedExecutorMessage::status);
 
+  install<UpdateSlaveMessage>(
+      &Master::updateSlave,
+      &UpdateSlaveMessage::slave_id,
+      &UpdateSlaveMessage::oversubscribed_resources);
+
   install<AuthenticateMessage>(
       &Master::authenticate,
       &AuthenticateMessage::pid);
@@ -3452,6 +3457,20 @@ void Master::unregisterSlave(const UPID& from, const SlaveID& slaveId)
 }
 
 
+void Master::updateSlave(
+    const SlaveID& slaveId,
+    const vector<Resource>& oversubscribedResources)
+{
+  ++metrics->messages_update_slave;
+
+  LOG(INFO) << "Received update of slave " << slaveId
+            << " with oversubscribed resources " <<  oversubscribedResources;
+
+  // TODO(vinod): Rescind any oustanding revocable offers from this
+  // slave and update the allocator.
+}
+
+
 // TODO(vinod): Since 0.22.0, we can use 'from' instead of 'pid'
 // because the status updates will be sent by the slave.
 void Master::statusUpdate(const StatusUpdate& update, const UPID& pid)

http://git-wip-us.apache.org/repos/asf/mesos/blob/949e6ad1/src/master/master.hpp
----------------------------------------------------------------------
diff --git a/src/master/master.hpp b/src/master/master.hpp
index c8c6251..c0cc293 100644
--- a/src/master/master.hpp
+++ b/src/master/master.hpp
@@ -750,6 +750,10 @@ public:
       const ExecutorID& executorId,
       int32_t status);
 
+  void updateSlave(
+      const SlaveID& slaveId,
+      const std::vector<Resource>& oversubscribedResources);
+
   void shutdownSlave(
       const SlaveID& slaveId,
       const std::string& message);

http://git-wip-us.apache.org/repos/asf/mesos/blob/949e6ad1/src/master/metrics.cpp
----------------------------------------------------------------------
diff --git a/src/master/metrics.cpp b/src/master/metrics.cpp
index ee09664..264252c 100644
--- a/src/master/metrics.cpp
+++ b/src/master/metrics.cpp
@@ -117,6 +117,8 @@ Metrics::Metrics(const Master& master)
         "master/messages_status_update"),
     messages_exited_executor(
         "master/messages_exited_executor"),
+    messages_update_slave(
+        "master/messages_update_slave"),
     messages_authenticate(
         "master/messages_authenticate"),
     valid_framework_to_executor_messages(
@@ -208,6 +210,7 @@ Metrics::Metrics(const Master& master)
   process::metrics::add(messages_unregister_slave);
   process::metrics::add(messages_status_update);
   process::metrics::add(messages_exited_executor);
+  process::metrics::add(messages_update_slave);
 
   // Messages from both schedulers and slaves.
   process::metrics::add(messages_authenticate);
@@ -314,6 +317,7 @@ Metrics::~Metrics()
   process::metrics::remove(messages_unregister_slave);
   process::metrics::remove(messages_status_update);
   process::metrics::remove(messages_exited_executor);
+  process::metrics::remove(messages_update_slave);
 
   // Messages from both schedulers and slaves.
   process::metrics::remove(messages_authenticate);

http://git-wip-us.apache.org/repos/asf/mesos/blob/949e6ad1/src/master/metrics.hpp
----------------------------------------------------------------------
diff --git a/src/master/metrics.hpp b/src/master/metrics.hpp
index 78d0666..833033c 100644
--- a/src/master/metrics.hpp
+++ b/src/master/metrics.hpp
@@ -138,6 +138,7 @@ struct Metrics
   process::metrics::Counter messages_unregister_slave;
   process::metrics::Counter messages_status_update;
   process::metrics::Counter messages_exited_executor;
+  process::metrics::Counter messages_update_slave;
 
   // Messages from both schedulers and slaves.
   process::metrics::Counter messages_authenticate;

http://git-wip-us.apache.org/repos/asf/mesos/blob/949e6ad1/src/tests/oversubscription_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/oversubscription_tests.cpp b/src/tests/oversubscription_tests.cpp
index 36a6793..1dda63e 100644
--- a/src/tests/oversubscription_tests.cpp
+++ b/src/tests/oversubscription_tests.cpp
@@ -33,6 +33,7 @@
 #include "slave/slave.hpp"
 
 #include "tests/mesos.hpp"
+#include "tests/utils.hpp"
 
 using namespace process;
 
@@ -44,12 +45,12 @@ namespace mesos {
 namespace internal {
 namespace tests {
 
-class OversubscriptionSlaveTest : public MesosTest {};
+class OversubscriptionTest : public MesosTest {};
 
 
 // This test verifies that slave will forward the estimation of the
 // oversubscribed resources to the master.
-TEST_F(OversubscriptionSlaveTest, ForwardUpdateSlaveMessage)
+TEST_F(OversubscriptionTest, ForwardUpdateSlaveMessage)
 {
   Try<PID<Master>> master = StartMaster();
   ASSERT_SOME(master);
@@ -71,8 +72,9 @@ TEST_F(OversubscriptionSlaveTest, ForwardUpdateSlaveMessage)
 
   Clock::pause();
 
-  Clock::settle();
+  // No update should be sent until there is an estimate.
   Clock::advance(flags.oversubscribed_resources_interval);
+  Clock::settle();
 
   ASSERT_FALSE(update.isReady());
 
@@ -80,12 +82,18 @@ TEST_F(OversubscriptionSlaveTest, ForwardUpdateSlaveMessage)
   Resources resources = Resources::parse("cpus:1;mem:32").get();
   resourceEstimator.estimate(resources);
 
-  Clock::settle();
-  Clock::advance(flags.oversubscribed_resources_interval);
-
   AWAIT_READY(update);
   EXPECT_EQ(Resources(update.get().oversubscribed_resources()), resources);
 
+  // Ensure the metric is updated.
+  JSON::Object metrics = Metrics();
+  ASSERT_EQ(
+      1u,
+      metrics.values.count("master/messages_update_slave"));
+  ASSERT_EQ(
+      1u,
+      metrics.values["master/messages_update_slave"]);
+
   Shutdown();
 }
 

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic