You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@felix.apache.org by "Richard S. Hall (JIRA)" <ji...@apache.org> on 2012/11/30 06:05:59 UTC

[jira] [Closed] (FELIX-3743) Potential endless loop setting the active framework startlevel

     [ https://issues.apache.org/jira/browse/FELIX-3743?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Richard S. Hall closed FELIX-3743.
----------------------------------

    
> Potential endless loop setting the active framework startlevel
> --------------------------------------------------------------
>
>                 Key: FELIX-3743
>                 URL: https://issues.apache.org/jira/browse/FELIX-3743
>             Project: Felix
>          Issue Type: Bug
>          Components: Framework
>    Affects Versions: framework-4.0.2
>            Reporter: Felix Meschberger
>            Assignee: Felix Meschberger
>             Fix For: framework-4.2.0
>
>
> We experience an issue with setting the framework startlevel in the Felix.setActiveStartLevel(int, FrameworkListener[]) method.
> On line 1216 the bundle lock is acquired. If this fails with an IllegalStateException the loop just continues. But the bundle remains in the m_startLevelBundles set and is retried later. In the case of an uninstalled bundle, this situation will not change and the method is probabl going into an endless loop.
> Would it make sense to remove the bundle from the m_startLevelBundles set in the catch block starting line 1223 if the bundle has been uninstalled ?
> Proposed patch:
> Index: Felix.java
> ===================================================================
> --- Felix.java	(revision 1404016)
> +++ Felix.java	(working copy)
> @@ -1227,6 +1227,14 @@
>                                 Logger.LOG_ERROR,
>                                 "Error locking " + tuple.m_bundle._getLocation(), ex);
>                         }
> +                        else
> +                        {
> +                            synchronized (m_startLevelBundles)
> +                            {
> +                                m_startLevelBundles.remove(tuple);
> +                                bundlesRemaining = !m_startLevelBundles.isEmpty();
> +                            }
> +                        }
>                         continue;
>                     }

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira