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

DN will try to append to non-existent replica if the datanode has out-dated block

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Open
    • Major
    • Resolution: Unresolved
    • 2.2.0
    • None
    • None
    • None

    Description

      My environment: HA cluster with 4 datanodes;

      Here're the steps to reproduce:
      1. put one file (one block) to hdfs with repl=3; assume dn1, dn2, dn3 has block for this file; dn4 don't have the block;
      2. stop dn1;
      4. append content to the file 100 times;
      5. stop dn4 and start dn1;
      6. append content to the file 100 times again;
      append will fail during the 100 appends;

      Check the datanode log on dn1, many of this log will show

      2014-06-12 12:07:04,442 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: opWriteBlock BP-1649188734-10.37.7.142-1398844098971:blk_1073742928_61304 received exception org.apache.hadoop.hdfs.s
      erver.datanode.ReplicaNotFoundException: Cannot append to a non-existent replica BP-1649188734-10.37.7.142-1398844098971:blk_1073742928_61304
      2014-06-12 12:07:04,442 ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: hdsh145:50010:DataXceiver error processing WRITE_BLOCK operation src: /10.37.7.146:55594 dest: /10.37.7
      .145:50010
      org.apache.hadoop.hdfs.server.datanode.ReplicaNotFoundException: Cannot append to a non-existent replica BP-1649188734-10.37.7.142-1398844098971:blk_1073742928_61304
      at org.apache.hadoop.hdfs.server.datanode.fsdataset.impl.FsDatasetImpl.getReplicaInfo(FsDatasetImpl.java:392)
      at org.apache.hadoop.hdfs.server.datanode.fsdataset.impl.FsDatasetImpl.append(FsDatasetImpl.java:527)
      at org.apache.hadoop.hdfs.server.datanode.fsdataset.impl.FsDatasetImpl.append(FsDatasetImpl.java:92)
      at org.apache.hadoop.hdfs.server.datanode.BlockReceiver.<init>(BlockReceiver.java:174)
      at org.apache.hadoop.hdfs.server.datanode.DataXceiver.writeBlock(DataXceiver.java:454)
      at org.apache.hadoop.hdfs.protocol.datatransfer.Receiver.opWriteBlock(Receiver.java:115)
      at org.apache.hadoop.hdfs.protocol.datatransfer.Receiver.processOp(Receiver.java:68)
      at org.apache.hadoop.hdfs.server.datanode.DataXceiver.run(DataXceiver.java:221)
      at java.lang.Thread.run(Thread.java:722)

      Attachments

        Activity

          People

            Unassigned Unassigned
            stanley_shi stanley shi
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated: