void setClusterStateBundleRetrievedFromZooKeeper(ClusterStateBundle bundle) {
        // There is an edge where the bundle version will mismatch with the version set
        // via setVersionRetrievedFromZooKeeper() if the controller (or ZK) crashes before
        // it can write both sequentially. But since we use the ZK-written version explicitly
        // when choosing a new version for our own published states, it should not matter in
        // practice. Worst case is that the current state reflects the same version that a
        // previous controller had, but we will never publish this state ourselves; publishing
        // only happens after we've generated our own, new candidate state and overwritten
        // the empty states set below. Publishing also, as mentioned, sets a version based on
        // the ZK version, not the version stored in the bundle itself.
        currentClusterState = bundle;
        currentUnversionedState = ClusterStateBundle.empty();
        latestCandidateState = ClusterStateBundle.empty();
    }
Keeps track of the active cluster state and handles the transition edges between
one state to the next. In particular, it ensures that states have strictly increasing
version numbers.

Wraps ClusterStateView to ensure its knowledge of available nodes stays up to date.
clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/StateVersionTracker.java