Details
-
Improvement
-
Status: Closed
-
Major
-
Resolution: Fixed
-
0.1, 0.2, 0.3
-
None
Description
The provisioning system currently will quite happily allow a number of corner cases where bundles intend to share a service based on a common view of a package but end up wiring to different package versions because of incompatible version ranges.
The most basic setup where this happens is an application with three isolated bundles: api, consumer, provider. Consumer uses a service from producer based on an interface in package P. Consumer consumes package P at [1.1.0,2.0.0) while producer uses P at [1.0.0,1.1.0). There is two versions of api one exporting P at 1.0.0 and another exporting version 1.1.0 of P. Note that this cannot work.
In this setup with the current resolver api will be provisioned twice: once as isolated content and once as provisioned content providing a package to the isolated content. So despite the fact that the scenario is invalid we produce a deployment.
Now, there are corner cases where the deployment would be valid when no service is shared and the package should not be part of the isolated content in the first place. This scenario should still be supported with an explicit use-bundle clause.