During the replacement of GroupManagerActor to GroupManagerImpl, the following behavior was introduced:
When taking over leadership, a marathon instance will not load current root group from zookeeper, instead the old (probably outdated) root group will used to operate. This leads wrong behavior, because this root group is not in sync with the current zookeeper state.
This fix introduced a refresh cache implementation which is called during starting after taking leadership.
Hm, since we have a few awaits we could wrap it in async/await. That might mess with synchronized though.