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

        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: