You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by jo...@apache.org on 2015/09/20 20:37:36 UTC

[2/5] mesos git commit: Propagated UnavailableResources from Inverse Offers to the allocator.

Propagated UnavailableResources from Inverse Offers to the allocator.

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


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

Branch: refs/heads/master
Commit: eec3fec01a28d48fd26a71de7d918df71032d4ef
Parents: f388394
Author: Artem Harutyunyan <ar...@mesosphere.io>
Authored: Sat Sep 19 14:24:23 2015 -0400
Committer: Joris Van Remoortere <jo...@gmail.com>
Committed: Sun Sep 20 14:21:09 2015 -0400

----------------------------------------------------------------------
 include/mesos/master/allocator.hpp          |  5 ++++-
 src/master/allocator/mesos/allocator.hpp    |  4 ++++
 src/master/allocator/mesos/hierarchical.hpp |  2 ++
 src/master/master.cpp                       | 27 ++++++++++++++++++++++++
 src/tests/mesos.hpp                         |  9 ++++----
 5 files changed, 42 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/eec3fec0/include/mesos/master/allocator.hpp
----------------------------------------------------------------------
diff --git a/include/mesos/master/allocator.hpp b/include/mesos/master/allocator.hpp
index 2dc6312..7301058 100644
--- a/include/mesos/master/allocator.hpp
+++ b/include/mesos/master/allocator.hpp
@@ -153,10 +153,13 @@ public:
   // revoked. If `status` is not set then the inverse offer was not responded
   // to, possibly because the offer timed out or was rescinded. This might
   // require the implementation of the function to remove any inverse offers
-  // that are outstanding.
+  // that are outstanding. The `unavailableResources` can be used by the
+  // allocator to distinguish between different inverse offers sent to the same
+  // framework for the same slave.
   virtual void updateInverseOffer(
       const SlaveID& slaveId,
       const FrameworkID& frameworkId,
+      const Option<UnavailableResources>& unavailableResources,
       const Option<InverseOfferStatus>& status) = 0;
 
   // Informs the Allocator to recover resources that are considered

http://git-wip-us.apache.org/repos/asf/mesos/blob/eec3fec0/src/master/allocator/mesos/allocator.hpp
----------------------------------------------------------------------
diff --git a/src/master/allocator/mesos/allocator.hpp b/src/master/allocator/mesos/allocator.hpp
index 86f6c55..4f02dd1 100644
--- a/src/master/allocator/mesos/allocator.hpp
+++ b/src/master/allocator/mesos/allocator.hpp
@@ -119,6 +119,7 @@ public:
   void updateInverseOffer(
       const SlaveID& slaveId,
       const FrameworkID& frameworkId,
+      const Option<UnavailableResources>& unavailableResources,
       const Option<mesos::master::InverseOfferStatus>& status);
 
   void recoverResources(
@@ -226,6 +227,7 @@ public:
   virtual void updateInverseOffer(
       const SlaveID& slaveId,
       const FrameworkID& frameworkId,
+      const Option<UnavailableResources>& unavailableResources,
       const Option<mesos::master::InverseOfferStatus>& status) = 0;
 
   virtual void recoverResources(
@@ -486,6 +488,7 @@ template <typename AllocatorProcess>
 inline void MesosAllocator<AllocatorProcess>::updateInverseOffer(
     const SlaveID& slaveId,
     const FrameworkID& frameworkId,
+    const Option<UnavailableResources>& unavailableResources,
     const Option<mesos::master::InverseOfferStatus>& status)
 {
   return process::dispatch(
@@ -493,6 +496,7 @@ inline void MesosAllocator<AllocatorProcess>::updateInverseOffer(
       &MesosAllocatorProcess::updateInverseOffer,
       slaveId,
       frameworkId,
+      unavailableResources,
       status);
 }
 

http://git-wip-us.apache.org/repos/asf/mesos/blob/eec3fec0/src/master/allocator/mesos/hierarchical.hpp
----------------------------------------------------------------------
diff --git a/src/master/allocator/mesos/hierarchical.hpp b/src/master/allocator/mesos/hierarchical.hpp
index e944120..a4c4107 100644
--- a/src/master/allocator/mesos/hierarchical.hpp
+++ b/src/master/allocator/mesos/hierarchical.hpp
@@ -157,6 +157,7 @@ public:
   void updateInverseOffer(
       const SlaveID& slaveId,
       const FrameworkID& frameworkId,
+      const Option<UnavailableResources>& unavailableResources,
       const Option<mesos::master::InverseOfferStatus>& status);
 
   void recoverResources(
@@ -877,6 +878,7 @@ void
 HierarchicalAllocatorProcess<RoleSorter, FrameworkSorter>::updateInverseOffer(
     const SlaveID& slaveId,
     const FrameworkID& frameworkId,
+    const Option<UnavailableResources>& unavailableResources,
     const Option<mesos::master::InverseOfferStatus>& status)
 {
   CHECK(initialized);

http://git-wip-us.apache.org/repos/asf/mesos/blob/eec3fec0/src/master/master.cpp
----------------------------------------------------------------------
diff --git a/src/master/master.cpp b/src/master/master.cpp
index 5eef29b..5393ee8 100644
--- a/src/master/master.cpp
+++ b/src/master/master.cpp
@@ -2343,6 +2343,9 @@ void Master::_subscribe(
         allocator->updateInverseOffer(
             inverseOffer->slave_id(),
             inverseOffer->framework_id(),
+            UnavailableResources{
+                inverseOffer->resources(),
+                inverseOffer->unavailability()},
             None());
 
         removeInverseOffer(inverseOffer, true); // Rescind.
@@ -2508,6 +2511,9 @@ void Master::deactivate(Framework* framework)
     allocator->updateInverseOffer(
         inverseOffer->slave_id(),
         inverseOffer->framework_id(),
+        UnavailableResources{
+            inverseOffer->resources(),
+            inverseOffer->unavailability()},
         None());
 
     removeInverseOffer(inverseOffer, true); // Rescind.
@@ -2557,6 +2563,9 @@ void Master::deactivate(Slave* slave)
     allocator->updateInverseOffer(
         slave->id,
         inverseOffer->framework_id(),
+        UnavailableResources{
+            inverseOffer->resources(),
+            inverseOffer->unavailability()},
         None());
 
     removeInverseOffer(inverseOffer, true); // Rescind!
@@ -2838,6 +2847,9 @@ void Master::accept(
         allocator->updateInverseOffer(
             inverseOffer->slave_id(),
             inverseOffer->framework_id(),
+            UnavailableResources{
+                inverseOffer->resources(),
+                inverseOffer->unavailability()},
             status);
 
         removeInverseOffer(inverseOffer);
@@ -3309,6 +3321,9 @@ void Master::decline(
       allocator->updateInverseOffer(
           inverseOffer->slave_id(),
           inverseOffer->framework_id(),
+          UnavailableResources{
+              inverseOffer->resources(),
+              inverseOffer->unavailability()},
           status);
 
       removeInverseOffer(inverseOffer);
@@ -4320,6 +4335,9 @@ void Master::updateUnavailability(
         allocator->updateInverseOffer(
             slave->id,
             inverseOffer->framework_id(),
+            UnavailableResources{
+                inverseOffer->resources(),
+                inverseOffer->unavailability()},
             None());
 
         removeInverseOffer(inverseOffer, true); // Rescind!
@@ -5494,6 +5512,9 @@ void Master::_failoverFramework(Framework* framework)
     allocator->updateInverseOffer(
         inverseOffer->slave_id(),
         inverseOffer->framework_id(),
+        UnavailableResources{
+            inverseOffer->resources(),
+            inverseOffer->unavailability()},
         None());
 
     removeInverseOffer(inverseOffer);
@@ -5606,6 +5627,9 @@ void Master::removeFramework(Framework* framework)
     allocator->updateInverseOffer(
         inverseOffer->slave_id(),
         inverseOffer->framework_id(),
+        UnavailableResources{
+            inverseOffer->resources(),
+            inverseOffer->unavailability()},
         None());
 
     removeInverseOffer(inverseOffer);
@@ -6247,6 +6271,9 @@ void Master::inverseOfferTimeout(const OfferID& inverseOfferId)
     allocator->updateInverseOffer(
         inverseOffer->slave_id(),
         inverseOffer->framework_id(),
+        UnavailableResources{
+            inverseOffer->resources(),
+            inverseOffer->unavailability()},
         None());
 
     removeInverseOffer(inverseOffer, true);

http://git-wip-us.apache.org/repos/asf/mesos/blob/eec3fec0/src/tests/mesos.hpp
----------------------------------------------------------------------
diff --git a/src/tests/mesos.hpp b/src/tests/mesos.hpp
index 760dcb7..dd587bb 100644
--- a/src/tests/mesos.hpp
+++ b/src/tests/mesos.hpp
@@ -1361,7 +1361,7 @@ ACTION_P(InvokeUpdateUnavailability, allocator)
 
 ACTION_P(InvokeUpdateInverseOffer, allocator)
 {
-  return allocator->real->updateInverseOffer(arg0, arg1, arg2);
+  return allocator->real->updateInverseOffer(arg0, arg1, arg2, arg3);
 }
 
 
@@ -1499,9 +1499,9 @@ public:
     EXPECT_CALL(*this, updateUnavailability(_, _))
       .WillRepeatedly(DoDefault());
 
-    ON_CALL(*this, updateInverseOffer(_, _, _))
+    ON_CALL(*this, updateInverseOffer(_, _, _, _))
       .WillByDefault(InvokeUpdateInverseOffer(this));
-    EXPECT_CALL(*this, updateInverseOffer(_, _, _))
+    EXPECT_CALL(*this, updateInverseOffer(_, _, _, _))
       .WillRepeatedly(DoDefault());
 
     ON_CALL(*this, recoverResources(_, _, _, _))
@@ -1590,9 +1590,10 @@ public:
       const SlaveID&,
       const Option<Unavailability>&));
 
-  MOCK_METHOD3(updateInverseOffer, void(
+  MOCK_METHOD4(updateInverseOffer, void(
       const SlaveID&,
       const FrameworkID&,
+      const Option<UnavailableResources>&,
       const Option<mesos::master::InverseOfferStatus>&));
 
   MOCK_METHOD4(recoverResources, void(