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

Allow RowLock to be reader writer

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 1.3.0, 2.0.0
    • 2.0.0
    • regionserver
    • None
    • Incompatible change, Reviewed
    • Hide
      Locks on row are now reader/writer rather than exclusive.

      Moves sequenceid out of HRegion and into MVCC class; MVCC is now in charge. A WAL append is still stamped in same way (we pass MVCC context in a few places where we previously we did not).

      MVCC methods cleaned up. Make a bit more sense now. Less of them.

      Simplifies our update of MemStore/WAL. Now we update memstore AFTER we add to WAL (but before we sync). This fixes possible dataloss when two edits came in with same coordinates; we could order the edits in memstore differently to how they arrived in the WAL.

      Marked as an incompatible change because it breaks Distributed Log Replay, a feature we'd determined already was unreliable and to be removed.
      Show
      Locks on row are now reader/writer rather than exclusive. Moves sequenceid out of HRegion and into MVCC class; MVCC is now in charge. A WAL append is still stamped in same way (we pass MVCC context in a few places where we previously we did not). MVCC methods cleaned up. Make a bit more sense now. Less of them. Simplifies our update of MemStore/WAL. Now we update memstore AFTER we add to WAL (but before we sync). This fixes possible dataloss when two edits came in with same coordinates; we could order the edits in memstore differently to how they arrived in the WAL. Marked as an incompatible change because it breaks Distributed Log Replay, a feature we'd determined already was unreliable and to be removed.

    Description

      Right now every write operation grabs a row lock. This is to prevent values from changing during a read modify write operation (increment or check and put). However it limits parallelism in several different scenarios.

      If there are several puts to the same row but different columns or stores then this is very limiting.

      If there are puts to the same column then mvcc number should ensure a consistent ordering. So locking is not needed.

      However locking for check and put or increment is still needed.

      Attachments

        1. HBASE-12751.patch
          8 kB
          Nate Edel
        2. HBASE-12751-v1.patch
          8 kB
          Nate Edel
        3. HBASE-12751-v2.patch
          67 kB
          Elliott Neil Clark
        4. HBASE-12751-v3.patch
          80 kB
          Elliott Neil Clark
        5. HBASE-12751-v4.patch
          98 kB
          Elliott Neil Clark
        6. HBASE-12751-v5.patch
          114 kB
          Elliott Neil Clark
        7. HBASE-12751-v6.patch
          139 kB
          Elliott Neil Clark
        8. HBASE-12751-v7.patch
          143 kB
          Elliott Neil Clark
        9. HBASE-12751-v8.patch
          143 kB
          Elliott Neil Clark
        10. HBASE-12751-v9.patch
          145 kB
          Elliott Neil Clark
        11. HBASE-12751-v10.patch
          143 kB
          Elliott Neil Clark
        12. HBASE-12751-v10.patch
          143 kB
          Elliott Neil Clark
        13. HBASE-12751-v11.patch
          144 kB
          Elliott Neil Clark
        14. HBASE-12751-v12.patch
          145 kB
          Elliott Neil Clark
        15. HBASE-12751-v13.patch
          143 kB
          Elliott Neil Clark
        16. HBASE-12751-v14.patch
          156 kB
          Elliott Neil Clark
        17. HBASE-12751-v15.patch
          160 kB
          Elliott Neil Clark
        18. HBASE-12751-v16.patch
          172 kB
          Elliott Neil Clark
        19. HBASE-12751-v17.patch
          186 kB
          Elliott Neil Clark
        20. HBASE-12751-v18.patch
          200 kB
          Elliott Neil Clark
        21. HBASE-12751-v19.patch
          200 kB
          Elliott Neil Clark
        22. HBASE-12751-v19 (1).patch
          200 kB
          Michael Stack
        23. HBASE-12751-v20.patch
          210 kB
          Michael Stack
        24. HBASE-12751-v20.patch
          210 kB
          Michael Stack
        25. HBASE-12751-v21.patch
          204 kB
          Elliott Neil Clark
        26. 12751v22.txt
          205 kB
          Michael Stack
        27. 12751v23.txt
          206 kB
          Michael Stack
        28. 12751v23.txt
          206 kB
          Michael Stack
        29. 12751v23.txt
          206 kB
          Michael Stack
        30. 12751v23.txt
          206 kB
          Michael Stack
        31. 12751.rebased.v25.txt
          222 kB
          Michael Stack
        32. 12751.rebased.v26.txt
          232 kB
          Michael Stack
        33. 12751.rebased.v26.txt
          232 kB
          Michael Stack
        34. 12751.rebased.v27.txt
          246 kB
          Michael Stack
        35. 12751.rebased.v29.txt
          248 kB
          Michael Stack
        36. 12751.rebased.v31.txt
          250 kB
          Michael Stack
        37. 12751.rebased.v32.txt
          254 kB
          Michael Stack
        38. 12751.rebased.v32.txt
          254 kB
          Michael Stack
        39. 12751.rebased.v33.txt
          252 kB
          Michael Stack
        40. 12751.rebased.v34.txt
          254 kB
          Michael Stack
        41. 12751.rebased.v35.txt
          253 kB
          Michael Stack
        42. 12751.rebased.v35.txt
          253 kB
          Michael Stack
        43. 12751.rebased.v35.txt
          253 kB
          Michael Stack
        44. 12751v36.txt
          253 kB
          Michael Stack
        45. 12751.v37.txt
          252 kB
          Michael Stack
        46. 12751.v38.txt
          252 kB
          Michael Stack
        47. 12751.v39.txt
          266 kB
          Michael Stack
        48. 12751.v40.txt
          269 kB
          Michael Stack
        49. 12751.v41.txt
          269 kB
          Michael Stack

        Activity

          People

            stack Michael Stack
            eclark Elliott Neil Clark
            Votes:
            0 Vote for this issue
            Watchers:
            20 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: