[ 
https://issues.apache.org/jira/browse/HDFS-3384?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13284295#comment-13284295
 ] 

Uma Maheswara Rao G commented on HDFS-3384:
-------------------------------------------

Hi Amith, Change looks good to me.

nits: 
{code}
DistributedFileSystem fs = cluster.getFileSystem();
+    Path fileName = new Path("/appendCorruptBlock");
+    DFSTestUtil.createFile(fs, fileName, 512, (short) 1, 0);
+    DFSTestUtil.waitReplication(fs, fileName, (short)1);
+    Assert.assertTrue("File not created", fs.exists(fileName));
+    /*
+     * Corrupt the blocks in the cluster
+     */
+    corruptBlockInFinalizedDirectory(cluster);{code}
Here null check for cluster as you have instantiated out side of try. And 
Better move other code into try after creating cluster. check the other places 
as well in corruptFinalizedBlock.

2) "Finalized directory not created yet"
used in multiple places. create constant and use.

3) con't we move this test to some existing append test files instead of 
creating your own test file for single test case?

Nicholas, do you have any comments? 
I agree that, other than adding assertion in code, I could not find other good 
way to test this, as Streamer is handling Throwable internally. I am not sure, 
you will agree with this, please give your opinion. 

                
> DataStreamer thread should be closed immediatly when failed to setup a 
> PipelineForAppendOrRecovery
> --------------------------------------------------------------------------------------------------
>
>                 Key: HDFS-3384
>                 URL: https://issues.apache.org/jira/browse/HDFS-3384
>             Project: Hadoop HDFS
>          Issue Type: Bug
>          Components: hdfs client
>    Affects Versions: 2.0.0-alpha
>            Reporter: Brahma Reddy Battula
>            Assignee: amith
>         Attachments: HDFS-3384.patch, HDFS-3384_2.patch, HDFS-3384_2.patch
>
>
> Scenraio:
> =========
> write a file
> corrupt block manually
> call append..
> {noformat}
> 2012-04-19 09:33:10,776 INFO  hdfs.DFSClient 
> (DFSOutputStream.java:createBlockOutputStream(1059)) - Exception in 
> createBlockOutputStream
> java.io.EOFException: Premature EOF: no length prefix available
>       at 
> org.apache.hadoop.hdfs.protocol.HdfsProtoUtil.vintPrefixed(HdfsProtoUtil.java:162)
>       at 
> org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.createBlockOutputStream(DFSOutputStream.java:1039)
>       at 
> org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.setupPipelineForAppendOrRecovery(DFSOutputStream.java:939)
>       at 
> org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.run(DFSOutputStream.java:461)
> 2012-04-19 09:33:10,807 WARN  hdfs.DFSClient (DFSOutputStream.java:run(549)) 
> - DataStreamer Exception
> java.lang.NullPointerException
>       at 
> org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.run(DFSOutputStream.java:510)
> 2012-04-19 09:33:10,807 WARN  hdfs.DFSClient 
> (DFSOutputStream.java:hflush(1511)) - Error while syncing
> java.io.IOException: All datanodes 10.18.40.20:50010 are bad. Aborting...
>       at 
> org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.setupPipelineForAppendOrRecovery(DFSOutputStream.java:908)
>       at 
> org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.run(DFSOutputStream.java:461)
> java.io.IOException: All datanodes 10.18.40.20:50010 are bad. Aborting...
>       at 
> org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.setupPipelineForAppendOrRecovery(DFSOutputStream.java:908)
>       at 
> org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.run(DFSOutputStream.java:461)
> {noformat}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to