Hadoop Common
  1. Hadoop Common
  2. HADOOP-3035

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

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 0.16.0
    • Fix Version/s: 0.18.0
    • Component/s: None
    • Labels:
      None
    • 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.

      Description

      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.

      1. HADOOP-3035-3.patch
        12 kB
        Lohit Vijayarenu
      2. HADOOP-3035-2.patch
        10 kB
        Lohit Vijayarenu
      3. HADOOP-3035-1.patch
        10 kB
        Lohit Vijayarenu

        Issue Links

          Activity

          Hide
          Lohit Vijayarenu added a comment -

          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.
          Show
          Lohit Vijayarenu added a comment - 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.
          Hide
          Lohit Vijayarenu added a comment -

          Updated patch with different variable names

          Show
          Lohit Vijayarenu added a comment - Updated patch with different variable names
          Hide
          Hadoop QA added a comment -

          +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.

          Show
          Hadoop QA added a comment - +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.
          Hide
          Raghu Angadi added a comment -

          +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().
          Show
          Raghu Angadi added a comment - +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().
          Hide
          Lohit Vijayarenu added a comment -

          Attached patch changes as suggested by Raghu.

          Show
          Lohit Vijayarenu added a comment - Attached patch changes as suggested by Raghu.
          Hide
          Hadoop QA added a comment -

          +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.

          Show
          Hadoop QA added a comment - +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.
          Hide
          Raghu Angadi added a comment -

          I just committed this. Thanks Lohit!

          Show
          Raghu Angadi added a comment - I just committed this. Thanks Lohit!
          Hide
          Hudson added a comment -
          Show
          Hudson added a comment - Integrated in Hadoop-trunk #500 (See http://hudson.zones.apache.org/hudson/job/Hadoop-trunk/500/ )

            People

            • Assignee:
              Lohit Vijayarenu
              Reporter:
              Konstantin Shvachko
            • Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Development