[
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.
!image-2026-06-12-02-08-15-099.png|width=623,height=451!
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() 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.
> 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
>
> Attachments: image-2026-06-12-02-08-15-099.png
>
>
> 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.
>
> !image-2026-06-12-02-08-15-099.png|width=623,height=451!
--
This message was sent by Atlassian Jira
(v8.20.10#820010)