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

Jürgen Albert updated FELIX-6726:
---------------------------------
    Summary: One reference can be unset more then once and will cause 
IllegalArgumentExceptionin Framework  (was: One reference can be unset more 
then once and will cause IllegalStateException in Framework)

> One reference can be unset more then once and will cause 
> IllegalArgumentExceptionin Framework
> ---------------------------------------------------------------------------------------------
>
>                 Key: FELIX-6726
>                 URL: https://issues.apache.org/jira/browse/FELIX-6726
>             Project: Felix
>          Issue Type: Bug
>          Components: Framework
>    Affects Versions: framework-7.0.5, scr-2.2.12
>            Reporter: Jürgen Albert
>            Priority: Major
>
> We have a Component Foo registered under Interface A and B. A also extends B.
> A Prototype Component Bar references the Service under its interface A.
> When the prototype instance is cleaned up, the DependencyManager of SCR calls 
> unget for the instance Foo 2 times, because it thinks that the one Instance 
> are 2 RefPairs. One under the Interface A and one under B. Unget is now 
> called by the DependencyManager 2 times but the Framework only knows about 
> one usage. In this case the IllegalState Exception is thrown.
> The relevant parts of the Stacktrace:
> {code}
> ERROR: Bundle de.jena.udp.modelling.ui.api [20] ServiceRegistrationImpl: 
> Error ungetting service. (java.lang.IllegalArgumentException)
>       at 
> org.apache.felix.framework.BundleContextImpl$ServiceObjectsImpl.ungetService(BundleContextImpl.java:564)
>       at 
> org.apache.felix.scr.impl.helper.ComponentServiceObjectsHelper$ComponentServiceObjectsImpl.ungetService(ComponentServiceObjectsHelper.java:214)
>       at 
> org.apache.felix.scr.impl.manager.AbstractPrototypeRefPair.doUngetService(AbstractPrototypeRefPair.java:103)
>       at 
> org.apache.felix.scr.impl.manager.AbstractPrototypeRefPair.ungetServiceObject(AbstractPrototypeRefPair.java:67)
>       at 
> org.apache.felix.scr.impl.manager.DependencyManager.close(DependencyManager.java:1964)
>       at 
> org.apache.felix.scr.impl.manager.SingleComponentManager.disposeImplementationObject(SingleComponentManager.java:430)
>       at 
> org.apache.felix.scr.impl.manager.ServiceFactoryComponentManager.ungetService(ServiceFactoryComponentManager.java:177)
>       at 
> org.apache.felix.framework.ServiceRegistrationImpl.ungetFactoryUnchecked(ServiceRegistrationImpl.java:393)
>       at 
> org.apache.felix.framework.ServiceRegistrationImpl.ungetService(ServiceRegistrationImpl.java:288)
>       at 
> org.apache.felix.framework.ServiceRegistry.ungetService(ServiceRegistry.java:517)
>       at org.apache.felix.framework.Felix.ungetService(Felix.java:3996)
>       at 
> org.apache.felix.framework.BundleContextImpl$ServiceObjectsImpl.ungetService(BundleContextImpl.java:562)
>       at 
> org.eclipse.osgitech.rest.factories.JerseyResourceInstanceFactory.disposeInstance(JerseyResourceInstanceFactory.java:115)
>       at 
> org.eclipse.osgitech.rest.factories.JerseyResourceInstanceFactory.dispose(JerseyResourceInstanceFactory.java:52)
>       at 
> org.jvnet.hk2.internal.FactoryCreator.dispose(FactoryCreator.java:153)
>       at 
> org.jvnet.hk2.internal.SystemDescriptor.dispose(SystemDescriptor.java:521)
>       at 
> org.glassfish.jersey.inject.hk2.RequestContext.lambda$findOrCreate$0(RequestContext.java:60)
>       at 
> org.glassfish.jersey.internal.inject.ForeignDescriptorImpl.dispose(ForeignDescriptorImpl.java:63)
>       at 
> org.glassfish.jersey.inject.hk2.Hk2RequestScope$Instance.remove(Hk2RequestScope.java:126)
>       at java.base/java.lang.Iterable.forEach(Iterable.java:75)
>       at 
> org.glassfish.jersey.inject.hk2.Hk2RequestScope$Instance.release(Hk2RequestScope.java:143)
>       at 
> org.glassfish.jersey.process.internal.RequestScope.release(RequestScope.java:246)
>       at 
> org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:267)
>       at 
> org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:240)
>       at 
> org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:697)
>       at 
> org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:394)
>       at 
> org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:346)
>       at 
> org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:357)
>       at 
> org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:311)
>       at 
> org.eclipse.osgitech.rest.runtime.WhiteboardServletContainer.service(WhiteboardServletContainer.java:137)
>       at 
> org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205)
>       at 
> org.apache.felix.http.base.internal.handler.ServletHandler.handle(ServletHandler.java:128)
>       at 
> org.apache.felix.http.base.internal.dispatch.InvocationChain.doFilter(InvocationChain.java:86)
>       at 
> org.apache.felix.http.base.internal.dispatch.Dispatcher$1.doFilter(Dispatcher.java:153)
> {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to