I did single step through doing a ":reload" in the jboss-cli, but that is different.  

Service 2 depends on service 1, so we are protected there, as phase 2 cannot be reached, without going through phase 1 first.  When Service 2 starts, it calls a service 1 setSecondPhaseStarted(true), so service 1 knows if phase 2 started or not.

The phase 1 service, doesn't assume anything about the phase 2 service.  For the above case, service 1 doesn't care about service 2 starting and when service 1 is stopped again, it notices that service 2 didn't start and calls entityManagerFactoryBuilder.cancel().  

I'm not against fixing the "asymetrical" smells with the 2 phase bootstrap, just not sure of the solution yet.