hbase-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Lars Hofhansl (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (HBASE-10117) Avoid synchronization in HRegionScannerImpl.isFilterDone
Date Tue, 10 Dec 2013 05:42:07 GMT

     [ https://issues.apache.org/jira/browse/HBASE-10117?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Lars Hofhansl updated HBASE-10117:
----------------------------------

    Attachment: 10117-0.94-v2.txt

Slightly better. Don't need to synchronize while we allocate the Result[].

Now, why is RegionScannerImpl synchronized at all? Do we ever have multiple client threads
*at the same time* call next() on the *same* RegionScanner?


> Avoid synchronization in HRegionScannerImpl.isFilterDone
> --------------------------------------------------------
>
>                 Key: HBASE-10117
>                 URL: https://issues.apache.org/jira/browse/HBASE-10117
>             Project: HBase
>          Issue Type: Bug
>          Components: Performance
>            Reporter: Lars Hofhansl
>             Fix For: 0.94.15, 0.96.2, 0.98.1
>
>         Attachments: 10117-0.94-v2.txt, 10117-0.94.txt
>
>
> A while ago I introduced HRegoinScannerImpl.nextRaw() to allow coprocessors and scanners
with caching > 1 to avoid repeated synchronization during the scanning (which puts up memory
fences, which in turns slows things down on multi core machines).
> Looking at the code again I see that isFilterDone() is called from nextRaw() and isFilterDone()
is synchronized. isFilterDone() is only called from two places. The other place is rare in
RegionServer.next() when we're bypassing at the request of a coprocessor. We can add synchronization
there.



--
This message was sent by Atlassian JIRA
(v6.1.4#6159)

Mime
View raw message