Today the `ReservedClusterStateService` decides whether or not to submit an update-error task depending on the content of the last-applied state as exposed by `ClusterService#state()`. This may happen concurrently with another state being published, so does not give a fully consistent view of the latest state. Instead it should check the state within the cluster state task executor, triggering a no-op update as appropriate.
server/src/main/java/org/elasticsearch/reservedstate/service/ReservedClusterStateService.java
try {
            orderedHandlers = orderedStateHandlers(reservedState.keySet());
        } catch (Exception e) {
            ErrorState errorState = new ErrorState(
                namespace,
                reservedStateVersion.version(),
                e,
                ReservedStateErrorMetadata.ErrorKind.PARSING
            );
            saveErrorState(clusterService.state(), errorState);
            logger.debug("error processing state change request for [{}] with the following errors [{}]", namespace, errorState);
            errorListener.accept(
                new IllegalStateException("Error processing state change request for " + namespace + ", errors: " + errorState, e)
            );
            return;
        }
        ClusterState state = clusterService.state();
        ReservedStateMetadata existingMetadata = state.metadata().reservedStateMetadata().get(namespace);
        
        
        if (checkMetadataVersion(namespace, existingMetadata, reservedStateVersion) == false) {
            errorListener.accept(null);
            return;
        }
        
        
        var trialRunResult = trialRun(namespace, state, reservedStateChunk, orderedHandlers);
        var error = checkAndReportError(namespace, trialRunResult.errors, state, reservedStateVersion);
        if (error != null) {
            errorListener.accept(error);