Repository: mesos Updated Branches: refs/heads/master e6298aef8 -> 52ae7f0e6
Made the 'SchedulerDriver' abort when operation's 'id' field is set. Since the 'SchedulerDriver' does not support operation status updates, this patch adds a check to the driver which will abort the scheduler if the 'id' field is set in an offer operation. Review: https://reviews.apache.org/r/66938/ Project: http://git-wip-us.apache.org/repos/asf/mesos/repo Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/39b27e1b Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/39b27e1b Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/39b27e1b Branch: refs/heads/master Commit: 39b27e1bb90aab3f10c1203d8f4f65de4f32e774 Parents: e6298ae Author: Greg Mann <[email protected]> Authored: Mon May 7 17:31:55 2018 -0700 Committer: Greg Mann <[email protected]> Committed: Mon May 7 17:31:55 2018 -0700 ---------------------------------------------------------------------- src/sched/sched.cpp | 6 ++++ src/tests/scheduler_tests.cpp | 63 -------------------------------------- 2 files changed, 6 insertions(+), 63 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/mesos/blob/39b27e1b/src/sched/sched.cpp ---------------------------------------------------------------------- diff --git a/src/sched/sched.cpp b/src/sched/sched.cpp index 620a3b2..baa6b0c 100644 --- a/src/sched/sched.cpp +++ b/src/sched/sched.cpp @@ -1342,6 +1342,12 @@ protected: // Setting accept.operations. foreach (const Offer::Operation& _operation, operations) { + if (_operation.has_id()) { + ABORT("An offer operation's 'id' field was set, which is disallowed" + " because the SchedulerDriver cannot handle offer operation" + " status updates"); + } + Offer::Operation* operation = accept->add_operations(); operation->CopyFrom(_operation); } http://git-wip-us.apache.org/repos/asf/mesos/blob/39b27e1b/src/tests/scheduler_tests.cpp ---------------------------------------------------------------------- diff --git a/src/tests/scheduler_tests.cpp b/src/tests/scheduler_tests.cpp index 749420a..5474907 100644 --- a/src/tests/scheduler_tests.cpp +++ b/src/tests/scheduler_tests.cpp @@ -1193,69 +1193,6 @@ TEST_P(SchedulerTest, OperationFeedbackValidationNoResourceProviderCapability) } -// Verifies invalidation of RESERVE operations with `id` set, when sent by a -// `SchedulerDriver` framework. -TEST_P(SchedulerTest, OperationFeedbackValidationSchedulerDriverFramework) -{ - Clock::pause(); - - master::Flags masterFlags = CreateMasterFlags(); - Try<Owned<cluster::Master>> master = StartMaster(masterFlags); - ASSERT_SOME(master); - - Owned<MasterDetector> detector = master.get()->createDetector(); - - Try<Owned<cluster::Slave>> slave = StartSlave(detector.get()); - ASSERT_SOME(slave); - - FrameworkInfo frameworkInfo = DEFAULT_FRAMEWORK_INFO; - frameworkInfo.add_roles("framework-role"); - - MockScheduler scheduler; - MesosSchedulerDriver driver( - &scheduler, - frameworkInfo, - master.get()->pid, - DEFAULT_CREDENTIAL); - - Future<FrameworkID> frameworkId; - EXPECT_CALL(scheduler, registered(&driver, _, _)) - .WillOnce(FutureArg<1>(&frameworkId)); - - Future<vector<Offer>> offers; - EXPECT_CALL(scheduler, resourceOffers(&driver, _)) - .WillOnce(FutureArg<1>(&offers)); - - driver.start(); - - AWAIT_READY(frameworkId); - - Clock::advance(masterFlags.allocation_interval); - Clock::settle(); - - AWAIT_READY(offers); - ASSERT_FALSE(offers->empty()); - - Future<Nothing> schedulerError; - EXPECT_CALL(scheduler, error(_, _)) - .WillOnce(FutureSatisfy(&schedulerError)); - - const Offer& offer = offers->at(0); - - Resources resources = Resources::parse("cpus:0.1").get(); - resources.pushReservation(createDynamicReservationInfo( - frameworkInfo.roles(1), - frameworkInfo.principal())); - - Offer::Operation operation = RESERVE(resources); - operation.mutable_id()->set_value("RESERVE_OPERATION"); - - driver.acceptOffers({offer.id()}, {operation}); - - AWAIT_READY(schedulerError); -} - - TEST_P(SchedulerTest, ShutdownExecutor) { Try<Owned<cluster::Master>> master = StartMaster();
