I don't think there are any metrics; logging-wise you will need to do some detective work.

We do know which tasks have started deployment by this message from the JobManager: ExecutionGraph [] - <task_name> (<subtask_index>/<parallelism>) (<task_id>) switched from SCHEDULED to DEPLOYING.

We also know which have completed deployment by this message from the JobManager: ExecutionGraph [] - <task_name> (<subtask_index>/<parallelism>) (<task_id>) switched from DEPLOYING to RUNNING.

So what I would do is pick the task that failed with the PartitionNotFoundException, then figure out from the application from which tasks it consumes data, then check which of these have not finished deployment.



On 19/08/2021 22:34, Colletta, Edward wrote:

Thanks you.   I am going to try the first option for now, but I do need to figure out why deployment takes so long.

Are there any metrics or log patterns that would indicate which task is waiting and which task is being waited on?

*From:*Chesnay Schepler <ches...@apache.org>
*Sent:* Thursday, August 19, 2021 2:23 PM
*To:* Colletta, Edward <edward.colle...@fmr.com>; user@flink.apache.org
*Subject:* Re: failures during job start

*NOTICE: This email is from an external sender - **do not click on links or attachments unless you recognize the sender and know the content is safe. ***

This exception means that a task was deployed, but the task that produces the data it wants to consume was not available yet (even after waiting for a while).

Your case sounds similar to https://issues.apache.org/jira/browse/FLINK-9413 <https://issues.apache.org/jira/browse/FLINK-9413>, where this happens because the deployment of the producing task takes too long.

You have 2 options to solve this:

a) Have Flink wait longer for the partition to be created by increasing taskmanager.network.request-backoff.max

b) Speed up the deployment; for this you'd naturally have to investigate why the deployment takes so long in the first place.

On 19/08/2021 07:15, Colletta, Edward wrote:

    Any help with this would be appreciated.   Is it possible that
    this is a data/application issue or a flink config/resource issue?

    Using flink 11.2, java 11, session cluster, 5 nodes 32 cores each
    node.

    I have an issue where starting a job takes a long time, and
    sometimes fails with PartitionNotFoundException, but succeeds on
    restart.   The job has 10 kafka sources (10 partitions for each
    topic) and parallelism 5.

    The failure does not happen when the kafka logs are empty.

    Note during below scenario, cpu usage on task manager and job
    managers is low (below 30%)

    The scenario we see

     1. run request to load and run a jar, job appears on dashboard
        with all 160 subtasks in Deploying state
     2. after 2 minutes some subtasks start transitioning to running.
     3. after another 30 seconds failure occurs and job goes into
        Restarting state
     4. after another minute, restart completes all nodes running.

    Exception history shows

    2021-08-15 07:55:02

    org.apache.flink.runtime.io.network.partition.PartitionNotFoundException:
    Partition
    205a0867c6ef540009acd962d556f981#0@a6b547c5096f3c33eb9059cfe767a2ec
    not found.

    at
    
org.apache.flink.runtime.io.network.partition.consumer.RemoteInputChannel.failPartitionRequest(RemoteInputChannel.java:267)

    at
    
org.apache.flink.runtime.io.network.partition.consumer.RemoteInputChannel.retriggerSubpartitionRequest(RemoteInputChannel.java:166)

    at
    
org.apache.flink.runtime.io.network.partition.consumer.SingleInputGate.retriggerPartitionRequest(SingleInputGate.java:521)

    at
    
org.apache.flink.runtime.io.network.partition.consumer.SingleInputGate.lambda$triggerPartitionStateCheck$1(SingleInputGate.java:765)

    at
    
java.base/java.util.concurrent.CompletableFuture$UniAccept.tryFire(CompletableFuture.java:714)

    at
    
java.base/java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:478)

    at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:40)

    at
    
akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(ForkJoinExecutorConfigurator.scala:44)

    at akka.dispatch.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)

    at
    
akka.dispatch.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)

    at
    akka.dispatch.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)

       at
    
akka.dispatch.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)


Reply via email to