public BackupCheckerThread getBackupCheckerThread(String threadName) {
    try {
      String dc = dataNodeId.getDatacenterName();
      StoreKeyConverter storeKeyConverter = storeKeyConverterFactory.getStoreKeyConverter();
      Transformer transformer = Utils.getObj(transformerClassName, storeKeyFactory, storeKeyConverter);
      return new BackupCheckerThread(threadName, tokenHelper, clusterMap, correlationIdGenerator, dataNodeId,
          networkClientFactory.getNetworkClient(), replicationConfig, replicationMetrics, notification,
          storeKeyConverter, storeKeyFactory, transformer, metricRegistry, sslEnabledDatacenters.contains(dc), dc,
          new ResponseHandler(clusterMap), time, replicaSyncUpManager, skipPredicate, leaderBasedReplicationAdmin);
    } catch (IOException | ReflectiveOperationException e) {
      throw new RuntimeException(e);
    }
  }
Returns replication-thread object, not a thread
@param threadName
@return
ambry-replication/src/main/java/com/github/ambry/replication/ReplicationManager.java