ruanhui created HBASE-27458:
-------------------------------

             Summary: Use ReadWriteLock for region scanner readpoint map 
                 Key: HBASE-27458
                 URL: https://issues.apache.org/jira/browse/HBASE-27458
             Project: HBase
          Issue Type: Improvement
          Components: Scanners
    Affects Versions: 3.0.0-alpha-3
            Reporter: ruanhui
            Assignee: ruanhui
             Fix For: 3.0.0-alpha-4
         Attachments: jstack-2.png

Currently we manage the concurrency between the RegionScanner and 
getSmallestReadPoint by synchronizing on the scannerReadPoints object. In our 
production, we find that many read threads are blocked by this when we have a 
heavy read load. 

we need to get smallest read point when 
a. flush a memstore 
b. compact memstore/storefile 
c. do delta operation like increment/append
Usually the frequency of these operations is much less than read requests. 

It's a little expensive to use an exclusive lock here because for region 
scanners, what it need to do is just calcaulating readpoint and putting the 
readpoint in the scanner readpoint map, which is thread-safe. Multiple read 
threads can do this in parallel without synchronization.

Based on the above consideration, maybe we can replace the synchronized lock 
with readwrite lock. It will help improve the read performance if the 
bottleneck is on the synchronization here.

!jstack.png!



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to