You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by ri...@apache.org on 2012/02/14 21:13:07 UTC
svn commit: r1244197 -
/felix/trunk/framework/src/main/java/org/apache/felix/framework/FrameworkStartLevelImpl.java
Author: rickhall
Date: Tue Feb 14 20:13:07 2012
New Revision: 1244197
URL: http://svn.apache.org/viewvc?rev=1244197&view=rev
Log:
Improved FELIX-3348 patch to avoid infinite loops.
Modified:
felix/trunk/framework/src/main/java/org/apache/felix/framework/FrameworkStartLevelImpl.java
Modified: felix/trunk/framework/src/main/java/org/apache/felix/framework/FrameworkStartLevelImpl.java
URL: http://svn.apache.org/viewvc/felix/trunk/framework/src/main/java/org/apache/felix/framework/FrameworkStartLevelImpl.java?rev=1244197&r1=1244196&r2=1244197&view=diff
==============================================================================
--- felix/trunk/framework/src/main/java/org/apache/felix/framework/FrameworkStartLevelImpl.java (original)
+++ felix/trunk/framework/src/main/java/org/apache/felix/framework/FrameworkStartLevelImpl.java Tue Feb 14 20:13:07 2012
@@ -252,6 +252,7 @@ class FrameworkStartLevelImpl implements
{
// This thread loops forever, thus it should
// be a daemon thread.
+ Object previousRequest = null;
while (true)
{
Object request = null;
@@ -299,10 +300,19 @@ class FrameworkStartLevelImpl implements
catch (IllegalStateException ise)
{
// Thrown if global lock cannot be acquired, in which case
- // just retry.
- synchronized (m_requests)
+ // just retry (unless we already did)
+ if (previousRequest == request)
{
- m_requests.add(0, request);
+ m_felix.getLogger().log(Logger.LOG_ERROR,
+ "Unexpected problem setting active start level to " + request, ise);
+ }
+ else
+ {
+ synchronized (m_requests)
+ {
+ m_requests.add(0, request);
+ previousRequest = request;
+ }
}
}
catch (Exception ex)