private void triggerDetectTask() {
    List<TDataNodeLocation> newUnknownNodes = new ArrayList<>();

    nodeManager
        .getRegisteredDataNodes()
        .forEach(
            DataNodeConfiguration -> {
              TDataNodeLocation dataNodeLocation = DataNodeConfiguration.getLocation();
              NodeStatus nodeStatus = loadManager.getNodeStatus(dataNodeLocation.getDataNodeId());
              if (nodeStatus == NodeStatus.Running) {
                oldUnknownNodes.remove(dataNodeLocation);
              } else if (!oldUnknownNodes.contains(dataNodeLocation)
                  && nodeStatus == NodeStatus.Unknown) {
                newUnknownNodes.add(dataNodeLocation);
              }
            });

    if (!newUnknownNodes.isEmpty()) {
      TSStatus transferResult = configManager.transfer(newUnknownNodes);
      if (transferResult.getCode() == TSStatusCode.SUCCESS_STATUS.getStatusCode()) {
        oldUnknownNodes.addAll(newUnknownNodes);
      }
    }
  }
The triggerDetectTask executed periodically to find newest UnknownDataNodes

<p>1.If one DataNode is continuing Unknown, we shouldn't always activate Transfer of this Node.

<p>2.The selected DataNodes may not truly need to transfer, so you should ensure safety of the
Data when implement transferMethod in Manager.
iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/RetryFailedTasksThread.java