[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [virgo-dev] Virgo - Parallel startup of Plans

On 29.08.2017 15:51, Giamma wrote:
On Tue, Aug 29, 2017 at 2:46 PM, Stefan Zugal <stefan.zugal@xxxxxxx> wrote:

thank you very much for your quick reply! I am afraid we cannot do that, since we need to dynamically add and remove the plans. We are using a Maven job on a Jenkins server for building our software. During the development, we repeatedly need to re-build and re-deploy our bundles and plans, which roughly means:
* Build the bundles on Jenkins
* Remove the old bundles/plans from the Virgo - wait until it is undeployed
* Add the new bundles/plan to the Virgo

I would assume if we had one or more "master plans", we could not dynamically add or remove random plans?

If you had a "master plan" it would become your minimum deployment unit, meaning that when you undeployed the master plan all referred plans would be undeployed as well.
Now, if your build jobs update all plans and all bundles every time, then the final result will be the same. If instead your automated jobs just update one of the 35 plans independently of the others at different moments in time, then having a master plan would be worse because it would imply stopping and restarting all the 35 plans just to update one of them.

You mentioned that each plan contains on average 25 bundles. Do you really need to list them all? I am asking, because based on my experience with Virgo, activation of bundles in plans takes more time than bundles in the repository. In principle, you need to list in the plan only those bundles that have an activator and really need to be started or those who need to get started first (e.g. OSGi extenders). If a bundle B depends on a bundle A, you do not necessarily need to list A in the plan before B, it's sufficient to have A in the repository because A will be resolved when B is started. Are you sure you need to have all of the bundles listed in the plans? Listing only those that are leaves in the dependency tree may speed up your boot time and possibly reduce the problem you are experiencing.

I am sorry but I cannot provide more advice than that: while I am a committer of the Virgo team and a user of Virgo myself, I work only on the Eclipse plug-ins and don't know whether it's possible to tweak Virgo (or Equinox) to use less or more concurrency at boot. Maybe Daniel or Florian will be able to provide more advice.


Hi GianMaria,

thanks for your suggestion - I will discuss it with my co-workers to see whether we can benefit from your insights.

You wrote that only listing the leaf nodes in the dependency tree might help. We have organized our system with a number of Snap bundles; depending on the customer, the respective snaps are configured and deployed. Hence, in our plans, Snap bundles constitute most of the leaf nodes - which in turn we have to include in the plan. So I am afraid we have to keep most of the bundles - but I will have a look!