[ https://issues.apache.org/jira/browse/FELIX-5429?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Pierre De Rop resolved FELIX-5429. ---------------------------------- Resolution: Fixed Fixed in revision 1771506. added FELIX5429_AspectSwapCallbackNotCalledForOptionalDepenency.java test case. > Aspect swap callback sometimes not called on optional dependencies > ------------------------------------------------------------------ > > Key: FELIX-5429 > URL: https://issues.apache.org/jira/browse/FELIX-5429 > Project: Felix > Issue Type: Bug > Components: Dependency Manager > Affects Versions: org.apache.felix.dependencymanager-r1 > Reporter: Pierre De Rop > Assignee: Pierre De Rop > Priority: Minor > Fix For: org.apache.felix.dependencymanager-r9 > > > This issue concerns the following corner case scenario: > You have a component A with a required dependency on "Required" service, and > an optional dependency on a "B" service. > You have also an aspect for the "B" service. > So, when A starts, it will be called in > - A.add(Required) > - A.add(originalBService) > - A.swap(originalBService, aspectForBService) // assuming the aspect is > started after B service and after A > Now, there is a a ComponentStateListener on A which removes the B aspect when > the "A" component is stopping. > So, the bug is the following: when you remove the "Required" Service, A is > called in : > - A.remove(originalBService) > - A.stop() > so, here the A component should have been called like this > - A.swap(aspectForBService, originalBService) > - A.remove(originalB) > - A.stop() > Here, the swap callback should be called because the state listening is > removing the aspect while A is stopping. -- This message was sent by Atlassian JIRA (v6.3.4#6332)