public Map<String, Long> getIncrBackupLogFileMap() throws IOException {
    List<String> logList;
    Map<String, Long> newTimestamps;
    Map<String, Long> previousTimestampMins;

    String savedStartCode = readBackupStartCode();

    // key: tableName
    // value: <RegionServer,PreviousTimeStamp>
    Map<TableName, Map<String, Long>> previousTimestampMap = readLogTimestampMap();

    previousTimestampMins = BackupUtils.getRSLogTimestampMins(previousTimestampMap);

    if (LOG.isDebugEnabled()) {
      LOG.debug("StartCode " + savedStartCode + "for backupID " + backupInfo.getBackupId());
    }
    // get all new log files from .logs and .oldlogs after last TS and before new timestamp
    if (
      savedStartCode == null || previousTimestampMins == null || previousTimestampMins.isEmpty()
    ) {
      throw new IOException("Cannot read any previous back up timestamps from backup system table. "
        + "In order to create an incremental backup, at least one full backup is needed.");
    }

    LOG.info("Execute roll log procedure for incremental backup ...");
    HashMap<String, String> props = new HashMap<>();
    props.put("backupRoot", backupInfo.getBackupRootDir());

    try (Admin admin = conn.getAdmin()) {
      admin.execProcedure(LogRollMasterProcedureManager.ROLLLOG_PROCEDURE_SIGNATURE,
        LogRollMasterProcedureManager.ROLLLOG_PROCEDURE_NAME, props);
    }
    newTimestamps = readRegionServerLastLogRollResult();

    logList = getLogFilesForNewBackup(previousTimestampMins, newTimestamps, conf, savedStartCode);
    logList = excludeProcV2WALs(logList);
    backupInfo.setIncrBackupFileList(logList);

    return newTimestamps;
  }
Obtain the list of logs that need to be copied out for this incremental backup. The list is set
in BackupInfo.
@return The new HashMap of RS log time stamps after the log roll for this incremental backup.
@throws IOException exception
hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/impl/IncrementalBackupManager.java