You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by vi...@apache.org on 2014/06/11 01:33:52 UTC

[7/7] git commit: Changed TaskInfoError and OfferError to Option.

Changed TaskInfoError and OfferError to Option<Error>.

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


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

Branch: refs/heads/vinod/authorize_tasks
Commit: b73ea62753bb4e7301edb4691d0b85c3be490fb5
Parents: b508516
Author: Vinod Kone <vi...@twitter.com>
Authored: Fri Jun 6 15:45:33 2014 -0700
Committer: Vinod Kone <vi...@twitter.com>
Committed: Tue Jun 10 16:33:36 2014 -0700

----------------------------------------------------------------------
 src/master/master.cpp | 57 ++++++++++++++++++++++------------------------
 1 file changed, 27 insertions(+), 30 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/b73ea627/src/master/master.cpp
----------------------------------------------------------------------
diff --git a/src/master/master.cpp b/src/master/master.cpp
index 7884aa4..df75c8a 100644
--- a/src/master/master.cpp
+++ b/src/master/master.cpp
@@ -34,6 +34,7 @@
 #include <process/metrics/metrics.hpp>
 
 #include <stout/check.hpp>
+#include <stout/error.hpp>
 #include <stout/lambda.hpp>
 #include <stout/memory.hpp>
 #include <stout/multihashmap.hpp>
