You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by bm...@apache.org on 2016/04/13 01:07:47 UTC

mesos git commit: Added task metadata to ResourceUsage.

Repository: mesos
Updated Branches:
  refs/heads/master c7802c030 -> 2155843c3


Added task metadata to ResourceUsage.

This makes non-terminal task metadata available in the container
resource usage. Notably this may be useful when task labels need
to be examined for the purposes of oversubscription.

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


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

Branch: refs/heads/master
Commit: 2155843c31fde0b20be64cb15a78ca2c61599a1c
Parents: c7802c0
Author: Zhitao Li <zh...@gmail.com>
Authored: Tue Apr 12 16:00:23 2016 -0700
Committer: Benjamin Mahler <bm...@apache.org>
Committed: Tue Apr 12 16:00:23 2016 -0700

----------------------------------------------------------------------
 CHANGELOG                            |  3 +++
 include/mesos/mesos.proto            | 10 ++++++++++
 include/mesos/v1/mesos.proto         | 10 ++++++++++
 src/slave/slave.cpp                  | 12 ++++++++++++
 src/tests/oversubscription_tests.cpp | 13 ++++++++++++-
 5 files changed, 47 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/2155843c/CHANGELOG
----------------------------------------------------------------------
diff --git a/CHANGELOG b/CHANGELOG
index cbc4f9b..02b6094 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -58,6 +58,9 @@ Additional API Changes:
 
   * [MESOS-5029] - Added 'labels' to ExecutorInfo.
 
+  * [MESOS-5030] - Added non-terminal task metadata to the container resource
+    usage information.
+
 3rd Party Upgrades:
   * [MESOS-4805] - Upgraded vendored ry-http-parser-1c3624a to nodejs/http-parser 2.6.1.
   * [MESOS-4678] - Upgraded vendored protobuf 2.5.0 to 2.6.1.

http://git-wip-us.apache.org/repos/asf/mesos/blob/2155843c/include/mesos/mesos.proto
----------------------------------------------------------------------
diff --git a/include/mesos/mesos.proto b/include/mesos/mesos.proto
index eefa292..1232bcd 100644
--- a/include/mesos/mesos.proto
+++ b/include/mesos/mesos.proto
@@ -1021,6 +1021,16 @@ message ResourceUsage {
 
     // The container id for the executor specified in the executor_info field.
     required ContainerID container_id = 4;
+
+    message Task {
+      required string name = 1;
+      required TaskID id = 2;
+      repeated Resource resources = 3;
+      optional Labels labels = 4;
+    }
+
+    // Non-terminal tasks.
+    repeated Task tasks = 5;
   }
 
   repeated Executor executors = 1;

http://git-wip-us.apache.org/repos/asf/mesos/blob/2155843c/include/mesos/v1/mesos.proto
----------------------------------------------------------------------
diff --git a/include/mesos/v1/mesos.proto b/include/mesos/v1/mesos.proto
index 9b4f68f..1048fae 100644
--- a/include/mesos/v1/mesos.proto
+++ b/include/mesos/v1/mesos.proto
@@ -1020,6 +1020,16 @@ message ResourceUsage {
 
     // The container id for the executor specified in the executor_info field.
     required ContainerID container_id = 4;
+
+    message Task {
+      required string name = 1;
+      required TaskID id = 2;
+      repeated Resource resources = 3;
+      optional Labels labels = 4;
+    }
+
+    // Non-terminal tasks.
+    repeated Task tasks = 5;
   }
 
   repeated Executor executors = 1;

http://git-wip-us.apache.org/repos/asf/mesos/blob/2155843c/src/slave/slave.cpp
----------------------------------------------------------------------
diff --git a/src/slave/slave.cpp b/src/slave/slave.cpp
index 9de7e15..6ee277d 100644
--- a/src/slave/slave.cpp
+++ b/src/slave/slave.cpp
@@ -5174,6 +5174,18 @@ Future<ResourceUsage> Slave::usage()
       entry->mutable_allocated()->CopyFrom(executor->resources);
       entry->mutable_container_id()->CopyFrom(executor->containerId);
 
+      // We include non-terminal tasks in ResourceUsage.
+      foreach (const Task* task, executor->launchedTasks.values()) {
+        ResourceUsage::Executor::Task* t = entry->add_tasks();
+        t->set_name(task->name());
+        t->mutable_id()->CopyFrom(task->task_id());
+        t->mutable_resources()->CopyFrom(task->resources());
+
+        if (task->has_labels()) {
+          t->mutable_labels()->CopyFrom(task->labels());
+        }
+      }
+
       futures.push_back(containerizer->usage(executor->containerId));
     }
   }

http://git-wip-us.apache.org/repos/asf/mesos/blob/2155843c/src/tests/oversubscription_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/oversubscription_tests.cpp b/src/tests/oversubscription_tests.cpp
index f983765..f73f7be 100644
--- a/src/tests/oversubscription_tests.cpp
+++ b/src/tests/oversubscription_tests.cpp
@@ -227,8 +227,10 @@ TEST_F(OversubscriptionTest, FetchResourceUsage)
   EXPECT_NE(0u, offers.get().size());
 
   TaskInfo task = createTask(offers.get()[0], "sleep 10", DEFAULT_EXECUTOR_ID);
+  task.mutable_labels()->add_labels()->CopyFrom(
+      createLabel("key1", "value1"));
   task.mutable_executor()->mutable_labels()->add_labels()->CopyFrom(
-      createLabel("key", "value"));
+      createLabel("key2", "value2"));
 
   Future<TaskStatus> status;
   EXPECT_CALL(sched, statusUpdate(&driver, _))
@@ -257,6 +259,15 @@ TEST_F(OversubscriptionTest, FetchResourceUsage)
   ASSERT_EQ(usage.get().executors(0).statistics(), statistics);
   ASSERT_EQ(task.executor().labels(),
             usage.get().executors(0).executor_info().labels());
+  ASSERT_EQ(1, usage.get().executors(0).tasks().size());
+  ASSERT_EQ(task.name(),
+            usage.get().executors(0).tasks(0).name());
+  ASSERT_EQ(task.task_id(),
+            usage.get().executors(0).tasks(0).id());
+  ASSERT_EQ(task.resources(),
+            usage.get().executors(0).tasks(0).resources());
+  ASSERT_EQ(task.labels(),
+            usage.get().executors(0).tasks(0).labels());
 
   EXPECT_CALL(exec, shutdown(_))
     .Times(AtMost(1));