Hi all, Can anyone comment on this? We made a fix which seems to work for us, but I'd like to make sure this seems like a bug before filing a report.
Cheers, Colin 2008/12/19 Colin Fleming <[email protected]> > Hi all, > > We're trying to migrate our application from Knopflerfish to Felix at the > moment. It's almost working, but we've had a lot of problems with the > following exception: > > INFO ERROR: EventDispatcher: Error during dispatch. > (java.lang.IllegalStateException: Cannot get the Service Registration, owned > by Thread[SCR Component Actor,5,main]) > WARN java.lang.IllegalStateException: Cannot get the Service Registration, > owned by Thread[SCR Component Actor,5,main] > WARN at > org.apache.felix.scr.impl.AbstractComponentManager.lockServiceRegistration(AbstractComponentManager.java:782) > WARN at > org.apache.felix.scr.impl.AbstractComponentManager.unregisterComponentService(AbstractComponentManager.java:709) > WARN at > org.apache.felix.scr.impl.AbstractComponentManager.deactivateInternal(AbstractComponentManager.java:549) > WARN at > org.apache.felix.scr.impl.AbstractComponentManager.deactivate(AbstractComponentManager.java:238) > WARN at > org.apache.felix.scr.impl.AbstractComponentManager.reactivate(AbstractComponentManager.java:171) > WARN at > org.apache.felix.scr.impl.DependencyManager.serviceAdded(DependencyManager.java:181) > WARN at > org.apache.felix.scr.impl.DependencyManager.serviceChanged(DependencyManager.java:115) > WARN at > org.apache.felix.framework.util.EventDispatcher.invokeServiceListenerCallback(EventDispatcher.java:765) > > This seems to have been fixed in FELIX-550. However we're still seeing it, > and it seems to be a problem with static references in factory components > which have a target specified. What seems to happen is when the factory > component is created, the DependencyManager correctly has the m_target field > set. However, when the component is activated, the getProperties() method in > ComponentFactoryImpl doesn't add the properties for the target attributes of > references as ImmediateComponentManager does. Then, when setTargetFilter on > the DependencyManager is called, its target parameter is null (because the > property isn't correctly set) and the SCR interprets this as a change in the > target. Since the reference is static, the component is deactivated and > reactivated incorrectly. > > As far as I can tell, the incorrect part is that the reference target > properties are not set for factory components. I can't see anything in 112.6 > of the spec which would imply this should not happen. I guess the fix would > be to set those properties in the ComponentFactoryImpl as it's done in the > ImmediateComponentManager? > > Cheers, > Colin >

