Uploaded image for project: 'Hadoop HDFS'
  1. Hadoop HDFS
  2. HDFS-3179

Improve the error message: DataStreamer throw an exception, "nodes.length != original.length + 1" on single datanode cluster

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 0.23.2
    • 2.0.0-alpha
    • hdfs-client
    • None
    • Reviewed

    Description

      Create a single datanode cluster

      disable permissions
      enable webhfds
      start hdfs
      run the test script

      expected result:
      a file named "test" is created and the content is "testtest"

      the result I got:
      hdfs throw an exception on the second append operation.

      ./test.sh 
      {"RemoteException":{"exception":"IOException","javaClassName":"java.io.IOException","message":"Failed to add a datanode: nodes.length != original.length + 1, nodes=[127.0.0.1:50010], original=[127.0.0.1:50010]"}}
      

      Log in datanode:

      2012-04-02 14:34:21,058 WARN org.apache.hadoop.hdfs.DFSClient: DataStreamer Exception
      java.io.IOException: Failed to add a datanode: nodes.length != original.length + 1, nodes=[127.0.0.1:50010], original=[127.0.0.1:50010]
      	at org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.findNewDatanode(DFSOutputStream.java:778)
      	at org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.addDatanode2ExistingPipeline(DFSOutputStream.java:834)
      	at org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.setupPipelineForAppendOrRecovery(DFSOutputStream.java:930)
      	at org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.run(DFSOutputStream.java:461)
      2012-04-02 14:34:21,059 ERROR org.apache.hadoop.hdfs.DFSClient: Failed to close file /test
      java.io.IOException: Failed to add a datanode: nodes.length != original.length + 1, nodes=[127.0.0.1:50010], original=[127.0.0.1:50010]
      	at org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.findNewDatanode(DFSOutputStream.java:778)
      	at org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.addDatanode2ExistingPipeline(DFSOutputStream.java:834)
      	at org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.setupPipelineForAppendOrRecovery(DFSOutputStream.java:930)
      	at org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.run(DFSOutputStream.java:461)
      

      test.sh

      #!/bin/sh
      
      echo "test" > test.txt
      
      curl -L -X PUT "http://localhost:50070/webhdfs/v1/test?op=CREATE"
      
      curl -L -X POST -T test.txt "http://localhost:50070/webhdfs/v1/test?op=APPEND"
      curl -L -X POST -T test.txt "http://localhost:50070/webhdfs/v1/test?op=APPEND"
      
      

      Attachments

        1. h3179_20120403.patch
          4 kB
          Tsz-wo Sze

        Activity

          People

            szetszwo Tsz-wo Sze
            wangzw Zhanwei Wang
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: