private void updateClusterStateAsync(final int taskDelay, final boolean force) {
        if (force) {
            pendingUpdate.set(true);
        }

        if (updatingState.compareAndSet(false, true)) {
            doUpdate(taskDelay);
        }
    }
Gets the current cluster state. If the current state is null or is older
than the expiry time then the cluster state will be updated
asynchronously ready for subsequent calls. The current state is still
returned so could be null
stroom-cluster/stroom-cluster-impl/src/main/java/stroom/cluster/impl/ClusterNodeManagerImpl.java