[
https://issues.apache.org/jira/browse/HTTPCLIENT-1152?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13174204#comment-13174204
]
Clinton Nielsen commented on HTTPCLIENT-1152:
---------------------------------------------
Could be that somebody is using the cache for other purposes as well, and just
happens to set an object with a URL as a key that conflicts with an object that
is set by MemcachedHttpCacheStorage.
-- this could (and also probably should) be mitigated by allowing the client
of MemcachedHttpCacheStorage to set a client-defined prefix String that will be
prefixed to all keys, thus avoiding potential collisions.
In my case, it is that we are using jmemcacheddaemon for local testing
purposes, and (unfortunately) jmemcacheddaemon has a known bug where cache
misses return an empty string instead of a null object. This causes
MemcachedHttpCacheStorage to throw a ClassCastException instead of just
returning null, because String cannot be cast to byte[].
> org.apache.http.impl.client.cache.memcached.MemcachedHttpCacheStorage should
> verify class of returned object before casting
> ---------------------------------------------------------------------------------------------------------------------------
>
> Key: HTTPCLIENT-1152
> URL: https://issues.apache.org/jira/browse/HTTPCLIENT-1152
> Project: HttpComponents HttpClient
> Issue Type: Bug
> Components: Cache, HttpClient
> Affects Versions: 4.1.1
> Reporter: Clinton Nielsen
> Assignee: Jon Moore
> Fix For: 4.1.3, 4.2 Final
>
> Attachments: HTTPCLIENT-1152.patch
>
>
> org.apache.http.impl.client.cache.memcached.MemcachedHttpCacheStorage
> Original (in getEntry function):
> byte[] data = (byte[]) client.get(url);
> Should be:
> Object obj= client.get(url);
> if (null == obj || !(objinstanceof byte[])) {
> return null;
> }
> byte[] data = (byte[])obj;
> Original (in updateEntry function):
> byte[] oldBytes = (v != null) ? (byte[]) v.getValue() : null;
> Should be:
> byte[] oldBytes = (v != null && (v.getValue() instanceof byte[])) ?
> (byte[]) v.getValue() : null;
>
--
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]