Removed the empty resource check in master. Review: https://reviews.apache.org/r/28616
Project: http://git-wip-us.apache.org/repos/asf/mesos/repo Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/f5cb86db Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/f5cb86db Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/f5cb86db Branch: refs/heads/master Commit: f5cb86db5f5a0d97a1b0cc1ab2bf7daf56155ad8 Parents: 407cc6b Author: Jie Yu <[email protected]> Authored: Tue Dec 2 16:10:49 2014 -0800 Committer: Jie Yu <[email protected]> Committed: Tue Dec 2 17:36:48 2014 -0800 ---------------------------------------------------------------------- src/master/master.cpp | 20 +++------- src/tests/resource_offers_tests.cpp | 64 ++------------------------------ 2 files changed, 8 insertions(+), 76 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/mesos/blob/f5cb86db/src/master/master.cpp ---------------------------------------------------------------------- diff --git a/src/master/master.cpp b/src/master/master.cpp index c840d49..99b5a20 100644 --- a/src/master/master.cpp +++ b/src/master/master.cpp @@ -1913,25 +1913,15 @@ struct ResourceUsageChecker : TaskInfoVisitor return Error("Task uses invalid resources: " + error.get().message); } - // Ensure no empty resource is used. - foreach (const Resource& resource, task.resources()) { - if (Resources::empty(resource)) { - return Error("Task uses empty resources: " + stringify(resource)); - } - } - // Check this task's executor's resources. Resources executorResources; if (task.has_executor()) { - foreach (const Resource& resource, task.executor().resources()) { - Option<Error> error = Resources::validate(resource); - if (error.isSome() || Resources::empty(resource)) { - // TODO(benh): Send back the invalid resources? - return Error( - "Executor for task " + stringify(task.task_id()) + - " uses invalid resources " + stringify(resource)); - } + Option<Error> error = Resources::validate(task.executor().resources()); + if (error.isSome()) { + return Error( + "Executor for task " + stringify(task.task_id()) + + " uses invalid resources: " + error.get().message); } executorResources = task.executor().resources(); http://git-wip-us.apache.org/repos/asf/mesos/blob/f5cb86db/src/tests/resource_offers_tests.cpp ---------------------------------------------------------------------- diff --git a/src/tests/resource_offers_tests.cpp b/src/tests/resource_offers_tests.cpp index 7e09319..c8c25d7 100644 --- a/src/tests/resource_offers_tests.cpp +++ b/src/tests/resource_offers_tests.cpp @@ -200,65 +200,6 @@ TEST_F(TaskValidationTest, TaskUsesNoResources) } -TEST_F(TaskValidationTest, TaskUsesEmptyResources) -{ - Try<PID<Master>> master = StartMaster(); - ASSERT_SOME(master); - - Try<PID<Slave>> slave = StartSlave(); - ASSERT_SOME(slave); - - MockScheduler sched; - MesosSchedulerDriver driver( - &sched, DEFAULT_FRAMEWORK_INFO, master.get(), DEFAULT_CREDENTIAL); - - EXPECT_CALL(sched, registered(&driver, _, _)) - .Times(1); - - Future<vector<Offer>> offers; - EXPECT_CALL(sched, resourceOffers(&driver, _)) - .WillOnce(FutureArg<1>(&offers)) - .WillRepeatedly(Return()); // Ignore subsequent offers. - - driver.start(); - - AWAIT_READY(offers); - EXPECT_NE(0u, offers.get().size()); - - TaskInfo task; - task.set_name(""); - task.mutable_task_id()->set_value("1"); - task.mutable_slave_id()->MergeFrom(offers.get()[0].slave_id()); - task.mutable_executor()->MergeFrom(DEFAULT_EXECUTOR_INFO); - - Resource* cpus = task.add_resources(); - cpus->set_name("cpus"); - cpus->set_type(Value::SCALAR); - cpus->mutable_scalar()->set_value(0); - - vector<TaskInfo> tasks; - tasks.push_back(task); - - Future<TaskStatus> status; - EXPECT_CALL(sched, statusUpdate(&driver, _)) - .WillOnce(FutureArg<1>(&status)); - - driver.launchTasks(offers.get()[0].id(), tasks); - - AWAIT_READY(status); - EXPECT_EQ(task.task_id(), status.get().task_id()); - EXPECT_EQ(TASK_ERROR, status.get().state()); - EXPECT_EQ(TaskStatus::REASON_TASK_INVALID, status.get().reason()); - EXPECT_TRUE(status.get().has_message()); - EXPECT_EQ("Task uses empty resources: cpus(*):0", status.get().message()); - - driver.stop(); - driver.join(); - - Shutdown(); -} - - TEST_F(TaskValidationTest, TaskUsesMoreResourcesThanOffered) { Try<PID<Master>> master = StartMaster(); @@ -797,7 +738,7 @@ TEST_F(ResourceOffersTest, ResourcesGetReofferedAfterTaskInfoError) Resource* cpus = task.add_resources(); cpus->set_name("cpus"); cpus->set_type(Value::SCALAR); - cpus->mutable_scalar()->set_value(0); + cpus->mutable_scalar()->set_value(-1); Resource* mem = task.add_resources(); mem->set_name("mem"); @@ -818,7 +759,8 @@ TEST_F(ResourceOffersTest, ResourcesGetReofferedAfterTaskInfoError) EXPECT_EQ(TASK_ERROR, status.get().state()); EXPECT_EQ(TaskStatus::REASON_TASK_INVALID, status.get().reason()); EXPECT_TRUE(status.get().has_message()); - EXPECT_EQ("Task uses empty resources: cpus(*):0", status.get().message()); + EXPECT_TRUE(strings::startsWith( + status.get().message(), "Task uses invalid resources")); MockScheduler sched2; MesosSchedulerDriver driver2(
