Uploaded image for project: 'HBase'
  1. HBase
  2. HBASE-23143

Region Server Crash due to 2 cells out of order ( between 2 DELETEs)

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Incomplete
    • 1.3.2
    • None
    • None
    • None

    Description

      Region Server Crash due to 2 cells out of order ( between 2 DELETEs)

       

      Caused by: java.io.IOException: Added a key not lexically larger than previous.
      Current cell = 00D7F000000xxQ10D52v00008UY6yV0057F000000bPaGT\x000000000000000000057F000000bPaG/0:TABLE1_ID/1570095189597/DeleteColumn/vlen=0/seqid=2128373,
      lastCell = 00D7F000000xxQ10D52v00008UY6yV0057F000000bPaGT\x000000000000000000057F000000bPaG/0:TABLE1_ID/1570095165147/DeleteColumn/vlen=0/seqid=2128378

       

       

      I am aware of this JIRA: https://issues.apache.org/jira/browse/HBASE-22862

      Though it's slightly different, HBASE-22862 issue was caused One Delete and One Put.

      This issue I am reporting is caused by 2 Deletes

       

      Has anyone seen this issue? 

       

      After I read the code and debugged the test cases.

      In AbstractHFileWriter.java

      int keyComp = comparator.compareOnlyKeyPortion(lastCell, cell);

      This call will always ignore SequenceId. And time stamps are in the correct order (above case)

      And since these 2 cells have same KEY. The comparison result should be 0.
      only possible issue I can think of is, in this code piece: in CellComparator.java:

      Bytes.compareTo(left.getRowArray(), left.getRowOffset(), left.getRowLength(),
       right.getRowArray(), right.getRowOffset(), right.getRowLength());

      The getRowLength() returns a wrong value.

      Or the offset is messed up.

      Attachments

        Activity

          People

            Unassigned Unassigned
            xucang Xu Cang
            Votes:
            0 Vote for this issue
            Watchers:
            12 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: