private ResponseInfo sendRequestGetResponse(DataNodeId dataNodeId, PartitionId partitionId,
      SendWithCorrelationId request) throws TimeoutException {
    ReplicaId replicaId = ToolRequestResponseUtil.getReplicaFromNode(dataNodeId, partitionId, clusterMap);
    String hostname = dataNodeId.getHostname();
    Port port = dataNodeId.getPortToConnectTo();
    String identifier = hostname + ":" + port.getPort();
    RequestInfo requestInfo = new RequestInfo(hostname, port, request, replicaId, null);
    List<RequestInfo> requestInfos = Collections.singletonList(requestInfo);
    ResponseInfo responseInfo = null;
    long startTimeMs = time.milliseconds();
    do {
      if (time.milliseconds() - startTimeMs > OPERATION_TIMEOUT_MS) {
        throw new TimeoutException(identifier + ": Operation did not complete within " + OPERATION_TIMEOUT_MS + " ms");
      }
      List<ResponseInfo> responseInfos =
          networkClient.sendAndPoll(requestInfos, Collections.emptySet(), POLL_TIMEOUT_MS);
      if (responseInfos.size() > 1) {
        // May need to relax this check because response list may contain more than 1 response
        throw new IllegalStateException("Received more than one response even though a single request was sent");
      } else if (!responseInfos.isEmpty()) {
        responseInfo = responseInfos.get(0);
      }
      requestInfos = Collections.emptyList();
    } while (responseInfo == null);
    if (responseInfo.getError() != null) {
      throw new IllegalStateException(
          identifier + ": Encountered error while trying to send request - " + responseInfo.getError());
    }
    return responseInfo;
  }
Sends {@code request} to {@code dataNodeId} and returns the response as a {@link ByteBuffer}.
@param dataNodeId the {@link DataNodeId} to contact.
@param partitionId the {@link PartitionId} associated with request.
@param request the request to send.
@return the response as a {@link ResponseInfo} if the response was successfully received. {@code null} otherwise.
@throws TimeoutException
ambry-tools/src/main/java/com/github/ambry/tools/admin/ServerAdminTool.java