Index: ql/src/java/org/apache/hadoop/hive/ql/Driver.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/Driver.java (revision 1100117) +++ ql/src/java/org/apache/hadoop/hive/ql/Driver.java (working copy) @@ -165,6 +165,18 @@ } } } + + private void clearLockManager() throws SemanticException { + try { + if (hiveLockMgr != null) { + hiveLockMgr.close(); + hiveLockMgr = null; + ctx.setHiveLockMgr(null); + } + } catch (Exception e) { + throw new SemanticException(e.getMessage()); + } + } public void init() { Operator.resetId(); @@ -828,13 +840,13 @@ int ret = compile(command); - boolean requireLock = false; - boolean ckLock = checkLockManager(); - if (ret != 0) { releaseLocks(ctx.getHiveLocks()); return new CommandProcessorResponse(ret, errorMessage, SQLState); } + + boolean requireLock = false; + boolean ckLock = checkLockManager(); if (ckLock) { ctx.setHiveLockMgr(hiveLockMgr); @@ -1363,8 +1375,9 @@ return 0; } - public void destroy() { + public void destroy() throws SemanticException { releaseLocks(); + clearLockManager(); } public org.apache.hadoop.hive.ql.plan.api.Query getQueryPlan() throws IOException {