Hi Bengt,

thanks for the detailed explanation.

I will try to create a use case (without iPojo) to reproduce the issue (in combination with jpa feature).

Regards
JB

On 11/05/2012 04:59 PM, Bengt Rodehav wrote:
Some more findings...

It seems like the Karaf Shell (org.apache.karaf.shell.console) bundle
uses packages from aries (e g org.apache.aries.blueprint) which in turn
uses packages from org.apache.aries.util. Could it be that when
the org.apache.aries.util bundle is installed as part of the jpa
feature, it somehow causes a refresh which causes dependent bundles
(such as the org.apache.karaf.shell.console bundle) to be rewired. This
in turn would probably reinitialize the console (I'm probably using the
wrong terminology here but you know what I mean...).

If that is the case, then it seems highly undesirable to include
the org.apache.aries.util bundle in the jpa feature.

I don't have an explanation as to why this problem only occurs together
with iPojo but I assume that it somehow triggers the refresh.

/Bengt


2012/11/5 Bengt Rodehav <[email protected] <mailto:[email protected]>>

    BTW, I tried using iPojo 1.6.8 instead to see if this is a problem
    introduced in later iPojo versions. I do, however, get the same
    problems using iPojo 1.6.8 which implies that it's not a newly
    introduced iPojo problem.

    /Bengt


    2012/11/5 Bengt Rodehav <[email protected] <mailto:[email protected]>>

        I'm trying to upgrade my custom Karaf distribution to Karaf
        2.3.0 but have ran into some problems. It seems there is some
        kind of conflict between ipojo 1.8.2 and the jpa feature -
        specifically the org.apache.aries.util bundle in the jpa feature.

        I install ipojo as a feature (not listed in startup.properties).
        But when I do this I get the following exception:

        /2012-11-05 15:51:20,251 | INFO  | l Console Thread | Console
                                | araf.shell.console.jline.Console  199
        | 14 - org.apache.karaf.shell.console - 2.3.0 | Exception caught
        while executing command/
        /java.lang.UnsupportedOperationException: read() with timeout
        cannot be called as non-blocking operation is disabled/
        /at
        
jline.internal.NonBlockingInputStream.read(NonBlockingInputStream.java:134)[14:org.apache.karaf.shell.console:2.3.0]/
        /at
        
jline.internal.NonBlockingInputStream.read(NonBlockingInputStream.java:246)[14:org.apache.karaf.shell.console:2.3.0]/
        /at
        
jline.internal.InputStreamReader.read(InputStreamReader.java:259)[14:org.apache.karaf.shell.console:2.3.0]/
        /at
        
jline.internal.InputStreamReader.read(InputStreamReader.java:196)[14:org.apache.karaf.shell.console:2.3.0]/
        /at
        
jline.console.ConsoleReader.readCharacter(ConsoleReader.java:1974)[14:org.apache.karaf.shell.console:2.3.0]/
        /at
        
jline.console.ConsoleReader.readLine(ConsoleReader.java:2174)[14:org.apache.karaf.shell.console:2.3.0]/
        /at
        
jline.console.ConsoleReader.readLine(ConsoleReader.java:2098)[14:org.apache.karaf.shell.console:2.3.0]/
        /at
        
org.apache.karaf.shell.console.jline.Console.readAndParseCommand(Console.java:235)[14:org.apache.karaf.shell.console:2.3.0]/
        /at
        
org.apache.karaf.shell.console.jline.Console.run(Console.java:171)[14:org.apache.karaf.shell.console:2.3.0]/
        /at java.lang.Thread.run(Thread.java:662)[:1.6.0_32]/

        Then it seems like Karaf (or Felix) restarts somehow since I get
        another "Karaf" logo in the console. The issue can be reproduced
        quite easily:

        1. Download a fresh Karaf 2.3.0

        2. Create a new feature containing the ipojo bundle. The easiest
        way is probably to add the following lines to the
        enterprise-2.3.0-features.xml in the "system" folder:

             <feature name="ipojo">

        <bundle>mvn:org.apache.felix/org.apache.felix.ipojo/1.8.2</bundle>
             </feature>

        3. Edit the etc/org.apache.karaf.features.cfg as follows:

             featuresBoot=config,ssh,management,kar,jpa,ipojo

        Some other obeservations:

        - If I switch the jpa and the ipojo features I get other exceptions.

        - The org.apache.aries.util bundle is part of the jpa feature
        (start level 30) but it is also present in startup.properties
        (start level 20).

        - If I remove the org.apache.aries.util bundle from the jpa
        feature then things seem to work.

        - If I install ipojo by using startup.properties instead of
        using a feature then things seem to work.

        The last two observations might imply that org.apache.aries.util
        and ipojo must be resolved at the same time (start levels do not
        make any difference).

        I'm not sure if this post belongs here or in Felix mailing list.
        However, since it seems to involve the enterprise features that
        is part of Karaf I try here first. It's very confusing. Although
        I have found a couple of work-arounds I don't feel comfortable
        using them since I don't know what is happening.

        Does anyone have a clue?

        /Bengt




--
Jean-Baptiste Onofré
[email protected]
http://blog.nanthrax.net
Talend - http://www.talend.com

Reply via email to