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 2010/02/12 07:07:27 UTC

[jira] Resolved: (FELIX-2064) Felix.setActiveStartLevel(int) throws error when it encounters an UNINSTALLED bundle

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

Richard S. Hall resolved FELIX-2064.
------------------------------------

    Resolution: Duplicate

I believe this is a duplicate of FELIX-1753, which I've scheduled for Framework 3.0.0.

> Felix.setActiveStartLevel(int) throws error when it encounters an UNINSTALLED bundle
> ------------------------------------------------------------------------------------
>
>                 Key: FELIX-2064
>                 URL: https://issues.apache.org/jira/browse/FELIX-2064
>             Project: Felix
>          Issue Type: Bug
>          Components: Framework
>    Affects Versions: felix-2.0.2
>            Reporter: Alexander Berger
>            Priority: Minor
>
> The implementation of Felix.setActiveStartLevel(int) iterates over all bundles an tries to aquire the lock for each bundle. But it does not check if a bundle is (already) UNINSTALLED. If it encounters an UNINSTALLED bundle Felix.acquireBundleLock(...) will throw an IllegalStateException which will be logged and published as event.
> So I guess the following code from Felix.setActiveStartLevel(int):
>                 // Lock the current bundle.
>                 try
>                 {
>                     acquireBundleLock(impl,
>                         Bundle.INSTALLED | Bundle.RESOLVED | Bundle.ACTIVE
>                         | Bundle.STARTING | Bundle.STOPPING);
>                 }
>                 catch (IllegalStateException ex)
>                 {
>                     fireFrameworkEvent(FrameworkEvent.ERROR, impl, ex);
>                     m_logger.log(
>                         Logger.LOG_ERROR,
>                         "Error locking " + impl._getLocation(), ex);
>                     continue;
>                 }
> Should be changed to this in order to prevent unnecessary error message (log and events)
>                 // Lock the current bundle.
>                 try
>                 {
>                     acquireBundleLock(impl,
>                         Bundle.INSTALLED | Bundle.RESOLVED | Bundle.ACTIVE
>                         | Bundle.STARTING | Bundle.STOPPING);
>                 }
>                 catch (IllegalStateException ex)
>                 {
>                     if ( impl.getState() != Bundle.UNINSTALLED ) {
> 	                    fireFrameworkEvent(FrameworkEvent.ERROR, impl, ex);
> 	                    m_logger.log(
> 	                        Logger.LOG_ERROR,
> 	                        "Error locking " + impl._getLocation(), ex);
>                     }
>                     continue;
>                 }

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.