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(