Author: shv
Date: Fri Sep 11 21:54:24 2009
New Revision: 814047
URL: http://svn.apache.org/viewvc?rev=814047&view=rev
Log:
HDFS-606. Fix ConcurrentModificationException in invalidateCorruptReplicas().
Contributed by Konstantin Shvachko.
Modified:
hadoop/hdfs/trunk/CHANGES.txt
hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/server/namenode/BlockManager.java
Modified: hadoop/hdfs/trunk/CHANGES.txt
URL:
http://svn.apache.org/viewvc/hadoop/hdfs/trunk/CHANGES.txt?rev=814047&r1=814046&r2=814047&view=diff
==============================================================================
--- hadoop/hdfs/trunk/CHANGES.txt (original)
+++ hadoop/hdfs/trunk/CHANGES.txt Fri Sep 11 21:54:24 2009
@@ -226,6 +226,9 @@
HDFS-605. Do not run fault injection tests in the run-test-hdfs-with-mr
target. (Konstantin Boudnik via szetszwo)
+ HDFS-606. Fix ConcurrentModificationException in
invalidateCorruptReplicas()
+ (shv)
+
Release 0.20.1 - Unreleased
IMPROVEMENTS
Modified:
hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/server/namenode/BlockManager.java
URL:
http://svn.apache.org/viewvc/hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/server/namenode/BlockManager.java?rev=814047&r1=814046&r2=814047&view=diff
==============================================================================
---
hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/server/namenode/BlockManager.java
(original)
+++
hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/server/namenode/BlockManager.java
Fri Sep 11 21:54:24 2009
@@ -1075,8 +1075,10 @@
boolean gotException = false;
if (nodes == null)
return;
- for (Iterator<DatanodeDescriptor> it = nodes.iterator(); it.hasNext(); ) {
- DatanodeDescriptor node = it.next();
+ // make a copy of the array of nodes in order to avoid
+ // ConcurrentModificationException, when the block is removed from the node
+ DatanodeDescriptor[] nodesCopy = nodes.toArray(new DatanodeDescriptor[0]);
+ for (DatanodeDescriptor node : nodesCopy) {
try {
invalidateBlock(blk, node);
} catch (IOException e) {