This is an automated email from the ASF dual-hosted git repository.
dkuzmenko pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hive.git
The following commit(s) were added to refs/heads/master by this push:
new 39239a75153 HIVE-26338: Repl Dump should fail if source database does
not exist (Haymant Mangla, reviewed by Denys Kuzmenko)
39239a75153 is described below
commit 39239a751531265cc18f677092c1882ac29e3b5e
Author: Haymant Mangla <[email protected]>
AuthorDate: Sat Jun 18 12:47:00 2022 +0530
HIVE-26338: Repl Dump should fail if source database does not exist
(Haymant Mangla, reviewed by Denys Kuzmenko)
Closes #3380
---
common/src/java/org/apache/hadoop/hive/ql/ErrorMsg.java | 2 ++
.../ql/parse/TestReplicationScenariosAcrossInstances.java | 11 ++++++-----
.../hadoop/hive/ql/parse/ReplicationSemanticAnalyzer.java | 6 +++++-
.../java/org/apache/hadoop/hive/ql/parse/repl/dump/Utils.java | 2 +-
4 files changed, 14 insertions(+), 7 deletions(-)
diff --git a/common/src/java/org/apache/hadoop/hive/ql/ErrorMsg.java
b/common/src/java/org/apache/hadoop/hive/ql/ErrorMsg.java
index 903b949772a..4a61c2d2c95 100644
--- a/common/src/java/org/apache/hadoop/hive/ql/ErrorMsg.java
+++ b/common/src/java/org/apache/hadoop/hive/ql/ErrorMsg.java
@@ -579,6 +579,8 @@ public enum ErrorMsg {
REPL_FILE_SYSTEM_OPERATION_RETRY(30047, "Replication file system operation
retry expired. Error {0}",
true),
+ REPL_SOURCE_DATABASE_NOT_FOUND(30048, "Cannot dump database {0} as it does
not exist",
+ true),
//========================== 40000 range starts here
========================//
diff --git
a/itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/parse/TestReplicationScenariosAcrossInstances.java
b/itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/parse/TestReplicationScenariosAcrossInstances.java
index 31acaa244ae..20e189e9f6b 100644
---
a/itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/parse/TestReplicationScenariosAcrossInstances.java
+++
b/itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/parse/TestReplicationScenariosAcrossInstances.java
@@ -1005,13 +1005,14 @@ public class TestReplicationScenariosAcrossInstances
extends BaseReplicationAcro
.status(replicatedDbName)
.verifyResult(tuple.lastReplicationId);
- // Bootstrap load from an empty dump directory should return empty load
directory error.
- tuple = primary.dump("someJunkDB", Collections.emptyList());
+ // Bootstrap dump should fail if source database does not exist.
+ String nonExistingDb = "someJunkDB";
+ assertEquals (primary.getDatabase(nonExistingDb), null);
try {
- replica.runCommand("REPL LOAD someJunkDB into someJunkDB");
+ primary.run("REPL DUMP " + nonExistingDb);
assert false;
- } catch (CommandProcessorException e) {
- assertTrue(e.getMessage().toLowerCase().contains("semanticException no
data to load in path".toLowerCase()));
+ } catch (Exception e) {
+ assertEquals
(ErrorMsg.REPL_SOURCE_DATABASE_NOT_FOUND.format(nonExistingDb), e.getMessage());
}
primary.run(" drop database if exists " + testDbName + " cascade");
}
diff --git
a/ql/src/java/org/apache/hadoop/hive/ql/parse/ReplicationSemanticAnalyzer.java
b/ql/src/java/org/apache/hadoop/hive/ql/parse/ReplicationSemanticAnalyzer.java
index ccddaea93eb..abd4cf8ac3e 100644
---
a/ql/src/java/org/apache/hadoop/hive/ql/parse/ReplicationSemanticAnalyzer.java
+++
b/ql/src/java/org/apache/hadoop/hive/ql/parse/ReplicationSemanticAnalyzer.java
@@ -185,7 +185,11 @@ public class ReplicationSemanticAnalyzer extends
BaseSemanticAnalyzer {
childIdx++;
}
- for (String dbName : Utils.matchesDb(db, dbNameOrPattern)) {
+ List<String> databases = Utils.matchesDb(db, dbNameOrPattern);
+ if (databases.size() == 0) {
+ throw new
SemanticException(ErrorMsg.REPL_SOURCE_DATABASE_NOT_FOUND.format(dbNameOrPattern));
+ }
+ for (String dbName : databases) {
Database database = db.getDatabase(dbName);
if (database != null) {
if (MetaStoreUtils.isTargetOfReplication(database)) {
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/repl/dump/Utils.java
b/ql/src/java/org/apache/hadoop/hive/ql/parse/repl/dump/Utils.java
index f8276d35e5c..b4e26f58693 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/parse/repl/dump/Utils.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/repl/dump/Utils.java
@@ -235,7 +235,7 @@ public class Utils {
return false;
}
- public static Iterable<String> matchesDb(Hive db, String dbPattern) throws
HiveException {
+ public static List<String> matchesDb(Hive db, String dbPattern) throws
HiveException {
if (dbPattern == null) {
return db.getAllDatabases();
} else {