You are viewing a plain text version of this content. The canonical link for it is here.
Posted to github@beam.apache.org by GitBox <gi...@apache.org> on 2022/06/03 17:26:06 UTC

[GitHub] [beam] kennknowles opened a new issue, #18352: TestPipeline.run should perhaps waitUntilFinish

kennknowles opened a new issue, #18352:
URL: https://github.com/apache/beam/issues/18352

   https://github.com/apache/beam/blob/master/sdks/java/core/src/main/java/org/apache/beam/sdk/testing/TestPipeline.java#L124
   
   it calls waitUntilFinish() only if
   1) run wasn't called
   2) enableAutoRunIfMissing is true.
   
   However in practice both of these are false.
   1) run() is, in most tests, called. So effectively if you call .run() at all, then this thing doesn't call waitUntilFinish().
   2) enableAutoRunIfMissing() is set to true only via TestPipeline.enableAutoRunIfMissing(), which is called only from its own unit test.
   
   This means that, for all tests that use TestPipeline - if the test waits until finish, it's only because of the grace of the particular runner. Which is like really bad.
   
   We're lucky because in practice TestDataflowRunner, TestApexRunner, TestSparkRunner in run() call themselves waitUntilFinish().
   
   However, TestFlinkRunner doesn't - i.e. there currently might be tests that actually fail in Flink runner, undetected.
   
   The proper fix to this is to fix TestPipeline to always waitUntilFinish().
   Currently testing a quick-fix in https://github.com/apache/beam/pull/2240 to make sure Flink is safe.
   
   Imported from Jira [BEAM-1712](https://issues.apache.org/jira/browse/BEAM-1712). Original Jira may contain additional context.
   Reported by: jkff.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: github-unsubscribe@beam.apache.org.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org