[ https://issues.apache.org/jira/browse/HDFS-1257?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12887506#action_12887506 ]
Hairong Kuang commented on HDFS-1257: ------------------------------------- RecentInvalidateSets were protected by FSNamesystem lock. It seems to me that the ConcurrentModificationException might be caused by computeInvalidateWork accessing recentInvalidateSets without holding FsNamesystem lock. The following code should be surrounded by "synchronized (this)". {code} int numOfNodes = recentInvalidateSets.size(); nodesToProcess = Math.min(numOfNodes, nodesToProcess); // get an array of the keys ArrayList<String> keyArray = new ArrayList<String>(recentInvalidateSets.keySet()); {code} > Race condition introduced by HADOOP-5124 > ---------------------------------------- > > Key: HDFS-1257 > URL: https://issues.apache.org/jira/browse/HDFS-1257 > Project: Hadoop HDFS > Issue Type: Bug > Components: name-node > Reporter: Ramkumar Vadali > > HADOOP-5124 provided some improvements to FSNamesystem#recentInvalidateSets. > But it introduced unprotected access to the data structure > recentInvalidateSets. Specifically, FSNamesystem.computeInvalidateWork > accesses recentInvalidateSets without read-lock protection. If there is > concurrent activity (like reducing replication on a file) that adds to > recentInvalidateSets, the name-node crashes with a > ConcurrentModificationException. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.