[ 
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.

Reply via email to