hc-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Adam Patacchiola (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HTTPCLIENT-1347) gzip responses doubly cached
Date Mon, 13 Jan 2014 22:25:52 GMT

    [ https://issues.apache.org/jira/browse/HTTPCLIENT-1347?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13870066#comment-13870066

Adam Patacchiola commented on HTTPCLIENT-1347:

This doesn't make sense to me. The "putEntry" method only ever gets called with the key "{Accept-Encoding=}http://localhost:8000/1",
then updateEntry gets called with the key "http://localhost:8000/1" for which no cache entry
exists (as putEntry has not been called for that key). The HttpCacheStorage updateEntry documentation
states, "Atomically applies the given callback to update an existing cache entry under a given
key." How can the cache update an entry that doesn't exist? 

getEntry only ever gets called with the key "http://localhost:8000/1" for which it doesn't
have an entry. How is the cache implementation supposed to know the two keys are related?
Shouldn't the client be abstracting the variant keys from the underlying cache implementation?

The only way to get it to work is to call putEntry for the "root" key in updateEntry as the
test client is doing, which results in data being cached twice unnecessarily.

> gzip responses doubly cached
> ----------------------------
>                 Key: HTTPCLIENT-1347
>                 URL: https://issues.apache.org/jira/browse/HTTPCLIENT-1347
>             Project: HttpComponents HttpClient
>          Issue Type: Bug
>          Components: HttpCache
>    Affects Versions: 4.2.5
>         Environment: ARCH Linux kernel 3.8.8-1
> node.js 0.8.22
>            Reporter: Adam Patacchiola
>             Fix For: 4.4 Final
>         Attachments: Screen Shot 2014-01-11 at 7.11.36 PM.png, Screen Shot 2014-01-13
at 3.56.19 PM.png, Showing_entry_pointer.png, httpClientCacheTest.tar.gz, httpClientTestServer.js
> Compressed responses are cached twice. 
> Run the attached server (node.js 0.8.22) and client tests. Create an "assets" directory
under where you are running the server and add two files named 1 and 2 ( < 1000000 bytes)
. You will see that after the test is run the cache dump output displays 2 sets of entries
for each request, each containing the full content length of the file.
> Changing the implementation of HttpCacheStorage updateEntry to not update non existent
entries (as I believe the correct implementation should do) throws exceptions. 

This message was sent by Atlassian JIRA

To unsubscribe, e-mail: dev-unsubscribe@hc.apache.org
For additional commands, e-mail: dev-help@hc.apache.org

View raw message