Overview
This article explains how to avoid bundle refresh issues after migrating from 5.6.x to 6.0.x.
Environment
This procedure only applies when migrating from 5.6.x to 6.0.x. For all other versions of Talend Runtime, please refer to the Installation and Upgrade Guide for your platform.
Symptoms/Description
After migrating from 5.6.x to 6.0.x, your Karaf 4.0.x-based Talend Runtime container may seem to refresh dozens of bundles, or may install or uninstall unexpected bundles, when you are installing other features.
If the container seems to refresh a lot more bundles than expected, this is because the refreshes can easily cascade.
For example, a bundle that embeds an API package also has an optional dependency to another package. If this optional dependency is fulfilled by a newly-installed feature, then the bundle is rewired and will cause all bundles that are wired to the API package to also be refreshed.
Diagnosis
The Feature Service can be turned to verbose mode (-v) to show more details of what it does. The output will show which bundles are installed, uninstalled, refreshed, stopped, and started.
For example:
feature:install -v activemq
In the logged messages you will find lines like this:
org.ops4j.pax.web.pax-web-jsp/4.2.0 (Wired to org.ops4j.pax.web.pax-web-spi/4.2.0 which is being refreshed)
This means that pax-web-jsp is being refreshed because pax-web-spi is refreshed. So all lines containing "which is" are not the root cause. It helps to use:
feature:install -t -v activemq | grep -v "which is"
The option -t (simulate) makes sure you are only looking at what would be changed, but does not install anything. The grep part filters out all non-root causes.
Resolution
There are some ways to avoid such cascading refreshes:
- Avoid embedding API packages into bundles with optional dependencies. Ideally, deploy separate bundles for the API.
- Do many feature installations in one step. Instead of feature:install cxf; feature:install activemq, do feature:install cxf activemq. The more information the Feature Service has, the better it can choose the right bundles.