@SuppressWarnings("squid:S2095")
  @Override
  public IWALNode applyForWALNode(String applicantUniqueId) {
    nodesLock.lock();
    try {
      IWALNode walNode = identifier2Nodes.get(applicantUniqueId);
      if (walNode == null) {
        walNode = createWALNode(applicantUniqueId);
        if (walNode instanceof WALNode) {
          // avoid deletion
          walNode.setSafelyDeletedSearchIndex(
              ConsensusReqReader.DEFAULT_SAFELY_DELETED_SEARCH_INDEX);
          identifier2Nodes.put(applicantUniqueId, (WALNode) walNode);
        }
      }

      return walNode;
    } finally {
      nodesLock.unlock();
    }
  }
This strategy creates one wal node for each unique identifier. In other words, each identifier
(like data region) has its own wal node.
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/allocation/FirstCreateStrategy.java