[ 
https://issues.apache.org/jira/browse/FLINK-39914?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Chanhae Oh updated FLINK-39914:
-------------------------------
    Description: 
Execution.deploy() now creates TaskDeploymentDescriptor asynchronously, which 
means the IO executor thread calls jobMasterMainThreadExecutor.execute() to 
hand off the work.

 The problem is that forMainThread() captures the calling thread at the time of 
its creation and asserts inside execute() that only that same thread can call 
it.

Since the IO executor thread calls execute() instead, the assertion fires and 
throws an AssertionError. This error then bubbles up through the 
CompletableFuture chain, flipping the producer vertex into FAILED state, which 
causes an IllegalStateException when the consumer vertex tries to read from it.

  was:
Execution.deploy() now creates TaskDeploymentDescriptor asynchronously, which 
means the IO executor thread calls jobMasterMainThreadExecutor.execute() to 
hand off the work.

The problem is that forMainThread() has an assertion inside execute() that 
checks whether the caller is the test thread — and since it's being called from 
the IO executor thread instead, this assertion fires and throws an 
AssertionError.

This error then bubbles up through the CompletableFuture chain, flipping the 
producer vertex into FAILED state, which causes an IllegalStateException when 
the consumer vertex tries to read from it.


> Fix flaky TaskDeploymentDescriptorFactoryTest#testHybridVertexFinish caused 
> by async TDD creation
> -------------------------------------------------------------------------------------------------
>
>                 Key: FLINK-39914
>                 URL: https://issues.apache.org/jira/browse/FLINK-39914
>             Project: Flink
>          Issue Type: Bug
>          Components: Runtime / Task
>    Affects Versions: 2.3.0
>            Reporter: Chanhae Oh
>            Priority: Minor
>             Fix For: 2.3.0
>
>
> Execution.deploy() now creates TaskDeploymentDescriptor asynchronously, which 
> means the IO executor thread calls jobMasterMainThreadExecutor.execute() to 
> hand off the work.
>  The problem is that forMainThread() captures the calling thread at the time 
> of its creation and asserts inside execute() that only that same thread can 
> call it.
> Since the IO executor thread calls execute() instead, the assertion fires and 
> throws an AssertionError. This error then bubbles up through the 
> CompletableFuture chain, flipping the producer vertex into FAILED state, 
> which causes an IllegalStateException when the consumer vertex tries to read 
> from it.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to