Pankaj Kumar created HBASE-14578:
------------------------------------

             Summary: URISyntaxException during snapshot restore
                 Key: HBASE-14578
                 URL: https://issues.apache.org/jira/browse/HBASE-14578
             Project: HBase
          Issue Type: Bug
          Components: snapshots
    Affects Versions: 0.98.5
            Reporter: Pankaj Kumar
            Assignee: Pankaj Kumar


Snapshot restore failed for a table which is created under user defined 
namespace,
{noformat}
java.io.IOException: java.util.concurrent.ExecutionException: 
java.lang.IllegalArgumentException: java.net.URISyntaxException: Relative path 
in absolute URI: tag_namespace:tableName_XYZ
        at 
org.apache.hadoop.hbase.util.ModifyRegionUtils.createRegions(ModifyRegionUtils.java:133)
        at 
org.apache.hadoop.hbase.snapshot.RestoreSnapshotHelper.cloneHdfsRegions(RestoreSnapshotHelper.java:475)
        at 
org.apache.hadoop.hbase.snapshot.RestoreSnapshotHelper.restoreHdfsRegions(RestoreSnapshotHelper.java:208)
        at 
org.apache.hadoop.hbase.master.snapshot.CloneSnapshotHandler.handleCreateHdfsRegions(CloneSnapshotHandler.java:112)
        at 
org.apache.hadoop.hbase.master.handler.CreateTableHandler.handleCreateTable(CreateTableHandler.java:233)
        at 
org.apache.hadoop.hbase.master.handler.CreateTableHandler.process(CreateTableHandler.java:168)
        at 
org.apache.hadoop.hbase.executor.EventHandler.run(EventHandler.java:128)
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:745)
Caused by: java.util.concurrent.ExecutionException: 
java.lang.IllegalArgumentException: java.net.URISyntaxException: Relative path 
in absolute URI: tag_namespace:tableName_XYZ
        at java.util.concurrent.FutureTask.report(FutureTask.java:122)
        at java.util.concurrent.FutureTask.get(FutureTask.java:188)
        at 
org.apache.hadoop.hbase.util.ModifyRegionUtils.createRegions(ModifyRegionUtils.java:126)
        ... 9 more
Caused by: java.lang.IllegalArgumentException: java.net.URISyntaxException: 
Relative path in absolute URI: tag_namespace:tableName_XYZ
        at org.apache.hadoop.fs.Path.initialize(Path.java:206)
        at org.apache.hadoop.fs.Path.<init>(Path.java:172)
        at org.apache.hadoop.fs.Path.<init>(Path.java:89)
        at 
org.apache.hadoop.hbase.snapshot.RestoreSnapshotHelper.restoreReferenceFile(RestoreSnapshotHelper.java:558)
        at 
org.apache.hadoop.hbase.snapshot.RestoreSnapshotHelper.restoreStoreFile(RestoreSnapshotHelper.java:531)
        at 
org.apache.hadoop.hbase.snapshot.RestoreSnapshotHelper.access$200(RestoreSnapshotHelper.java:106)
        at 
org.apache.hadoop.hbase.snapshot.RestoreSnapshotHelper$2.storeFile(RestoreSnapshotHelper.java:509)
        at 
org.apache.hadoop.hbase.util.FSVisitor.visitRegionStoreFiles(FSVisitor.java:136)
        at 
org.apache.hadoop.hbase.snapshot.SnapshotReferenceUtil.visitRegionStoreFiles(SnapshotReferenceUtil.java:127)
        at 
org.apache.hadoop.hbase.snapshot.RestoreSnapshotHelper.cloneRegion(RestoreSnapshotHelper.java:502)
        at 
org.apache.hadoop.hbase.snapshot.RestoreSnapshotHelper.access$100(RestoreSnapshotHelper.java:106)
        at 
org.apache.hadoop.hbase.snapshot.RestoreSnapshotHelper$1.fillRegion(RestoreSnapshotHelper.java:479)
        at 
org.apache.hadoop.hbase.util.ModifyRegionUtils.createRegion(ModifyRegionUtils.java:160)
        at 
org.apache.hadoop.hbase.util.ModifyRegionUtils$1.call(ModifyRegionUtils.java:118)
        at 
org.apache.hadoop.hbase.util.ModifyRegionUtils$1.call(ModifyRegionUtils.java:115)
        at java.util.concurrent.FutureTask.run(FutureTask.java:262)
        at 
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
        at java.util.concurrent.FutureTask.run(FutureTask.java:262)
        ... 3 more
Caused by: java.net.URISyntaxException: Relative path in absolute URI: 
tag_namespace:tableName_XYZ
        at java.net.URI.checkPath(URI.java:1804)
        at java.net.URI.<init>(URI.java:752)
        at org.apache.hadoop.fs.Path.initialize(Path.java:203)
        ... 20 more
{noformat}

After region split, new daughter regions contain the reference of the original 
HFile until compaction happens. 
In RestoreSnapshotHelper (while restoring snapshot file which have regions 
containing hfile references), path is initialized using the snapshot table name 
which has namespace separated by colon,
{code}
  private void restoreReferenceFile(final Path familyDir, final HRegionInfo 
regionInfo,
      final String hfileName) throws IOException {
    // Extract the referred information (hfile name and parent region)
    Path refPath = StoreFileInfo.getReferredToFile(new Path(new Path(new Path(
        snapshotTable.getNameAsString(), regionInfo.getEncodedName()), 
familyDir.getName()),
        hfileName));
  ---code---
  }
{code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to