Hello,

I get an intermittent (very rare) exception while running tests using
declarative services under Felix.

The exception stack trace shows:

java.lang.IllegalArgumentException: Service object cannot be null.
        at org.apache.felix.framework.Felix.registerService(Felix.java:2661)
        at
org.apache.felix.framework.BundleContextImpl.registerService(BundleContextImpl.java:254)
        at
org.apache.felix.scr.impl.AbstractComponentManager.registerComponentService(AbstractComponentManager.java:598)
        at
org.apache.felix.scr.impl.AbstractComponentManager.activateInternal(AbstractComponentManager.java:426)
        at
org.apache.felix.scr.impl.AbstractComponentManager.enableInternal(AbstractComponentManager.java:323)
        at
org.apache.felix.scr.impl.AbstractComponentManager.access$000(AbstractComponentManager.java:36)
        at
org.apache.felix.scr.impl.AbstractComponentManager$1.run(AbstractComponentManager.java:94)
        at
org.apache.felix.scr.impl.ComponentActorThread.run(ComponentActorThread.java:85)

Whenever I have seen the exception, logs suggest that the components were
being reactivated at around the same time. The stack trace from the debugger
when reactivate occurs shows:

        ImmediateComponentManager.disposeImplementationObject(Object,
ComponentContext) line: 273
        ImmediateComponentManager.deleteComponent() line: 151

ImmediateComponentManager(AbstractComponentManager).deactivateInternal()
line: 469
        ImmediateComponentManager(AbstractComponentManager).reactivate()
line: 142
        ImmediateComponentManager.reconfigure(Dictionary) line: 399
        ImmediateComponentManager$1.updated(Dictionary) line: 90
        ConfigurationManager$ManagedServiceUpdate.run() line: 863
        UpdateThread.run() line: 89

Would it be possible to introduce some synchronization during
activate/deactivate to avoid the service/component being set to null? I am
using Felix framework 1.1.0-SNAPSHOT and SCR 1.0.0.


Thank you...

Regards,

Rajini

Reply via email to