From 23380ddde5c40b1afb1293af1340f02ed7dfb63c Mon Sep 17 00:00:00 2001 From: Pankaj Date: Fri, 9 Oct 2015 14:37:30 +0800 Subject: [PATCH] HBASE-14578, URISyntaxException during snapshot restore --- .../hadoop/hbase/snapshot/RestoreSnapshotHelper.java | 7 ++++--- .../hbase/master/snapshot/TestSnapshotFileCache.java | 4 ++-- .../hadoop/hbase/snapshot/SnapshotTestingUtils.java | 16 +++++++++------- .../hadoop/hbase/snapshot/TestRestoreSnapshotHelper.java | 11 ++++++++++- 4 files changed, 25 insertions(+), 13 deletions(-) diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/snapshot/RestoreSnapshotHelper.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/snapshot/RestoreSnapshotHelper.java index 0c5b21f..4bdfed7 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/snapshot/RestoreSnapshotHelper.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/snapshot/RestoreSnapshotHelper.java @@ -607,9 +607,10 @@ public class RestoreSnapshotHelper { String hfileName = storeFile.getName(); // 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)); + Path refPath = + StoreFileInfo.getReferredToFile(new Path(new Path(new Path(new Path(snapshotTable + .getNamespaceAsString(), snapshotTable.getQualifierAsString()), regionInfo + .getEncodedName()), familyDir.getName()), hfileName)); String snapshotRegionName = refPath.getParent().getParent().getName(); String fileName = refPath.getName(); diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/snapshot/TestSnapshotFileCache.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/snapshot/TestSnapshotFileCache.java index 4bb2cbe..69a4211 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/snapshot/TestSnapshotFileCache.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/snapshot/TestSnapshotFileCache.java @@ -258,7 +258,7 @@ public class TestSnapshotFileCache { private SnapshotMock.SnapshotBuilder createAndTestSnapshotV1(final SnapshotFileCache cache, final String name, final boolean tmp, final boolean removeOnExit) throws IOException { SnapshotMock snapshotMock = new SnapshotMock(UTIL.getConfiguration(), fs, rootDir); - SnapshotMock.SnapshotBuilder builder = snapshotMock.createSnapshotV1(name); + SnapshotMock.SnapshotBuilder builder = snapshotMock.createSnapshotV1(name, name); createAndTestSnapshot(cache, builder, tmp, removeOnExit); return builder; } @@ -266,7 +266,7 @@ public class TestSnapshotFileCache { private void createAndTestSnapshotV2(final SnapshotFileCache cache, final String name, final boolean tmp, final boolean removeOnExit) throws IOException { SnapshotMock snapshotMock = new SnapshotMock(UTIL.getConfiguration(), fs, rootDir); - SnapshotMock.SnapshotBuilder builder = snapshotMock.createSnapshotV2(name); + SnapshotMock.SnapshotBuilder builder = snapshotMock.createSnapshotV2(name, name); createAndTestSnapshot(cache, builder, tmp, removeOnExit); } diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/snapshot/SnapshotTestingUtils.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/snapshot/SnapshotTestingUtils.java index 072e044..9261b78 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/snapshot/SnapshotTestingUtils.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/snapshot/SnapshotTestingUtils.java @@ -540,17 +540,19 @@ public class SnapshotTestingUtils { this.rootDir = rootDir; } - public SnapshotBuilder createSnapshotV1(final String snapshotName) throws IOException { - return createSnapshot(snapshotName, SnapshotManifestV1.DESCRIPTOR_VERSION); + public SnapshotBuilder createSnapshotV1(final String snapshotName, final String tableName) + throws IOException { + return createSnapshot(snapshotName, tableName, SnapshotManifestV1.DESCRIPTOR_VERSION); } - public SnapshotBuilder createSnapshotV2(final String snapshotName) throws IOException { - return createSnapshot(snapshotName, SnapshotManifestV2.DESCRIPTOR_VERSION); + public SnapshotBuilder createSnapshotV2(final String snapshotName, final String tableName) + throws IOException { + return createSnapshot(snapshotName, tableName, SnapshotManifestV2.DESCRIPTOR_VERSION); } - private SnapshotBuilder createSnapshot(final String snapshotName, final int version) - throws IOException { - HTableDescriptor htd = createHtd(snapshotName); + private SnapshotBuilder createSnapshot(final String snapshotName, final String tableName, + final int version) throws IOException { + HTableDescriptor htd = createHtd(tableName); htd.addFamily(new HColumnDescriptor(TEST_FAMILY)); RegionData[] regions = createTable(htd, TEST_NUM_REGIONS); diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/snapshot/TestRestoreSnapshotHelper.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/snapshot/TestRestoreSnapshotHelper.java index e3b5d2c..4624102 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/snapshot/TestRestoreSnapshotHelper.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/snapshot/TestRestoreSnapshotHelper.java @@ -77,10 +77,19 @@ public class TestRestoreSnapshotHelper { @Test public void testRestore() throws IOException { + restoreAndVerify("snapshot", "testRestore"); + } + + @Test + public void testRestoreWithNamespace() throws IOException { + restoreAndVerify("snapshot", "namespace1:testRestoreWithNamespace"); + } + + private void restoreAndVerify(final String snapshotName, final String tableName) throws IOException { // Test Rolling-Upgrade like Snapshot. // half machines writing using v1 and the others using v2 format. SnapshotMock snapshotMock = new SnapshotMock(TEST_UTIL.getConfiguration(), fs, rootDir); - SnapshotMock.SnapshotBuilder builder = snapshotMock.createSnapshotV2("snapshot"); + SnapshotMock.SnapshotBuilder builder = snapshotMock.createSnapshotV2(snapshotName, tableName); builder.addRegionV1(); builder.addRegionV2(); builder.addRegionV2(); -- 1.9.2.msysgit.0