Uploaded image for project: 'Phoenix'
  1. Phoenix
  2. PHOENIX-5708

GlobalIndexChecker returns unverified index row cells

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • 5.0.0, 4.14.3
    • 4.15.0, 5.1.0, 4.16.0
    • None
    • None

    Description

      In the current implementation, unverified index row cells can be visible to clients. One scenario where this can happen is as follows. A client attempts to write a full data row but the data row write fails. This leaves an unverified index row corresponding to this data row.  Later, the client attempts to write to the same row but this time it writes a partial data row such that one of the covered columns does not have a value in this partial write. After this, there will be two versions of the index row, the first one is unverified and the second one is verified. When the client reads the row back from the index table, since HBase will merge two versions of this index row, the client will get some cells from the unverified index row such that these cells are not in the verified index row. This is a bug. The fix is very simple. In GlobalIndexChecker, we need to remove the cells from the previous versions of the row. Please note that every index row is composed of cells with the same timestamp by design. By implementing this fix, we will ensure that this property always holds.

      Attachments

        1. PHOENIX-5708.master.002.patch
          11 kB
          Kadir OZDEMIR
        2. PHOENIX-5708.master.001.patch
          6 kB
          Kadir OZDEMIR
        3. PHOENIX-5708.4.x-HBase-1.5.001.patch
          11 kB
          Kadir OZDEMIR

        Issue Links

          Activity

            People

              Unassigned Unassigned
              kozdemir Kadir OZDEMIR
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - 0h
                  0h
                  Logged:
                  Time Spent - 20m
                  20m