private void registerToTsFile(InsertNode node, TsFileProcessor tsFileProcessor) {
    final String tableName = node.getTableName();
    if (tableName != null) {
      tsFileProcessor.registerToTsFile(
          tableName,
          t -> {
            TsTable tsTable = DataNodeTableCache.getInstance().getTable(getDatabaseName(), t);
            if (tsTable == null) {
              // There is a high probability that the leader node has been executed and is currently
              // located in the follower node.
              if (node.isGeneratedByRemoteConsensusLeader()) {
                // If current node is follower, after request config node and get the answer that
                // table is exist or not, then tell leader node when table is not exist.
                try {
                  TDescTableResp resp =
                      ConfigNodeClientManager.getInstance()
                          .borrowClient(ConfigNodeInfo.CONFIG_REGION_ID)
                          .describeTable(getDatabaseName(), tableName, false);
                  tsTable =
                      (resp != null) && (resp.tableInfo != null)
                          ? TsTableInternalRPCUtil.deserializeSingleTsTable(resp.getTableInfo())
                          : null;
                } catch (TException | ClientManagerException e) {
                  logger.error(
                      "Remote request config node failed that judgment if table is exist, occur exception. {}",
                      e.getMessage());
                }
                if (tsTable == null) {
                  throw new TableNotExistsRuntimeException(getDatabaseName(), tableName);
                }
              } else {
                // Here may be invoked by leader node, the table is very unexpected not exist in the
                // DataNodeTableCache
                logger.error(
                    "Due tsTable is null, table schema can't be got, leader node occur special situation need to resolve.");
                throw new TableLostRuntimeException(getDatabaseName(), tableName);
              }
            }
            return TableSchema.of(tsTable).toTsFileTableSchemaNoAttribute();
          });
    }
  }
insert batch to tsfile processor thread-safety that the caller need to guarantee The rows to be
inserted are in the range [start, end) Null value in each column values will be replaced by the
subsequent non-null value, e.g., {1, null, 3, null, 5} will be {1, 3, 5, null, 5}

@param insertTabletNode insert a tablet of a device
@param sequence whether is sequence
@param rangeList start and end index list of rows to be inserted in insertTabletPlan
@param results result array
@param timePartitionId time partition id
@return false if any failure occurs when inserting the tablet, true otherwise
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/DataRegion.java