@@ -1375,11 +1376,9 @@ void Master::resourceRequest(
 // back to the framework for only that task description. An instance
 // will be reused for each task description from same 'launchTasks()',
 // but not for task descriptions from different offers.
-typedef Option<string> TaskInfoError;
-
 struct TaskInfoVisitor
 {
-  virtual TaskInfoError operator () (
+  virtual Option<Error> operator () (
       const TaskInfo& task,
       const Resources& resources,
       const Framework& framework,
@@ -1391,7 +1390,7 @@ struct TaskInfoVisitor
 // Checks that a task id is valid, i.e., contains only valid characters.
 struct TaskIDChecker : TaskInfoVisitor
 {
-  virtual TaskInfoError operator () (
+  virtual Option<Error> operator () (
       const TaskInfo& task,
       const Resources& resources,
       const Framework& framework,
@@ -1416,7 +1415,7 @@ struct TaskIDChecker : TaskInfoVisitor
 // Checks that the slave ID used by a task is correct.
 struct SlaveIDChecker : TaskInfoVisitor
 {
-  virtual TaskInfoError operator () (
+  virtual Option<Error> operator () (
       const TaskInfo& task,
       const Resources& resources,
       const Framework& framework,
@@ -1438,7 +1437,7 @@ struct SlaveIDChecker : TaskInfoVisitor
 // task tries to re-use an ID.
 struct UniqueTaskIDChecker : TaskInfoVisitor
 {
-  virtual TaskInfoError operator () (
+  virtual Option<Error> operator () (
       const TaskInfo& task,
       const Resources& resources,
       const Framework& framework,
@@ -1464,7 +1463,7 @@ struct UniqueTaskIDChecker : TaskInfoVisitor
 // offered on that slave
 struct ResourceUsageChecker : TaskInfoVisitor
 {
-  virtual TaskInfoError operator () (
+  virtual Option<Error> operator () (
       const TaskInfo& task,
       const Resources& resources,
       const Framework& framework,
@@ -1531,7 +1530,7 @@ struct ResourceUsageChecker : TaskInfoVisitor
 // ExecutorID) have an identical ExecutorInfo.
 struct ExecutorInfoChecker : TaskInfoVisitor
 {
-  virtual TaskInfoError operator () (
+  virtual Option<Error> operator () (
       const TaskInfo& task,
       const Resources& resources,
       const Framework& framework,
@@ -1572,7 +1571,7 @@ struct ExecutorInfoChecker : TaskInfoVisitor
 // launched on a slave that has not enabled checkpointing.
 struct CheckpointChecker : TaskInfoVisitor
 {
-  virtual TaskInfoError operator () (
+  virtual Option<Error> operator () (
       const TaskInfo& task,
       const Resources& resources,
       const Framework& framework,
@@ -1592,11 +1591,9 @@ struct CheckpointChecker : TaskInfoVisitor
 // The error reporting scheme is also similar to TaskInfoVisitor.
 // However, offer processing (and subsequent task processing) is
 // aborted altogether if offer visitor reports an error.
-typedef Option<string> OfferError;
-
 struct OfferVisitor
 {
-  virtual OfferError operator () (
+  virtual Option<Error> operator () (
       const OfferID& offerId,
       const Framework& framework,
       Master* master) = 0;
@@ -1619,14 +1616,14 @@ struct OfferVisitor
 
 // Checks validity/liveness of an offer.
 struct ValidOfferChecker : OfferVisitor {
-  virtual OfferError operator () (
+  virtual Option<Error> operator () (
       const OfferID& offerId,
       const Framework& framework,
       Master* master)
   {
     Offer* offer = getOffer(master, offerId);
     if (offer == NULL) {
-      return "Offer " + stringify(offerId) + " is no longer valid";
+      return Error("Offer " + stringify(offerId) + " is no longer valid");
     }
 
     return None();
@@ -1636,14 +1633,14 @@ struct ValidOfferChecker : OfferVisitor {
 
 // Checks that an offer belongs to the expected framework.
 struct FrameworkChecker : OfferVisitor {
-  virtual OfferError operator () (
+  virtual Option<Error> operator () (
       const OfferID& offerId,
       const Framework& framework,
       Master* master)
   {
     Offer* offer = getOffer(master, offerId);
     if (offer == NULL) {
-      return "Offer " + stringify(offerId) + " is no longer valid";
+      return Error("Offer " + stringify(offerId) + " is no longer valid");
     }
 
     if (!(framework.id == offer->framework_id())) {
@@ -1661,7 +1658,7 @@ struct FrameworkChecker : OfferVisitor {
 // the same slave.
 struct SlaveChecker : OfferVisitor
 {
-  virtual OfferError operator () (
+  virtual Option<Error> operator () (
       const OfferID& offerId,
       const Framework& framework,
       Master* master)
@@ -1703,7 +1700,7 @@ struct SlaveChecker : OfferVisitor
 // Checks that an offer only appears once in offer list.
 struct UniqueOfferIDChecker : OfferVisitor
 {
-  virtual OfferError operator () (
+  virtual Option<Error> operator () (
       const OfferID& offerId,
       const Framework& framework,
       Master* master)
@@ -1782,17 +1779,17 @@ void Master::launchTasks(
   // Verify and aggregate all offers.
   // Abort offer and task processing if any offer validation failed.
   Resources totalResources;
-  OfferError offerError = None();
+  Option<Error> error = None();
   foreach (const OfferID& offerId, offerIds) {
     foreach (OfferVisitor* visitor, offerVisitors) {
-      offerError = (*visitor)(offerId, *framework, this);
-      if (offerError.isSome()) {
+      error = (*visitor)(offerId, *framework, this);
+      if (error.isSome()) {
         break;
       }
     }
     // Offer validation error needs to be propagated from visitor
     // loop above.
-    if (offerError.isSome()) {
+    if (error.isSome()) {
       break;
     }
 
@@ -1819,7 +1816,7 @@ void Master::launchTasks(
   foreach (const OfferID& offerId, offerIds) {
     Offer* offer = getOffer(offerId);
     if (offer != NULL) {
-      if (offerError.isSome()) {
+      if (error.isSome()) {
         allocator->resourcesRecovered(
             offer->framework_id(), offer->slave_id(), offer->resources());
       }
@@ -1827,9 +1824,9 @@ void Master::launchTasks(
     }
   }
 
-  if (offerError.isSome()) {
-    LOG(WARNING) << "Failed to validate offers " << stringify(offerIds)
-                   << ": " << offerError.get();
+  if (error.isSome()) {
+    LOG(WARNING) << "Failed to validate offer " << stringify(offerIds)
+                   << ": " << error.get().message;
 
     foreach (const TaskInfo& task, tasks) {
       const StatusUpdate& update = protobuf::createStatusUpdate(
@@ -1837,7 +1834,7 @@ void Master::launchTasks(
           task.slave_id(),
           task.task_id(),
           TASK_LOST,
-          "Task launched with invalid offers: " + offerError.get());
+          "Task launched with invalid offers: " + error.get().message);
 
       LOG(INFO) << "Sending status update " << update
                 << " for launch task attempt on invalid offers: "
@@ -1873,7 +1870,7 @@ void Master::launchTasks(
   // Loop through each task and check it's validity.
   foreach (const TaskInfo& task, tasks) {
     // Possible error found while checking task's validity.
-    TaskInfoError error = None();
+    Option<Error> error = None();
 
     // Invoke each visitor.
     foreach (TaskInfoVisitor* visitor, taskVisitors) {
@@ -1889,14 +1886,14 @@ void Master::launchTasks(
     } else {
       // Error validating task, send a failed status update.
       LOG(WARNING) << "Failed to validate task " << task.task_id()
-                   << " : " << error.get();
+                   << " : " << error.get().message;
 
       const StatusUpdate& update = protobuf::createStatusUpdate(
           framework->id,
           slave->id,
           task.task_id(),
           TASK_LOST,
-          error.get());
+          error.get().message);
 
       LOG(INFO) << "Sending status update "
                 << update << " for invalid task";