[ 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