private TaskTracker forExistingTable(AlterTableAddPartitionDesc lastPartitionReplicated) throws Exception {
    boolean encounteredTheLastReplicatedPartition = (lastPartitionReplicated == null);
    Map<String, String> lastReplicatedPartSpec = null;
    if (!encounteredTheLastReplicatedPartition) {
      lastReplicatedPartSpec = lastPartitionReplicated.getPartitions().get(0).getPartSpec();
      LOG.info("Start processing from partition info spec : {}",
          StringUtils.mapToString(lastReplicatedPartSpec));
    }

    Iterator<AlterTableAddPartitionDesc> partitionIterator = event.partitionDescriptions(tableDesc).iterator();
    while (!encounteredTheLastReplicatedPartition && partitionIterator.hasNext()) {
      AlterTableAddPartitionDesc addPartitionDesc = partitionIterator.next();
      Map<String, String> currentSpec = addPartitionDesc.getPartitions().get(0).getPartSpec();
      encounteredTheLastReplicatedPartition = lastReplicatedPartSpec.equals(currentSpec);
    }
    //Add Copy task pending for previous partition
    if (PartitionState.Stage.COPY.equals(lastReplicatedStage)) {
      addTasksForPartition(table, lastPartitionReplicated,
        lastReplicatedPartitionDesc);
    }
    boolean pendingPartitions = false;
    while (partitionIterator.hasNext() && tracker.canAddMoreTasks()) {
      pendingPartitions = true;
      AlterTableAddPartitionDesc addPartitionDesc = partitionIterator.next();
      AlterTableAddPartitionDesc.PartitionDesc src = addPartitionDesc.getPartitions().get(0);
      //Add check point task as part of add partition
      Map<String, String> partParams = new HashMap<>();
      partParams.put(ReplConst.REPL_TARGET_DB_PROPERTY, context.dumpDirectory);
      Path replicaWarehousePartitionLocation = locationOnReplicaWarehouse(table, src);
      src.setLocation(replicaWarehousePartitionLocation.toString());
      src.addPartParams(partParams);
      Map<String, String> partSpec = src.getPartSpec();

      ReplLoadOpType loadPtnType = getLoadPartitionType(partSpec);
      switch (loadPtnType) {
        case LOAD_NEW:
          break;
        case LOAD_REPLACE:
          tracker.addDependentTask(dropPartitionTask(table, partSpec));
          break;
        case LOAD_SKIP:
          continue;
        default:
          break;
      }
    }
    if (pendingPartitions) {
      addConsolidatedPartitionDesc(lastPartitionReplicated);
    }
    return tracker;
  }
Since the table level location will be set by taking into account the base directory configuration
for external table, we don't have to do anything specific for partition location since it will always
be a child of the table level location.
Looks like replication does not handle a specific location provided for a partition and the partition
path will always be a child on target.
ql/src/java/org/apache/hadoop/hive/ql/exec/repl/bootstrap/load/table/LoadPartitions.java