[ https://issues.apache.org/jira/browse/HDFS-2421?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13434877#comment-13434877 ]
Tsz Wo (Nicholas), SZE commented on HDFS-2421: ---------------------------------------------- Hi Jing, I think we cannot simply remove "synchronized" from get(T t). Otherwise, there are race conditions in the following code. {code} if (sn == null) { sn = nextSerialNumber(); t2i.put(t, sn); i2t.put(sn, t); } {code} > Improve the concurrency of SerialNumberMap in NameNode > ------------------------------------------------------- > > Key: HDFS-2421 > URL: https://issues.apache.org/jira/browse/HDFS-2421 > Project: Hadoop HDFS > Issue Type: Improvement > Components: name-node > Reporter: Hairong Kuang > Assignee: Weiyan Wang > Fix For: 0.24.0 > > Attachments: HDFS-2421.patch, performance_SerialNumberManager.png, > TestSerialNumberManager.java > > > After enabled permission checking in our HDFS test cluster, our benchmark > observed a significant reduced concurrency in NameNode. Investigation showed > that most threads were blocked at acquiring the lock of > org.apache.hadoop.hdfs.server.namenode.SerialNumberManager$SerialNumberMap. > We used concurrentHashMap to replace Hashmap + synchronized methods, which > greatly improved the situation. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira