[ 
https://issues.apache.org/jira/browse/HDFS-17813?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

ASF GitHub Bot updated HDFS-17813:
----------------------------------
    Labels: pull-request-available  (was: )

> NameCache promote wrong name to cache map
> -----------------------------------------
>
>                 Key: HDFS-17813
>                 URL: https://issues.apache.org/jira/browse/HDFS-17813
>             Project: Hadoop HDFS
>          Issue Type: Bug
>          Components: namenode
>            Reporter: kazan
>            Priority: Minor
>              Labels: pull-request-available
>
> The NameCache class is used to cache frequently used names in namenode, it 
> promotes a name used more than useThreshold to the cache, the promote logic:
> {code:java}
> K put(final K name) {
>   K internal = cache.get(name);
>   if (internal != null) {
>     lookups++;
>     return internal;
>   }
>   // Track the usage count only during initialization
>   if (!initialized) {
>     UseCount useCount = transientMap.get(name);
>     if (useCount != null) {
>       useCount.increment();
>       if (useCount.get() >= useThreshold) {
>         promote(name); // name got promoted
>       }
>       return useCount.value;
>     }
>     useCount = new UseCount(name);
>     transientMap.put(name, useCount);
>   }
>   return null;
> } {code}
> When promoting, the cache stores the `name` parameter from put() instead of 
> the existing useCount.value. This causes the returned value to change after a 
> name is promoted, resulting in memory duplication.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org
For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org

Reply via email to