private void fetchRequests(RequestRegistrationCallback<GetOperation> requestRegistrationCallback) {
    Iterator<ReplicaId> replicaIterator = operationTracker.getReplicaIterator();
    while (replicaIterator.hasNext()) {
      ReplicaId replicaId = replicaIterator.next();
      String hostname = replicaId.getDataNodeId().getHostname();
      Port port = RouterUtils.getPortToConnectTo(replicaId, routerConfig.routerEnableHttp2NetworkClient);
      GetRequest getRequest = createGetRequest(blobId, getOperationFlag(), options.getBlobOptions.getGetOption());
      RequestInfo requestInfo =
          new RequestInfo(hostname, port, getRequest, replicaId, operationQuotaCharger, time.milliseconds(),
              routerConfig.routerRequestNetworkTimeoutMs, routerConfig.routerRequestTimeoutMs);
      int correlationId = getRequest.getCorrelationId();
      correlationIdToGetRequestInfo.put(correlationId, requestInfo);
      requestRegistrationCallback.registerRequestToSend(this, requestInfo);
      replicaIterator.remove();
      if (RouterUtils.isRemoteReplica(routerConfig, replicaId)) {
        logger.trace("Making request with correlationId {} to a remote replica {} in {} ", correlationId,
            replicaId.getDataNodeId(), replicaId.getDataNodeId().getDatacenterName());
        routerMetrics.crossColoRequestCount.inc();
      } else {
        logger.trace("Making request with correlationId {} to a local replica {} ", correlationId,
            replicaId.getDataNodeId());
      }
      routerMetrics.getDataNodeBasedMetrics(replicaId.getDataNodeId()).getBlobInfoRequestRate.mark();
    }
  }
Fetch {@link GetRequest}s to send for the operation.
ambry-router/src/main/java/com/github/ambry/router/GetBlobInfoOperation.java