private boolean reportDownIfOutdatedSlobrokNode(ClusterState currentClusterState,
                                                    NodeListener nodeListener,
                                                    long currentTime,
                                                    NodeInfo node,
                                                    NodeState lastReportedState)
    {
        if (node.isNotInSlobrok()
            && !lastReportedState.getState().equals(DOWN)
            && node.lastSeenInSlobrok() + maxSlobrokDisconnectGracePeriod <= currentTime)
        {
            final String desc = String.format(
                    "Set node down as it has been out of slobrok for %d ms which " +
                    "is more than the max limit of %d ms.",
                    currentTime - node.lastSeenInSlobrok(),
                    maxSlobrokDisconnectGracePeriod);
            node.abortCurrentNodeStateRequests();
            NodeState state = lastReportedState.clone();
            state.setState(DOWN);
            if (!state.hasDescription()) {
                state.setDescription(desc);
            }
            eventLog.add(NodeEvent.forBaseline(node, desc, NodeEvent.Type.CURRENT, currentTime), isMaster);
            handleNewReportedNodeState(currentClusterState, node, state.clone(), nodeListener);
            node.setReportedState(state, currentTime);
            return true;
        }
        return false;
    }
Propose a new state for a node. This may happen due to an administrator action, orchestration, or
a configuration change.

If the newly proposed state differs from the state the node currently has in the system,
a cluster state regeneration will be triggered.
clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/StateChangeHandler.java