[ 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)