Issue Details (XML | Word | Printable)

Key: HADOOP-3035
Type: Bug Bug
Status: Closed Closed
Resolution: Fixed
Priority: Major Major
Assignee: Lohit Vijayarenu
Reporter: Konstantin Shvachko
Votes: 0
Watchers: 0
Operations

If you were logged in you would be able to see more operations.
Hadoop Common

Data nodes should inform the name-node about block crc errors.

Created: 18/Mar/08 03:03 AM   Updated: 08/Jul/09 04:42 PM
Component/s: None
Affects Version/s: 0.16.0
Fix Version/s: 0.18.0

Time Tracking:
Not Specified

File Attachments:
  Size
Text File Licensed for inclusion in ASF works HADOOP-3035-1.patch 2008-05-14 06:02 PM Lohit Vijayarenu 10 kB
Text File Licensed for inclusion in ASF works HADOOP-3035-2.patch 2008-05-14 06:24 PM Lohit Vijayarenu 10 kB
Text File Licensed for inclusion in ASF works HADOOP-3035-3.patch 2008-05-21 07:56 PM Lohit Vijayarenu 12 kB
Issue Links:
Reference
 

Hadoop Flags: Incompatible change
Release Note: Changed protocol for transferring blocks between data nodes to report corrupt blocks to data node for re-replication from a good replica.
Resolution Date: 23/May/08 12:10 AM


 Description  « Hide
Currently if a crc error occurs when data-node replicates a block to another node it throws an exception, and continues.
[junit] 2008-03-17 19:46:11,855 INFO  dfs.DataNode (DataNode.java:transferBlocks(811)) - 127.0.0.1:3730 Starting thread to transfer block blk_-1962819020391742554 to 127.0.0.1:3740
    [junit] 2008-03-17 19:46:11,855 INFO  dfs.DataNode (DataNode.java:writeBlock(1067)) - Receiving block blk_-1962819020391742554 src: /127.0.0.1:3791 dest: /127.0.0.1:3740
    [junit] 2008-03-17 19:46:11,855 INFO  dfs.DataNode (DataNode.java:receiveBlock(2504)) - Exception in receiveBlock for block blk_-1962819020391742554 java.io.IOException: Unexpected checksum mismatch while writing blk_-1962819020391742554 from /127.0.0.1
    [junit] 2008-03-17 19:46:11,871 INFO  dfs.DataNode (DataNode.java:run(2626)) - 127.0.0.1:3730:Transmitted block blk_-1962819020391742554 to /127.0.0.1:3740
    [junit] 2008-03-17 19:46:11,871 INFO  dfs.DataNode (DataNode.java:writeBlock(1192)) - writeBlock blk_-1962819020391742554 received exception java.io.IOException: Unexpected checksum mismatch while writing blk_-1962819020391742554 from /127.0.0.1
    [junit] 2008-03-17 19:46:11,871 ERROR dfs.DataNode (DataNode.java:run(979)) - 127.0.0.1:3740:DataXceiver: java.io.IOException: Unexpected checksum mismatch while writing blk_-1962819020391742554 from /127.0.0.1
    [junit]     at org.apache.hadoop.dfs.DataNode$BlockReceiver.receiveChunk(DataNode.java:2246)
    [junit]     at org.apache.hadoop.dfs.DataNode$BlockReceiver.receivePacket(DataNode.java:2416)
    [junit]     at org.apache.hadoop.dfs.DataNode$BlockReceiver.receiveBlock(DataNode.java:2474)
    [junit]     at org.apache.hadoop.dfs.DataNode$DataXceiver.writeBlock(DataNode.java:1173)
    [junit]     at org.apache.hadoop.dfs.DataNode$DataXceiver.run(DataNode.java:956)
    [junit]     at java.lang.Thread.run(Thread.java:595)

The data-node should report the error to the name-node so that the corrupted replica could be removed and replicated.



 All   Comments   Work Log   Change History   Subversion Commits      Sort Order: Ascending order - Click to sort in descending order
Lohit Vijayarenu added a comment - 14/May/08 06:02 PM
This patch fixes the problem
  • With OP_WRITE_BLOCK, we also send a boolean.
  • If this boolean is true, we also send Client DatanodeInfo along with Client name string
  • This DatanodeInfo would be used to report bad blocks to the namenode by the receiving datanode
  • Added a test case, which creates a file with replication of 1, corrupts it and requests a replication of 2. Upon replication, receiving node detects this and reports it as bad block.

Lohit Vijayarenu added a comment - 14/May/08 06:24 PM
Updated patch with different variable names

Hadoop QA added a comment - 14/May/08 08:04 PM
+1 overall. Here are the results of testing the latest attachment
http://issues.apache.org/jira/secure/attachment/12382066/HADOOP-3035-2.patch
against trunk revision 656270.

+1 @author. The patch does not contain any @author tags.

+1 tests included. The patch appears to include 7 new or modified tests.

+1 javadoc. The javadoc tool did not generate any warning messages.

+1 javac. The applied patch does not increase the total number of javac compiler warnings.

+1 findbugs. The patch does not introduce any new Findbugs warnings.

+1 release audit. The applied patch does not increase the total number of release audit warnings.

+1 core tests. The patch passed core unit tests.

+1 contrib tests. The patch passed contrib unit tests.

Test results: http://hudson.zones.apache.org/hudson/job/Hadoop-Patch/2468/testReport/
Findbugs warnings: http://hudson.zones.apache.org/hudson/job/Hadoop-Patch/2468/artifact/trunk/build/test/findbugs/newPatchFindbugsWarnings.html
Checkstyle results: http://hudson.zones.apache.org/hudson/job/Hadoop-Patch/2468/artifact/trunk/build/test/checkstyle-errors.html
Console output: http://hudson.zones.apache.org/hudson/job/Hadoop-Patch/2468/console

This message is automatically generated.


Raghu Angadi added a comment - 15/May/08 09:37 PM
+1. A few minor comments :
  • Unit test: our normal approach is to wait in a loop and in each iteration, wait for shorter time (500 millisec) in each iteration. So normally test finishes faster and will be able to handle platform related unexpected (and unavoidable) delays.
  • The test does not belong to TestDatadndeBlockScanner.
  • you could log before invoking reportBadBlocks().

Lohit Vijayarenu added a comment - 21/May/08 07:56 PM
Attached patch changes as suggested by Raghu.

Hadoop QA added a comment - 22/May/08 08:54 AM
+1 overall. Here are the results of testing the latest attachment
http://issues.apache.org/jira/secure/attachment/12382506/HADOOP-3035-3.patch
against trunk revision 659005.

+1 @author. The patch does not contain any @author tags.

+1 tests included. The patch appears to include 10 new or modified tests.

+1 javadoc. The javadoc tool did not generate any warning messages.

+1 javac. The applied patch does not increase the total number of javac compiler warnings.

+1 findbugs. The patch does not introduce any new Findbugs warnings.

+1 release audit. The applied patch does not increase the total number of release audit warnings.

+1 core tests. The patch passed core unit tests.

+1 contrib tests. The patch passed contrib unit tests.

Test results: http://hudson.zones.apache.org/hudson/job/Hadoop-Patch/2515/testReport/
Findbugs warnings: http://hudson.zones.apache.org/hudson/job/Hadoop-Patch/2515/artifact/trunk/build/test/findbugs/newPatchFindbugsWarnings.html
Checkstyle results: http://hudson.zones.apache.org/hudson/job/Hadoop-Patch/2515/artifact/trunk/build/test/checkstyle-errors.html
Console output: http://hudson.zones.apache.org/hudson/job/Hadoop-Patch/2515/console

This message is automatically generated.


Raghu Angadi added a comment - 22/May/08 08:12 PM
I just committed this. Thanks Lohit!

Hudson added a comment - 23/May/08 12:26 PM