You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by gr...@apache.org on 2018/01/13 00:58:55 UTC

[4/4] mesos git commit: Simplified master's `updateOperation` function.

Simplified master's `updateOperation` function.

This replaces repetitive code by instead using a helper variable which
allows us to avoid branching. We can then also replace a `Try<bool>`
with a plain `bool` further simplifying the code.

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


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

Branch: refs/heads/master
Commit: dd866f9fd73858ef4d6369edddb4aa9a2f1c1a8f
Parents: 53480e9
Author: Benjamin Bannier <be...@mesosphere.io>
Authored: Fri Jan 12 15:40:32 2018 -0800
Committer: Greg Mann <gr...@gmail.com>
Committed: Fri Jan 12 16:53:50 2018 -0800

----------------------------------------------------------------------
 src/master/master.cpp | 48 +++++++++++++++-------------------------------
 1 file changed, 15 insertions(+), 33 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/dd866f9f/src/master/master.cpp
----------------------------------------------------------------------
diff --git a/src/master/master.cpp b/src/master/master.cpp
index 8738e10..6965514 100644
--- a/src/master/master.cpp
+++ b/src/master/master.cpp
@@ -10293,37 +10293,8 @@ void Master::updateOperation(
 {
   CHECK_NOTNULL(operation);
 
-  const OperationStatus& status = update.status();
-
-  Option<OperationStatus> latestStatus;
-  if (update.has_latest_status()) {
-    latestStatus = update.latest_status();
-  }
-
-  // Whether the operation has just become terminated.
-  Option<bool> terminated;
-
-  if (latestStatus.isSome()) {
-    terminated =
-      !protobuf::isTerminalState(operation->latest_status().state()) &&
-      protobuf::isTerminalState(latestStatus->state());
-
-    // If the operation has already transitioned to a terminal state,
-    // do not update its state.
-    if (!protobuf::isTerminalState(operation->latest_status().state())) {
-      operation->mutable_latest_status()->CopyFrom(latestStatus.get());
-    }
-  } else {
-    terminated =
-      !protobuf::isTerminalState(operation->latest_status().state()) &&
-      protobuf::isTerminalState(status.state());
-
-    if (!protobuf::isTerminalState(operation->latest_status().state())) {
-      operation->mutable_latest_status()->CopyFrom(status);
-    }
-  }
-
-  operation->add_statuses()->CopyFrom(status);
+  const OperationStatus& status =
+    update.has_latest_status() ? update.latest_status() : update.status();
 
   LOG(INFO) << "Updating the state of operation '"
             << operation->info().id() << "' (uuid: " << update.operation_uuid()
@@ -10331,9 +10302,20 @@ void Master::updateOperation(
             << " (latest state: " << operation->latest_status().state()
             << ", status update state: " << status.state() << ")";
 
-  CHECK_SOME(terminated);
+  // Whether the operation has just become terminated.
+  const bool terminated =
+    !protobuf::isTerminalState(operation->latest_status().state()) &&
+    protobuf::isTerminalState(status.state());
+
+  // If the operation has already transitioned to a terminal state,
+  // do not update its state.
+  if (!protobuf::isTerminalState(operation->latest_status().state())) {
+    operation->mutable_latest_status()->CopyFrom(status);
+  }
+
+  operation->add_statuses()->CopyFrom(status);
 
-  if (!terminated.get()) {
+  if (!terminated) {
     return;
   }