You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by be...@apache.org on 2013/12/02 17:57:08 UTC

[14/14] git commit: Used 'Failure' instead of Future::failed.

Used 'Failure' instead of Future<T>::failed.

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


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

Branch: refs/heads/master
Commit: e427fae0c7e9bed5424f33a6cfe4ca5c9d99b0dc
Parents: 43e90f5
Author: Benjamin Hindman <be...@gmail.com>
Authored: Wed Nov 27 11:15:28 2013 -0800
Committer: Benjamin Hindman <be...@gmail.com>
Committed: Sun Dec 1 23:17:46 2013 -0800

----------------------------------------------------------------------
 src/files/files.cpp                 |  6 +--
 src/linux/cgroups.cpp               | 86 ++++++++++++++++----------------
 src/master/registrar.cpp            |  7 +--
 src/slave/cgroups_isolator.cpp      | 17 +++----
 src/slave/monitor.cpp               |  4 +-
 src/slave/process_isolator.cpp      |  6 +--
 src/slave/reaper.cpp                |  2 +-
 src/slave/slave.cpp                 |  2 +-
 src/slave/status_update_manager.cpp | 20 ++++----
 src/state/leveldb.cpp               | 18 +++----
 src/state/protobuf.hpp              |  4 +-
 src/state/zookeeper.cpp             | 16 +++---
 src/zookeeper/group.cpp             | 14 +++---
 13 files changed, 99 insertions(+), 103 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/e427fae0/src/files/files.cpp
