private ReplicationMetricCollector initReplicationDumpMetricCollector(Path dumpRoot, boolean isBootstrap, boolean isPreOptimisedBootstrap, boolean isFailover) throws HiveException {
    ReplicationMetricCollector collector;
    long executorId = conf.getLong(Constants.SCHEDULED_QUERY_EXECUTIONID, 0L);
    if (isBootstrap) {
      collector = new BootstrapDumpMetricCollector(work.dbNameOrPattern, dumpRoot.toString(), conf, executorId);
    } else if (isFailover) {
      // db property ReplConst.FAILOVER_ENDPOINT is only set during planned failover.
      String failoverType = MetaStoreUtils.isDbBeingPlannedFailedOver(getHive().getDatabase(work.dbNameOrPattern)) ?
          ReplConst.FailoverType.PLANNED.toString() : ReplConst.FailoverType.UNPLANNED.toString();
      if (isPreOptimisedBootstrap) {
        collector = new PreOptimizedBootstrapDumpMetricCollector(work.dbNameOrPattern, dumpRoot.toString(), conf, executorId,
            MetaStoreUtils.FailoverEndpoint.SOURCE.toString(), failoverType);
      } else {
        collector = new OptimizedBootstrapDumpMetricCollector(work.dbNameOrPattern, dumpRoot.toString(), conf, executorId,
            MetaStoreUtils.FailoverEndpoint.SOURCE.toString(), failoverType);
      }
    } else {
      collector = new IncrementalDumpMetricCollector(work.dbNameOrPattern, dumpRoot.toString(), conf, executorId);
    }
    return collector;
  }
Decide whether to dump ACID tables.
@param tableName - Name of ACID table to be replicated
@return true if need to bootstrap dump ACID table and false if not.
ql/src/java/org/apache/hadoop/hive/ql/exec/repl/ReplDumpTask.java