protected void prepareTargetForTranslog(final int totalTranslogOps) throws IOException {
    StopWatch stopWatch = new StopWatch().start();
    logger.trace(
        "{} recovery [phase1] to {}: prepare remote engine for translog",
        request.shardId(),
        request.targetNode());
    final long startEngineStart = stopWatch.totalTime().millis();
    // Send a request preparing the new shard's translog to receive
    // operations. This ensures the shard engine is started and disables
    // garbage collection (not the JVM's GC!) of tombstone deletes
    cancellableThreads.executeIO(
        () ->
            recoveryTarget.prepareForTranslogOperations(
                totalTranslogOps, shard.segmentStats(false).getMaxUnsafeAutoIdTimestamp()));
    stopWatch.stop();

    response.startTime = stopWatch.totalTime().millis() - startEngineStart;
    logger.trace(
        "{} recovery [phase1] to {}: remote engine start took [{}]",
        request.shardId(),
        request.targetNode(),
        stopWatch.totalTime());
  }