Matt Magoffin commented on FELIX-5383:

Hi Guillaume,

Thank you for responding. Let me start off by saying I am using Gemini 
Blueprint (not Aries), and running on Equinox (not Felix, and not using Karaf). 
I am simply deploying File Install with a service configuration like:

felix.fileinstall.poll = 0
felix.fileinstall.dir = app/main
felix.fileinstall.noInitialDelay = true
felix.fileinstall.bundles.new.start = true
felix.fileinstall.disableConfigSave = true
felix.fileinstall.active.level = 9
felix.fileinstall.start.level = 9

Within that {{app/main}} directory I have many bundles. In one example where I 
get a timeout is on a web application bundle (I'll just call it bundle 
{{web}}), that when started by File Install has the Gemini Web extender is 
trying to initialize non-optional Blueprint dependencies that are provided by 
other bundles in {{app/main}}. If those other bundles happen to have been 
started by File Install already, everything is fine. Otherwise, the {{web}} 
bundle blocks, waiting as long as the configured Blueprint service timeout, 
before giving up. Once it gives up, File Install continues starting the other 
bundles in {{app/main}}, but when finished the {{web}} bundle will be left 

With the change in my branch, I add this to the File Install configuration:

felix.fileinstall.start.tasks = 5
felix.fileinstall.start.tasksRetryDelay = 1

and then even if {{web}} ends up blocking while it waits for non-optional 
services, other bundles continue to be started by File Install and eventually 
those services become available and {{web}} can start successfully.

> Support parallel bundle starting
> --------------------------------
>                 Key: FELIX-5383
>                 URL: https://issues.apache.org/jira/browse/FELIX-5383
>             Project: Felix
>          Issue Type: Improvement
>          Components: File Install
>    Affects Versions: fileinstall-3.5.4
>            Reporter: Matt Magoffin
>            Assignee: Guillaume Nodet
> I have an application that uses Felix File Install to start a set of bundles 
> that use Blueprint configuration extensively, but with the poll time disabled 
> ({{felix.fileinstall.poll = 0}}) because I only want the bundles started at 
> application startup time. Sometimes one bundle might have a Blueprint service 
> dependency provided by another bundle such that when started and that other 
> bundle has not been started yet causes a service timeout. The ordering File 
> Install uses to start bundles is indeterminate (a {{HashSet}} is passed to 
> {{startBundles(Collection<Bundle> bundles)}}) so I thought a good solution 
> would be to start bundles in parallel, so if one bundle gets stuck when 
> starting, waiting for a Blueprint service to become available, other bundles 
> can continue to be started under the assumption one of them will be providing 
> that service "soon".

This message was sent by Atlassian JIRA

Reply via email to