hbase-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ramkrishna.s.vasudevan (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (HBASE-18221) Switch from pread to stream should happen under HStore's reentrant lock
Date Mon, 19 Jun 2017 18:57:00 GMT

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

ramkrishna.s.vasudevan updated HBASE-18221:
    Attachment: HBASE-18221_2.patch

The patch with the fix that solves the problem. 
Adds recreateScanners() API in Store. It will acquire the HStore's reentrant lock while creating
the scanners. 
One question is that given the fact we are now trying to avoid unnecessary APIs from the LimitedPrivate
interfaces this method could add on to that. But as part of clean up this should also be taken
into account.

> Switch from pread to stream should happen under HStore's reentrant lock
> -----------------------------------------------------------------------
>                 Key: HBASE-18221
>                 URL: https://issues.apache.org/jira/browse/HBASE-18221
>             Project: HBase
>          Issue Type: Sub-task
>          Components: Scanners
>    Affects Versions: 2.0.0, 3.0.0, 2.0.0-alpha-1
>            Reporter: ramkrishna.s.vasudevan
>            Assignee: ramkrishna.s.vasudevan
>             Fix For: 2.0.0, 3.0.0, 2.0.0-alpha-2
>         Attachments: HBASE-18221_2_fortestcasefailure.patch, HBASE-18221_2.patch
> Found this while debugging HBASE-18186. When we try to reopen the scanners on the storefiles
while trying to switch over from pread to stream, we do not use the HStore's reentrant lock
to get the current Storefiles from the StoreFileManager. All the scan APIs are guarded under
that and we must do it here also other wise the CompactedHfileDischarger may cause race issues
with the HStore's datastructures like here
> {code}
> 2017-06-14 18:16:17,223 WARN  [RpcServer.default.FPBQ.Fifo.handler=23,queue=1,port=16020]
regionserver.StoreScanner: failed to switch to stream read
> java.lang.NullPointerException
>         at org.apache.hadoop.hbase.regionserver.StoreFileScanner.getScannersForStoreFiles(StoreFileScanner.java:133)
>         at org.apache.hadoop.hbase.regionserver.HStore.getScanners(HStore.java:1221)
>         at org.apache.hadoop.hbase.regionserver.StoreScanner.trySwitchToStreamRead(StoreScanner.java:997)
>         at org.apache.hadoop.hbase.regionserver.StoreScanner.shipped(StoreScanner.java:1134)
>         at org.apache.hadoop.hbase.regionserver.KeyValueHeap.shipped(KeyValueHeap.java:445)
>         at org.apache.hadoop.hbase.regionserver.HRegion$RegionScannerImpl.shipped(HRegion.java:6459)
>         at org.apache.hadoop.hbase.regionserver.RSRpcServices$RegionScannerShippedCallBack.run(RSRpcServices.java:339)
>         at org.apache.hadoop.hbase.ipc.ServerCall.setResponse(ServerCall.java:252)
>         at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:166)
>         at org.apache.hadoop.hbase.ipc.RpcExecutor$Handler.run(RpcExecutor.java:278)
>         at org.apache.hadoop.hbase.ipc.RpcExecutor$Handler.run(RpcExecutor.java:258)
> {code}
> I have a working patch fixing this problem. Will do some more testing and try to upload
the patch after I write a test case for this. 

This message was sent by Atlassian JIRA

View raw message