[ https://issues.apache.org/jira/browse/HADOOP-11274?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Junping Du updated HADOOP-11274: -------------------------------- Status: Patch Available (was: Open) > 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: Critical > Attachments: 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)