void redoInsertRows(InsertRowsNode insertRowsNode) {
    int pointsInserted = 0;
    for (InsertRowNode node : insertRowsNode.getInsertRowNodeList()) {
      if (!node.hasValidMeasurements()) {
        continue;
      }
      if (tsFileResource != null) {
        // orders of insert node is guaranteed by storage engine, just check time in the file
        // the last chunk group may contain the same data with the logs, ignore such logs in seq
        // file
        Optional<Long> lastEndTime = tsFileResource.getEndTime(node.getDeviceID());
        long minTimeInNode;
        minTimeInNode = node.getTime();
        if (lastEndTime.isPresent() && lastEndTime.get() >= minTimeInNode) {
          continue;
        }
      }
      if (node.isAligned()) {
        pointsInserted += recoveryMemTable.insertAlignedRow(node);
      } else {
        pointsInserted += recoveryMemTable.insert(node);
      }
    }
    updatePointsInsertedMetric(insertRowsNode, pointsInserted);
  }
This class helps redo wal logs into a TsFile. Notice: You should update time map in {@link
TsFileResource} before using this class to avoid duplicated insertion and this class doesn't
guarantee concurrency safety.
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/recover/file/TsFilePlanRedoer.java