[
https://issues.apache.org/jira/browse/HADOOP-11274?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Jing Zhao updated HADOOP-11274:
-------------------------------
Resolution: Fixed
Fix Version/s: 2.6.0
Hadoop Flags: Reviewed
Status: Resolved (was: Patch Available)
I've committed this to trunk, branch-2 and branch-2.6. Thanks to Junping for
the contribution and Zhijie for the review!
> 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)