[
https://issues.apache.org/jira/browse/BEAM-1712?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15923650#comment-15923650
]
Stas Levin edited comment on BEAM-1712 at 3/14/17 6:20 AM:
-----------------------------------------------------------
[A related
discussion|https://lists.apache.org/thread.html/abe8b48dfc9e1420b2cdcd6d74f136ab622c170c707751a182027163@%3Cdev.beam.apache.org%3E]
circulated on the dev-list some months ago.
Basically, I believe there isn't a consensus at the moment, as to whose
responsibility it is to call {{waitUntilFinish()}}, if at all.
I believe this issue is related to
[BEAM-849|https://issues.apache.org/jira/browse/BEAM-849] and while I'm not
sure it's a pre-requisite, it sounds like reaching a point where we're happy
with the {{PipelineResult}} API would involve figuring out if and when
{{waitUntilFinish()}} is to be called by clients (including {{TestPipeline}}
and the likes).
The [recent
thread|https://lists.apache.org/thread.html/86831496a08fe148e3b982cdb904f828f262c0b571543a9fed7b915d@%3Cdev.beam.apache.org%3E]
by [~jkff] brings up some good points, and hopefully can be used to make
progress here.
was (Author: staslev):
[A related
discussion|https://lists.apache.org/thread.html/abe8b48dfc9e1420b2cdcd6d74f136ab622c170c707751a182027163@%3Cdev.beam.apache.org%3E]
circulated on the dev-list some months ago.
Basically, I believe there isn't a consensus at the moment, as to whose
responsibility it is to call {{waitUntilFinish}}, if at all.
I believe this issue is related to
[BEAM-849|https://issues.apache.org/jira/browse/BEAM-849] and while I'm not
sure it's a pre-requisite, it sounds like reaching a point where we're happy
with the {{PipelineResult}} API would involve figuring out if and when
{{waitUntilFinish}} is to be called by clients (including {{TestPipeline}} and
the likes).
The [recent
thread|https://lists.apache.org/thread.html/86831496a08fe148e3b982cdb904f828f262c0b571543a9fed7b915d@%3Cdev.beam.apache.org%3E]
by [~jkff] brings up some good points, and hopefully can be used to make
progress here.
> TestPipeline.run doesn't actually waitUntilFinish
> -------------------------------------------------
>
> Key: BEAM-1712
> URL: https://issues.apache.org/jira/browse/BEAM-1712
> Project: Beam
> Issue Type: Bug
> Components: runner-flink, sdk-java-core, testing
> Reporter: Eugene Kirpichov
> Assignee: Stas Levin
>
> 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.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)