You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by mm...@apache.org on 2019/04/22 23:57:22 UTC
[pulsar] branch master updated: Protect against double joining the
worker thread in (#4084)
This is an automated email from the ASF dual-hosted git repository.
mmerli pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/pulsar.git
The following commit(s) were added to refs/heads/master by this push:
new 8973406 Protect against double joining the worker thread in (#4084)
8973406 is described below
commit 897340632fc1b5bfd2eee28d0da2278c7bb44169
Author: Nick Rivera <he...@users.noreply.github.com>
AuthorDate: Mon Apr 22 16:57:17 2019 -0700
Protect against double joining the worker thread in (#4084)
ExecutorService::close() because joining is not re-entrant on Windows
---
pulsar-client-cpp/lib/ExecutorService.cc | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/pulsar-client-cpp/lib/ExecutorService.cc b/pulsar-client-cpp/lib/ExecutorService.cc
index 194820a..0ef77b3 100644
--- a/pulsar-client-cpp/lib/ExecutorService.cc
+++ b/pulsar-client-cpp/lib/ExecutorService.cc
@@ -55,9 +55,13 @@ DeadlineTimerPtr ExecutorService::createDeadlineTimer() {
}
void ExecutorService::close() {
- io_service_.stop();
- work_.reset();
- worker_.join();
+ // Ensure this service has not already been closed. This is
+ // because worker_.join() is not re-entrant on Windows
+ if (work_) {
+ io_service_.stop();
+ work_.reset();
+ worker_.join();
+ }
}
void ExecutorService::postWork(std::function<void(void)> task) { io_service_.post(task); }