diff --git a/ql/src/java/org/apache/hadoop/hive/ql/history/HiveHistory.java b/ql/src/java/org/apache/hadoop/hive/ql/history/HiveHistory.java index bfd0a83..e1c1ae3 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/history/HiveHistory.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/history/HiveHistory.java @@ -39,6 +39,7 @@ import org.apache.hadoop.hive.ql.exec.Task; import org.apache.hadoop.hive.ql.session.SessionState; import org.apache.hadoop.hive.ql.session.SessionState.LogHelper; +import org.apache.hadoop.io.IOUtils; import org.apache.hadoop.mapred.Counters; import org.apache.hadoop.mapred.Counters.Counter; import org.apache.hadoop.mapred.Counters.Group; @@ -532,11 +533,14 @@ String getRowCountTableName(String name) { return null; } + + public void closeStream() { + IOUtils.cleanup(LOG, histStream); + } + @Override public void finalize() throws Throwable { - if (histStream !=null){ - histStream.close(); - } + closeStream(); super.finalize(); } } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/session/SessionState.java b/ql/src/java/org/apache/hadoop/hive/ql/session/SessionState.java index d8c91bd..3385b08 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/session/SessionState.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/session/SessionState.java @@ -250,7 +250,7 @@ public static SessionState start(SessionState startSs) { .setVar(HiveConf.ConfVars.HIVESESSIONID, makeSessionId()); } - if (startSs.hiveHist == null) { + if (startSs.getConf().getBoolean("hive.session.history.enabled", true) && startSs.hiveHist == null) { startSs.hiveHist = new HiveHistory(startSs); } diff --git a/service/src/java/org/apache/hive/service/cli/operation/HiveCommandOperation.java b/service/src/java/org/apache/hive/service/cli/operation/HiveCommandOperation.java index 60148cb..cdbf79f 100644 --- a/service/src/java/org/apache/hive/service/cli/operation/HiveCommandOperation.java +++ b/service/src/java/org/apache/hive/service/cli/operation/HiveCommandOperation.java @@ -34,6 +34,7 @@ import org.apache.hadoop.hive.ql.processors.CommandProcessor; import org.apache.hadoop.hive.ql.processors.CommandProcessorResponse; import org.apache.hadoop.hive.ql.session.SessionState; +import org.apache.hadoop.io.IOUtils; import org.apache.hive.service.cli.FetchOrientation; import org.apache.hive.service.cli.HiveSQLException; import org.apache.hive.service.cli.OperationState; @@ -85,6 +86,12 @@ private void setupSessionIO(SessionState sessionState) { } } + + private void tearDownSessionIO() { + IOUtils.cleanup(LOG, parentSession.getSessionState().out); + IOUtils.cleanup(LOG, parentSession.getSessionState().err); + } + /* (non-Javadoc) * @see org.apache.hive.service.cli.operation.Operation#run() */ @@ -121,6 +128,7 @@ public void run() throws HiveSQLException { @Override public void close() throws HiveSQLException { setState(OperationState.CLOSED); + tearDownSessionIO(); cleanTmpFile(); } @@ -187,6 +195,7 @@ private void cleanTmpFile() { if (resultReader != null) { SessionState sessionState = getParentSession().getSessionState(); File tmp = sessionState.getTmpOutputFile(); + IOUtils.cleanup(LOG, resultReader); tmp.delete(); resultReader = null; } diff --git a/service/src/java/org/apache/hive/service/cli/operation/Operation.java b/service/src/java/org/apache/hive/service/cli/operation/Operation.java index b354ac9..6f4b8dc 100644 --- a/service/src/java/org/apache/hive/service/cli/operation/Operation.java +++ b/service/src/java/org/apache/hive/service/cli/operation/Operation.java @@ -32,7 +32,7 @@ public abstract class Operation { - private final HiveSession parentSession; + protected final HiveSession parentSession; private OperationState state = OperationState.INITIALIZED; private final OperationHandle opHandle; private HiveConf configuration; diff --git a/service/src/java/org/apache/hive/service/cli/session/HiveSessionImpl.java b/service/src/java/org/apache/hive/service/cli/session/HiveSessionImpl.java index 8f0adb5..ac4e83a 100644 --- a/service/src/java/org/apache/hive/service/cli/session/HiveSessionImpl.java +++ b/service/src/java/org/apache/hive/service/cli/session/HiveSessionImpl.java @@ -28,6 +28,7 @@ import org.apache.hadoop.hive.metastore.HiveMetaStoreClient; import org.apache.hadoop.hive.metastore.IMetaStoreClient; import org.apache.hadoop.hive.metastore.api.MetaException; +import org.apache.hadoop.hive.ql.history.HiveHistory; import org.apache.hadoop.hive.ql.session.SessionState; import org.apache.hive.common.util.HiveVersionInfo; import org.apache.hive.service.cli.FetchOrientation; @@ -295,6 +296,10 @@ public void close() throws HiveSQLException { operationManager.closeOperation(opHandle); } opHandleSet.clear(); + HiveHistory hiveHist = sessionState.getHiveHistory(); + if (null != hiveHist){ + hiveHist.closeStream(); + } } finally { release(); } @@ -367,4 +372,4 @@ public RowSet fetchResults(OperationHandle opHandle) throws HiveSQLException { protected HiveSession getSession() { return this; } -} \ No newline at end of file +}