mirror of
https://github.com/apache/httpcomponents-client.git
synced 2025-02-17 07:26:47 +00:00
HTTPCLIENT-1443: HttpCache uses the physical host instead of the virtual host in the cache key
git-svn-id: https://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk@1553642 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
cc4b18e865
commit
8acc3ad661
@ -96,7 +96,7 @@ public synchronized void revalidateCacheEntry(
|
||||
final HttpExecutionAware execAware,
|
||||
final HttpCacheEntry entry) {
|
||||
// getVariantURI will fall back on getURI if no variants exist
|
||||
final String uri = cacheKeyGenerator.getVariantURI(route.getTargetHost(), request, entry);
|
||||
final String uri = cacheKeyGenerator.getVariantURI(context.getTargetHost(), request, entry);
|
||||
|
||||
if (!queued.contains(uri)) {
|
||||
final int consecutiveFailedAttempts = failureCache.getErrorCount(uri);
|
||||
|
@ -231,7 +231,7 @@ public CloseableHttpResponse execute(
|
||||
final HttpClientContext context,
|
||||
final HttpExecutionAware execAware) throws IOException, HttpException {
|
||||
|
||||
final HttpHost target = route.getTargetHost();
|
||||
final HttpHost target = context.getTargetHost();
|
||||
final String via = generateViaHeader(request.getOriginal());
|
||||
|
||||
// default response context
|
||||
@ -250,7 +250,7 @@ public CloseableHttpResponse execute(
|
||||
requestCompliance.makeRequestCompliant(request);
|
||||
request.addHeader("Via",via);
|
||||
|
||||
flushEntriesInvalidatedByRequest(route.getTargetHost(), request);
|
||||
flushEntriesInvalidatedByRequest(context.getTargetHost(), request);
|
||||
|
||||
if (!cacheableRequestPolicy.isServableFromCache(request)) {
|
||||
log.debug("Request is not servable from cache");
|
||||
@ -272,7 +272,7 @@ private CloseableHttpResponse handleCacheHit(
|
||||
final HttpClientContext context,
|
||||
final HttpExecutionAware execAware,
|
||||
final HttpCacheEntry entry) throws IOException, HttpException {
|
||||
final HttpHost target = route.getTargetHost();
|
||||
final HttpHost target = context.getTargetHost();
|
||||
recordCacheHit(target, request);
|
||||
CloseableHttpResponse out = null;
|
||||
final Date now = getCurrentDate();
|
||||
@ -326,7 +326,7 @@ private CloseableHttpResponse handleCacheMiss(
|
||||
final HttpRequestWrapper request,
|
||||
final HttpClientContext context,
|
||||
final HttpExecutionAware execAware) throws IOException, HttpException {
|
||||
final HttpHost target = route.getTargetHost();
|
||||
final HttpHost target = context.getTargetHost();
|
||||
recordCacheMiss(target, request);
|
||||
|
||||
if (!mayCallBackend(request)) {
|
||||
@ -659,12 +659,12 @@ CloseableHttpResponse negotiateResponseFromVariants(
|
||||
recordCacheUpdate(context);
|
||||
|
||||
final HttpCacheEntry responseEntry = getUpdatedVariantEntry(
|
||||
route.getTargetHost(), conditionalRequest, requestDate, responseDate,
|
||||
context.getTargetHost(), conditionalRequest, requestDate, responseDate,
|
||||
backendResponse, matchingVariant, matchedEntry);
|
||||
backendResponse.close();
|
||||
|
||||
final CloseableHttpResponse resp = responseGenerator.generateResponse(responseEntry);
|
||||
tryToUpdateVariantMap(route.getTargetHost(), request, matchingVariant);
|
||||
tryToUpdateVariantMap(context.getTargetHost(), request, matchingVariant);
|
||||
|
||||
if (shouldSendNotModifiedResponse(request, responseEntry)) {
|
||||
return responseGenerator.generateNotModifiedResponse(responseEntry);
|
||||
@ -760,7 +760,7 @@ CloseableHttpResponse revalidateCacheEntry(
|
||||
|
||||
if (statusCode == HttpStatus.SC_NOT_MODIFIED) {
|
||||
final HttpCacheEntry updatedEntry = responseCache.updateCacheEntry(
|
||||
route.getTargetHost(), request, cacheEntry,
|
||||
context.getTargetHost(), request, cacheEntry,
|
||||
backendResponse, requestDate, responseDate);
|
||||
if (suitabilityChecker.isConditional(request)
|
||||
&& suitabilityChecker.allConditionalsMatch(request, updatedEntry, new Date())) {
|
||||
@ -805,7 +805,7 @@ CloseableHttpResponse handleBackendResponse(
|
||||
log.trace("Handling Backend response");
|
||||
responseCompliance.ensureProtocolCompliance(request, backendResponse);
|
||||
|
||||
final HttpHost target = route.getTargetHost();
|
||||
final HttpHost target = context.getTargetHost();
|
||||
final boolean cacheable = responseCachingPolicy.isResponseCacheable(request, backendResponse);
|
||||
responseCache.flushInvalidatedCacheEntriesFor(target, request, backendResponse);
|
||||
if (cacheable && !alreadyHaveNewerCacheEntry(target, request, backendResponse)) {
|
||||
|
@ -88,6 +88,7 @@ public void setUp() {
|
||||
request = HttpRequestWrapper.wrap(new BasicHttpRequest("GET", "/foo", HttpVersion.HTTP_1_1));
|
||||
|
||||
context = HttpCacheContext.create();
|
||||
context.setTargetHost(host);
|
||||
|
||||
originResponse = Proxies.enhanceResponse(HttpTestUtils.make200Response());
|
||||
|
||||
|
@ -66,6 +66,7 @@ public void setUp() {
|
||||
route = new HttpRoute(new HttpHost("foo.example.com"));
|
||||
request = HttpRequestWrapper.wrap(new HttpGet("/"));
|
||||
context = HttpClientContext.create();
|
||||
context.setTargetHost(new HttpHost("foo.example.com"));
|
||||
mockExecAware = EasyMock.createNiceMock(HttpExecutionAware.class);
|
||||
mockCacheEntry = EasyMock.createNiceMock(HttpCacheEntry.class);
|
||||
mockSchedulingStrategy = EasyMock.createNiceMock(SchedulingStrategy.class);
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -101,6 +101,7 @@ public void setUp() {
|
||||
request = new BasicHttpRequest("GET", "/foo", HTTP_1_1);
|
||||
|
||||
context = HttpCacheContext.create();
|
||||
context.setTargetHost(host);
|
||||
|
||||
originResponse = Proxies.enhanceResponse(make200Response());
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user