Repository: hive Updated Branches: refs/heads/master 96c2fa86b -> d6ce23d53
HIVE-18075 : verify commands on a cluster (Harish Jaiprakash, reviewed by Sergey Shelukhin) Project: http://git-wip-us.apache.org/repos/asf/hive/repo Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/d6ce23d5 Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/d6ce23d5 Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/d6ce23d5 Branch: refs/heads/master Commit: d6ce23d53d9605c3b28f155e4d0810c9c26d587c Parents: 96c2fa8 Author: sergey <ser...@apache.org> Authored: Mon Dec 11 17:51:05 2017 -0800 Committer: sergey <ser...@apache.org> Committed: Mon Dec 11 17:51:05 2017 -0800 ---------------------------------------------------------------------- .../test/queries/clientpositive/resourceplan.q | 4 ++++ .../clientpositive/llap/resourceplan.q.out | 8 ++++++- .../hadoop/hive/metastore/ObjectStore.java | 23 +++++++++++++++----- 3 files changed, 28 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hive/blob/d6ce23d5/ql/src/test/queries/clientpositive/resourceplan.q ---------------------------------------------------------------------- diff --git a/ql/src/test/queries/clientpositive/resourceplan.q b/ql/src/test/queries/clientpositive/resourceplan.q index 002b21c..fc924a2 100644 --- a/ql/src/test/queries/clientpositive/resourceplan.q +++ b/ql/src/test/queries/clientpositive/resourceplan.q @@ -312,8 +312,12 @@ CREATE RESOURCE PLAN plan_4; ALTER RESOURCE PLAN plan_4 ENABLE ACTIVATE; +-- This should remove all pools, triggers & mappings. DROP RESOURCE PLAN plan_2; +-- This should create plan_2 with default pool and null query parallelism. +CREATE RESOURCE PLAN plan_2; + SELECT * FROM SYS.WM_RESOURCEPLANS; SELECT * FROM SYS.WM_POOLS; SELECT * FROM SYS.WM_TRIGGERS; http://git-wip-us.apache.org/repos/asf/hive/blob/d6ce23d5/ql/src/test/results/clientpositive/llap/resourceplan.q.out ---------------------------------------------------------------------- diff --git a/ql/src/test/results/clientpositive/llap/resourceplan.q.out b/ql/src/test/results/clientpositive/llap/resourceplan.q.out index 093e5d5..7f3e784 100644 --- a/ql/src/test/results/clientpositive/llap/resourceplan.q.out +++ b/ql/src/test/results/clientpositive/llap/resourceplan.q.out @@ -3977,7 +3977,7 @@ plan_2 USER user1 def 0 plan_2 USER user2 def 1 PREHOOK: query: DROP POOL plan_2.def.c1 PREHOOK: type: DROP POOL -FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. MetaException(message:Exception thrown flushing changes to datastore) +FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. InvalidOperationException(message:Please remove all mappings for this pool.) PREHOOK: query: DROP USER MAPPING "user2" in plan_2 PREHOOK: type: DROP MAPPING POSTHOOK: query: DROP USER MAPPING "user2" in plan_2 @@ -4008,6 +4008,10 @@ PREHOOK: query: DROP RESOURCE PLAN plan_2 PREHOOK: type: DROP RESOURCEPLAN POSTHOOK: query: DROP RESOURCE PLAN plan_2 POSTHOOK: type: DROP RESOURCEPLAN +PREHOOK: query: CREATE RESOURCE PLAN plan_2 +PREHOOK: type: CREATE RESOURCEPLAN +POSTHOOK: query: CREATE RESOURCE PLAN plan_2 +POSTHOOK: type: CREATE RESOURCEPLAN PREHOOK: query: SELECT * FROM SYS.WM_RESOURCEPLANS PREHOOK: type: QUERY PREHOOK: Input: sys@wm_resourceplans @@ -4017,6 +4021,7 @@ POSTHOOK: type: QUERY POSTHOOK: Input: sys@wm_resourceplans #### A masked pattern was here #### plan_1 ENABLED NULL default +plan_2 DISABLED NULL default plan_4 ACTIVE NULL default table DISABLED 1 table.pool PREHOOK: query: SELECT * FROM SYS.WM_POOLS @@ -4028,6 +4033,7 @@ POSTHOOK: type: QUERY POSTHOOK: Input: sys@wm_pools #### A masked pattern was here #### plan_1 default 1.0 4 NULL +plan_2 default 1.0 4 NULL plan_4 default 1.0 4 NULL table table 0.0 1 random table table.pool 0.9 3 priority http://git-wip-us.apache.org/repos/asf/hive/blob/d6ce23d5/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/ObjectStore.java ---------------------------------------------------------------------- diff --git a/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/ObjectStore.java b/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/ObjectStore.java index 2e80c9d..2c92bb2 100644 --- a/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/ObjectStore.java +++ b/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/ObjectStore.java @@ -9519,14 +9519,20 @@ public class ObjectStore implements RawStore, Configurable { } private void checkForConstraintException(Exception e, String msg) throws AlreadyExistsException { - Throwable ex = e; - while (ex != null) { - if (ex instanceof SQLIntegrityConstraintViolationException) { - LOG.error(msg, e); - throw new AlreadyExistsException(msg); + if (getConstraintException(e) != null) { + LOG.error(msg, e); + throw new AlreadyExistsException(msg); + } + } + + private Throwable getConstraintException(Throwable t) { + while (t != null) { + if (t instanceof SQLIntegrityConstraintViolationException) { + return t; } - ex = ex.getCause(); + t = t.getCause(); } + return null; } @Override @@ -10214,6 +10220,11 @@ public class ObjectStore implements RawStore, Configurable { throw new NoSuchObjectException("Cannot delete pool: " + poolPath); } commited = commitTransaction(); + } catch(Exception e) { + if (getConstraintException(e) != null) { + throw new InvalidOperationException("Please remove all mappings for this pool."); + } + throw e; } finally { rollbackAndCleanup(commited, query); }