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

ASF subversion and git services commented on KARAF-6501:
--------------------------------------------------------

Commit 7cc3a03fee40c0214ca28c0fd56686928137a55b in karaf's branch 
refs/heads/master from Nelson Antunes
[ https://gitbox.apache.org/repos/asf?p=karaf.git;h=7cc3a03 ]

[KARAF-6501] Restoring the wiring of fragment bundles with multiple hosts


> Restoring the wiring of fragment bundles with multiple hosts
> ------------------------------------------------------------
>
>                 Key: KARAF-6501
>                 URL: https://issues.apache.org/jira/browse/KARAF-6501
>             Project: Karaf
>          Issue Type: Bug
>          Components: karaf
>    Affects Versions: 4.3.0, 4.2.7
>            Reporter: Nelson Antunes
>            Assignee: Jean-Baptiste Onofré
>            Priority: Major
>             Fix For: 4.3.0, 4.2.8
>
>         Attachments: example-1.0-SNAPSHOT.kar
>
>
> The {{StoredWiringResolver}}'s bundle wiring cache assumes each requirement 
> is only wired to a single capability. This isn't true for 
> {{osgi.wiring.host}} requirements as fragments can attach to multiple hosts.
> It is storing only the last wiring it comes across, resulting in the loss of 
> the other wirings when booting with hot caches.
> Steps to reproduce:
>  *1. Start a clean karaf*
> {noformat}
> $ bin/karaf
>         __ __                  ____
>        / //_/____ __________ _/ __/
>       / ,<  / __ `/ ___/ __ `/ /_
>      / /| |/ /_/ / /  / /_/ / __/
>     /_/ |_|\__,_/_/   \__,_/_/
>   Apache Karaf (4.2.7)
> Hit '<tab>' for a list of available commands
> and '[cmd] --help' for help on a specific command.
> Hit '<ctrl-d>' or type 'system:shutdown' or 'logout' to shutdown Karaf.
> karaf@root()> list
> START LEVEL 100 , List Threshold: 50
> ID │ State  │ Lvl │ Version │ Name
> 22 │ Active │  80 │ 4.2.7   │ Apache Karaf :: OSGi Services :: Event
> {noformat}
> *2. Install a fragment bundle and install and start two or more bundles that 
> satisfies the fragment's Fragment-Host requirement*
>  You can use the attached {{example-1.0-SNAPSHOT.kar}} file. Put it in the 
> {{deploy}} folder and it will install a fragment bundle and three hosts:
> {noformat}
> Starting the host 2
> Starting the host 1
> Starting the host 3
> {noformat}
> *3. Check that the bundles are correctly installed and the fragment is 
> attached to all three hosts*
> {noformat}
> karaf@root()> list
> START LEVEL 100 , List Threshold: 50
> ID │ State    │ Lvl │ Version        │ Name
> 22 │ Active   │  80 │ 4.2.7          │ Apache Karaf :: OSGi Services :: Event
> 44 │ Resolved │  80 │ 1.0.0.SNAPSHOT │ fragment Bundle, Hosts: 47, 46, 45
> 45 │ Active   │  80 │ 1.0.0          │ host1 Bundle, Fragments: 44
> 46 │ Active   │  80 │ 1.5.0          │ host2 Bundle, Fragments: 44
> 47 │ Active   │  80 │ 2.0.0          │ host3 Bundle, Fragments: 44
> {noformat}
> *4. However, notice that the wiring cache of the fragment bundle (44) isn't 
> right*
> {noformat}
> $ cat data/cache/bundle0/wiring/44
> osgi.ee; (&(osgi.ee=JavaSE)(version=1.8))
> 0; version=[1.0.0, 1.1.0, 1.2.0, 1.3.0, 1.4.0, 1.5.0, 1.6.0, 1.7.0, 1.8.0]
> osgi.wiring.host; (&(osgi.wiring.host=our-host)(bundle-version>=0.0.0))
> 45
> {noformat}
> *5. Stop karaf*
> {noformat}
> karaf@root()> ^D
> Stopping the host 3
> Stopping the host 2
> Stopping the host 1
> {noformat}
> *6. Start karaf with hot caches*
> {noformat}
> $ bin/karaf
> org.ops4j.pax.url.wrap [org.ops4j.pax.url.commons.handler.HandlerActivator] 
> DEBUG : Handler for protocols [wrap] started
>         __ __                  ____
>        / //_/____ __________ _/ __/
>       / ,<  / __ `/ ___/ __ `/ /_
>      / /| |/ /_/ / /  / /_/ / __/
>     /_/ |_|\__,_/_/   \__,_/_/
>   Apache Karaf (4.2.7)
> Hit '<tab>' for a list of available commands
> and '[cmd] --help' for help on a specific command.
> Hit '<ctrl-d>' or type 'system:shutdown' or 'logout' to shutdown Karaf.
> Starting the host 1
> Starting the host 2
> Starting the host 3
> {noformat}
> *7. Check that the fragment is no longer correctly attached to all three 
> hosts, but just to one*
> {noformat}
> karaf@root()> list
> START LEVEL 100 , List Threshold: 50
> ID │ State    │ Lvl │ Version        │ Name
> 22 │ Active   │  80 │ 4.2.7          │ Apache Karaf :: OSGi Services :: Event
> 44 │ Resolved │  80 │ 1.0.0.SNAPSHOT │ fragment Bundle, Hosts: 45
> 45 │ Active   │  80 │ 1.0.0          │ host1 Bundle, Fragments: 44
> 46 │ Active   │  80 │ 1.5.0          │ host2 Bundle
> 47 │ Active   │  80 │ 2.0.0          │ host3 Bundle
> {noformat}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to