Repository: mesos Updated Branches: refs/heads/master 803031d94 -> 59e257f46
Improved the error message when destroying a container. Review: https://reviews.apache.org/r/25344 Project: http://git-wip-us.apache.org/repos/asf/mesos/repo Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/59e257f4 Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/59e257f4 Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/59e257f4 Branch: refs/heads/master Commit: 59e257f4652c3de096a0665de2e566dcb6d57064 Parents: 803031d Author: Jie Yu <[email protected]> Authored: Thu Sep 4 10:01:05 2014 -0700 Committer: Jie Yu <[email protected]> Committed: Thu Sep 4 16:56:54 2014 -0700 ---------------------------------------------------------------------- src/linux/cgroups.cpp | 28 ++++++++++++++++---- .../isolators/cgroups/perf_event.cpp | 3 +-- src/slave/containerizer/linux_launcher.cpp | 18 +++---------- src/slave/containerizer/mesos/containerizer.cpp | 1 - 4 files changed, 27 insertions(+), 23 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/mesos/blob/59e257f4/src/linux/cgroups.cpp ---------------------------------------------------------------------- diff --git a/src/linux/cgroups.cpp b/src/linux/cgroups.cpp index 989e307..c6464ab 100644 --- a/src/linux/cgroups.cpp +++ b/src/linux/cgroups.cpp @@ -1705,16 +1705,34 @@ Future<Nothing> destroy(const string& hierarchy, const string& cgroup) } -namespace { +static void __destroy( + const Future<Nothing>& future, + const Owned<Promise<Nothing> >& promise, + const Duration& timeout) +{ + if (future.isReady()) { + promise->set(future.get()); + } else if (future.isFailed()) { + promise->fail(future.failure()); + } else { + promise->fail("Timed out after " + stringify(timeout)); + } +} -Future<Nothing> discard(Future<Nothing> future) + +static Future<Nothing> _destroy( + Future<Nothing> future, + const Duration& timeout) { + Owned<Promise<Nothing> > promise(new Promise<Nothing>()); + Future<Nothing> _future = promise->future(); + future.discard(); + future.onAny(lambda::bind(&__destroy, lambda::_1, promise, timeout)); - return future; + return _future; } -} // namespace { Future<Nothing> destroy( const string& hierarchy, @@ -1722,7 +1740,7 @@ Future<Nothing> destroy( const Duration& timeout) { return destroy(hierarchy, cgroup) - .after(timeout, lambda::bind(&discard, lambda::_1)); + .after(timeout, lambda::bind(&_destroy, lambda::_1, timeout)); } http://git-wip-us.apache.org/repos/asf/mesos/blob/59e257f4/src/slave/containerizer/isolators/cgroups/perf_event.cpp ---------------------------------------------------------------------- diff --git a/src/slave/containerizer/isolators/cgroups/perf_event.cpp b/src/slave/containerizer/isolators/cgroups/perf_event.cpp index 6f65b72..ff047d3 100644 --- a/src/slave/containerizer/isolators/cgroups/perf_event.cpp +++ b/src/slave/containerizer/isolators/cgroups/perf_event.cpp @@ -329,8 +329,7 @@ Future<Nothing> CgroupsPerfEventIsolatorProcess::cleanup( Future<Nothing> CgroupsPerfEventIsolatorProcess::_cleanup( const ContainerID& containerId) { - if (!infos.contains(containerId)) - { + if (!infos.contains(containerId)) { return Nothing(); } http://git-wip-us.apache.org/repos/asf/mesos/blob/59e257f4/src/slave/containerizer/linux_launcher.cpp ---------------------------------------------------------------------- diff --git a/src/slave/containerizer/linux_launcher.cpp b/src/slave/containerizer/linux_launcher.cpp index f3cc813..ea6ddba 100644 --- a/src/slave/containerizer/linux_launcher.cpp +++ b/src/slave/containerizer/linux_launcher.cpp @@ -333,26 +333,14 @@ Try<pid_t> LinuxLauncher::fork( } -Future<Nothing> _destroy( - const ContainerID& containerId, - const process::Future<Nothing>& destroyed) -{ - if (!destroyed.isReady()) { - return Failure("Failed to destroy launcher: " + - (destroyed.isFailed() ? destroyed.failure() : "discarded")); - } - - return Nothing(); -} - - Future<Nothing> LinuxLauncher::destroy(const ContainerID& containerId) { pids.erase(containerId); return cgroups::destroy( - hierarchy, cgroup(containerId), cgroups::DESTROY_TIMEOUT) - .onAny(lambda::bind(&_destroy, containerId, lambda::_1)); + hierarchy, + cgroup(containerId), + cgroups::DESTROY_TIMEOUT); } http://git-wip-us.apache.org/repos/asf/mesos/blob/59e257f4/src/slave/containerizer/mesos/containerizer.cpp ---------------------------------------------------------------------- diff --git a/src/slave/containerizer/mesos/containerizer.cpp b/src/slave/containerizer/mesos/containerizer.cpp index 5116b14..9d08329 100644 --- a/src/slave/containerizer/mesos/containerizer.cpp +++ b/src/slave/containerizer/mesos/containerizer.cpp @@ -909,7 +909,6 @@ void MesosContainerizerProcess::_destroy( (future.isFailed() ? future.failure() : "discarded future")); destroying.erase(containerId); - return; }
