public TSStatus removeAINode(RemoveAINodePlan req) {
    LOGGER.info(
        "{}, There are {} AI nodes in cluster before executed RemoveAINodePlan",
        REMOVE_AINODE_PROCESS,
        registeredAINodes.size());

    aiNodeInfoReadWriteLock.writeLock().lock();
    versionInfoReadWriteLock.writeLock().lock();
    TAINodeLocation removedAINode = req.getAINodeLocation();
    try {
      registeredAINodes.remove(removedAINode.getAiNodeId());
      nodeVersionInfo.remove(removedAINode.getAiNodeId());
      LOGGER.info("Removed the AINode {} from cluster", removedAINode);
    } finally {
      versionInfoReadWriteLock.writeLock().unlock();
      aiNodeInfoReadWriteLock.writeLock().unlock();
    }
    LOGGER.info(
        "{}, There are {} AI nodes in cluster after executed RemoveAINodePlan",
        REMOVE_AINODE_PROCESS,
        registeredAINodes.size());
    return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
  }
Persist Information about remove dataNode.

@param req RemoveDataNodePlan
@return {@link TSStatus}
iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/node/NodeInfo.java