hbck源码系列(四)--表的完整性检查和修复(3)之Check

一,完整性检查

  1检查表在HDFS的完整性

hbck源码系列(四)--表的完整性检查和修复(3)之Check

 hbck源码系列(四)--表的完整性检查和修复(3)之Check

hbck源码系列(四)--表的完整性检查和修复(3)之Check

二.checkRegionChain方法

     完整性检查,主要检查工作在checkRegionChain方法,该方法主要两个作用:

   1.根据检查条件检查异常

   2.根据检查条件修复异常

    检查条件和异常都指什么?

    2.1  异常

 @O verride
  公共无效handleRegionStartKeyNotEmpty(HbckInfo喜)抛出IOException异常的异常{
    errors.reportError(ERROR_CODE。FIRST_REGION_STARTKEY_NOT_EMPTY,“
        第一区域应具有空关键字开始,你需要”
        在HDFS +“创建一个新的区域和regioninfo,以堵塞漏洞。“,
        getTableInfo(),hi);
  }

  @覆盖
  公共无效handleRegionEndKeyNotEmpty(字节[] curEndKey)抛出IOException异常的异常{
    errors.reportError(ERROR_CODE。LAST_REGION_ENDKEY_NOT_EMPTY,“
        最后的区域应该具有空关键字结束。你需要”
            +“创建HDFS一个新的区域和regioninfo堵塞洞。”
  }

  @覆盖
  公共无效handleDegenerateRegion(HbckInfo HI)抛出IOException异常的异常{
    errors.reportError(ERROR_CODE。DEGENERATE_REGION
        “区域具有相同的开始和结束键。”,getTableInfo(),喜);
  }

  @覆盖
  公共无效handleDuplicateStartKeys(HbckInfo R1,R2 HbckInfo)抛出IOException异常{
    字节[]键= r1.getStartKey();
    // DUP开始键
    errors.reportError(ERROR_CODE DUPE_STARTKEYS
        “多个区域具有相同的startkey:”
        。+字节toStringBinary(键),getTableInfo()中,R1);
    errors.reportError(ERROR_CODE DUPE_STARTKEYS
        “多个区域具有相同的起始键:”
        。+字节toStringBinary(键),getTableInfo()中,R 2);
  }

  @覆盖
  公共无效handleSplit(HbckInfo R1,R2 HbckInfo)抛出IOException异常{
    字节[]键= r1.getStartKey();
    // DUP开始键
    errors.reportError(ERROR_CODE DUPE_ENDKEYS
      “多个区域具有相同的regionID:”
        。+字节toStringBinary(键),getTableInfo()中,R1);
    errors.reportError(ERROR_CODE DUPE_ENDKEYS
      “多个区域具有相同的regionID:”
        。+字节toStringBinary(键),getTableInfo()中,R 2);
  }

  @覆盖
  公共无效handleOverlapInRegionChain(HbckInfo HI1,HI2 HbckInfo)抛出IOException异常的异常{
    errors.reportError(ERROR_CODE。OVERLAP_IN_REGION_CHAIN,“
        有在该区域连锁的重叠。”,
        getTableInfo(),HI1,HI2);
  }

  @覆盖
  公共无效handleHoleInRegionChain(字节[] holeStart,字节[] holeStop)抛出IOException异常的异常{
    errors.reportError(
        ERROR_CODE。HOLE_IN_REGION_CHAIN,“
        有在之间的区域中链上具有空穴
            +字节。toStringBinary( holeStart)+“和”
            +字节toStringBinary(holeStop)
            +“你需要。
            在HDFS中创建一个新的.regioninfo和区域”+“DIR来插入漏洞。”);
  }
};

2.2检查条件

     之前说过表的完整性检查主要是检查表的hole、overlap和orphan等情况,检查条件是判断上述异常的依据,在源码中的判断依据是什么,这里根据不同的情况,描述不同的检查条件,详见各个章节。

  •    hole
  •   orphan
  •   overlap
  •   others