You are viewing a plain text version of this content. The canonical link for it is here.
Posted to hdfs-commits@hadoop.apache.org by um...@apache.org on 2012/10/21 08:31:32 UTC
svn commit: r1400578 - in
/hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs: CHANGES.txt
src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockManager.java
src/test/java/org/apache/hadoop/hdfs/TestFileAppend4.java
Author: umamahesh
Date: Sun Oct 21 06:31:31 2012
New Revision: 1400578
URL: http://svn.apache.org/viewvc?rev=1400578&view=rev
Log:
HDFS-4022. Replication not happening for appended block. Contributed by Vinay.
Modified:
hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockManager.java
hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestFileAppend4.java
Modified: hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt?rev=1400578&r1=1400577&r2=1400578&view=diff
==============================================================================
--- hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt (original)
+++ hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt Sun Oct 21 06:31:31 2012
@@ -480,6 +480,8 @@ Release 2.0.3-alpha - Unreleased
HDFS-4072. On file deletion remove corresponding blocks pending
replications. (Jing Zhao via suresh)
+ HDFS-4022. Replication not happening for appended block. (Vinay via umamahesh)
+
Release 2.0.2-alpha - 2012-09-07
INCOMPATIBLE CHANGES
Modified: hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockManager.java
URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockManager.java?rev=1400578&r1=1400577&r2=1400578&view=diff
==============================================================================
--- hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockManager.java (original)
+++ hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockManager.java Sun Oct 21 06:31:31 2012
@@ -624,7 +624,10 @@ public class BlockManager {
blocksMap.replaceBlock(ucBlock);
// Remove block from replication queue.
- updateNeededReplications(oldBlock, 0, 0);
+ NumberReplicas replicas = countNodes(ucBlock);
+ neededReplications.remove(ucBlock, replicas.liveReplicas(),
+ replicas.decommissionedReplicas(), getReplication(ucBlock));
+ pendingReplications.remove(ucBlock);
// remove this block from the list of pending blocks to be deleted.
for (DatanodeDescriptor dd : targets) {
Modified: hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestFileAppend4.java
URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestFileAppend4.java?rev=1400578&r1=1400577&r2=1400578&view=diff
==============================================================================
--- hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestFileAppend4.java (original)
+++ hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestFileAppend4.java Sun Oct 21 06:31:31 2012
@@ -291,4 +291,39 @@ public class TestFileAppend4 {
cluster.shutdown();
}
}
+
+ /**
+ * Test the updation of NeededReplications for the Appended Block
+ */
+ @Test(timeout = 60000)
+ public void testUpdateNeededReplicationsForAppendedFile() throws Exception {
+ Configuration conf = new Configuration();
+ MiniDFSCluster cluster = new MiniDFSCluster.Builder(conf).numDataNodes(1)
+ .build();
+ DistributedFileSystem fileSystem = null;
+ try {
+ // create a file.
+ fileSystem = cluster.getFileSystem();
+ Path f = new Path("/testAppend");
+ FSDataOutputStream create = fileSystem.create(f, (short) 2);
+ create.write("/testAppend".getBytes());
+ create.close();
+
+ // Append to the file.
+ FSDataOutputStream append = fileSystem.append(f);
+ append.write("/testAppend".getBytes());
+ append.close();
+
+ // Start a new datanode
+ cluster.startDataNodes(conf, 1, true, null, null);
+
+ // Check for replications
+ DFSTestUtil.waitReplication(fileSystem, f, (short) 2);
+ } finally {
+ if (null != fileSystem) {
+ fileSystem.close();
+ }
+ cluster.shutdown();
+ }
+ }
}