This patch in OSGi shows that there is something wrong with AbstractDeploymentContext.setRequiredStage().
You shouldn't have to explicitly do the ControllerContext.setRequiredState(), that is an implementation detail.
I think this is how it already was, but you changed it at some point. ;-)
So, I guess we need to change both things?