[ https://issues.apache.org/jira/browse/FLINK-12926?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16884811#comment-16884811 ]
Zhu Zhu commented on FLINK-12926: --------------------------------- Yes. For the issue 2 listed above, this fix can be help to find out current violated cases and avoid future misuse of ComponentMainThreadExecutorServiceAdapter(TestingComponentMainThreadExecutorServiceAdapter is merged with ComponentMainThreadExecutorServiceAdapter in a late PR). > 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, Tests > Affects Versions: 1.9.0 > Reporter: Zhu Zhu > Priority: Major > Attachments: Execution#deploy.jpg, 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.14#76016)