You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kudu.apache.org by ad...@apache.org on 2018/07/09 18:23:19 UTC
kudu git commit: Read url-encoded table name on restore
Repository: kudu
Updated Branches:
refs/heads/master af8bb879c -> 32fabd3a4
Read url-encoded table name on restore
Kudu table names are being url-encoded on backup. Read the url-encoded
table names on restore.
Change-Id: Ib028b9239c9e4aa71084757eb2dc16a3068de929
Reviewed-on: http://gerrit.cloudera.org:8080/10880
Reviewed-by: Adar Dembo <ad...@cloudera.com>
Tested-by: Adar Dembo <ad...@cloudera.com>
Project: http://git-wip-us.apache.org/repos/asf/kudu/repo
Commit: http://git-wip-us.apache.org/repos/asf/kudu/commit/32fabd3a
Tree: http://git-wip-us.apache.org/repos/asf/kudu/tree/32fabd3a
Diff: http://git-wip-us.apache.org/repos/asf/kudu/diff/32fabd3a
Branch: refs/heads/master
Commit: 32fabd3a4bfeda144ab3c7d680266d0dc2d190f7
Parents: af8bb87
Author: Tony Foerster <to...@phdata.io>
Authored: Fri Jul 6 10:10:03 2018 -0500
Committer: Adar Dembo <ad...@cloudera.com>
Committed: Mon Jul 9 18:22:57 2018 +0000
----------------------------------------------------------------------
.../scala/org/apache/kudu/backup/KuduBackup.scala | 2 +-
.../scala/org/apache/kudu/backup/KuduRestore.scala | 5 +++--
.../org/apache/kudu/backup/TestKuduBackup.scala | 17 +++++++++++++++++
3 files changed, 21 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/kudu/blob/32fabd3a/java/kudu-backup/src/main/scala/org/apache/kudu/backup/KuduBackup.scala
----------------------------------------------------------------------
diff --git a/java/kudu-backup/src/main/scala/org/apache/kudu/backup/KuduBackup.scala b/java/kudu-backup/src/main/scala/org/apache/kudu/backup/KuduBackup.scala
index 56af3e9..1fa2899 100644
--- a/java/kudu-backup/src/main/scala/org/apache/kudu/backup/KuduBackup.scala
+++ b/java/kudu-backup/src/main/scala/org/apache/kudu/backup/KuduBackup.scala
@@ -16,7 +16,7 @@
// under the License.
package org.apache.kudu.backup
-import java.net.{URLEncoder}
+import java.net.URLEncoder
import java.nio.charset.StandardCharsets
import java.nio.file.{Path, Paths}
http://git-wip-us.apache.org/repos/asf/kudu/blob/32fabd3a/java/kudu-backup/src/main/scala/org/apache/kudu/backup/KuduRestore.scala
----------------------------------------------------------------------
diff --git a/java/kudu-backup/src/main/scala/org/apache/kudu/backup/KuduRestore.scala b/java/kudu-backup/src/main/scala/org/apache/kudu/backup/KuduRestore.scala
index bd0cc3c..74de830 100644
--- a/java/kudu-backup/src/main/scala/org/apache/kudu/backup/KuduRestore.scala
+++ b/java/kudu-backup/src/main/scala/org/apache/kudu/backup/KuduRestore.scala
@@ -42,8 +42,9 @@ object KuduRestore {
// TODO: Make parallel so each table isn't processed serially.
options.tables.foreach { t =>
- val tablePath = Paths.get(path).resolve(URLEncoder.encode(t, "UTF-8"))
- val metadataPath = getMetadataPath(t, options)
+ val tableEncoded = URLEncoder.encode(t, "UTF-8")
+ val tablePath = Paths.get(path).resolve(tableEncoded)
+ val metadataPath = getMetadataPath(tableEncoded, options)
val metadata = readTableMetadata(metadataPath, session)
val restoreName = s"${metadata.getTableName}${options.tableSuffix}"
val table =
http://git-wip-us.apache.org/repos/asf/kudu/blob/32fabd3a/java/kudu-backup/src/test/scala/org/apache/kudu/backup/TestKuduBackup.scala
----------------------------------------------------------------------
diff --git a/java/kudu-backup/src/test/scala/org/apache/kudu/backup/TestKuduBackup.scala b/java/kudu-backup/src/test/scala/org/apache/kudu/backup/TestKuduBackup.scala
index 8f1c807..2e2e589 100644
--- a/java/kudu-backup/src/test/scala/org/apache/kudu/backup/TestKuduBackup.scala
+++ b/java/kudu-backup/src/test/scala/org/apache/kudu/backup/TestKuduBackup.scala
@@ -56,6 +56,23 @@ class TestKuduBackup extends FunSuite with TestContext with Matchers {
assertTrue(partitionSchemasMatch(tA.getPartitionSchema, tB.getPartitionSchema))
}
+ test("Simple Backup and Restore Table Name With Special Characters") {
+ // Use an Impala-style table name to verify url encoding/decoding of the table name works.
+ val impalaTableName = "impala::default.test"
+
+ val tableOptions = new CreateTableOptions()
+ .setRangePartitionColumns(List("key").asJava)
+ .setNumReplicas(1)
+
+ kuduClient.createTable(impalaTableName, simpleSchema, tableOptions)
+
+ backupAndRestore(impalaTableName)
+
+ val rdd = kuduContext.kuduRDD(ss.sparkContext, s"$impalaTableName-restore", List("key"))
+ // Only verifying the file contents could be read, the contents are expected to be empty.
+ assert(rdd.isEmpty())
+ }
+
test("Random Backup and Restore") {
Random.javaRandomToRandom(TestUtils.getRandom)