[
https://issues.apache.org/jira/browse/FLINK-12926?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Zhu Zhu updated FLINK-12926:
----------------------------
Description:
Currently all JM side job changing actions are expected to be taken in
JobMaster main thread.
In current Flink tests, many cases tend to use the test main thread as the JM
main thread. This can lead to 2 issues:
1. TestingComponentMainThreadExecutorServiceAdapter is a direct executor, so if
it is invoked from any other thread, it will break the main thread checking and
fail the submitted action (as in the attached log [^mainThreadCheckFailure.log])
2. The test main thread does not support other actions queued in its executor,
as the test will end once the current test thread action(the current running
test body) is done
In my observation, most cases which starts
ExecutionGraph.scheduleForExecution() will encounter this issue. Cases include
ExecutionGraphRestartTest, FailoverRegionTest,
ConcurrentFailoverStrategyExecutionGraphTest, GlobalModVersionTest,
ExecutionGraphDeploymentTest, etc.
One solution in my mind is to create a ScheduledExecutorService for those
tests, use it as the main thread and run the test body in this thread.
was:
Currently all JM side job changing actions are expected to be taken in
JobMaster main thread.
In current Flink tests, many cases tend to use the test main thread as the JM
main thread. This can lead to 2 issues:
1. TestingComponentMainThreadExecutorServiceAdapter is a direct executor, so if
it is invoked from any other thread, it will break the main thread checking and
fail the submitted action (as in the attached log [^mainThreadCheckFailure.log])
2. The test main thread does not support other actions queued in its executor,
as the test will end once the current test thread action(the current running
test body) is done
In my observation, most cases which starts
ExecutionGraph.scheduleForExecution() will encounter this issue. Cases include
ExecutionGraphRestartTest, FailoverRegionTest,
ConcurrentFailoverStrategyExecutionGraphTest, GlobalModVersionTest,
ExecutionGraphDeploymentTest, etc.
One solution in my mind is to create a ScheduledExecutorService for those
tests, use it as the main thread and run the test body in this thread.
> Main thread checking in some tests fails
> ----------------------------------------
>
> Key: FLINK-12926
> URL: https://issues.apache.org/jira/browse/FLINK-12926
> Project: Flink
> Issue Type: Bug
> Components: Runtime / Coordination
> Affects Versions: 1.9.0
> Reporter: Zhu Zhu
> Priority: Minor
> Attachments: mainThreadCheckFailure.log
>
>
> Currently all JM side job changing actions are expected to be taken in
> JobMaster main thread.
> In current Flink tests, many cases tend to use the test main thread as the JM
> main thread. This can lead to 2 issues:
> 1. TestingComponentMainThreadExecutorServiceAdapter is a direct executor, so
> if it is invoked from any other thread, it will break the main thread
> checking and fail the submitted action (as in the attached log
> [^mainThreadCheckFailure.log])
> 2. The test main thread does not support other actions queued in its
> executor, as the test will end once the current test thread action(the
> current running test body) is done
>
> In my observation, most cases which starts
> ExecutionGraph.scheduleForExecution() will encounter this issue. Cases
> include ExecutionGraphRestartTest, FailoverRegionTest,
> ConcurrentFailoverStrategyExecutionGraphTest, GlobalModVersionTest,
> ExecutionGraphDeploymentTest, etc.
>
> One solution in my mind is to create a ScheduledExecutorService for those
> tests, use it as the main thread and run the test body in this thread.
>
>
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)