[ 
https://issues.apache.org/jira/browse/HTTPCLIENT-1299?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Oleg Kalnichevski resolved HTTPCLIENT-1299.
-------------------------------------------

    Resolution: Fixed

I kind of hoped that someone with a better understanding of HTTP caching might 
be able to fix this issue. Anyway, I did my best to figure out the correct 
behavior with regards to resource deallocation and ended up removing the 
offending call to Resource#dispose in this situation.

Oleg
                
> FileNotFoundException on Cached Variant
> ---------------------------------------
>
>                 Key: HTTPCLIENT-1299
>                 URL: https://issues.apache.org/jira/browse/HTTPCLIENT-1299
>             Project: HttpComponents HttpClient
>          Issue Type: Bug
>          Components: Cache
>    Affects Versions: 4.2.3
>         Environment: OpenJDK 64-Bit Server VM (6b24-1.11.5-0ubuntu1~12.04.1)
>            Reporter: James Leigh
>              Labels: regression
>             Fix For: 4.2.4, 4.3 Alpha2
>
>
> This bug was introduced in org.apache.http.impl.client.cache.BasicHttpCache 
> in 4.2.3.
> cacheAndReturnResponse takes the response and passes it to storeInCache. It 
> then calls generateResponse with the *same* response resource. The problem is 
> that storeInCache passes the resource to doGetUpdatedParentEntry, which makes 
> a copy and *deletes* the resource it was passed (oldResource).
> This did not occur in 4.2.2 because in 4.2.2 doGetUpdatedParentEntry did not 
> delete the resource. If the resource is being deleted after it is copied in 
> 4.2.3, then it must not be used to generateResponse.
> Here is a stack trace with line numbers.
>       BasicHttpCache.doGetUpdatedParentEntry(String, HttpCacheEntry, 
> HttpCacheEntry, String, String) line: 202        
>       BasicHttpCache$1.update(HttpCacheEntry) line: 119       
>       ManagedHttpCacheStorage.updateEntry(String, HttpCacheUpdateCallback) 
> line: 134  
>       BasicHttpCache.storeVariantEntry(HttpHost, HttpRequest, HttpCacheEntry) 
> line: 128       
>       BasicHttpCache.storeInCache(HttpHost, HttpRequest, HttpCacheEntry) 
> line: 96     
>       BasicHttpCache.cacheAndReturnResponse(HttpHost, HttpRequest, 
> HttpResponse, Date, Date) line: 265        
>       CachingHttpClient.handleBackendResponse(HttpHost, HttpRequest, Date, 
> Date, HttpResponse) line: 919      
>       CachingHttpClient.callBackend(HttpHost, HttpRequest, HttpContext) line: 
> 731     
>       CachingHttpClient.handleCacheMiss(HttpHost, HttpRequest, HttpContext) 
> line: 510 
>       CachingHttpClient.execute(HttpHost, HttpRequest, HttpContext) line: 436 

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to