hc-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Oleg Kalnichevski (Commented) (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HTTPCLIENT-1147) When HttpClient-Cache cannot open cache file, should act like miss
Date Thu, 02 Feb 2012 11:17:53 GMT

    [ 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: dev-unsubscribe@hc.apache.org
For additional commands, e-mail: dev-help@hc.apache.org


Mime
View raw message