Details

    • Sub-task
    • Status: Closed
    • Major
    • Resolution: Fixed
    • Heterogeneous Storage (HDFS-2832)
    • 2.4.0
    • namenode
    • None
    • Reviewed

    Description

      BlockManager#reportDiff can cause an assertion failure in BlockInfo#moveBlockToHead if the block report shows the same block as belonging to more than one storage.

      The issue is that moveBlockToHead assumes it will find the DatanodeStorageInfo for the given block.

      Exception details:

      java.lang.AssertionError: Index is out of bound
              at org.apache.hadoop.hdfs.server.blockmanagement.BlockInfo.setNext(BlockInfo.java:152)
              at org.apache.hadoop.hdfs.server.blockmanagement.BlockInfo.moveBlockToHead(BlockInfo.java:351)
              at org.apache.hadoop.hdfs.server.blockmanagement.DatanodeStorageInfo.moveBlockToHead(DatanodeStorageInfo.java:243)
              at org.apache.hadoop.hdfs.server.blockmanagement.BlockManager.reportDiff(BlockManager.java:1841)
              at org.apache.hadoop.hdfs.server.blockmanagement.BlockManager.processReport(BlockManager.java:1709)
              at org.apache.hadoop.hdfs.server.blockmanagement.BlockManager.processReport(BlockManager.java:1637)
              at org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.blockReport(NameNodeRpcServer.java:984)
              at org.apache.hadoop.hdfs.server.datanode.TestDataNodeVolumeFailure.testVolumeFailure(TestDataNodeVolumeFailure.java:165)
      

      Attachments

        1. h5483.04.patch
          7 kB
          Arpit Agarwal
        2. h5483.03.patch
          7 kB
          Arpit Agarwal
        3. h5483.02.patch
          7 kB
          Arpit Agarwal

        Issue Links

          Activity

            People

              arp Arpit Agarwal
              arp Arpit Agarwal
              Votes:
              2 Vote for this issue
              Watchers:
              5 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: