Uploaded image for project: 'HBase'
  1. HBase
  2. HBASE-16074 ITBLL fails, reports lost big or tiny families
  3. HBASE-16176

Bug fixes/improvements on HBASE-15650 Remove TimeRangeTracker as point of contention when many threads reading a StoreFile

    XMLWordPrintableJSON

Details

    • Sub-task
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 1.3.0, 0.98.20
    • 1.3.0, 2.0.0
    • Performance
    • None
    • Reviewed

    Description

      Debugging the parent issue, came up with some improvements on old HBASE-15650 "Remove TimeRangeTracker as point of contention when many threads reading a StoreFile". Lets get them in. Here are the changes:

        6      Change HFile Writer constructor so we pass in the TimeRangeTracker, if one,
        7      on construction rather than set later (the flag and reference were not
        8      volatile so could have made for issues in concurrent case) 2. Make sure the
        9      construction of a TimeRange from a TimeRangeTracer on open of an HFile Reader
       10      never makes a bad minimum value, one that would preclude us reading any
       11      values from a file (add a log and set min to 0)
       12     M hbase-common/src/main/java/org/apache/hadoop/hbase/io/TimeRange.java
       13      Call through to next constructor (if minStamp was 0, we'd skip setting allTime=true)
       14     M hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HStore.java
       15      Add constructor override that takes a TimeRangeTracker (set when flushing but
       16      not when compacting)
       17     M hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/Store.java
       18      Add override creating an HFile in tmp that takes a TimeRangeTracker
       19     M hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreFile.java
       20      Add override for HFile Writer that takes a TimeRangeTracker
       21      Take it on construction instead of having it passed by a setter later (flags
       22      and reference set by the setter were not volatile... could have been prob
       23      in concurrent case)
       24     M hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/TimeRangeTracker.java
       25      Log WARN if bad initial TimeRange value (and then 'fix' it)
       26     M hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestTimeRangeTracker.java
       27      A few tests to prove serialization works as expected and that we'll get a bad min if
       28      not constructed properly.
      

      Attachments

        1. HBASE-16176.branch-1.3.001.patch
          21 kB
          Michael Stack
        2. HBASE-16176.branch-1.3.002.patch
          22 kB
          Michael Stack
        3. HBASE-16176.branch-1.3.002.patch
          22 kB
          Michael Stack
        4. HBASE-16176.branch-1.3.003.patch
          39 kB
          Michael Stack
        5. HBASE-16176.master.001.patch
          39 kB
          Michael Stack

        Issue Links

          Activity

            People

              stack Michael Stack
              stack Michael Stack
              Votes:
              0 Vote for this issue
              Watchers:
              7 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: