Uploaded image for project: 'HBase'
  1. HBase
  2. HBASE-14578

URISyntaxException during snapshot restore for table with user defined namespace

    XMLWordPrintableJSON

    Details

    • Hadoop Flags:
      Reviewed

      Description

      Snapshot restore failed for a table which is created under user defined namespace,

      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
      

      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,

        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---
        }
      

        Attachments

        1. 14578-master.txt
          6 kB
          Ted Yu
        2. 14578-master-v2.txt
          7 kB
          Ted Yu
        3. HBASE-14578-0.98.patch
          7 kB
          Pankaj Kumar
        4. HBASE-14578-0.98-V2.patch
          6 kB
          Pankaj Kumar
        5. HBASE-14578-branch-1.patch
          8 kB
          Pankaj Kumar

          Activity

            People

            • Assignee:
              pankaj2461 Pankaj Kumar
              Reporter:
              pankaj2461 Pankaj Kumar
            • Votes:
              0 Vote for this issue
              Watchers:
              6 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: