[
https://issues.apache.org/jira/browse/HBASE-19980?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16365228#comment-16365228
]
Toshihiro Suzuki commented on HBASE-19980:
------------------------------------------
[[email protected]] I will attach patch for branch-1.
[~mdrob] Why we needed to move how we handle MOB restores is as follows:
Firstly, we need to call cloneHdfsRegions() before restoreHdfsRegions() because
regionsMap is constructed in cloneHdfsRegions() and it can be used in
restoreHdfsRegions(). To do this, regionNames (and regionsToAdd) has to be
construct before calling cloneHdfsRegions(). As reginoNames is constructed by
subtracting all snapshot regions from tableRegions and mobRegion, I moved MOB
restore process before cloneHdfsRegions().
> NullPointerException when restoring a snapshot after splitting a region
> -----------------------------------------------------------------------
>
> Key: HBASE-19980
> URL: https://issues.apache.org/jira/browse/HBASE-19980
> Project: HBase
> Issue Type: Bug
> Components: snapshots
> Reporter: Toshihiro Suzuki
> Assignee: Toshihiro Suzuki
> Priority: Major
> Fix For: 2.0.0-beta-2
>
> Attachments: HBASE-19980-UT.patch, HBASE-19980.master.001.patch,
> HBASE-19980.master.002.patch
>
>
> Investigating HBASE-19893, I'm facing the following NullPointerException when
> restoring a snapshot after splitting a region:
> {code}
> 2018-02-13 01:59:56,033 ERROR [PEWorker-1]
> procedure.RestoreSnapshotProcedure(403): restore snapshot={
> ss=snaptb1-1518454780480
> table=testRestoreSnapshotAfterSplittingRegions-1518454780480 type=FLUSH }
> failed in on-disk restore. Try re-running the restore command.
> java.io.IOException
> at
> org.apache.hadoop.hbase.util.ModifyRegionUtils.editRegions(ModifyRegionUtils.java:222)
> at
> org.apache.hadoop.hbase.snapshot.RestoreSnapshotHelper.restoreHdfsRegions(RestoreSnapshotHelper.java:424)
> at
> org.apache.hadoop.hbase.snapshot.RestoreSnapshotHelper.restoreHdfsRegions(RestoreSnapshotHelper.java:227)
> at
> org.apache.hadoop.hbase.snapshot.RestoreSnapshotHelper.restoreHdfsRegions(RestoreSnapshotHelper.java:177)
> at
> org.apache.hadoop.hbase.master.procedure.RestoreSnapshotProcedure.restoreSnapshot(RestoreSnapshotProcedure.java:395)
> at
> org.apache.hadoop.hbase.master.procedure.RestoreSnapshotProcedure.executeFromState(RestoreSnapshotProcedure.java:143)
> at
> org.apache.hadoop.hbase.master.procedure.RestoreSnapshotProcedure.executeFromState(RestoreSnapshotProcedure.java:58)
> at
> org.apache.hadoop.hbase.procedure2.StateMachineProcedure.execute(StateMachineProcedure.java:180)
> at
> org.apache.hadoop.hbase.procedure2.Procedure.doExecute(Procedure.java:845)
> at
> org.apache.hadoop.hbase.procedure2.ProcedureExecutor.execProcedure(ProcedureExecutor.java:1455)
> at
> org.apache.hadoop.hbase.procedure2.ProcedureExecutor.executeProcedure(ProcedureExecutor.java:1224)
> at
> org.apache.hadoop.hbase.procedure2.ProcedureExecutor.access$800(ProcedureExecutor.java:78)
> at
> org.apache.hadoop.hbase.procedure2.ProcedureExecutor$WorkerThread.run(ProcedureExecutor.java:1734)
> Caused by: java.lang.NullPointerException
> at
> org.apache.hadoop.hbase.snapshot.RestoreSnapshotHelper.restoreReferenceFile(RestoreSnapshotHelper.java:751)
> at
> org.apache.hadoop.hbase.snapshot.RestoreSnapshotHelper.restoreStoreFile(RestoreSnapshotHelper.java:675)
> at
> org.apache.hadoop.hbase.snapshot.RestoreSnapshotHelper.restoreRegion(RestoreSnapshotHelper.java:521)
> at
> org.apache.hadoop.hbase.snapshot.RestoreSnapshotHelper.restoreRegion(RestoreSnapshotHelper.java:464)
> at
> org.apache.hadoop.hbase.snapshot.RestoreSnapshotHelper.access$300(RestoreSnapshotHelper.java:116)
> at
> org.apache.hadoop.hbase.snapshot.RestoreSnapshotHelper$2.editRegion(RestoreSnapshotHelper.java:427)
> at
> org.apache.hadoop.hbase.util.ModifyRegionUtils$2.call(ModifyRegionUtils.java:209)
> at
> org.apache.hadoop.hbase.util.ModifyRegionUtils$2.call(ModifyRegionUtils.java:206)
> 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:1142)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
> at java.lang.Thread.run(Thread.java:745)
> {code}
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)