On 4/1/12 12:32, Matias SM wrote:
Hi everybody,
I'm using OBR to help me resolve bundle deployment. Everything works
great and as expected but I'm facing a situation I don't know how to
solve.
---------------------------------------
Here is my test scenario:
I have the following bundles in an OBR repository:
* SymbolicName: A | Bundle-Version: 1.0.0.1 | exports: (package: "p.a"
version: 1)
* SymbolicName: A | Bundle-Version: 1.0.0.2| exports: (package: "p.a"
version: 1)
* SymbolicName: DA | Bundle-Version: 1| depends: (package: "p.a"
version: [1 , 2) )
* SymbolicName: DexA | Bundle-Version: 1| depends: (package: "p.a"
version: [1 , 2) ) and (bundle: "A" version: [1.0.0.2, 1.0.0.2] )
Then my test runs as follows:
g! deploy -s DA
==> this also deploys A version 1.0.0.2 (I guess because it is the
"newer" bundle that exports "pa" version 1)
g! deploy -s [email protected]
==> this __updates__ the previously deployed A (version 1.0.0.2)
First "issue", if I run:
g!deploy -s [email protected]
==> then OBR executes successfully but [email protected] is not installed
(since there is an "updated" version of it already resolved). I know
this is the expected behavior, but I would like to be able to deploy
[email protected]
It seems like OBR should probably be performing a refresh after it does
an update, so there isn't an older version hanging around.
Second (and worse) issue, if I now run:
g!refresh
==> so [email protected] is completely uninstalled from the framework
And then:
g!deploy -s DexA
==> this deployment __fails__ because [email protected] can't be
reinstalled in the framework!!
Not sure why that would be. Are you seeing some sort of error?
---------------------------------------
In the OBR project web page [1] can be read:
"OBR's deployment algorithm appears simple at first glance, but it is
actually somewhat complex due to the nature of deploying independently
developed bundles. For example, in an ideal world, if an update for a
bundle is made available, then updates for all of the bundles
satisfying its dependencies are also made available. Unfortunately,
this may not be the case, thus the deployment algorithm might have to
install new bundles during an update to satisfy either new
dependencies or updated dependencies that can no longer be satisfied
by existing local bundles. In response to this type of scenario,
___the OBR deployment algorithm tries to favor updating existing
bundles, if possible, as opposed to installing new bundles to satisfy
dependencies.____"
I don't fully understand this explanation but I get that the described
behavior is as intended.
Not sure which part you don't understand.
My questions are:
1- Is there a way to force the installation of different bundle
versions (instead of the update of "older" ones) when deploying
through OBR?
No, I don't think so.
2- What kind of issues may this behavior (installation of different
versions) rise? (this is not considering the "problem" of having a lot
of bundles installed)
Lots of providers is generally a bad thing since it creates many
partitions in the overall class spaces of the bundles, meaning that
collaboration among them becomes limited to little islands of bundles
that happen to be using the same same providers.
Note that while I'm using the shell to run my tests, my intention is
to use the OBR API in my code. So the "solution" may be available only
in the API.
Sorry the mail got so long but I wanted to state my problem as clear
as possible.
Thank you for taking the time to read and to answer!
Still not clear to me what the actual issue is or the solution, but at a
minimum OBR should probably refresh after update.
-> richard
Kind regards
[1]
http://felix.apache.org/site/apache-felix-osgi-bundle-repository.html#ApacheFelixOSGiBundleRepository-OBRServiceAPI
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]