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

Achim Nierbeck commented on KARAF-3520:
---------------------------------------

This is certainly a nice thing, never the less it "requires" someone to do it. 
If it can be done in the feature it surely can be added to the manifest too. 

As I'm a lazy person I'd like to see a way of having this solve more from the 
automagic perspective ;)

Again, especially since the information is inside the started bundle (the 
service is registered and available) 
I would expect this truth to be reflected in a certain way while the features 
are resolved after that. 
IF the truth is not available at that point, I'm quite fine with failing. But 
not if the required services are available and 
just the information needed to reflect that isn't :D

> FeatureService fails to install feature in case of missing capability
> ---------------------------------------------------------------------
>
>                 Key: KARAF-3520
>                 URL: https://issues.apache.org/jira/browse/KARAF-3520
>             Project: Karaf
>          Issue Type: Bug
>          Components: karaf-feature
>    Affects Versions: 4.0.0.M1
>            Reporter: Achim Nierbeck
>            Priority: Critical
>             Fix For: 4.0.0
>
>
> If a bundle does contain a require-capability header for example like the 
> following: 
> {code}
> osgi.service; effective:=active; 
> filter:="(objectClass=org.ops4j.pax.url.mvn.MavenResolver)"]]
> {code}
> but there is no bundle satisfying this capability the installation of this 
> feature fails: 
> {code}
> org.osgi.service.resolver.ResolutionException: Unable to resolve root: 
> missing requirement [root] osgi.identity; osgi.identity=mybundle; 
> type=karaf.feature; version="[1.0.0.SNAPSHOT,1.0.0.SNAPSHOT]"; 
> filter:="(&(osgi.identity=mybundle)(type=karaf.feature)(version>=1.0.0.SNAPSHOT)(version<=1.0.0.SNAPSHOT))"
>  [caused by: Unable to resolve mybundle/1.0.0.SNAPSHOT: missing requirement 
> [mybundle/1.0.0.SNAPSHOT] osgi.identity; osgi.identity=com.my.package; 
> type=osgi.bundle; version="[1.0.0.SNAPSHOT,1.0.0.SNAPSHOT]"; 
> resolution:=mandatory [caused by: Unable to resolve 
> com.my.package/1.0.0.SNAPSHOT: missing requirement 
> [com.my.package/1.0.0.SNAPSHOT] osgi.service; effective:=active; 
> filter:="(objectClass=org.ops4j.pax.url.mvn.MavenResolver)"]]
> at 
> org.apache.felix.resolver.Candidates.populateResource(Candidates.java:285)[6:org.apache.karaf.features.core:4.0.0.M2]
> at 
> org.apache.felix.resolver.Candidates.processCandidates(Candidates.java:454)[6:org.apache.karaf.features.core:4.0.0.M2]
> at 
> org.apache.felix.resolver.Candidates.populateResource(Candidates.java:266)[6:org.apache.karaf.features.core:4.0.0.M2]
> at 
> org.apache.felix.resolver.Candidates.processCandidates(Candidates.java:454)[6:org.apache.karaf.features.core:4.0.0.M2]
> at 
> org.apache.felix.resolver.Candidates.populateResource(Candidates.java:266)[6:org.apache.karaf.features.core:4.0.0.M2]
> at 
> org.apache.felix.resolver.Candidates.processCandidates(Candidates.java:454)[6:org.apache.karaf.features.core:4.0.0.M2]
> at 
> org.apache.felix.resolver.Candidates.populateResource(Candidates.java:266)[6:org.apache.karaf.features.core:4.0.0.M2]
> at 
> org.apache.felix.resolver.Candidates.processCandidates(Candidates.java:454)[6:org.apache.karaf.features.core:4.0.0.M2]
> at 
> org.apache.felix.resolver.Candidates.populateResource(Candidates.java:266)[6:org.apache.karaf.features.core:4.0.0.M2]
> at 
> org.apache.felix.resolver.Candidates.processCandidates(Candidates.java:454)[6:org.apache.karaf.features.core:4.0.0.M2]
> at 
> org.apache.felix.resolver.Candidates.populateResource(Candidates.java:266)[6:org.apache.karaf.features.core:4.0.0.M2]
> at 
> org.apache.felix.resolver.Candidates.processCandidates(Candidates.java:454)[6:org.apache.karaf.features.core:4.0.0.M2]
> at 
> org.apache.felix.resolver.Candidates.populateResource(Candidates.java:266)[6:org.apache.karaf.features.core:4.0.0.M2]
> at 
> org.apache.felix.resolver.Candidates.processCandidates(Candidates.java:454)[6:org.apache.karaf.features.core:4.0.0.M2]
> at 
> org.apache.felix.resolver.Candidates.populateResource(Candidates.java:266)[6:org.apache.karaf.features.core:4.0.0.M2]
> at 
> org.apache.felix.resolver.Candidates.processCandidates(Candidates.java:454)[6:org.apache.karaf.features.core:4.0.0.M2]
> at 
> org.apache.felix.resolver.Candidates.populateResource(Candidates.java:266)[6:org.apache.karaf.features.core:4.0.0.M2]
> at 
> org.apache.felix.resolver.Candidates.processCandidates(Candidates.java:454)[6:org.apache.karaf.features.core:4.0.0.M2]
> at 
> org.apache.felix.resolver.Candidates.populateResource(Candidates.java:266)[6:org.apache.karaf.features.core:4.0.0.M2]
> at 
> org.apache.felix.resolver.Candidates.processCandidates(Candidates.java:454)[6:org.apache.karaf.features.core:4.0.0.M2]
> at 
> org.apache.felix.resolver.Candidates.populateResource(Candidates.java:266)[6:org.apache.karaf.features.core:4.0.0.M2]
> at 
> org.apache.felix.resolver.Candidates.processCandidates(Candidates.java:454)[6:org.apache.karaf.features.core:4.0.0.M2]
> at 
> org.apache.felix.resolver.Candidates.populateResource(Candidates.java:266)[6:org.apache.karaf.features.core:4.0.0.M2]
> at 
> org.apache.felix.resolver.Candidates.processCandidates(Candidates.java:454)[6:org.apache.karaf.features.core:4.0.0.M2]
> at 
> org.apache.felix.resolver.Candidates.populateResource(Candidates.java:266)[6:org.apache.karaf.features.core:4.0.0.M2]
> at 
> org.apache.felix.resolver.Candidates.processCandidates(Candidates.java:454)[6:org.apache.karaf.features.core:4.0.0.M2]
> at 
> org.apache.felix.resolver.Candidates.populateResource(Candidates.java:266)[6:org.apache.karaf.features.core:4.0.0.M2]
> at 
> org.apache.felix.resolver.Candidates.processCandidates(Candidates.java:454)[6:org.apache.karaf.features.core:4.0.0.M2]
> at 
> org.apache.felix.resolver.Candidates.populateResource(Candidates.java:266)[6:org.apache.karaf.features.core:4.0.0.M2]
> at 
> org.apache.felix.resolver.Candidates.processCandidates(Candidates.java:454)[6:org.apache.karaf.features.core:4.0.0.M2]
> at 
> org.apache.felix.resolver.Candidates.populateResource(Candidates.java:266)[6:org.apache.karaf.features.core:4.0.0.M2]
> at 
> org.apache.felix.resolver.Candidates.processCandidates(Candidates.java:454)[6:org.apache.karaf.features.core:4.0.0.M2]
> at 
> org.apache.felix.resolver.Candidates.populateResource(Candidates.java:266)[6:org.apache.karaf.features.core:4.0.0.M2]
> at 
> org.apache.felix.resolver.Candidates.processCandidates(Candidates.java:454)[6:org.apache.karaf.features.core:4.0.0.M2]
> at 
> org.apache.felix.resolver.Candidates.populateResource(Candidates.java:266)[6:org.apache.karaf.features.core:4.0.0.M2]
> at 
> org.apache.felix.resolver.Candidates.processCandidates(Candidates.java:454)[6:org.apache.karaf.features.core:4.0.0.M2]
> at 
> org.apache.felix.resolver.Candidates.populateResource(Candidates.java:266)[6:org.apache.karaf.features.core:4.0.0.M2]
> at 
> org.apache.felix.resolver.Candidates.processCandidates(Candidates.java:454)[6:org.apache.karaf.features.core:4.0.0.M2]
> at 
> org.apache.felix.resolver.Candidates.populateResource(Candidates.java:266)[6:org.apache.karaf.features.core:4.0.0.M2]
> at 
> org.apache.felix.resolver.Candidates.processCandidates(Candidates.java:454)[6:org.apache.karaf.features.core:4.0.0.M2]
> at 
> org.apache.felix.resolver.Candidates.populateResource(Candidates.java:266)[6:org.apache.karaf.features.core:4.0.0.M2]
> at 
> org.apache.felix.resolver.Candidates.processCandidates(Candidates.java:454)[6:org.apache.karaf.features.core:4.0.0.M2]
> at 
> org.apache.felix.resolver.Candidates.populateResource(Candidates.java:266)[6:org.apache.karaf.features.core:4.0.0.M2]
> at 
> org.apache.felix.resolver.Candidates.processCandidates(Candidates.java:454)[6:org.apache.karaf.features.core:4.0.0.M2]
> at 
> org.apache.felix.resolver.Candidates.populateResource(Candidates.java:266)[6:org.apache.karaf.features.core:4.0.0.M2]
> at 
> org.apache.felix.resolver.Candidates.processCandidates(Candidates.java:454)[6:org.apache.karaf.features.core:4.0.0.M2]
> at 
> org.apache.felix.resolver.Candidates.populateResource(Candidates.java:266)[6:org.apache.karaf.features.core:4.0.0.M2]
> at 
> org.apache.felix.resolver.Candidates.processCandidates(Candidates.java:454)[6:org.apache.karaf.features.core:4.0.0.M2]
> at 
> org.apache.felix.resolver.Candidates.populateResource(Candidates.java:266)[6:org.apache.karaf.features.core:4.0.0.M2]
> at 
> org.apache.felix.resolver.Candidates.processCandidates(Candidates.java:454)[6:org.apache.karaf.features.core:4.0.0.M2]
> at 
> org.apache.felix.resolver.Candidates.populateResource(Candidates.java:266)[6:org.apache.karaf.features.core:4.0.0.M2]
> at 
> org.apache.felix.resolver.Candidates.processCandidates(Candidates.java:454)[6:org.apache.karaf.features.core:4.0.0.M2]
> at 
> org.apache.felix.resolver.Candidates.populateResource(Candidates.java:266)[6:org.apache.karaf.features.core:4.0.0.M2]
> at 
> org.apache.felix.resolver.Candidates.processCandidates(Candidates.java:454)[6:org.apache.karaf.features.core:4.0.0.M2]
> at 
> org.apache.felix.resolver.Candidates.populateResource(Candidates.java:266)[6:org.apache.karaf.features.core:4.0.0.M2]
> at 
> org.apache.felix.resolver.Candidates.processCandidates(Candidates.java:454)[6:org.apache.karaf.features.core:4.0.0.M2]
> at 
> org.apache.felix.resolver.Candidates.populateResource(Candidates.java:266)[6:org.apache.karaf.features.core:4.0.0.M2]
> at 
> org.apache.felix.resolver.Candidates.processCandidates(Candidates.java:454)[6:org.apache.karaf.features.core:4.0.0.M2]
> at 
> org.apache.felix.resolver.Candidates.populateResource(Candidates.java:266)[6:org.apache.karaf.features.core:4.0.0.M2]
> at 
> org.apache.felix.resolver.Candidates.processCandidates(Candidates.java:454)[6:org.apache.karaf.features.core:4.0.0.M2]
> at 
> org.apache.felix.resolver.Candidates.populateResource(Candidates.java:266)[6:org.apache.karaf.features.core:4.0.0.M2]
> at 
> org.apache.felix.resolver.Candidates.processCandidates(Candidates.java:454)[6:org.apache.karaf.features.core:4.0.0.M2]
> at 
> org.apache.felix.resolver.Candidates.populateResource(Candidates.java:266)[6:org.apache.karaf.features.core:4.0.0.M2]
> at 
> org.apache.felix.resolver.Candidates.populate(Candidates.java:153)[6:org.apache.karaf.features.core:4.0.0.M2]
> at 
> org.apache.felix.resolver.ResolverImpl.resolve(ResolverImpl.java:148)[6:org.apache.karaf.features.core:4.0.0.M2]
> at 
> org.apache.karaf.features.internal.region.SubsystemResolver.resolve(SubsystemResolver.java:186)[6:org.apache.karaf.features.core:4.0.0.M2]
> at 
> org.apache.karaf.features.internal.service.Deployer.deploy(Deployer.java:254)[6:org.apache.karaf.features.core:4.0.0.M2]
> at 
> org.apache.karaf.features.internal.service.FeaturesServiceImpl.doProvision(FeaturesServiceImpl.java:1028)[6:org.apache.karaf.features.core:4.0.0.M2]
> at 
> org.apache.karaf.features.internal.service.FeaturesServiceImpl$1.call(FeaturesServiceImpl.java:929)[6:org.apache.karaf.features.core:4.0.0.M2]
> at java.util.concurrent.FutureTask.run(FutureTask.java:266)[:1.8.0_25]
> at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)[:1.8.0_25]
> at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)[:1.8.0_25]
> at java.lang.Thread.run(Thread.java:745)[:1.8.0_25]
> {code}
> The installation of the bundle works from the shell via a bundle:install 
> without issues, the resolving of the bundle also works. 
> The feature service should handle missing capabilities more graceful. 



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to