From 083b54cc2d81361ef265b810e7b46048374ccba9 Mon Sep 17 00:00:00 2001 From: Han Pengfei Date: Thu, 1 Feb 2018 15:00:23 +0800 Subject: [PATCH] Just waiting 3 seconds when stop container. If container manager dies before session manager dying, the session manager cannot exit if it waits for all. This patch fix the above issue. Signed-off-by: Han Pengfei --- src/anbox/container/management_api_stub.cpp | 5 ++++- src/anbox/container/management_api_stub.h | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/anbox/container/management_api_stub.cpp b/src/anbox/container/management_api_stub.cpp index 1806daf..b810db8 100644 --- a/src/anbox/container/management_api_stub.cpp +++ b/src/anbox/container/management_api_stub.cpp @@ -24,6 +24,9 @@ namespace anbox { namespace container { + +const std::chrono::milliseconds ManagementApiStub::stop_waiting_millis{3000}; + ManagementApiStub::ManagementApiStub( const std::shared_ptr &channel) : channel_(channel) {} @@ -75,7 +78,7 @@ void ManagementApiStub::stop_container() { channel_->call_method("stop_container", &message, c->response.get(), google::protobuf::NewCallback(this, &ManagementApiStub::container_stopped, c.get())); - c->wh.wait_for_all(); + c->wh.wait_for_pending(stop_waiting_millis); if (c->response->has_error()) throw std::runtime_error(c->response->error()); } diff --git a/src/anbox/container/management_api_stub.h b/src/anbox/container/management_api_stub.h index 11ebeeb..a883131 100644 --- a/src/anbox/container/management_api_stub.h +++ b/src/anbox/container/management_api_stub.h @@ -56,6 +56,7 @@ class ManagementApiStub : public DoNotCopyOrMove { mutable std::mutex mutex_; std::shared_ptr channel_; + static const std::chrono::milliseconds stop_waiting_millis; }; } // namespace container } // namespace anbox