diff --git a/llap-server/src/java/org/apache/hadoop/hive/llap/daemon/impl/TaskExecutorService.java b/llap-server/src/java/org/apache/hadoop/hive/llap/daemon/impl/TaskExecutorService.java index 599c759..09c8c39 100644 --- a/llap-server/src/java/org/apache/hadoop/hive/llap/daemon/impl/TaskExecutorService.java +++ b/llap-server/src/java/org/apache/hadoop/hive/llap/daemon/impl/TaskExecutorService.java @@ -135,7 +135,7 @@ public void run() { // TODO: Event notifications that change canFinish state should notify waitLock synchronized (waitLock) { // KKK Is this a tight loop when there's only finishable tasks available ? - if (!task.canFinish() && numSlotsAvailable.get() == 0) { + if (!task.canFinish() || numSlotsAvailable.get() == 0) { waitLock.wait(); // Another task at a higher priority may have come in during the wait. Lookup the // queue again to pick up the task at the highest priority. diff --git a/llap-server/src/test/org/apache/hadoop/hive/llap/daemon/impl/TestTaskExecutorService.java b/llap-server/src/test/org/apache/hadoop/hive/llap/daemon/impl/TestTaskExecutorService.java index f0e53a7..e387ce4 100644 --- a/llap-server/src/test/org/apache/hadoop/hive/llap/daemon/impl/TestTaskExecutorService.java +++ b/llap-server/src/test/org/apache/hadoop/hive/llap/daemon/impl/TestTaskExecutorService.java @@ -60,7 +60,7 @@ public MockRequest(LlapDaemonProtocolProtos.SubmitWorkRequestProto requestProto, @Override protected TaskRunner2Result callInternal() { - System.out.println(requestId + " is executing.."); + System.out.println(super.toString() + " is executing.."); try { Thread.sleep(workTime); } catch (InterruptedException e) {