Description
Currently, if one has multiple features depending on each other, where the same features or bundles are referenced twice or more, Karaf will attempt to resolve/install them as many times as they are traversed.
E.g., pseudo-code:
feature a, contains: feature camel-core feature camel-spring bundle 1 bundle 2 feature b, contains: feature camel-jetty feature camel-http bundle 3 bundle 4 feature all, contains: feature a feature b
When one installs feature "all", Karaf will end up resolving/attempting to install camel-core multiple times as it hits it via transitive dependencies (via a, via camel-jetty, via camel-http, etc.).
As a result, an unnecessary delay is experienced and this could be optimised to perform a two-phase feature installation procedure instead:
- calculate the install plan (kind of like building an effective POM in Maven) and prune duplicates
- perform the install plan