Hi Guillaume,
thanks for the update. I will make some tries tomorrow and keep you posted.
Regards
JB
Guillaume Nodet wrote:
FWIW, I've started working on that yesterday and committed some enhacnements.
The strategy is the following: when installing a feature, grab a list
of all installed bundles and all bundles part of the feature (i.e.
bundles that were already installed before). When all bundles (and
bundles from features dependencies) have been installed, analyze the
old bundles to see if there is any matching requirements that could be
solved by newly installed bundles. If so, refresh those bundles. The
auto-refresh can be turned off using an option on the command.
It seems to work quite well, but there is one potential problem: the
blueprint implementation has an optional dependency on cglib which is
not satisfied at start time. So that you can end up refreshing the
blueprint bundle and cause the whole (nearly) karaf to restart ... So
we might want to provision cglib initially to make sure this does not
happen.
Anyway, feel free to give it a try and provide feedback.
On Fri, Oct 9, 2009 at 00:36, Chris Custine <ccust...@apache.org> wrote:
Hi All,
I have been looking at several issues this week that all relate to the
problem of refreshing bundles with optional imports. Guillaume has a couple
of issues opened related to this in Karaf:
https://issues.apache.org/jira/browse/FELIX-1074
https://issues.apache.org/jira/browse/FELIX-1689
The real problem seems to be that users expect to be able to install and
start bundles without much manual intervention. But with the optional
imports case, there has to be a refresh on the bundle to pick up the newly
installed package. So generally speaking, these issues are being reported
as bugs when they are actually normal behavior.
So the question is, how do we solve this in a nice user friendly way? Right
now, I am leaning toward Guillaume's suggestion to look through bundles with
optional imports on newly installed packages and refresh them very
selectively. However, I can imagine that some people would not like this to
be a default behavior and want more control over their deployments. It also
seems like refreshing things like Spring AOP can cause a lot of thrashing as
there are a lot of downstream bundles that will also refresh
(Spring-DM->Spring-Core->JBI components).
So I think we need to determine what approach to take and document it so
that we are prepared when people run into these issues. Seems like our
options are to report more detailed logs or display a warning on the console
for the admin to manually refresh, or we try to do it in an automated
fashion when features/bundles are installed.
BTW, I know this is a Karaf issue now, but it seems to happen to us a lot in
SMX so I wanted to start a discussion here for anyone not following Karaf
mailing list.
WDYT?
Chris
--
Chris Custine
FUSESource :: http://fusesource.com
My Blog :: http://blog.organicelement.com
Apache ServiceMix :: http://servicemix.apache.org
Apache Directory Server :: http://directory.apache.org