[ 
https://issues.apache.org/jira/browse/HADOOP-11274?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Vinod Kumar Vavilapalli reopened HADOOP-11274:
----------------------------------------------

I don't know the behavior of locking this in a constructor, but assuming so, I 
think there is a deadlock already.


Thread 1: Copy constructor takes lock on object 2, and then calls setQuietly 
which waits on locking on itself
Thread 2: Same but the locking in reverse order.

> ConcurrentModificationException in Configuration Copy Constructor
> -----------------------------------------------------------------
>
>                 Key: HADOOP-11274
>                 URL: https://issues.apache.org/jira/browse/HADOOP-11274
>             Project: Hadoop Common
>          Issue Type: Bug
>          Components: conf
>            Reporter: Junping Du
>            Assignee: Junping Du
>            Priority: Blocker
>             Fix For: 2.6.0
>
>         Attachments: HADOOP-11274-v2.patch, HADOOP-11274.003.patch, 
> HADOOP-11274.patch
>
>
> Exception as below happens in doing some configuration update in parallel:
> {noformat}
> java.util.ConcurrentModificationException
>       at java.util.HashMap$HashIterator.nextEntry(HashMap.java:922)
>       at java.util.HashMap$EntryIterator.next(HashMap.java:962)
>       at java.util.HashMap$EntryIterator.next(HashMap.java:960)
>       at java.util.HashMap.putAllForCreate(HashMap.java:554)
>       at java.util.HashMap.<init>(HashMap.java:298)
>       at org.apache.hadoop.conf.Configuration.<init>(Configuration.java:703)
> {noformat}
> In a constructor of Configuration - public Configuration(Configuration 
> other), the copy of updatingResource data structure in copy constructor is 
> not synchronized properly. 
> Configuration.get() eventually calls loadProperty() where updatingResource 
> gets updated. So, whats happening here is one thread is trying to do copy of 
> Configuration as demonstrated in stack trace and other thread is doing 
> Configuration.get(key) and than ConcurrentModificationException occurs 
> because copying of updatingResource is not synchronized in constructor. 
> We should make the update to updatingResource get synchronized, and also fix 
> other tiny synchronized issues there.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to