@VisibleForTesting
  InternalCompletionListener createInternalCompletionListener(TaskWrapper taskWrapper) {
    return new InternalCompletionListener(taskWrapper);
  }
Victim Task (A) should be preempted in favor of a candidate Task (B) when:
   1. A is NOT on the same Vertex as B AND
     1.1. B is a Guaranteed Task while A is not OR
     1.2. Both are guaranteed but A is not finishable and B is
To make sure that Victim task is not behind some upstream updates (asynchronous),
we check its sources' state (by QueryFragmentInfo.canFinish method)
@param candidate Task
@param victim Task
@return True when victim should be preempted in favor of candidate Task
llap-server/src/java/org/apache/hadoop/hive/llap/daemon/impl/TaskExecutorService.java