I have tested this with the new rc and looks like you have fixed it. Thanks!!

On 01.02.2017 10:57, Christian Schneider wrote:
> I found a bit more now.
>
> The shell.console fragment itself also is in state installed while it should 
> be resolved.
> If I manually refresh shell.core then the fragment shell.console goes to 
> state resolved and the came command bundle can be started.
>
> Christian
>
> On 01.02.2017 10:46, Christian Schneider wrote:
>> I can reproduce the issue.
>> I think it might be a bug in the resolver.
>>
>> What I found:
>> Camel commands import this package: 
>> (&(osgi.wiring.package=org.apache.karaf.shell.console)(version>=3.0.0)(!(version>=5.0.0)))
>>
>> The exported packages show this:
>> org.apache.karaf.shell.console                                      │ 2.3.0  
>>      │ 42 │ org.apache.karaf.shell.console
>> org.apache.karaf.shell.console                                      │ 4.1.0  
>>      │ 42 │ org.apache.karaf.shell.console
>>
>> So the package is exported in two versions. The version 2.3.0 would not 
>> match the range camel imports, the 4.1.0 version would match it.
>> I suspect that the resolver behaves differently depending on which version 
>> it checks first. If it checks the 4.1.0 first it works, if it checks the 
>> 2.1.0 version first it fails.
>> I guess it should check both versions and take the working one but 
>> apparently it does not.
>>
>> Unfortunately I do not know the implementation well enough to check or fix 
>> this but maybe it helps Guillaume to find the issue :-)
>>
>> Christian
>>
>> On 31.01.2017 21:42, Krzysztof Sobkowiak wrote:
>>> Hi
>>>
>>> While testing 4.1.0 I have observed following issue.
>>>
>>> karaf@root()> feature:repo-add camel 2.18.2 21:35:06
>>> Adding feature url 
>>> mvn:org.apache.camel.karaf/apache-camel/2.18.2/xml/features
>>> karaf@root()> feature:install camel 21:35:19
>>> karaf@root()> camel 21:35:26
>>> camel                       camel:context-list camel:eip-explain           
>>> camel:rest-api-doc camel:route-profile         camel:route-start
>>> camel                       camel:context-resume camel:eip-explain          
>>>  camel:rest-registry-list camel:route-profile         camel:route-stop
>>> camel:component-list        camel:context-resume camel:endpoint-explain     
>>>  camel:rest-registry-list camel:route-reset-stats     camel:route-stop
>>> camel:component-list        camel:context-start camel:endpoint-explain      
>>> camel:rest-show camel:route-reset-stats     camel:route-suspend
>>> camel:context-inflight      camel:context-start camel:endpoint-list         
>>> camel:rest-show camel:route-resume          camel:route-suspend
>>> camel:context-inflight      camel:context-stop camel:endpoint-list         
>>> camel:route-info camel:route-resume
>>> camel:context-info          camel:context-stop camel:endpoint-stats        
>>> camel:route-info camel:route-show
>>> camel:context-info          camel:context-suspend camel:endpoint-stats      
>>>   camel:route-list camel:route-show
>>> camel:context-list          camel:context-suspend camel:rest-api-doc        
>>>   camel:route-list camel:route-start
>>>
>>> The commands are available and work. But after Karaf restart they are no 
>>> more available and the log contains following error:
>>>
>>> 2017-01-31 21:37:25,415 | ERROR | FelixStartLevel  | Felix                  
>>>           |  -  -  | Bundle org.apache.camel.karaf.camel-karaf-commands 
>>> [57] Error starting mvn:org.apache.camel.karaf/camel-karaf-commands/2.18.2 
>>> (org.osgi.framework.BundleException: Unable to resolve 
>>> org.apache.camel.karaf.camel-karaf-commands [57](R 57.0): missing 
>>> requirement [org.apache.camel.karaf.camel-karaf-commands [57](R 57.0)] 
>>> osgi.wiring.package; 
>>> (&(osgi.wiring.package=org.apache.karaf.shell.console)(version>=3.0.0)(!(version>=5.0.0)))
>>>  [caused by: Unable to resolve org.apache.karaf.shell.console [42](R 42.0): 
>>> missing requirement [org.apache.karaf.shell.console [42](R 42.0)] 
>>> osgi.wiring.host; 
>>> (&(osgi.wiring.host=org.apache.karaf.shell.core)(bundle-version>=0.0.0))] 
>>> Unresolved requirements: [[org.apache.camel.karaf.camel-karaf-commands 
>>> [57](R 57.0)] osgi.wiring.package; 
>>> (&(osgi.wiring.package=org.apache.karaf.shell.console)(version>=3.0.0)(!(version>=5.0.0)))])
>>> org.osgi.framework.BundleException: Unable to resolve 
>>> org.apache.camel.karaf.camel-karaf-commands [57](R 57.0): missing 
>>> requirement [org.apache.camel.karaf.camel-karaf-commands [57](R 57.0)] 
>>> osgi.wiring.package; 
>>> (&(osgi.wiring.package=org.apache.karaf.shell.console)(version>=3.0.0)(!(version>=5.0.0)))
>>>  [caused by: Unable to resolve org.apache.karaf.shell.console [42](R 42.0): 
>>> missing requirement [org.apache.karaf.shell.console [42](R 42.0)] 
>>> osgi.wiring.host; 
>>> (&(osgi.wiring.host=org.apache.karaf.shell.core)(bundle-version>=0.0.0))] 
>>> Unresolved requirements: [[org.apache.camel.karaf.camel-karaf-commands 
>>> [57](R 57.0)] osgi.wiring.package; 
>>> (&(osgi.wiring.package=org.apache.karaf.shell.console)(version>=3.0.0)(!(version>=5.0.0)))]
>>>      at 
>>> org.apache.felix.framework.Felix.resolveBundleRevision(Felix.java:4111) 
>>> [?:?]
>>>      at org.apache.felix.framework.Felix.startBundle(Felix.java:2117) [?:?]
>>>      at 
>>> org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1371) [?:?]
>>>      at 
>>> org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:308)
>>>  [?:?]
>>>      at java.lang.Thread.run(Thread.java:745) [?:?]
>>> 2017-01-31 21:37:25,417 | ERROR | lixDispatchQueue | camel-karaf-commands   
>>>           | 57 - org.apache.camel.karaf.camel-karaf-commands - 2.18.2 | 
>>> FrameworkEvent ERROR - org.apache.camel.karaf.camel-karaf-commands
>>> org.osgi.framework.BundleException: Unable to resolve 
>>> org.apache.camel.karaf.camel-karaf-commands [57](R 57.0): missing 
>>> requirement [org.apache.camel.karaf.camel-karaf-commands [57](R 57.0)] 
>>> osgi.wiring.package; 
>>> (&(osgi.wiring.package=org.apache.karaf.shell.console)(version>=3.0.0)(!(version>=5.0.0)))
>>>  [caused by: Unable to resolve org.apache.karaf.shell.console [42](R 42.0): 
>>> missing requirement [org.apache.karaf.shell.console [42](R 42.0)] 
>>> osgi.wiring.host; 
>>> (&(osgi.wiring.host=org.apache.karaf.shell.core)(bundle-version>=0.0.0))] 
>>> Unresolved requirements: [[org.apache.camel.karaf.camel-karaf-commands 
>>> [57](R 57.0)] osgi.wiring.package; 
>>> (&(osgi.wiring.package=org.apache.karaf.shell.console)(version>=3.0.0)(!(version>=5.0.0)))]
>>>      at 
>>> org.apache.felix.framework.Felix.resolveBundleRevision(Felix.java:4111) 
>>> [?:?]
>>>      at org.apache.felix.framework.Felix.startBundle(Felix.java:2117) [?:?]
>>>      at 
>>> org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1371) [?:?]
>>>      at 
>>> org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:308)
>>>  [?:?]
>>>      at java.lang.Thread.run(Thread.java:745) [?:?]
>>>
>>>
>>> The same happens with other 3rd party commands, e.g:
>>>
>>> karaf@root()> feature:repo-add activemq 5.15.0-SNAPSHOT 21:39:14
>>> Adding feature url 
>>> mvn:org.apache.activemq/activemq-karaf/5.15.0-SNAPSHOT/xml/features
>>> karaf@root()> feature:install activemq-broker-noweb 21:39:26
>>> karaf@root()> activemq 21:39:37
>>> activemq             activemq:bstat       activemq:consumer activemq:list   
>>>      activemq:producer    activemq:query
>>> activemq:browse      activemq:bstat       activemq:dstat activemq:list      
>>>   activemq:purge       activemq:query
>>> activemq:browse      activemq:consumer    activemq:dstat activemq:producer  
>>>   activemq:purge
>>>
>>> Is this the same problem you have mentioned in this thread?
>>>
>>> Kindly regards
>>> Krzysztof
>>>
>>>
>>>
>>> On 29.01.2017 13:38, Jean-Baptiste Onofré wrote:
>>>> 2. Shell command issue
>>>> Several projects providing shell commands (like Camel, ActiveMQ, ...) 
>>>> directly use jline dependency. It's pretty bad (they should use the Karaf 
>>>> "wrapper), and, as Karaf 4.1.x now uses JLine 3.x, those commands don't 
>>>> work in Karaf 4.1.x.
>>>> Here, we have two solutions:
>>>> 2.1. We create the jline "2.x" compliant packages in Karaf (in a bundle as 
>>>> part of the shell-compat feature for instance). It's only a workaround but 
>>>> should fix the issue.
>>>> 2.2. jline 3.x can provide a "compat" bundle with the jline 2.x packages 
>>>> name, wrapping the jline 3.x ones. It's probably the most elegant 
>>>> solution, but it's require a new jline 3.x release.
>>
>>
>
>

-- 
Krzysztof Sobkowiak (@ksobkowiak)

JEE & OSS Architect, Integration Architect
Apache Software Foundation Member (http://apache.org/)
Apache ServiceMix Committer & PMC Member (http://servicemix.apache.org/)
Senior Solution Architect @ Capgemini SSC (http://www.capgeminisoftware.pl/)

Reply via email to