Community
Participate
Working Groups
The scope of this bug is to remove the TreeRestrictingInstallArtifactLifecycleListener service and to add some integration tests (see below) that prove that non-tree DAGs of install artefacts can be created. This change will need to be kept on a topic branch for bug 358441 until some other basic features are implemented, particularly bug 358448 to undeploy shared artefacts when they are no longer referenced, but also possibly bug 358442, bug 358443, bug 358445, and bug 358447 depending how serious their omission proves to be (i.e. whether any existing tests fail and whether the end user function is seriously lacking). There are various cases to consider which give rise to non-tree DAGs: 1. A plan is deployed which refers to an artefact which is already installed: 1a. The artefact was already installed as a top-level artefact. 1b. The artefact was already installed as a child of a plan. 1c. The artefact was already installed as a transitive dependency of some deployed artefact(s). 2. An artefact is deployed which is already installed (including cases 1a, 1b, and 1c). It would be possible to fail the deployment in this case like we do today. OTOH it would be a little odd that you can deploy a top-level artefact and then a plan which refers to it, but not vice versa. So if we can figure out a way to make this work, that would be more consistent. 3. A plan is deployed which contains one or more nested plans that share at least one node. The deployed plan is itself a non-tree DAG.