FELIX-3053 : Potential deadlock if event handler throws Throwable and is bypassing timeout handling
git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@1150645 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/eventadmin/impl/src/main/java/org/apache/felix/eventadmin/impl/tasks/HandlerTaskImpl.java b/eventadmin/impl/src/main/java/org/apache/felix/eventadmin/impl/tasks/HandlerTaskImpl.java
index 16b975f..d757447 100644
--- a/eventadmin/impl/src/main/java/org/apache/felix/eventadmin/impl/tasks/HandlerTaskImpl.java
+++ b/eventadmin/impl/src/main/java/org/apache/felix/eventadmin/impl/tasks/HandlerTaskImpl.java
@@ -64,11 +64,15 @@
/**
* @see org.apache.felix.eventadmin.impl.tasks.HandlerTask#getHandlerClassName()
*/
- public String getHandlerClassName() {
+ public String getHandlerClassName()
+ {
final EventHandler handler = m_handlerTasks.getEventHandler(m_eventHandlerRef);
- try {
+ try
+ {
return handler.getClass().getName();
- } finally {
+ }
+ finally
+ {
m_handlerTasks.ungetEventHandler(handler, m_eventHandlerRef);
}
}
@@ -85,7 +89,7 @@
try
{
handler.handleEvent(m_event);
- } catch (Exception e)
+ } catch (Throwable e)
{
// The spec says that we must catch exceptions and log them:
LogWrapper.getLogger().log(