[
https://issues.apache.org/jira/browse/HTTPCLIENT-1147?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13198695#comment-13198695
]
Oleg Kalnichevski commented on HTTPCLIENT-1147:
-----------------------------------------------
I did a lousy job reviewing the patch. I missed the fact that the patch broke
API compatibility by adding an additional method to the Resource interface.
I backed out those changes as they seem to have no impact on the resolution of
the original issue. The test case testing the fix still pass for me even
without API breaking changes.
Oleg
> When HttpClient-Cache cannot open cache file, should act like miss
> ------------------------------------------------------------------
>
> Key: HTTPCLIENT-1147
> URL: https://issues.apache.org/jira/browse/HTTPCLIENT-1147
> Project: HttpComponents HttpClient
> Issue Type: Bug
> Components: Cache
> Affects Versions: 4.2 Alpha1
> Reporter: Craig
> Fix For: 4.1.3, 4.2 Beta1
>
> Attachments: issue_1147.patch
>
>
> Set up HttpClient-Cache like this:
> final String cacheDir = "cachedir";
> HttpClient cachingHttpClient;
> final CacheConfig cacheConfig = new CacheConfig();
> cacheConfig.setSharedCache(false);
> cacheConfig.setMaxObjectSizeBytes(262144); //256kb
> if(! new File(cacheDir, "httpclient-cache").exists()){
> if(!new File(cacheDir, "httpclient-cache").mkdir()){
> throw new RuntimeException("failed to create httpclient cache
> directory: " + new File(cacheDir, "httpclient-cache").getAbsolutePath());
> }
> }
> final ResourceFactory resourceFactory = new FileResourceFactory(new
> File(cacheDir, "httpclient-cache"));
> final HttpCacheStorage httpCacheStorage = new
> ManagedHttpCacheStorage(cacheConfig);
> cachingHttpClient = new CachingHttpClient(client, resourceFactory,
> httpCacheStorage, cacheConfig);
> Then make a request:
> final HttpGet get = new HttpGet(url);
> final HttpResponse response = cachingHttpClient.execute(get);
> final StatusLine statusLine = response.getStatusLine();
> if (statusLine.getStatusCode() >= 300) {
> if(statusLine.getStatusCode() == 404)
> throw new NoResultException();
> throw new HttpResponseException(statusLine.getStatusCode(),
> statusLine.getReasonPhrase());
> }
> response.getEntity().getContent();
> Everything worked as expected.
> Now delete the cache directory ("cachedir/httpclient-cache" in this example).
> And make the same request again.
> Actual:
> Caused by: java.lang.IllegalStateException: Content has been consumed
> at
> org.apache.http.entity.BasicHttpEntity.getContent(BasicHttpEntity.java:84)
> at
> org.apache.http.conn.BasicManagedEntity.getContent(BasicManagedEntity.java:100)
> Expected:
> HttpClient shouldn't throw an exception - it should just perform the request
> again acting like a cache miss.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
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]