private boolean busySnapshotting(Node node, Instant downSince) {
        if (node.type().isHost()) {
            // Check if any children are busy snapshotting
            try (var lock = nodeRepository().nodes().lockAndGetRecursively(node.hostname(), Optional.empty())) {
                return lock.children().stream()
                        .anyMatch(child -> busySnapshotting(child.node(), downSince));
            }
        }


        if (!node.history().isSuspended()) return false;

        var snapshots = nodeRepository().snapshots().read(node.hostname());
        if (snapshots.isEmpty()) return false;

        var latestSnapshot = snapshots.get(snapshots.size() - 1);
        var busySnapshot = latestSnapshot.state().busy();
        var recentlyChanged = latestSnapshot.idle(clock().instant())
                .minus(suspendedDownTimeLimit)
                .isNegative(); // Also allow nodes where created/restored is a recent event

        var isSnapshotting = busySnapshot || recentlyChanged;
        return isSnapshotting && clock().instant().isBefore(downSince.plus(BUSY_SNAPSHOT_GRACE_PERIOD));
    }
Is the node undergoing backup/restoration?
node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeFailer.java