[ 
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:
------------------------------------------

[~yuzhih...@gmail.com] 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)

Reply via email to