You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by sw...@apache.org on 2023/12/25 04:23:43 UTC
(logging-log4cxx) 01/01: Prevent potential deadlock on shutdown when using AsyncAppender
This is an automated email from the ASF dual-hosted git repository.
swebb2066 pushed a commit to branch asynch_appender_deadlock
in repository https://gitbox.apache.org/repos/asf/logging-log4cxx.git
commit 6c45592ad1e3976fb2da72e06f03ea91e694447c
Author: Stephen Webb <sw...@gmail.com>
AuthorDate: Mon Dec 25 15:23:22 2023 +1100
Prevent potential deadlock on shutdown when using AsyncAppender
---
src/main/cpp/asyncappender.cpp | 14 ++++++++++----
1 file changed, 10 insertions(+), 4 deletions(-)
diff --git a/src/main/cpp/asyncappender.cpp b/src/main/cpp/asyncappender.cpp
index 07083474..c8389840 100644
--- a/src/main/cpp/asyncappender.cpp
+++ b/src/main/cpp/asyncappender.cpp
@@ -502,13 +502,19 @@ void AsyncAppender::dispatch()
}
catch (std::exception& ex)
{
- priv->errorHandler->error(LOG4CXX_STR("async dispatcher"), ex, 0, *iter);
- isActive = false;
+ if (isActive)
+ {
+ priv->errorHandler->error(LOG4CXX_STR("async dispatcher"), ex, 0, *iter);
+ isActive = false;
+ }
}
catch (...)
{
- priv->errorHandler->error(LOG4CXX_STR("async dispatcher"));
- isActive = false;
+ if (isActive)
+ {
+ priv->errorHandler->error(LOG4CXX_STR("async dispatcher"));
+ isActive = false;
+ }
}
}
}