@Nullable
  public TrackerClient getTrackerClient(Request request,
                                        RequestContext requestContext,
                                        Ring<URI> ring,
                                        Map<URI, TrackerClient> trackerClients)
  {
    TrackerClient trackerClient;

    URI targetHostUri = KeyMapper.TargetHostHints.getRequestContextTargetHost(requestContext);

    if (targetHostUri != null)
    {
      trackerClient = getTrackerClientFromTarget(targetHostUri, requestContext, trackerClients);
    }
    else
    {
      trackerClient = getTrackerClientFromRing(request, requestContext, ring, trackerClients);
    }
    addToExcludedHosts(trackerClient, requestContext);

    return trackerClient;
  }
@Test
  public void testRingAndHostInconsistency()
  {
    URI newUri = URI.create("new_uri");
    TrackerClient newTrackerClient = Mockito.mock(TrackerClient.class);
    Mockito.when(newTrackerClient.getUri()).thenReturn(newUri);
    Map<URI, TrackerClient> newTrackerClientMap = new HashMap<>();
    newTrackerClientMap.put(newUri, newTrackerClient);

    TrackerClient trackerClient = _clientSelector.getTrackerClient(_request, _requestContext, DEFAULT_RING, newTrackerClientMap);
    assertEquals(trackerClient, newTrackerClient,
        "The host should be picked from the tracker client list passed from the request because the ring is completely out of date");
  }