@Override
    public ClusterState getClusterState() {
        // If the cluster state has never been updated then make sure we are updating it.
        if (clusterState.getUpdateTime() == 0) {
            updateClusterStateAsync(0, false);
        } else {
            // Determine if the current state should be re-evaluated as it is
            // older than 1 minute.
            final long expiryTime = System.currentTimeMillis() - ONE_MINUTE;
            if (clusterState.getUpdateTime() < expiryTime) {
                updateClusterStateAsync(0, false);
            }
        }

        return clusterState;
    }
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