kazan created HDFS-17813:
----------------------------
Summary: 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
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: [email protected]
For additional commands, e-mail: [email protected]