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

Duo Zhang resolved HBASE-28743.
-------------------------------
    Fix Version/s: 2.7.0
                   3.0.0-beta-2
                   2.6.1
                   2.5.11
                       (was: 2.5.9)
     Hadoop Flags: Reviewed
       Resolution: Fixed

Pushed to all active branches.

THanks [~vineet.4008] for contributing!

> Snapshot based mapreduce jobs fails with NPE while trying to close mslab 
> within mapper
> --------------------------------------------------------------------------------------
>
>                 Key: HBASE-28743
>                 URL: https://issues.apache.org/jira/browse/HBASE-28743
>             Project: HBase
>          Issue Type: Bug
>          Components: snapshots
>            Reporter: Ujjawal Kumar
>            Assignee: Vineet Kumar Maheshwari
>            Priority: Major
>              Labels: pull-request-available
>             Fix For: 2.7.0, 3.0.0-beta-2, 2.6.1, 2.5.11
>
>
> {code:java}
> 2024-07-11 10:20:38,800 WARN  [main] client.ClientSideRegionScanner - 
> Exception while closing region
> java.io.IOException: java.lang.NullPointerException
>         at 
> org.apache.hadoop.hbase.regionserver.HRegion.doClose(HRegion.java:1808)
>         at 
> org.apache.hadoop.hbase.regionserver.HRegion.close(HRegion.java:1557)
>         at 
> org.apache.hadoop.hbase.client.ClientSideRegionScanner.close(ClientSideRegionScanner.java:133)
>         at 
> org.apache.hadoop.hbase.mapreduce.TableSnapshotInputFormatImpl$RecordReader.close(TableSnapshotInputFormatImpl.java:310)
>         at 
> org.apache.hadoop.hbase.mapreduce.TableSnapshotInputFormat$TableSnapshotRegionRecordReader.close(TableSnapshotInputFormat.java:184)
>         at 
> org.apache.hadoop.mapred.MapTask$NewTrackingRecordReader.close(MapTask.java:536)
>         at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:804)
>         at org.apache.hadoop.mapred.MapTask.run(MapTask.java:348)
>         at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:178)
>         at java.security.AccessController.doPrivileged(Native Method)
>         at javax.security.auth.Subject.doAs(Subject.java:422)
>         at 
> org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1899)
>         at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:172)
> Caused by: java.lang.NullPointerException
>         at 
> org.apache.hadoop.hbase.regionserver.MemStoreLABImpl.recycleChunks(MemStoreLABImpl.java:296)
>         at 
> org.apache.hadoop.hbase.regionserver.MemStoreLABImpl.lambda$new$0(MemStoreLABImpl.java:109)
>         at org.apache.hadoop.hbase.nio.RefCnt.deallocate(RefCnt.java:95)
>         at 
> org.apache.hbase.thirdparty.io.netty.util.AbstractReferenceCounted.handleRelease(AbstractReferenceCounted.java:86)
>         at 
> org.apache.hbase.thirdparty.io.netty.util.AbstractReferenceCounted.release(AbstractReferenceCounted.java:76)
>         at org.apache.hadoop.hbase.nio.RefCnt.release(RefCnt.java:84)
>         at 
> org.apache.hadoop.hbase.regionserver.MemStoreLABImpl.close(MemStoreLABImpl.java:269)
>         at 
> org.apache.hadoop.hbase.regionserver.Segment.close(Segment.java:143)
>         at 
> org.apache.hadoop.hbase.regionserver.AbstractMemStore.close(AbstractMemStore.java:381)
>         at 
> org.apache.hadoop.hbase.regionserver.HStore.closeWithoutLock(HStore.java:723)
>         at org.apache.hadoop.hbase.regionserver.HStore.close(HStore.java:795)
>         at 
> org.apache.hadoop.hbase.regionserver.HRegion$2.call(HRegion.java:1786)
>         at 
> org.apache.hadoop.hbase.regionserver.HRegion$2.call(HRegion.java:1783)
>         at java.util.concurrent.FutureTask.run(FutureTask.java:266)
>         at 
> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
>         at java.util.concurrent.FutureTask.run(FutureTask.java:266)
>         at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
>         at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
>         at java.lang.Thread.run(Thread.java:750) {code}
> This happens because the ChunkCreator is only initialized as part of 
> HRegionServer 
> [here.|https://github.com/apache/hbase/blob/master/hbase-server/src/main/java/org/apache/hadoop/hbase/HBaseServerBase.java#L410-L431]
> HRegion created on top of snapshot files within mapper wouldn't have 
> ChunkCreator initialized causing NPE while trying to close the memstore
> This is seen after https://issues.apache.org/jira/browse/HBASE-28401
> There are 2 possible solutions here : 
> 1. Initialize ChunkCreator as while trying to create HRegion within snapashot 
> based mapper
> 2. Disable the mslab altogether (via hbase.hregion.memstore.mslab.enabled set 
> to false) within snapashot based mapper 



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

Reply via email to