Index: ql/src/java/org/apache/hadoop/hive/ql/log/PerfLogger.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/log/PerfLogger.java (revision 1173881) +++ ql/src/java/org/apache/hadoop/hive/ql/log/PerfLogger.java (working copy) @@ -25,6 +25,7 @@ import org.apache.commons.logging.LogFactory; import org.apache.hadoop.hive.conf.HiveConf; import org.apache.hadoop.hive.conf.HiveConf.ConfVars; +import org.apache.hadoop.hive.ql.QueryPlan; import org.apache.hadoop.hive.ql.session.SessionState; import org.apache.hadoop.util.ReflectionUtils; @@ -121,4 +122,13 @@ return duration; } + + /** + * Call this function at the end of processing a query (any time after the last call to PerfLogEnd + * for a given query) to run any cleanup/final steps that need to be run + * @param _log + */ + public void finishPerfLogger(Log _log, QueryPlan queryPlan) { + + } } Index: ql/src/java/org/apache/hadoop/hive/ql/Driver.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/Driver.java (revision 1173881) +++ ql/src/java/org/apache/hadoop/hive/ql/Driver.java (working copy) @@ -68,8 +68,8 @@ import org.apache.hadoop.hive.ql.lockmgr.HiveLockMode; import org.apache.hadoop.hive.ql.lockmgr.HiveLockObj; import org.apache.hadoop.hive.ql.lockmgr.HiveLockObject; +import org.apache.hadoop.hive.ql.lockmgr.LockException; import org.apache.hadoop.hive.ql.lockmgr.HiveLockObject.HiveLockObjectData; -import org.apache.hadoop.hive.ql.lockmgr.LockException; import org.apache.hadoop.hive.ql.log.PerfLogger; import org.apache.hadoop.hive.ql.metadata.AuthorizationException; import org.apache.hadoop.hive.ql.metadata.DummyPartition; @@ -952,6 +952,7 @@ //if needRequireLock is false, the release here will do nothing because there is no lock releaseLocks(ctx.getHiveLocks()); + PerfLogger.getPerfLogger().finishPerfLogger(LOG, plan); return new CommandProcessorResponse(ret); }