[
https://issues.apache.org/jira/browse/HTTPCLIENT-2284?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Pascal Lacombe updated HTTPCLIENT-2284:
---------------------------------------
Description:
BasicHttpCacheStorage has a memory leak in the root response's variantMap. When
a variant cached entry is evicted due to CacheMap being too large, the root
cache entry does not remove this variant key in its variantMap. This is a
memory leak that can grow the variantMap indefinitely, or until the root entry
get's evicted itself.
Simplified testcase:
# A request is being sent from a client that contains a header (x-my-variant)
with a hash of the current timestamp.
# The server responds 200, with a cacheable response. The response Vary's on
"x-my-variant"
# These requests repeat, causing:
## The "root" CacheEntry to be kept in CacheMap
## The oldest variant CacheEntry to be evicted due to the CacheMap size limit
## However the "root" CacheEntry never removes variant keys from the
variantMap
was:
BasicHttpCacheStorage has a memory leak in the root response's variantMap. When
a variant cached entry is evicted due to CacheMap being too large, the root
cache entry does not remove this variant key in its variantMap. This is a
memory leak that can grow the variantMap indefinitely, or until the root entry
get's evicted itself.
Simplified testcase:
# A request is being sent from a client that contains a header (x-my-variant)
with a hash of the current timestamp.
# The server responds 200, with a cacheable response. The response Vary's on
"x-my-variant"
# These requests repeat, causing:the root CacheEntry to be kept in CacheMap,
> BasicHttpCacheStorage leaking variant keys in root response's variantMap
> ------------------------------------------------------------------------
>
> Key: HTTPCLIENT-2284
> URL: https://issues.apache.org/jira/browse/HTTPCLIENT-2284
> Project: HttpComponents HttpClient
> Issue Type: Bug
> Components: HttpCache
> Affects Versions: 4.5.13
> Reporter: Pascal Lacombe
> Priority: Major
>
> BasicHttpCacheStorage has a memory leak in the root response's variantMap.
> When a variant cached entry is evicted due to CacheMap being too large, the
> root cache entry does not remove this variant key in its variantMap. This is
> a memory leak that can grow the variantMap indefinitely, or until the root
> entry get's evicted itself.
> Simplified testcase:
> # A request is being sent from a client that contains a header
> (x-my-variant) with a hash of the current timestamp.
> # The server responds 200, with a cacheable response. The response Vary's on
> "x-my-variant"
> # These requests repeat, causing:
> ## The "root" CacheEntry to be kept in CacheMap
> ## The oldest variant CacheEntry to be evicted due to the CacheMap size limit
> ## However the "root" CacheEntry never removes variant keys from the
> variantMap
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]