Panagiotis Garefalakis created HIVE-25049:
---------------------------------------------

             Summary: LlapDaemon preemption should not be triggered for same 
Vertex tasks
                 Key: HIVE-25049
                 URL: https://issues.apache.org/jira/browse/HIVE-25049
             Project: Hive
          Issue Type: Sub-task
            Reporter: Panagiotis Garefalakis
            Assignee: Panagiotis Garefalakis


Due to the asynchronous nature of QueryInfo$FinishableState notification, we 
usually end up receiving finishable state updates across tasks/queryfragments 
with some time difference.

Imagine vertex Map8 with dependency on Map7.
If Map8 vertex is already running with some tasks still pending, we can end-up 
in a situation where on Map7 completion, some of the pending Map8 tasks are 
getting the finishable state update BEFORE the already running Map8 tasks, 
ending up preempting tasks for no reason!


{code:java}
2021-04-22T15:30:45.124Z source:Map 7 updated, notifying: [Map 8] 

2021-04-22T15:30:45.125Z query-executor-0 class="impl.TaskExecutorService" 
level="INFO" thread="IPC Server handler 3 on 25000"] vertex: Map 8 Received 
finishable state update for attempt_1619105382691_0001_1_05_000014_0, state=true
2021-04-22T15:30:45.125Z query-executor-0 
class="impl.QueryInfo$FinishableStateTracker" level="INFO" thread="IPC Server 
handler 3 on 25000"] Now notifying: Map 8
2021-04-22T15:30:45.125Z query-executor-0 class="impl.TaskExecutorService" 
level="INFO" thread="Wait-Queue-Scheduler-0"] Attempting to execute 
TaskWrapper{task=attempt_1619105382691_0001_1_05_000014_0, Vertex=Map 8, 
inWaitQueue=true, inPreemptionQueue=false, registeredForNotifications=true, 
canFinish=true, canFinish(in


 2021-04-22T15:30:45.126Z query-executor-0 class="impl.TaskExecutorService" 
level="INFO" thread="Wait-Queue-Scheduler-0"] Task 
TaskWrapper{task=attempt_1619105382691_0001_1_05_000014_0, Vertex=Map 8, 
inWaitQueue=true, inPreemptionQueue=false, registeredForNotifications=true, 
canFinish=true, canFinish(in queue)=true, isGuaranteed=false, 
firstAttemptStartTime=1619105437749, dagStartTime=1619105422608, 
withinDagPriority=74, vertexParallelism= 232, selfAndUpstreamParallelism= 256, 
selfAndUpstreamComplete= 17} managed to preempt task 
TaskWrapper{task=attempt_1619105382691_0001_1_05_000006_0, Vertex=Map 8, 
inWaitQueue=false, inPreemptionQueue=true, registeredForNotifications=true, 
canFinish=true, canFinish(in queue)=false, isGuaranteed=false, 
firstAttemptStartTime=1619105437737, dagStartTime=1619105422608, 
withinDagPriority=74, vertexParallelism= 232, selfAndUpstreamParallelism= 256, 
selfAndUpstreamComplete= 15}

 2021-04-22T15:30:45.126Z query-executor-0 class="impl.TaskExecutorService" 
level="INFO" thread="Wait-Queue-Scheduler-0"] Invoking kill task for 
attempt_1619105382691_0001_1_05_000006_0 due to pre-emption to run 
attempt_1619105382691_0001_1_05_000014_0
 2021-04-22T15:30:45.126Z query-executor-0 
class="impl.QueryInfo$FinishableStateTracker" level="INFO" thread="IPC Server 
handler 3 on 25000"] Now notifying: Map 8
 2021-04-22T15:30:45.126Z query-executor-0 class="impl.TaskExecutorService" 
level="INFO" thread="IPC Server handler 3 on 25000"] vertex: Map 8 Received 
finishable state update for attempt_1619105382691_0001_1_05_000011_0, state=true
 2021-04-22T15:30:45.127Z query-executor-0 class="impl.TaskRunnerCallable" 
level="INFO" thread="Wait-Queue-Scheduler-0"] Kill task requested for 
id=attempt_1619105382691_0001_1_05_000006_0, taskRunnerSetup=true
 2021-04-22T15:30:45.127Z query-executor-0 class="impl.TaskRunnerCallable" 
level="INFO" thread="Wait-Queue-Scheduler-0"] Issuing kill to task 
attempt_1619105382691_0001_1_05_000006_0
 2021-04-22T15:30:45.127Z query-executor-0 
class="impl.QueryInfo$FinishableStateTracker" level="INFO" thread="IPC Server 
handler 3 on 25000"] Now notifying: Map 8
 2021-04-22T15:30:45.127Z query-executor-0 class="task.TezTaskRunner2" 
level="INFO" thread="Wait-Queue-Scheduler-0"] Attempting to abort 
attempt_1619105382691_0001_1_05_000006_0 due to an invocation of killTask
 2021-04-22T15:30:45.128Z query-executor-0 class="tez.TezProcessor" 
level="INFO" thread="Wait-Queue-Scheduler-0"] Received abort
 2021-04-22T15:30:45.128Z query-executor-0 class="tez.TezProcessor" 
level="INFO" thread="Wait-Queue-Scheduler-0"] Forwarding abort to 
RecordProcessor
 2021-04-22T15:30:45.128Z query-executor-0 
class="runtime.LogicalIOProcessorRuntimeTask" dagId="dag_1619105382691_0001_1" 
fragmentId="1619105382691_0001_1_05_000011_0" level="INFO" 
queryId="hive_20210422153013_397b96bf-d5a6-493a-9c51-9446f64eeed4" 
thread="TezTR-382691_1_1_5_11_0"] Waiting for 1 initializers to finish
 2021-04-22T15:30:45.128Z query-executor-0 class="tez.MapRecordProcessor" 
level="INFO" thread="Wait-Queue-Scheduler-0"] Forwarding abort to mapOp: {} MAP
 2021-04-22T15:30:45.128Z query-executor-0 class="vector.VectorMapOperator" 
level="INFO" thread="Wait-Queue-Scheduler-0"] Received abort in operator: MAP
 2021-04-22T15:30:45.128Z query-executor-0 class="impl.TaskRunnerCallable" 
level="INFO" thread="Wait-Queue-Scheduler-0"] Kill request for task 
attempt_1619105382691_0001_1_05_000006_0 completed. Informing AM

 2021-04-22T15:30:45.128Z query-executor-0 class="impl.TaskExecutorService" 
level="INFO" thread="IPC Server handler 3 on 25000"] vertex: Map 8 Received 
finishable state update for attempt_1619105382691_0001_1_05_000006_0, state=true
{code}





--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to