diff --git ql/src/java/org/apache/hadoop/hive/ql/lockmgr/DbTxnManager.java ql/src/java/org/apache/hadoop/hive/ql/lockmgr/DbTxnManager.java index 867e445..3a426e3 100644 --- ql/src/java/org/apache/hadoop/hive/ql/lockmgr/DbTxnManager.java +++ ql/src/java/org/apache/hadoop/hive/ql/lockmgr/DbTxnManager.java @@ -352,9 +352,13 @@ private static Table getTable(WriteEntity we) { */ @VisibleForTesting void acquireLocksWithHeartbeatDelay(QueryPlan plan, Context ctx, String username, long delay) throws LockException { + if (isTxnOpen()) { + ctx.setHeartbeater(startHeartbeat(delay)); // we unconditionally schedule heartbeat for queries requiring txns and R/O queries + } LockState ls = acquireLocks(plan, ctx, username, true); - if (ls != null) { // If there's no lock, we don't need to do heartbeat - ctx.setHeartbeater(startHeartbeat(delay)); + if (ls != null) { // For queries that don't require locks, we don't need heartbeat + stopHeartbeat(); + ctx.setHeartbeater(null); } }