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