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

Reply via email to