FELIX-4020 improve logging consistency
git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@1470397 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/scr/src/main/java/org/apache/felix/scr/impl/manager/AbstractComponentManager.java b/scr/src/main/java/org/apache/felix/scr/impl/manager/AbstractComponentManager.java
index fe0bbc9..41069a8 100644
--- a/scr/src/main/java/org/apache/felix/scr/impl/manager/AbstractComponentManager.java
+++ b/scr/src/main/java/org/apache/felix/scr/impl/manager/AbstractComponentManager.java
@@ -187,6 +187,7 @@
catch ( InterruptedException e )
{
Thread.currentThread().interrupt();
+ dumpThreads();
//TODO this is so wrong
throw new IllegalStateException( "Could not obtain lock (Reason: " + e + ")" );
}
@@ -217,11 +218,11 @@
try
{
String dump = new ThreadDump().call();
- log( LogService.LOG_ERROR, dump, null );
+ log( LogService.LOG_DEBUG, dump, null );
}
catch ( Throwable t )
{
- log( LogService.LOG_ERROR, "Could not dump threads", t );
+ log( LogService.LOG_DEBUG, "Could not dump threads", t );
}
}
@@ -280,6 +281,7 @@
catch ( InterruptedException e )
{
Thread.currentThread().interrupt();
+ dumpThreads();
}
}
}
diff --git a/scr/src/main/java/org/apache/felix/scr/impl/manager/ComponentContextImpl.java b/scr/src/main/java/org/apache/felix/scr/impl/manager/ComponentContextImpl.java
index 060840e..9475e70 100644
--- a/scr/src/main/java/org/apache/felix/scr/impl/manager/ComponentContextImpl.java
+++ b/scr/src/main/java/org/apache/felix/scr/impl/manager/ComponentContextImpl.java
@@ -188,6 +188,7 @@
catch ( InterruptedException e )
{
Thread.currentThread().interrupt();
+ getComponentManager().dumpThreads();
return null;
}
return null;
diff --git a/scr/src/main/java/org/apache/felix/scr/impl/manager/DependencyManager.java b/scr/src/main/java/org/apache/felix/scr/impl/manager/DependencyManager.java
index 8d9c1ca..60492d5 100644
--- a/scr/src/main/java/org/apache/felix/scr/impl/manager/DependencyManager.java
+++ b/scr/src/main/java/org/apache/felix/scr/impl/manager/DependencyManager.java
@@ -1638,7 +1638,7 @@
{
if (!info.getOpenLatch().await( getLockTimeout(), TimeUnit.MILLISECONDS ))
{
- m_componentManager.log( LogService.LOG_WARNING,
+ m_componentManager.log( LogService.LOG_ERROR,
"DependencyManager : invokeUpdatedMethod : timeout on open latch {0}", new Object[] {getName()}, null );
m_componentManager.dumpThreads();
}
@@ -1646,6 +1646,8 @@
catch ( InterruptedException e )
{
Thread.currentThread().interrupt();
+ m_componentManager.dumpThreads();
+ //ignore
}
if ( !getServiceObject( m_bindMethods.getUpdated(), refPair ))
{
@@ -1699,7 +1701,7 @@
{
if (!info.getCloseLatch().await( getLockTimeout(), TimeUnit.MILLISECONDS ) )
{
- m_componentManager.log( LogService.LOG_WARNING,
+ m_componentManager.log( LogService.LOG_ERROR,
"DependencyManager : invokeUnbindMethod : timeout on close latch {0}", new Object[] {getName()}, null );
m_componentManager.dumpThreads();
}
@@ -1707,6 +1709,7 @@
catch ( InterruptedException e )
{
Thread.currentThread().interrupt();
+ m_componentManager.dumpThreads();
//ignore
}
}
@@ -1724,7 +1727,9 @@
}
catch ( InterruptedException e )
{
- // TODO Auto-generated catch block
+ Thread.currentThread().interrupt();
+ m_componentManager.dumpThreads();
+ //ignore
}
if (refPair == null)
diff --git a/scr/src/main/java/org/apache/felix/scr/impl/manager/ImmediateComponentManager.java b/scr/src/main/java/org/apache/felix/scr/impl/manager/ImmediateComponentManager.java
index b52fe01..fc4371c 100644
--- a/scr/src/main/java/org/apache/felix/scr/impl/manager/ImmediateComponentManager.java
+++ b/scr/src/main/java/org/apache/felix/scr/impl/manager/ImmediateComponentManager.java
@@ -284,7 +284,7 @@
// containing the exception with the Log Service and activation fails
for ( DependencyManager md: getReversedDependencyManagers() )
{
- md.close( implementationObject, null );
+ md.close( implementationObject, componentContext.getEdgeInfo( md ) );
}
// make sure the implementation object is not available
@@ -295,6 +295,8 @@
else
{
componentContext.setImplementationAccessible( true );
+ m_circularReferences.remove();
+ //this may cause a getService as properties now match a filter.
setServiceProperties( result );
}
@@ -718,6 +720,8 @@
{
if (m_circularReferences.get() != null)
{
+ log( LogService.LOG_ERROR, "Circular reference detected, getService returning null", null );
+ dumpThreads();
return false;
}
m_circularReferences.set( Boolean.TRUE );
@@ -775,6 +779,7 @@
}
finally
{
+ //normally this will have been done after object becomes accessible. This is double-checking.
m_circularReferences.remove();
}
}
diff --git a/scr/src/main/java/org/apache/felix/scr/impl/manager/RegistrationManager.java b/scr/src/main/java/org/apache/felix/scr/impl/manager/RegistrationManager.java
index 42c5465..be5c514 100644
--- a/scr/src/main/java/org/apache/felix/scr/impl/manager/RegistrationManager.java
+++ b/scr/src/main/java/org/apache/felix/scr/impl/manager/RegistrationManager.java
@@ -181,6 +181,7 @@
Thread.currentThread().interrupt();
log( LogService.LOG_ERROR, "Interrupted exception waiting for reg change to complete {0}", new Object[]
{rsw.getRegState()}, null);
+ reportTimeout();
}
}
}