I have a proposal to make deployments more atomic.
What this will is that any failure for a deployment or subdeployment forces
the whole deployment (top-level and subdeployments) to be undeployed.
The idea is to rollback after a failure in the MainDeployer, both the top-level
deployment and the subdeployments.
i.e. if init() then di.cleanup() and related code in destroy() is invoked
if create() fails then destroy() is invoked
if start() fails then stop()/destroy() is invoked
This applies to subdeployments already deployed, e.g. if one subdeployment fails,
the previous subdeployments are rolledback.
The main problem with this approach, is that the deployment failures will no longer
appear in the summary list of incomplete deployments at the end of the bootstrap,
(they won't exist at this point).
This could be mitigated, by holding failed deployments in a separate datastructure which is
queried and cleared when the incomplete deployment check is made.