Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
1.1.0, 2.0.0-alpha
-
None
-
None
-
Reviewed
Description
In LeaseRenewer, when renew() throw SocketTimeoutException, c.abort() will remove one dfsclient from dfsclients. Here will throw a ConcurrentModificationException because dfsclients changed after the iterator created by "for(DFSClient c : dfsclients)":
Exception in thread "org.apache.hadoop.hdfs.LeaseRenewer$1@75fa1077" java.util.ConcurrentModificationException
at java.util.AbstractList$Itr.checkForComodification(AbstractList.java:372)
at java.util.AbstractList$Itr.next(AbstractList.java:343)
at org.apache.hadoop.hdfs.LeaseRenewer.run(LeaseRenewer.java:406)
at org.apache.hadoop.hdfs.LeaseRenewer.access$600(LeaseRenewer.java:69)
at org.apache.hadoop.hdfs.LeaseRenewer$1.run(LeaseRenewer.java:273)
at java.lang.Thread.run(Thread.java:662)