FElIX-5051 - Memory leak in async delivery
git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@1705009 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/eventadmin/impl/changelog.txt b/eventadmin/impl/changelog.txt
index 1a0097c..97f6185 100644
--- a/eventadmin/impl/changelog.txt
+++ b/eventadmin/impl/changelog.txt
@@ -2,6 +2,8 @@
---------------------------
** Improvement
* [FELIX-5006] - EventAdmin threads should be named
+** Bug
+ * [FElIX-5051] - Memory leak in async delivery
Changes from 1.4.2 to 1.4.4
diff --git a/eventadmin/impl/src/main/java/org/apache/felix/eventadmin/impl/tasks/AsyncDeliverTasks.java b/eventadmin/impl/src/main/java/org/apache/felix/eventadmin/impl/tasks/AsyncDeliverTasks.java
index 0e5a3c6..651160c 100644
--- a/eventadmin/impl/src/main/java/org/apache/felix/eventadmin/impl/tasks/AsyncDeliverTasks.java
+++ b/eventadmin/impl/src/main/java/org/apache/felix/eventadmin/impl/tasks/AsyncDeliverTasks.java
@@ -89,7 +89,7 @@
TaskExecuter executer = m_running_threads.get(currentThreadId);
if ( executer == null )
{
- executer = new TaskExecuter(m_running_threads);
+ executer = new TaskExecuter(currentThreadId, m_running_threads);
}
synchronized ( executer )
{
@@ -130,8 +130,11 @@
private final Map<Long, TaskExecuter> m_running_threads;
- public TaskExecuter(Map<Long, TaskExecuter> runningThreads) {
+ private final long threadId;
+
+ public TaskExecuter(final long threadId, final Map<Long, TaskExecuter> runningThreads) {
m_running_threads = runningThreads;
+ this.threadId = threadId;
}
public boolean isActive()
@@ -167,7 +170,7 @@
if ( !running )
{
this.m_deliver_task = null;
- this.m_running_threads.remove(this);
+ this.m_running_threads.remove(threadId);
}
}
} while ( running );