[
https://issues.apache.org/jira/browse/HADOOP-11274?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Junping Du updated HADOOP-11274:
--------------------------------
Attachment: HADOOP-11274-v2.patch
> 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
> Attachments: HADOOP-11274-v2.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)