@@ -62,6 +62,8 @@ struct Hierarchy::HierarchyPrivate
62
62
ProvisionNodeMap provisionNodes;
63
63
64
64
std::vector<AppenderPtr> allAppenders;
65
+
66
+ mutable std::mutex listenerMutex;
65
67
};
66
68
67
69
IMPLEMENT_LOG4CXX_OBJECT (Hierarchy)
@@ -91,7 +93,7 @@ Hierarchy::~Hierarchy()
91
93
92
94
void Hierarchy::addHierarchyEventListener (const spi::HierarchyEventListenerPtr& listener)
93
95
{
94
- std::lock_guard<std::recursive_mutex > lock (m_priv->mutex );
96
+ std::lock_guard<std::mutex > lock (m_priv->listenerMutex );
95
97
96
98
if (std::find (m_priv->listeners .begin (), m_priv->listeners .end (), listener) != m_priv->listeners .end ())
97
99
{
@@ -105,7 +107,7 @@ void Hierarchy::addHierarchyEventListener(const spi::HierarchyEventListenerPtr&
105
107
106
108
void Hierarchy::removeHierarchyEventListener (const spi::HierarchyEventListenerPtr& listener)
107
109
{
108
- std::lock_guard<std::recursive_mutex > lock (m_priv->mutex );
110
+ std::lock_guard<std::mutex > lock (m_priv->listenerMutex );
109
111
110
112
auto found = std::find (m_priv->listeners .begin (), m_priv->listeners .end (), listener);
111
113
if (found != m_priv->listeners .end ()){
@@ -194,7 +196,7 @@ void Hierarchy::fireAddAppenderEvent(const Logger* logger, const Appender* appen
194
196
setConfigured (true );
195
197
HierarchyEventListenerList clonedList;
196
198
{
197
- std::lock_guard<std::recursive_mutex > lock (m_priv->mutex );
199
+ std::lock_guard<std::mutex > lock (m_priv->listenerMutex );
198
200
clonedList = m_priv->listeners ;
199
201
}
200
202
@@ -207,7 +209,7 @@ void Hierarchy::fireRemoveAppenderEvent(const Logger* logger, const Appender* ap
207
209
{
208
210
HierarchyEventListenerList clonedList;
209
211
{
210
- std::lock_guard<std::recursive_mutex > lock (m_priv->mutex );
212
+ std::lock_guard<std::mutex > lock (m_priv->listenerMutex );
211
213
clonedList = m_priv->listeners ;
212
214
}
213
215
for (auto & item : clonedList)
0 commit comments