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 2016/02/18 00:06:34 UTC
[2/2] mesos git commit: Searialized invocation of `await` in the
status method.
Searialized invocation of `await` in the status method.
Review: https://reviews.apache.org/r/43673/
Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/b45b9df7
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/b45b9df7
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/b45b9df7
Branch: refs/heads/master
Commit: b45b9df715aa191722f22e57a15de3e6fbf22a4b
Parents: 95a8fc3
Author: Avinash sridharan <av...@mesosphere.io>
Authored: Wed Feb 17 15:04:59 2016 -0800
Committer: Jie Yu <yu...@gmail.com>
Committed: Wed Feb 17 15:06:19 2016 -0800
----------------------------------------------------------------------
src/slave/containerizer/mesos/containerizer.cpp | 15 ++++++++++++---
1 file changed, 12 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/mesos/blob/b45b9df7/src/slave/containerizer/mesos/containerizer.cpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/containerizer.cpp b/src/slave/containerizer/mesos/containerizer.cpp
index 3de214d..129406a 100644
--- a/src/slave/containerizer/mesos/containerizer.cpp
+++ b/src/slave/containerizer/mesos/containerizer.cpp
@@ -1345,9 +1345,18 @@ Future<ContainerStatus> MesosContainerizerProcess::status(
futures.push_back(isolator->status(containerId));
}
- // Using `await()` here so we can return partial status.
- return await(futures).then(
- lambda::bind(_status, containerId, lambda::_1));
+ // We are using `await` here since we are interested in partial
+ // results from calls to `isolator->status`. We also need to
+ // serialize the invocation to `await` in order to maintain the
+ // order of requests for `ContainerStatus` by the agent. See
+ // MESOS-4671 for more details.
+ VLOG(2) << "Serializing status request for container: " << containerId;
+
+ return containers_[containerId]->sequence.add<ContainerStatus>(
+ [=]() -> Future<ContainerStatus> {
+ return await(futures)
+ .then(lambda::bind(_status, containerId, lambda::_1));
+ });
}