felix-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Felix Meschberger (JIRA)" <j...@apache.org>
Subject [jira] [Resolved] (FELIX-4792) [SCR] Handle Errors on component initialization
Date Mon, 09 Feb 2015 16:37:34 GMT

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

Felix Meschberger resolved FELIX-4792.
    Resolution: Fixed

Implemented catching any Throwable during initial component initialization and logging it
in Rev. 1658457.

In addition the component is disabled to make sure any partical setup is rolled back.

> [SCR] Handle Errors on component initialization
> -----------------------------------------------
>                 Key: FELIX-4792
>                 URL: https://issues.apache.org/jira/browse/FELIX-4792
>             Project: Felix
>          Issue Type: Bug
>          Components: Declarative Services (SCR)
>    Affects Versions: scr-1.8.2
>            Reporter: Felix Meschberger
>            Assignee: Felix Meschberger
>             Fix For: scr-2.0.0
> During component initialization the component implementation class is loaded. If the
class or one of its dependencies cannot be properly loaded a ClassDefNotFound error can be
> This error bubbles up from BundleComponentActivator.initialEnable to the AbstractExtender.createExtension
method, where it is logged. The problem with this is, that the BundleComponentActivator has
registered all the components of the bundle with the ComponentRegistry but when the error
is thrown, the BundleComponentActivator is not registered in Activator's m_componentBundles
> So, when the bundle is stopped, the components registered with the ComponentRegistry
stay registered and will never be cleaned away.
> The simple fix is to catch Throwable in the BundleComponentActivator.initialEnable method
and log it. The single component failing to load will stay inactive but the rest of the component
registration will continue unaffected.
> Background: We have a situation where a bundle is compiled against an API bundle whose
exported API is not properly versioned. So the OSGi framework happily wires the bundle to
the older API bundle version but one of the components fails to load due to missing API.

This message was sent by Atlassian JIRA

View raw message