[ 
https://issues.apache.org/jira/browse/ARIES-1590?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15926738#comment-15926738
 ] 

Samuel Bratton commented on ARIES-1590:
---------------------------------------

Hi, Tom

I was also hitting out of memory errors when I attached the debugger and had to 
raise heap size to get past that.

I had a chance to discuss this with Tom Watson out-of-band and we think it 
makes sense to apply your reversion and reopen ARIES-1443.

We're not entirely sure if ARIES-1443 was done to fix a failure or if it was 
just done for "theoretical correctness" of the results returned by 
getCapabilities(). Hopefully we can input from bas on the original problem. 

The working theory is that the changes for ARIES-1443 are providing duplicate 
capabilities from feature bundles and their containing subsystem to the 
resolver exploding the permutations. This blows up the memory/time required at 
install. If we do have to put the original fix back in, one option would be to 
filter out those duplicate capabilities from features returned by the 
ResolveContext.findProviders(). 

There remains a potential problem that even after your reversion is applied 
there could be issues resolving against subsystems that have been installed and 
the framework has been restarted. In that case those "duplicate" capabilities 
will still be returned by getCapabilities().

> Subsystem install fails due to unexpected resolve conflict
> ----------------------------------------------------------
>
>                 Key: ARIES-1590
>                 URL: https://issues.apache.org/jira/browse/ARIES-1590
>             Project: Aries
>          Issue Type: Bug
>          Components: Subsystem
>            Reporter: Tom De Wolf
>            Priority: Blocker
>             Fix For: subsystem-2.1.0
>
>         Attachments: reproduce-base-subsystem-4.1.2-SNAPSHOT.esa, 
> reproduce-subsystem-4.1.2-SNAPSHOT.esa
>
>
> When we use the 2.0.9-SNAPSHOT version currently in development we get an 
> unexpected resolve conflict:
> {panel}
> DEBUG: Candidate permutation failed due to a conflict between imports; will 
> try another if possible. (org.osgi.service.resolver.ResolutionException: Uses 
> constraint violation. Unable to resolve resource 
> org.apache.servicemix.bundles.spring-core [116.0] because it is exposed to 
> package 'org.aspectj.bridge' from resources 
> com.reproduce.reproduce-base-subsystem 
> [org.apache.aries.subsystem.core.internal.BasicSubsystem: children=0, 
> constituents=60, id=3, 
> location=file:///Users/tom/Documents/code/aca-common/osgi-subsystem-support/reproduce-base-subsystem/target/reproduce-base-subsystem-4.1.2-SNAPSHOT.esa,
>  parents=1, state=INSTALLED, 
> symbolicName=com.reproduce.reproduce-base-subsystem, 
> type=osgi.subsystem.feature, version=4.1.2.SNAPSHOT] and 
> org.apache.servicemix.bundles.aspectj [111.0] via two dependency chains.
> Chain 1:
>   org.apache.servicemix.bundles.spring-core [116.0]
>     import: 
> (&(osgi.wiring.package=org.aspectj.bridge)(version>=1.7.1)(!(version>=2.0.0)))
>      |
>     export: osgi.wiring.package: org.aspectj.bridge
>   com.reproduce.reproduce-base-subsystem 
> [org.apache.aries.subsystem.core.internal.BasicSubsystem: children=0, 
> constituents=60, id=3, 
> location=file:///Users/tom/Documents/code/aca-common/osgi-subsystem-support/reproduce-base-subsystem/target/reproduce-base-subsystem-4.1.2-SNAPSHOT.esa,
>  parents=1, state=INSTALLED, 
> symbolicName=com.reproduce.reproduce-base-subsystem, 
> type=osgi.subsystem.feature, version=4.1.2.SNAPSHOT]
> Chain 2:
>   org.apache.servicemix.bundles.spring-core [116.0]
>     import: 
> (&(osgi.wiring.package=org.aspectj.weaver)(version>=1.7.1)(!(version>=2.0.0)))
>      |
>     export: osgi.wiring.package=org.aspectj.weaver; 
> uses:=org.aspectj.weaver.patterns
>   com.reproduce.reproduce-base-subsystem 
> [org.apache.aries.subsystem.core.internal.BasicSubsystem: children=0, 
> constituents=60, id=3, 
> location=file:///Users/tom/Documents/code/aca-common/osgi-subsystem-support/reproduce-base-subsystem/target/reproduce-base-subsystem-4.1.2-SNAPSHOT.esa,
>  parents=1, state=INSTALLED, 
> symbolicName=com.reproduce.reproduce-base-subsystem, 
> type=osgi.subsystem.feature, version=4.1.2.SNAPSHOT]
>     import: 
> (&(osgi.wiring.package=org.aspectj.weaver.patterns)(&(version>=1.7.1)(!(version>=2.0.0))))
>      |
>     export: osgi.wiring.package: org.aspectj.weaver.patterns; 
> uses:=org.aspectj.bridge
>     export: osgi.wiring.package=org.aspectj.bridge
>   org.apache.servicemix.bundles.aspectj [111.0])
> {panel}
> It is unexpected because 1 of the 2 chains points to the actual bundle that 
> exports the package and the other of the 2 chains points to the base 
> subsystem already installed in the runtime. In fact the bundle is part of 
> that subsystem so it should consider both as exactly the same and not 
> consider it as 2 chains he cannot resolve.
> Not sure if it is related to ARIES-1588 and the commit mentioned there but 
> that commit does affect how already installed subsystems are taken into 
> account in the resolve process.
> Note: we are using the felix resolver 1.4.0, verified it has the same problem 
> with 1.8.0
> Steps to reproduce:
> 1. start clean felix
> 2. install the attached reproduce-base-subsystem-4.1.2-SNAPSHOT.esa, do not 
> start it
> 3. install the attached reproduce-subsystem-4.1.2-SNAPSHOT.esa
> Step 3 will start failing in DEBUG logging with chain errors like above. It 
> will try a number of permutations but it will not get out of it. 
> Note: which bundles and packages are shown in the example log above are less 
> important as we have multiple such kind of errors for which only the package 
> and bundles differ.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to