public static TPipeConsensusTransferResp closedResp(String consensusInfo, TCommitId tCommitId) {
    final TSStatus status =
        new TSStatus(
            RpcUtils.getStatus(
                TSStatusCode.PIPE_CONSENSUS_CLOSE_ERROR,
                "PipeConsensus receiver received a request after it was closed."));
    LOGGER.info(
        "PipeConsensus-{}: receive on-the-fly no.{} event after data region was deleted, discard it",
        consensusInfo,
        tCommitId);
    return new TPipeConsensusTransferResp(status);
  }
For each consensus Pipe task, there is an independent receiver. So for every replica, it has
(n-1) receivers, n is the num of replicas. 1 DataNode --has--> 1 PipeConsensusReceiverAgent & n
replicas 1 PipeConsensusReceiverAgent --manages--> n replicas' receivers 1 replica --has-->
(n-1) receivers
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/protocol/pipeconsensus/PipeConsensusReceiverAgent.java