David Lloyd wrote:
This implies that if a given processDeployment() fails, its cleanup() is not called, but the cleanup() methods on all the DUPs before the one that failed are called.
I should elaborate here: the cleanup() methods should be called in reverse order, just like recursive catch/finally blocks would be.