----------------------------------------------------------------------
diff --git a/src/files/files.cpp b/src/files/files.cpp
index 6b85842..45ef95c 100644
--- a/src/files/files.cpp
+++ b/src/files/files.cpp
@@ -116,7 +116,7 @@ Future<Nothing> FilesProcess::attach(const string& path, const string& name)
   Result<string> result = os::realpath(path);
 
   if (!result.isSome()) {
-    return Future<Nothing>::failed(
+    return Failure(
         "Failed to get realpath of '" + path + "': " +
         (result.isError()
          ? result.error()
@@ -127,8 +127,8 @@ Future<Nothing> FilesProcess::attach(const string& path, const string& name)
   Try<bool> access = os::access(result.get(), R_OK);
 
   if (access.isError() || !access.get()) {
-    return Future<Nothing>::failed("Failed to access '" + path + "': " +
-        (access.isError() ? access.error() : "Access denied"));
+    return Failure("Failed to access '" + path + "': " +
+                   (access.isError() ? access.error() : "Access denied"));
   }
 
   // To simplify the read/browse logic, strip any trailing / from the name.

http://git-wip-us.apache.org/repos/asf/mesos/blob/e427fae0/src/linux/cgroups.cpp
----------------------------------------------------------------------
diff --git a/src/linux/cgroups.cpp b/src/linux/cgroups.cpp
index 8379aa3..5a95e75 100644
--- a/src/linux/cgroups.cpp
+++ b/src/linux/cgroups.cpp
@@ -407,32 +407,30 @@ static Try<Nothing> write(
 
 // Returns some error string if either (a) hierarchy is not mounted,
 // (b) cgroup does not exist, or (c) control file does not exist.
-static Option<string> verify(
+static Option<Error> verify(
     const string& hierarchy,
     const string& cgroup = "",
     const string& control = "")
 {
   Try<bool> mounted = cgroups::mounted(hierarchy);
   if (mounted.isError()) {
-    return Option<string>::some(
+    return Error(
         "Failed to determine if the hierarchy at '" + hierarchy +
         "' is mounted: " + mounted.error());
   } else if (!mounted.get()) {
-    return Option<string>::some(
-        "'" + hierarchy + "' is not a valid hierarchy");
+    return Error("'" + hierarchy + "' is not a valid hierarchy");
   }
 
   if (cgroup != "") {
     if (!os::exists(path::join(hierarchy, cgroup))) {
-      return Option<string>::some(
-          "'" + cgroup + "' is not a valid cgroup");
+      return Error("'" + cgroup + "' is not a valid cgroup");
     }
   }
 
   if (control != "") {
     CHECK(cgroup != "");
     if (!os::exists(path::join(hierarchy, cgroup, control))) {
-      return Option<string>::some(
+      return Error(
           "'" + control + "' is not a valid control (is subsystem attached?)");
     }
   }
@@ -655,9 +653,9 @@ Try<Nothing> mount(const string& hierarchy, const string& subsystems, int retry)
 
 Try<Nothing> unmount(const string& hierarchy)
 {
-  Option<string> error = verify(hierarchy);
+  Option<Error> error = verify(hierarchy);
   if (error.isSome()) {
-    return Error(error.get());
+    return error.get();
   }
 
   Try<Nothing> unmount = internal::unmount(hierarchy);
@@ -721,9 +719,9 @@ Try<bool> mounted(const string& hierarchy, const string& subsystems)
 
 Try<Nothing> create(const string& hierarchy, const string& cgroup)
 {
-  Option<string> error = verify(hierarchy);
+  Option<Error> error = verify(hierarchy);
   if (error.isSome()) {
-    return Error(error.get());
+    return error.get();
   }
 
   return internal::create(hierarchy, cgroup);
@@ -732,9 +730,9 @@ Try<Nothing> create(const string& hierarchy, const string& cgroup)
 
 Try<Nothing> remove(const string& hierarchy, const string& cgroup)
 {
-  Option<string> error = verify(hierarchy, cgroup);
+  Option<Error> error = verify(hierarchy, cgroup);
   if (error.isSome()) {
-    return Error(error.get());
+    return error.get();
   }
 
   Try<vector<string> > cgroups = cgroups::get(hierarchy, cgroup);
@@ -752,9 +750,9 @@ Try<Nothing> remove(const string& hierarchy, const string& cgroup)
 
 Try<bool> exists(const string& hierarchy, const string& cgroup)
 {
-  Option<string> error = verify(hierarchy);
+  Option<Error> error = verify(hierarchy);
   if (error.isSome()) {
-    return Error(error.get());
+    return error.get();
   }
 
   return os::exists(path::join(hierarchy, cgroup));
@@ -763,9 +761,9 @@ Try<bool> exists(const string& hierarchy, const string& cgroup)
 
 Try<vector<string> > get(const string& hierarchy, const string& cgroup)
 {
-  Option<string> error = verify(hierarchy, cgroup);
+  Option<Error> error = verify(hierarchy, cgroup);
   if (error.isSome()) {
-    return Error(error.get());
+    return error.get();
   }
 
   Result<string> hierarchyAbsPath = os::realpath(hierarchy);
@@ -826,9 +824,9 @@ Try<Nothing> kill(
     const string& cgroup,
     int signal)
 {
-  Option<string> error = verify(hierarchy, cgroup);
+  Option<Error> error = verify(hierarchy, cgroup);
   if (error.isSome()) {
-    return Error(error.get());
+    return error.get();
   }
 
   Try<set<pid_t> > pids = tasks(hierarchy, cgroup);
@@ -858,9 +856,9 @@ Try<string> read(
     const string& cgroup,
     const string& control)
 {
-  Option<string> error = verify(hierarchy, cgroup, control);
+  Option<Error> error = verify(hierarchy, cgroup, control);
   if (error.isSome()) {
-    return Error(error.get());
+    return error.get();
   }
 
   return internal::read(hierarchy, cgroup, control);
@@ -873,9 +871,9 @@ Try<Nothing> write(
     const string& control,
     const string& value)
 {
-  Option<string> error = verify(hierarchy, cgroup, control);
+  Option<Error> error = verify(hierarchy, cgroup, control);
   if (error.isSome()) {
-    return Error(error.get());
+    return error.get();
   }
 
   return internal::write(hierarchy, cgroup, control, value);
@@ -887,9 +885,9 @@ Try<bool> exists(
     const string& cgroup,
     const string& control)
 {
-  Option<string> error = verify(hierarchy, cgroup);
+  Option<Error> error = verify(hierarchy, cgroup);
   if (error.isSome()) {
-    return Error(error.get());
+    return error.get();
   }
 
   return os::exists(path::join(hierarchy, cgroup, control));
@@ -1146,9 +1144,9 @@ Future<uint64_t> listen(
     const string& control,
     const Option<string>& args)
 {
-  Option<string> error = verify(hierarchy, cgroup, control);
+  Option<Error> error = verify(hierarchy, cgroup, control);
   if (error.isSome()) {
-    return Future<uint64_t>::failed(error.get());
+    return Failure(error.get());
   }
 
   internal::EventListener* listener =
@@ -1357,19 +1355,19 @@ Future<bool> freeze(
     const Duration& interval,
     unsigned int retries)
 {
-  Option<string> error = verify(hierarchy, cgroup, "freezer.state");
+  Option<Error> error = verify(hierarchy, cgroup, "freezer.state");
   if (error.isSome()) {
-    return Future<bool>::failed(error.get());
+    return Failure(error.get());
   }
 
   if (interval < Seconds(0)) {
-    return Future<bool>::failed("Interval should be non-negative");
+    return Failure("Interval should be non-negative");
   }
 
   // Check the current freezer state.
   Try<string> state = internal::read(hierarchy, cgroup, "freezer.state");
   if (state.isError()) {
-    return Future<bool>::failed(
+    return Failure(
         "Failed to read control 'freezer.state': " + state.error());
   } else if (strings::trim(state.get()) == "FROZEN") {
     // Immediately return success.
@@ -1389,19 +1387,19 @@ Future<bool> thaw(
     const string& cgroup,
     const Duration& interval)
 {
-  Option<string> error = verify(hierarchy, cgroup, "freezer.state");
+  Option<Error> error = verify(hierarchy, cgroup, "freezer.state");
   if (error.isSome()) {
-    return Future<bool>::failed(error.get());
+    return Failure(error.get());
   }
 
   if (interval < Seconds(0)) {
-    return Future<bool>::failed("Interval should be non-negative");
+    return Failure("Interval should be non-negative");
   }
 
   // Check the current freezer state.
   Try<string> state = internal::read(hierarchy, cgroup, "freezer.state");
   if (state.isError()) {
-    return Future<bool>::failed(
+    return Failure(
         "Failed to read control 'freezer.state': " + state.error());
   } else if (strings::trim(state.get()) == "THAWED") {
     // Immediately return success.
@@ -1551,7 +1549,7 @@ private:
   {
     Try<Nothing> kill = cgroups::kill(hierarchy, cgroup, signal);
     if (kill.isError()) {
-      return Future<Nothing>::failed(kill.error());
+      return Failure(kill.error());
     }
     return Nothing();
   }
@@ -1685,13 +1683,13 @@ Future<bool> destroy(
     const Duration& interval)
 {
   if (interval < Seconds(0)) {
-    return Future<bool>::failed("Interval should be non-negative");
+    return Failure("Interval should be non-negative");
   }
 
   // Construct the vector of cgroups to destroy.
   Try<vector<string> > cgroups = cgroups::get(hierarchy, cgroup);
   if (cgroups.isError()) {
-    return Future<bool>::failed(
+    return Failure(
         "Failed to get nested cgroups: " + cgroups.error());
   }
 
@@ -1705,7 +1703,7 @@ Future<bool> destroy(
   }
 
   // If the freezer subsystem is available, destroy the cgroups.
-  Option<string> error = verify(hierarchy, cgroup, "freezer.state");
+  Option<Error> error = verify(hierarchy, cgroup, "freezer.state");
   if (error.isNone()) {
     internal::Destroyer* destroyer =
       new internal::Destroyer(hierarchy, candidates, interval);
@@ -1717,7 +1715,7 @@ Future<bool> destroy(
     foreach (const std::string& cgroup, candidates) {
       Try<Nothing> remove = cgroups::remove(hierarchy, cgroup);
       if (remove.isError()) {
-        return Future<bool>::failed(remove.error());
+        return Failure(remove.error());
       }
     }
   }
@@ -1734,7 +1732,7 @@ Future<bool> cleanup(const string& hierarchy)
 {
   Try<bool> mounted = cgroups::mounted(hierarchy);
   if (mounted.isError()) {
-    return Future<bool>::failed(mounted.error());
+    return Failure(mounted.error());
   }
 
   if (mounted.get()) {
@@ -1746,7 +1744,7 @@ Future<bool> cleanup(const string& hierarchy)
     if (os::exists(hierarchy)) {
       Try<Nothing> rmdir = os::rmdir(hierarchy);
       if (rmdir.isError()) {
-        return Future<bool>::failed(rmdir.error());
+        return Failure(rmdir.error());
       }
     }
   }
@@ -1760,14 +1758,14 @@ Future<bool> _cleanup(const string& hierarchy)
   // Remove the hierarchy.
   Try<Nothing> unmount = cgroups::unmount(hierarchy);
   if (unmount.isError()) {
-    return Future<bool>::failed(unmount.error());
+    return Failure(unmount.error());
   }
 
   // Remove the directory if it still exists.
   if (os::exists(hierarchy)) {
     Try<Nothing> rmdir = os::rmdir(hierarchy);
     if (rmdir.isError()) {
-      return Future<bool>::failed(rmdir.error());
+      return Failure(rmdir.error());
     }
   }
 

http://git-wip-us.apache.org/repos/asf/mesos/blob/e427fae0/src/master/registrar.cpp
----------------------------------------------------------------------
diff --git a/src/master/registrar.cpp b/src/master/registrar.cpp
index 42fe30e..61fdea3 100644
--- a/src/master/registrar.cpp
+++ b/src/master/registrar.cpp
@@ -40,6 +40,7 @@ using mesos::internal::state::protobuf::State;
 using mesos::internal::state::protobuf::Variable;
 
 using process::dispatch;
+using process::Failure;
 using process::Future;
 using process::Process;
 using process::Promise;
@@ -259,7 +260,7 @@ Future<bool> RegistrarProcess::_readmit(
   CHECK_SOME(slaves.variable);
 
   if (!info.has_id()) {
-    return Future<bool>::failed("Expecting SlaveInfo to have a SlaveID");
+    return Failure("Expecting SlaveInfo to have a SlaveID");
   }
 
   Mutation<registry::Slaves>* mutation = new Readmit(info);
@@ -285,7 +286,7 @@ Future<bool> RegistrarProcess::_remove(
   CHECK_SOME(slaves.variable);
 
   if (!info.has_id()) {
-    return Future<bool>::failed("Expecting SlaveInfo to have a SlaveID");
+    return Failure("Expecting SlaveInfo to have a SlaveID");
   }
 
   Mutation<registry::Slaves>* mutation = new Remove(info);
@@ -355,7 +356,7 @@ Future<bool> RegistrarProcess::_update(
 
   if (variable.isNone()) {
     LOG(WARNING) << "Failed to update 'slaves': version mismatch";
-    return Future<bool>::failed("Failed to update 'slaves': version mismatch");
+    return Failure("Failed to update 'slaves': version mismatch");
   }
 
   LOG(INFO) << "Successfully updated 'slaves'";

http://git-wip-us.apache.org/repos/asf/mesos/blob/e427fae0/src/slave/cgroups_isolator.cpp
----------------------------------------------------------------------
diff --git a/src/slave/cgroups_isolator.cpp b/src/slave/cgroups_isolator.cpp
index e91d22e..80155a3 100644
--- a/src/slave/cgroups_isolator.cpp
+++ b/src/slave/cgroups_isolator.cpp
@@ -59,6 +59,7 @@
 #include "slave/state.hpp"
 
 using process::defer;
+using process::Failure;
 using process::Future;
 
 using std::list;
@@ -728,7 +729,7 @@ Future<ResourceStatistics> CgroupsIsolator::usage(
   if (!infos.contains(frameworkId) ||
       !infos[frameworkId].contains(executorId) ||
       infos[frameworkId][executorId]->killed) {
-    return Future<ResourceStatistics>::failed("Unknown or killed executor");
+    return Failure("Unknown or killed executor");
   }
 
   // Get the number of clock ticks, used for cpu accounting.
@@ -757,8 +758,7 @@ Future<ResourceStatistics> CgroupsIsolator::usage(
     cgroups::stat(hierarchy, info->name(), "cpuacct.stat");
 
   if (stat.isError()) {
-    return Future<ResourceStatistics>::failed(
-        "Failed to read cpuacct.stat: " + stat.error());
+    return Failure("Failed to read cpuacct.stat: " + stat.error());
   }
 
   // TODO(bmahler): Add namespacing to cgroups to enforce the expected
@@ -775,8 +775,7 @@ Future<ResourceStatistics> CgroupsIsolator::usage(
   //   2. It does not include any file backed pages.
   Try<Bytes> usage = cgroups::memory::usage_in_bytes(hierarchy, info->name());
   if (usage.isError()) {
-    return Future<ResourceStatistics>::failed(
-        "Failed to parse memory.usage_in_bytes: " + usage.error());
+    return Failure("Failed to parse memory.usage_in_bytes: " + usage.error());
   }
 
   // TODO(bmahler): Add namespacing to cgroups to enforce the expected
@@ -785,8 +784,7 @@ Future<ResourceStatistics> CgroupsIsolator::usage(
 
   stat = cgroups::stat(hierarchy, info->name(), "memory.stat");
   if (stat.isError()) {
-    return Future<ResourceStatistics>::failed(
-        "Failed to read memory.stat: " + stat.error());
+    return Failure("Failed to read memory.stat: " + stat.error());
   }
 
   if (stat.get().contains("total_cache")) {
@@ -805,8 +803,7 @@ Future<ResourceStatistics> CgroupsIsolator::usage(
   stat = cgroups::stat(hierarchy, info->name(), "cpu.stat");
 
   if (stat.isError()) {
-    return Future<ResourceStatistics>::failed(
-        "Failed to read cpu.stat: " + stat.error());
+    return Failure("Failed to read cpu.stat: " + stat.error());
   }
 
   if (stat.get().contains("nr_periods")) {
@@ -921,7 +918,7 @@ Future<Nothing> CgroupsIsolator::recover(
   // should be safe because we've been able to acquire the file lock).
   Try<vector<string> > orphans = cgroups::get(hierarchy, flags.cgroups_root);
   if (orphans.isError()) {
-    return Future<Nothing>::failed(orphans.error());
+    return Failure(orphans.error());
   }
 
   foreach (const string& orphan, orphans.get()) {

http://git-wip-us.apache.org/repos/asf/mesos/blob/e427fae0/src/slave/monitor.cpp
----------------------------------------------------------------------
diff --git a/src/slave/monitor.cpp b/src/slave/monitor.cpp
index 7201ad7..a931c4f 100644
--- a/src/slave/monitor.cpp
+++ b/src/slave/monitor.cpp
@@ -96,7 +96,7 @@ Future<Nothing> ResourceMonitorProcess::watch(
 {
   if (watches.contains(frameworkId) &&
       watches[frameworkId].contains(executorId)) {
-    return Future<Nothing>::failed("Already watched");
+    return Failure("Already watched");
   }
 
   watches[frameworkId][executorId] = executorInfo;
@@ -142,7 +142,7 @@ Future<Nothing> ResourceMonitorProcess::unwatch(
 
   if (!watches.contains(frameworkId) ||
       !watches[frameworkId].contains(executorId)) {
-    return Future<Nothing>::failed("Not watched");
+    return Failure("Not watched");
   }
 
   watches[frameworkId].erase(executorId);

http://git-wip-us.apache.org/repos/asf/mesos/blob/e427fae0/src/slave/process_isolator.cpp
----------------------------------------------------------------------
diff --git a/src/slave/process_isolator.cpp b/src/slave/process_isolator.cpp
index a6e9ed6..0bc698f 100644
--- a/src/slave/process_isolator.cpp
+++ b/src/slave/process_isolator.cpp
@@ -378,7 +378,7 @@ Future<ResourceStatistics> ProcessIsolator::usage(
   if (!infos.contains(frameworkId) ||
       !infos[frameworkId].contains(executorId) ||
       infos[frameworkId][executorId]->killed) {
-    return Future<ResourceStatistics>::failed("Unknown/killed executor");
+    return Failure("Unknown/killed executor");
   }
 
   ProcessInfo* info = infos[frameworkId][executorId];
@@ -404,7 +404,7 @@ Future<ResourceStatistics> ProcessIsolator::usage(
   Result<os::Process> process = os::process(info->pid.get());
 
   if (!process.isSome()) {
-    return Future<ResourceStatistics>::failed(
+    return Failure(
         process.isError() ? process.error() : "Process does not exist");
   }
 
@@ -425,7 +425,7 @@ Future<ResourceStatistics> ProcessIsolator::usage(
   const Try<set<pid_t> >& children = os::children(info->pid.get(), true);
 
   if (children.isError()) {
-    return Future<ResourceStatistics>::failed(
+    return Failure(
         "Failed to get children of " + stringify(info->pid.get()) + ": " +
         children.error());
   }

http://git-wip-us.apache.org/repos/asf/mesos/blob/e427fae0/src/slave/reaper.cpp
----------------------------------------------------------------------
diff --git a/src/slave/reaper.cpp b/src/slave/reaper.cpp
index 4ce9413..5eabbc3 100644
--- a/src/slave/reaper.cpp
+++ b/src/slave/reaper.cpp
@@ -60,7 +60,7 @@ Future<Option<int> > ReaperProcess::monitor(pid_t pid)
                  << " because it doesn't exist";
     return None();
   } else {
-    return Future<Option<int> >::failed(
+    return Failure(
         "Failed to monitor process " + stringify(pid) + ": " + process.error());
   }
 }

http://git-wip-us.apache.org/repos/asf/mesos/blob/e427fae0/src/slave/slave.cpp
----------------------------------------------------------------------
diff --git a/src/slave/slave.cpp b/src/slave/slave.cpp
index 6fc18c5..91afe03 100644
--- a/src/slave/slave.cpp
+++ b/src/slave/slave.cpp
@@ -2842,7 +2842,7 @@ Future<Nothing> Slave::garbageCollect(const string& path)
   if (mtime.isError()) {
     LOG(ERROR) << "Failed to find the mtime of '" << path
                << "': " << mtime.error();
-    return Future<Nothing>::failed(mtime.error());
+    return Failure(mtime.error());
   }
 
   // GC based on the modification time.

http://git-wip-us.apache.org/repos/asf/mesos/blob/e427fae0/src/slave/status_update_manager.cpp
----------------------------------------------------------------------
diff --git a/src/slave/status_update_manager.cpp b/src/slave/status_update_manager.cpp
index b79f9de..f7a0c40 100644
--- a/src/slave/status_update_manager.cpp
+++ b/src/slave/status_update_manager.cpp
@@ -241,7 +241,7 @@ Future<Nothing> StatusUpdateManagerProcess::recover(
         // Replay the stream.
         Try<Nothing> replay = stream->replay(task.updates, task.acks);
         if (replay.isError()) {
-          return Future<Nothing>::failed(
+          return Failure(
               "Failed to replay status updates for task " + stringify(task.id) +
               " of framework " + stringify(framework.id) +
               ": " + replay.error());
@@ -322,7 +322,7 @@ Future<Nothing> StatusUpdateManagerProcess::_update(
   // Verify that we didn't get a non-checkpointable update for a
   // stream that is checkpointable, and vice-versa.
   if (stream->checkpoint != checkpoint) {
-    return Future<Nothing>::failed(
+    return Failure(
         "Mismatched checkpoint value for status update " + stringify(update) +
         " (expected checkpoint=" + stringify(stream->checkpoint) +
         " actual checkpoint=" + stringify(checkpoint) + ")");
@@ -331,7 +331,7 @@ Future<Nothing> StatusUpdateManagerProcess::_update(
   // Handle the status update.
   Try<bool> result = stream->update(update);
   if (result.isError()) {
-    return Future<Nothing>::failed(result.error());
+    return Failure(result.error());
   }
 
   // We don't return a failed future here so that the slave can re-ack
@@ -346,7 +346,7 @@ Future<Nothing> StatusUpdateManagerProcess::_update(
     CHECK(stream->timeout.isNone());
     const Result<StatusUpdate>& next = stream->next();
     if (next.isError()) {
-      return Future<Nothing>::failed(next.error());
+      return Failure(next.error());
     }
 
     CHECK_SOME(next);
@@ -396,7 +396,7 @@ Future<bool> StatusUpdateManagerProcess::acknowledgement(
   // This might happen if we haven't completed recovery yet or if the
   // acknowledgement is for a stream that has been cleaned up.
   if (stream == NULL) {
-    return Future<bool>::failed(
+    return Failure(
         "Cannot find the status update stream for task " + stringify(taskId) +
         " of framework " + stringify(frameworkId));
   }
@@ -404,13 +404,13 @@ Future<bool> StatusUpdateManagerProcess::acknowledgement(
   // Get the corresponding update for this ACK.
   const Result<StatusUpdate>& update = stream->next();
   if (update.isError()) {
-    return Future<bool>::failed(update.error());
+    return Failure(update.error());
   }
 
   // This might happen if we retried a status update and got back
   // acknowledgments for both the original and the retried update.
   if (update.isNone()) {
-    return Future<bool>::failed(
+    return Failure(
         "Unexpected status update acknowledgment (UUID: " + uuid.toString() +
         ") for task " + stringify(taskId) +
         " of framework " + stringify(frameworkId));
@@ -421,11 +421,11 @@ Future<bool> StatusUpdateManagerProcess::acknowledgement(
     stream->acknowledgement(taskId, frameworkId, uuid, update.get());
 
   if (result.isError()) {
-    return Future<bool>::failed(result.error());
+    return Failure(result.error());
   }
 
   if (!result.get()) {
-    return Future<bool>::failed("Duplicate acknowledgement");
+    return Failure("Duplicate acknowledgement");
   }
 
   // Reset the timeout.
@@ -434,7 +434,7 @@ Future<bool> StatusUpdateManagerProcess::acknowledgement(
   // Get the next update in the queue.
   const Result<StatusUpdate>& next = stream->next();
   if (next.isError()) {
-    return Future<bool>::failed(next.error());
+    return Failure(next.error());
   }
 
   bool terminated = stream->terminated;

http://git-wip-us.apache.org/repos/asf/mesos/blob/e427fae0/src/state/leveldb.cpp
----------------------------------------------------------------------
diff --git a/src/state/leveldb.cpp b/src/state/leveldb.cpp
index a099db9..be0df0c 100644
--- a/src/state/leveldb.cpp
+++ b/src/state/leveldb.cpp
@@ -64,7 +64,7 @@ void LevelDBStorageProcess::initialize()
 Future<vector<string> > LevelDBStorageProcess::names()
 {
   if (error.isSome()) {
-    return Future<vector<string> >::failed(error.get());
+    return Failure(error.get());
   }
 
   vector<string> results;
@@ -87,13 +87,13 @@ Future<vector<string> > LevelDBStorageProcess::names()
 Future<Option<Entry> > LevelDBStorageProcess::get(const string& name)
 {
   if (error.isSome()) {
-    return Future<Option<Entry> >::failed(error.get());
+    return Failure(error.get());
   }
 
   Try<Option<Entry> > option = read(name);
 
   if (option.isError()) {
-    return Future<Option<Entry> >::failed(option.error());
+    return Failure(option.error());
   }
 
   return option.get();
@@ -103,7 +103,7 @@ Future<Option<Entry> > LevelDBStorageProcess::get(const string& name)
 Future<bool> LevelDBStorageProcess::set(const Entry& entry, const UUID& uuid)
 {
   if (error.isSome()) {
-    return Future<bool>::failed(error.get());
+    return Failure(error.get());
   }
 
   // We do a read first to make sure the version has not changed. This
@@ -112,7 +112,7 @@ Future<bool> LevelDBStorageProcess::set(const Entry& entry, const UUID& uuid)
   Try<Option<Entry> > option = read(entry.name());
 
   if (option.isError()) {
-    return Future<bool>::failed(option.error());
+    return Failure(option.error());
   }
 
   if (option.get().isSome()) {
@@ -128,7 +128,7 @@ Future<bool> LevelDBStorageProcess::set(const Entry& entry, const UUID& uuid)
   Try<bool> result = write(entry);
 
   if (result.isError()) {
-    return Future<bool>::failed(result.error());
+    return Failure(result.error());
   }
 
   return result.get();
@@ -138,7 +138,7 @@ Future<bool> LevelDBStorageProcess::set(const Entry& entry, const UUID& uuid)
 Future<bool> LevelDBStorageProcess::expunge(const Entry& entry)
 {
   if (error.isSome()) {
-    return Future<bool>::failed(error.get());
+    return Failure(error.get());
   }
 
   // We do a read first to make sure the version has not changed. This
@@ -147,7 +147,7 @@ Future<bool> LevelDBStorageProcess::expunge(const Entry& entry)
   Try<Option<Entry> > option = read(entry.name());
 
   if (option.isError()) {
-    return Future<bool>::failed(option.error());
+    return Failure(option.error());
   }
 
   if (option.get().isNone()) {
@@ -169,7 +169,7 @@ Future<bool> LevelDBStorageProcess::expunge(const Entry& entry)
   leveldb::Status status = db->Delete(options, entry.name());
 
   if (!status.ok()) {
-    return Future<bool>::failed(status.ToString());
+    return Failure(status.ToString());
   }
 
   return true;

http://git-wip-us.apache.org/repos/asf/mesos/blob/e427fae0/src/state/protobuf.hpp
----------------------------------------------------------------------
diff --git a/src/state/protobuf.hpp b/src/state/protobuf.hpp
index 5ee2880..d1c21c6 100644
--- a/src/state/protobuf.hpp
+++ b/src/state/protobuf.hpp
@@ -118,7 +118,7 @@ process::Future<Variable<T> > State::_fetch(
 {
   Try<T> t = messages::deserialize<T>(variable.value());
   if (t.isError()) {
-    return process::Future<Variable<T> >::failed(t.error());
+    return process::Failure(t.error());
   }
 
   return Variable<T>(variable, t.get());
@@ -132,7 +132,7 @@ process::Future<Option<Variable<T> > > State::store(
   Try<std::string> value = messages::serialize(variable.t);
 
   if (value.isError()) {
-    return process::Future<Option<Variable<T> > >::failed(value.error());
+    return process::Failure(value.error());
   }
 
   return state::State::store(variable.variable.mutate(value.get()))

http://git-wip-us.apache.org/repos/asf/mesos/blob/e427fae0/src/state/zookeeper.cpp
----------------------------------------------------------------------
diff --git a/src/state/zookeeper.cpp b/src/state/zookeeper.cpp
index 6e6a01a..09b63d4 100644
--- a/src/state/zookeeper.cpp
+++ b/src/state/zookeeper.cpp
@@ -97,7 +97,7 @@ void ZooKeeperStorageProcess::initialize()
 Future<vector<string> > ZooKeeperStorageProcess::names()
 {
   if (error.isSome()) {
-    return Future<vector<string> >::failed(error.get());
+    return Failure(error.get());
   } else if (state != CONNECTED) {
     Names* names = new Names();
     pending.names.push(names);
@@ -111,7 +111,7 @@ Future<vector<string> > ZooKeeperStorageProcess::names()
     pending.names.push(names);
     return names->promise.future();
   } else if (result.isError()) {
-    return Future<vector<string> >::failed(result.error());
+    return Failure(result.error());
   }
 
   return result.get();
@@ -121,7 +121,7 @@ Future<vector<string> > ZooKeeperStorageProcess::names()
 Future<Option<Entry> > ZooKeeperStorageProcess::get(const string& name)
 {
   if (error.isSome()) {
-    return Future<Option<Entry> >::failed(error.get());
+    return Failure(error.get());
   } else if (state != CONNECTED) {
     Get* get = new Get(name);
     pending.gets.push(get);
@@ -135,7 +135,7 @@ Future<Option<Entry> > ZooKeeperStorageProcess::get(const string& name)
     pending.gets.push(get);
     return get->promise.future();
   } else if (result.isError()) {
-    return Future<Option<Entry> >::failed(result.error());
+    return Failure(result.error());
   }
 
   return result.get();
@@ -145,7 +145,7 @@ Future<Option<Entry> > ZooKeeperStorageProcess::get(const string& name)
 Future<bool> ZooKeeperStorageProcess::set(const Entry& entry, const UUID& uuid)
 {
   if (error.isSome()) {
-    return Future<bool>::failed(error.get());
+    return Failure(error.get());
   } else if (state != CONNECTED) {
     Set* set = new Set(entry, uuid);
     pending.sets.push(set);
@@ -159,7 +159,7 @@ Future<bool> ZooKeeperStorageProcess::set(const Entry& entry, const UUID& uuid)
     pending.sets.push(set);
     return set->promise.future();
   } else if (result.isError()) {
-    return Future<bool>::failed(result.error());
+    return Failure(result.error());
   }
 
   return result.get();
@@ -169,7 +169,7 @@ Future<bool> ZooKeeperStorageProcess::set(const Entry& entry, const UUID& uuid)
 Future<bool> ZooKeeperStorageProcess::expunge(const Entry& entry)
 {
   if (error.isSome()) {
-    return Future<bool>::failed(error.get());
+    return Failure(error.get());
   } else if (state != CONNECTED) {
     Expunge* expunge = new Expunge(entry);
     pending.expunges.push(expunge);
@@ -183,7 +183,7 @@ Future<bool> ZooKeeperStorageProcess::expunge(const Entry& entry)
     pending.expunges.push(expunge);
     return expunge->promise.future();
   } else if (result.isError()) {
-    return Future<bool>::failed(result.error());
+    return Failure(result.error());
   }
 
   return result.get();

http://git-wip-us.apache.org/repos/asf/mesos/blob/e427fae0/src/zookeeper/group.cpp
----------------------------------------------------------------------
diff --git a/src/zookeeper/group.cpp b/src/zookeeper/group.cpp
index db55151..5218286 100644
--- a/src/zookeeper/group.cpp
+++ b/src/zookeeper/group.cpp
@@ -117,7 +117,7 @@ void GroupProcess::initialize()
 Future<Group::Membership> GroupProcess::join(const string& data)
 {
   if (error.isSome()) {
-    return Future<Group::Membership>::failed(error.get());
+    return Failure(error.get());
   } else if (state != CONNECTED) {
     Join* join = new Join(data);
     pending.joins.push(join);
@@ -143,7 +143,7 @@ Future<Group::Membership> GroupProcess::join(const string& data)
     pending.joins.push(join);
     return join->promise.future();
   } else if (membership.isError()) {
-    return Future<Group::Membership>::failed(membership.error());
+    return Failure(membership.error());
   }
 
   return membership.get();
@@ -153,7 +153,7 @@ Future<Group::Membership> GroupProcess::join(const string& data)
 Future<bool> GroupProcess::cancel(const Group::Membership& membership)
 {
   if (error.isSome()) {
-    return Future<bool>::failed(error.get());
+    return Failure(error.get());
   } else if (owned.count(membership.id()) == 0) {
     // TODO(benh): Should this be an error? Right now a user can't
     // differentiate when 'false' means they can't cancel because it's
@@ -184,7 +184,7 @@ Future<bool> GroupProcess::cancel(const Group::Membership& membership)
     pending.cancels.push(cancel);
     return cancel->promise.future();
   } else if (cancellation.isError()) {
-    return Future<bool>::failed(cancellation.error());
+    return Failure(cancellation.error());
   }
 
   return cancellation.get();
@@ -194,7 +194,7 @@ Future<bool> GroupProcess::cancel(const Group::Membership& membership)
 Future<string> GroupProcess::data(const Group::Membership& membership)
 {
   if (error.isSome()) {
-    return Future<string>::failed(error.get());
+    return Failure(error.get());
   } else if (state != CONNECTED) {
     Data* data = new Data(membership);
     pending.datas.push(data);
@@ -212,7 +212,7 @@ Future<string> GroupProcess::data(const Group::Membership& membership)
     pending.datas.push(data);
     return data->promise.future();
   } else if (result.isError()) {
-    return Future<string>::failed(result.error());
+    return Failure(result.error());
   }
 
   return result.get();
@@ -223,7 +223,7 @@ Future<set<Group::Membership> > GroupProcess::watch(
     const set<Group::Membership>& expected)
 {
   if (error.isSome()) {
-    return Future<set<Group::Membership> >::failed(error.get());
+    return Failure(error.get());
   } else if (state != CONNECTED) {
     Watch* watch = new Watch(expected);
     pending.watches.push(watch);