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

The DeleteFamily cell is skipped when StoreScanner seeks to next column

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Critical
    • Resolution: Fixed
    • Affects Version/s: 3.0.0, 1.3.0, 1.3.1, 2.0.0-alpha-1
    • Fix Version/s: 1.4.0, 1.3.2, 2.0.0, 1.2.7
    • Component/s: Deletes, Scanners
    • Labels:
      None
    • Hadoop Flags:
      Reviewed

      Description

      The qualifier of a deleted row (with keep deleted cells true) re-appears after re-inserting the same row multiple times (with different timestamp) with an empty qualifier.

      Scenario:

      1. Put row with family and qualifier (timestamp 1).
      2. Delete entire row (timestamp 2).
      3. Put same row again with family without qualifier (timestamp 3).
        A scan (latest version) returns the row with family without qualifier, version 3 (which is correct).
      4. Put the same row again with family without qualifier (timestamp 4).
        A scan (latest version) returns multiple rows:
      • the row with family without qualifier, version 4 (which is correct).
      • the row with family with qualifier, version 1 (which is wrong).

      There is a test scenario attached.
      output:
      <LOG> 13:42:53,952 [main] client.HBaseAdmin - Started disable of test_dml
      <LOG> 13:42:55,801 [main] client.HBaseAdmin - Disabled test_dml
      <LOG> 13:42:57,256 [main] client.HBaseAdmin - Deleted test_dml
      <LOG> 13:42:58,592 [main] client.HBaseAdmin - Created test_dml
      Put row: 'myRow' with family: 'myFamily' with qualifier: 'myQualifier' with timestamp: '1'
      Scan printout =>
      Row: 'myRow', Timestamp: '1', Family: 'myFamily', Qualifier: 'myQualifier', Value: 'myValue'
      Delete row: 'myRow'
      Scan printout =>
      Put row: 'myRow' with family: 'myFamily' with qualifier: 'null' with timestamp: '3'
      Scan printout =>
      Row: 'myRow', Timestamp: '3', Family: 'myFamily', Qualifier: '', Value: 'myValue'
      Put row: 'myRow' with family: 'myFamily' with qualifier: 'null' with timestamp: '4'
      Scan printout =>
      Row: 'myRow', Timestamp: '4', Family: 'myFamily', Qualifier: '', Value: 'myValue'
      Row: 'myRow', Timestamp: '1', Family: 'myFamily', Qualifier: 'myQualifier', Value: 'myValue'

        Attachments

        1. HBASE-18471.v1.patch
          7 kB
          Chia-Ping Tsai
        2. HBASE-18471.branch-1.2.v0.patch
          7 kB
          Chia-Ping Tsai
        3. HBASE-18471.v0.patch
          7 kB
          Chia-Ping Tsai
        4. HBaseDmlTest.java
          5 kB
          Thomas Martens

          Issue Links

            Activity

              People

              • Assignee:
                chia7712 Chia-Ping Tsai
                Reporter:
                thomas.martens Thomas Martens
              • Votes:
                2 Vote for this issue
                Watchers:
                13 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: