void poll(List<RequestInfo> requestsToSend, Set<Integer> requestsToDrop) {
    long startTime = time.milliseconds();
    requestRegistrationCallback.setRequestsToSend(requestsToSend);
    requestRegistrationCallback.setRequestsToDrop(requestsToDrop);
    for (GetOperation op : getOperations) {
      try {
        op.poll(requestRegistrationCallback);
        if (op.isOperationComplete()) {
          remove(op);
        }
      } catch (Exception e) {
        removeAndAbort(op,
            new RouterException("Get poll encountered unexpected error", e, RouterErrorCode.UnexpectedInternalError));
      }
    }
    routerMetrics.getManagerPollTimeMs.update(time.milliseconds() - startTime);
  }
Creates and returns requests in the form of {@link RequestInfo} to be sent to data nodes in order to complete
get operations. Since this is the only method guaranteed to be called periodically by the RequestResponseHandler
thread in the {@link NonBlockingRouter} ({@link #handleResponse} gets called only if a
response is received for a get operation), any error handling or operation completion and cleanup also usually
gets done in the context of this method.
@param requestsToSend list to be filled with the requests created
@param requestsToDrop list to be filled with the requests to drop.
ambry-router/src/main/java/com/github/ambry/router/GetManager.java