You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by ji...@apache.org on 2014/08/06 18:47:21 UTC

[2/2] git commit: Do not send ephemeral_ports resource to frameworks.

Do not send ephemeral_ports resource to frameworks.

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


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

Branch: refs/heads/master
Commit: 7c054d1887d069ca203f7326fab0abd2ee420823
Parents: 51aaff3
Author: Jie Yu <yu...@gmail.com>
Authored: Tue Aug 5 10:09:00 2014 -0700
Committer: Jie Yu <yu...@gmail.com>
Committed: Wed Aug 6 09:46:39 2014 -0700

----------------------------------------------------------------------
 src/master/master.cpp      | 14 ++++++++++++-
 src/tests/master_tests.cpp | 45 +++++++++++++++++++++++++++++++++++++++++
 2 files changed, 58 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/7c054d18/src/master/master.cpp
----------------------------------------------------------------------
diff --git a/src/master/master.cpp b/src/master/master.cpp
index 9bede96..c44896e 100644
--- a/src/master/master.cpp
+++ b/src/master/master.cpp
@@ -3460,8 +3460,20 @@ void Master::offer(const FrameworkID& frameworkId,
     framework->addOffer(offer);
     slave->addOffer(offer);
 
+    // TODO(jieyu): For now, we strip 'ephemeral_ports' resource from
+    // offers so that frameworks do not see this resource. This is a
+    // short term workaround. Revisit this once we resolve MESOS-1654.
+    Offer offer_ = *offer;
+    offer_.clear_resources();
+
+    foreach (const Resource& resource, offered) {
+      if (resource.name() != "ephemeral_ports") {
+        offer_.add_resources()->CopyFrom(resource);
+      }
+    }
+
     // Add the offer *AND* the corresponding slave's PID.
-    message.add_offers()->MergeFrom(*offer);
+    message.add_offers()->MergeFrom(offer_);
     message.add_pids(slave->pid);
   }
 

http://git-wip-us.apache.org/repos/asf/mesos/blob/7c054d18/src/tests/master_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/master_tests.cpp b/src/tests/master_tests.cpp
index 9a1a373..9de2424 100644
--- a/src/tests/master_tests.cpp
+++ b/src/tests/master_tests.cpp
@@ -2006,6 +2006,51 @@ TEST_F(MasterTest, OrphanTasks)
 }
 
 
+// This test verifies that the master will strip ephemeral ports
+// resource from offers so that frameworks cannot see it.
+TEST_F(MasterTest, IgnoreEphemeralPortsResource)
+{
+  Try<PID<Master> > master = StartMaster();
+  ASSERT_SOME(master);
+
+  string resourcesWithoutEphemeralPorts =
+    "cpus:2;mem:1024;disk:1024;ports:[31000-32000]";
+
+  string resourcesWithEphemeralPorts =
+    resourcesWithoutEphemeralPorts + ";ephemeral_ports:[30001-30999]";
+
+  slave::Flags flags = CreateSlaveFlags();
+  flags.resources = resourcesWithEphemeralPorts;
+
+  Try<PID<Slave> > slave = StartSlave(flags);
+  ASSERT_SOME(slave);
+
+  MockScheduler sched;
+  MesosSchedulerDriver driver(
+    &sched, DEFAULT_FRAMEWORK_INFO, master.get(), DEFAULT_CREDENTIAL);
+
+  EXPECT_CALL(sched, registered(&driver, _, _));
+
+  Future<vector<Offer> > offers;
+  EXPECT_CALL(sched, resourceOffers(&driver, _))
+    .WillOnce(FutureArg<1>(&offers));
+
+  driver.start();
+
+  AWAIT_READY(offers);
+  EXPECT_EQ(1u, offers.get().size());
+
+  EXPECT_EQ(
+      Resources(offers.get()[0].resources()),
+      Resources::parse(resourcesWithoutEphemeralPorts).get());
+
+  driver.stop();
+  driver.join();
+
+  Shutdown();
+}
+
+
 #ifdef WITH_NETWORK_ISOLATOR
 TEST_F(MasterTest, MaxExecutorsPerSlave)
 {