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
>



-- 
Cheers,
Guillaume Nodet
------------------------
Blog: http://gnodet.blogspot.com/
------------------------
Open Source SOA
http://fusesource.com

Reply via email to