private void processTaskPreemption(TaskInfo taskInfo) {
      if (shouldAttemptTask(taskInfo) && tryTaskPreemption(taskInfo)) {
        trySchedulingPendingTasks();
      }
      // Enables scheduler to reAdd task in Queue if needed
      taskInfo.setInHighPriorityQueue(false);
    }
Go through the running tasks Tree in descending priority and find a candidate to preempt. The candidate should be:
1. lower priority than forTask
2. below forTask in the DAG
3. not considered already for preemption
A successful candidate is added to the preemptionCandidates queue for preemption by the scheduling loop.
@param runningTasks Tree of running tasks
@param forTask Task to find preemption candidate for
@param preemptHosts Hosts preference
@return true when preemption candidate is found
llap-tez/src/java/org/apache/hadoop/hive/llap/tezplugins/LlapTaskSchedulerService.java