You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@beam.apache.org by "Thomas Weise (JIRA)" <ji...@apache.org> on 2017/11/27 23:12:00 UTC

[jira] [Commented] (BEAM-3261) Apex runner does not detect pipeline failure

    [ https://issues.apache.org/jira/browse/BEAM-3261?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16267763#comment-16267763 ] 

Thomas Weise commented on BEAM-3261:
------------------------------------

Yes, the test runner does not check that all assertions have succeeded. Also, if any other error occurs, the pipeline does not "succeed", it will be stuck in retry. The test runner caps the maximum execution time, and that may lead to false positive.


> Apex runner does not detect pipeline failure
> --------------------------------------------
>
>                 Key: BEAM-3261
>                 URL: https://issues.apache.org/jira/browse/BEAM-3261
>             Project: Beam
>          Issue Type: Bug
>          Components: runner-apex
>            Reporter: Eugene Kirpichov
>            Assignee: Thomas Weise
>            Priority: Blocker
>
> I was looking at https://github.com/apache/beam/pull/4074/files and asked myself "Don't we already have a ValidatesRunner test for this?"
> Turns out we do: https://github.com/apache/beam/blob/3b79b6298e84711528b5ad1302200cb8acbac07e/sdks/java/core/src/test/java/org/apache/beam/sdk/transforms/ViewTest.java#L793
> I ran this test with TestApexRunner, and I observed the same exception as in https://stackoverflow.com/questions/46982827/error-when-using-side-input-withsideinputs-method-not-accepting-kv-type-as-inp?noredirect=1#comment81040223_46982827 , however the test passed.
> It seems that it is passing because ApexRunnerResult.waitUntilFinish() detects only PAssert assertion errors, but not any other errors: https://github.com/apache/beam/blob/3b79b6298e84711528b5ad1302200cb8acbac07e/runners/apex/src/main/java/org/apache/beam/runners/apex/ApexRunnerResult.java#L62
> This seems very problematic, as it means that 1) the status of Apex ValidatesRunner tests cannot be trusted: if they fail in any other way other than a PAssert error, the failure will be undetected, and 2) in general, a user can not trust a successful pipeline.run() from Apex runner.
> For tests in particular, some other TestXRunner's guard against such a failure mode by verifying not only that there were no assertion failures, but also that all assertions succeeded - using metrics: e.g. https://github.com/apache/beam/blob/3b79b6298e84711528b5ad1302200cb8acbac07e/runners/google-cloud-dataflow-java/src/main/java/org/apache/beam/runners/dataflow/TestDataflowRunner.java#L248 . Fixing this would be optimal, but meanwhile, the runner should at least fail the pipeline in case of error.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)