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

Florent BENOIT closed FELIX-2459.
---------------------------------


Working for me, thanks !

> Wrong error message on a missing package
> ----------------------------------------
>
>                 Key: FELIX-2459
>                 URL: https://issues.apache.org/jira/browse/FELIX-2459
>             Project: Felix
>          Issue Type: Bug
>          Components: Framework
>    Affects Versions: framework-3.0.1
>            Reporter: Florent BENOIT
>            Assignee: Richard S. Hall
>             Fix For: framework-3.2.0
>
>         Attachments: 
> jonas-web-container-tomcat-6.0-5.2.0-M3-SNAPSHOT-ipojo.jar
>
>
>   Hi,
> Here is the case :
>  I have one bundle with a missing import, I need to fix the bundle but Felix 
> 3.0.1 is not helping me with the errors that are thrown. (the missing package 
> required to start my bundle is "org.apache.juli.logging") and this missing 
> package is not reported as a missing package in 3.0.1 while it was reported 
> with Felix 2.0.5
> When testing this bundle with Felix 3.0.1, I get the following message :
> org.osgi.framework.BundleException: Unresolved constraint in bundle xxx [89]: 
> Unable to resolve 89.0: missing requirement [89.0] package; 
> (&(package=org.apache.catalina.tribes.group.interceptors)(version>=7.0.0)) - 
> [89.0] package; 
> (&(package=org.apache.catalina.tribes.group.interceptors)(version>=7.0.0))
>       at org.apache.felix.framework.Felix.resolveBundle(Felix.java:3421)
>       at org.apache.felix.framework.Felix.startBundle(Felix.java:1754)
>       at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:905)
> This package (org.apache.catalina.tribes.group.interceptors) is present in my 
> bundle archive. 
> It tells me that a requirement is not available but I don't know which 
> package is missing which is a big problem as it's quite difficult to fix an 
> issue when there is a missing information
> By switching back to Felix v2.0.5, I have the following error :
> org.osgi.framework.BundleException: Unresolved constraint in bundle xxx [89]: 
> package; (package=org.apache.juli.logging)
>       at org.apache.felix.framework.Felix.resolveBundle(Felix.java:3299)
>       at org.apache.felix.framework.Felix.startBundle(Felix.java:1657)
>       at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:905)
> And now, we can see that the missing package is printed
> By adding some breakpoint in Felix 3.0.1, I can see that the original error 
> is raised in ResolverImpl class but then this error is ignored
> Here is the code that is raising my expecting missing package :
>             if ((candidates.size() == 0) && !req.isOptional())
>             {
>                 ResolveException ex =
>                     new ResolveException("Unable to resolve " + module
>                         + ": missing requirement " + req, module, req);
>                 resultCache.put(module, ex);
>                 m_logger.log(Logger.LOG_DEBUG, "No viable candidates", ex);
>                 throw ex;
>             }
> The exception which is built here is :
> org.apache.felix.framework.resolver.ResolveException: Unable to resolve 89.0: 
> missing requirement [89.0] package; (package=org.apache.juli.logging)
>       ResolverImpl.populateCandidates(Resolver$ResolverState, Module, Map, 
> Map) line: 437     
>       ResolverImpl.populateCandidates(Resolver$ResolverState, Module, Map, 
> Map) line: 415     
>       ResolverImpl.populateCandidates(Resolver$ResolverState, Module, Map, 
> Map) line: 415     
>       ResolverImpl.populateCandidates(Resolver$ResolverState, Module, Map, 
> Map) line: 415     
>       ResolverImpl.populateCandidates(Resolver$ResolverState, Module, Map, 
> Map) line: 415     
>       ResolverImpl.populateCandidates(Resolver$ResolverState, Module, Map, 
> Map) line: 415     
>       ResolverImpl.populateCandidates(Resolver$ResolverState, Module, Map, 
> Map) line: 415     
>       ResolverImpl.populateCandidates(Resolver$ResolverState, Module, Map, 
> Map) line: 415     
>       ResolverImpl.populateCandidates(Resolver$ResolverState, Module, Map, 
> Map) line: 415     
>       ResolverImpl.populateCandidates(Resolver$ResolverState, Module, Map, 
> Map) line: 415     
>       ResolverImpl.populateCandidates(Resolver$ResolverState, Module, Map, 
> Map) line: 415     
>       ResolverImpl.populateCandidates(Resolver$ResolverState, Module, Map, 
> Map) line: 415     
>       ResolverImpl.populateCandidates(Resolver$ResolverState, Module, Map, 
> Map) line: 415     
>       ResolverImpl.populateCandidates(Resolver$ResolverState, Module, Map, 
> Map) line: 415     
>       ResolverImpl.populateCandidates(Resolver$ResolverState, Module, Map, 
> Map) line: 415     
>       ResolverImpl.populateCandidates(Resolver$ResolverState, Module, Map, 
> Map) line: 415     
>       ResolverImpl.populateCandidates(Resolver$ResolverState, Module, Map, 
> Map) line: 415     
>       ResolverImpl.populateCandidates(Resolver$ResolverState, Module, Map, 
> Map) line: 415     
>       ResolverImpl.resolve(Resolver$ResolverState, Module) line: 78   
>       Felix$FelixResolver.resolve(Module) line: 4005  
>       Felix.resolveBundle(BundleImpl) line: 3414      
>       Felix.startBundle(BundleImpl, int) line: 1754   
>       BundleImpl.start(int) line: 905 
> But this issue is ignored at the line 422 by the following code :
>                     try
>                     {
>                         populateCandidates(state, candCap.getModule(),
>                             candidateMap, resultCache);
>                     }
>                     catch (ResolveException ex)  <--- silently catched
>                     {
>                         // Remove the candidate since we weren't able to
>                         // populate its candidates.
>                         itCandCap.remove();
>                     }
>       ResolverImpl.populateCandidates(Resolver$ResolverState, Module, Map, 
> Map) line: 422     
>       ResolverImpl.populateCandidates(Resolver$ResolverState, Module, Map, 
> Map) line: 415     
>       ResolverImpl.populateCandidates(Resolver$ResolverState, Module, Map, 
> Map) line: 415     
>       ResolverImpl.populateCandidates(Resolver$ResolverState, Module, Map, 
> Map) line: 415     
>       ResolverImpl.populateCandidates(Resolver$ResolverState, Module, Map, 
> Map) line: 415     
>       ResolverImpl.populateCandidates(Resolver$ResolverState, Module, Map, 
> Map) line: 415     
>       ResolverImpl.populateCandidates(Resolver$ResolverState, Module, Map, 
> Map) line: 415     
>       ResolverImpl.populateCandidates(Resolver$ResolverState, Module, Map, 
> Map) line: 415     
>       ResolverImpl.populateCandidates(Resolver$ResolverState, Module, Map, 
> Map) line: 415     
>       ResolverImpl.populateCandidates(Resolver$ResolverState, Module, Map, 
> Map) line: 415     
>       ResolverImpl.populateCandidates(Resolver$ResolverState, Module, Map, 
> Map) line: 415     
>       ResolverImpl.populateCandidates(Resolver$ResolverState, Module, Map, 
> Map) line: 415     
>       ResolverImpl.populateCandidates(Resolver$ResolverState, Module, Map, 
> Map) line: 415     
>       ResolverImpl.resolve(Resolver$ResolverState, Module) line: 78   
>       Felix$FelixResolver.resolve(Module) line: 4005  
>       Felix.resolveBundle(BundleImpl) line: 3414      
>       Felix.startBundle(BundleImpl, int) line: 1754   
>       BundleImpl.start(int) line: 905 
> Then I get an error by Felix but not the original root cause which is a 
> problem for me
> I get at these lines :
> ex = org.apache.felix.framework.resolver.ResolveException: Unable to resolve 
> 89.0: missing requirement [89.0] package; 
> (&(package=org.apache.catalina.tribes.group.interceptors)(version>=7.0.0))
>                             catch (ResolveException ex)
>                             {
>                                 if ((ex.getRequirement() != null)
>                                     && (ex.getRequirement() instanceof 
> FragmentRequirement)
>                                     && (rootModule !=
>                                         ((FragmentRequirement) 
> ex.getRequirement()).getFragment()))
>                                 {
>                                     m_resolverState.detachFragment(
>                                         newRootModule,
>                                         ((FragmentRequirement) 
> ex.getRequirement()).getFragment());
>                                     repeat = true;
>                                 }
>                                 else
>                                 {
>                                     throw ex;
>                                 }
>                             }
>       Felix$FelixResolver.resolve(Module) line: 4013  
>       Felix.resolveBundle(BundleImpl) line: 3414      
>       Felix.startBundle(BundleImpl, int) line: 1754   
>       BundleImpl.start(int) line: 905 
> and this is the error which is reported to me, but this can't help me as the 
> true missing package has been lost.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to