[ https://issues.apache.org/jira/browse/BEAM-1777?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15936232#comment-15936232 ]
Stas Levin commented on BEAM-1777: ---------------------------------- I wonder if this can be resolved by removing the {{finally}} around {{enforcement.get().afterPipelineExecution()}}. At first glance, if {{Pipeline#run()}} fails there's little point in moving on to checking enforcements and the likes. > If PipelineEnforcement throws an exception after Pipeline.run() fails, it > overwrites the original failure > --------------------------------------------------------------------------------------------------------- > > Key: BEAM-1777 > URL: https://issues.apache.org/jira/browse/BEAM-1777 > Project: Beam > Issue Type: Bug > Components: sdk-java-core > Reporter: Thomas Groh > Assignee: Stas Levin > > The exception is thrown out of the finally block after the original exception > was already thrown, and is not properly suppressed. > If the Pipeline throws an exception in construction (including validation > failures), this can cause {{AbandonedNodeEnforcement}} to attempt to traverse > a {{Pipeline}} which is invalid, which throws another exception. That > exception is improperly propagated instead of the original failure, which > complicates debugging. > An example is using an unkeyed input PCollection to a Stateful ParDo. The > validation will fail, but the error message will suggest that a node has > incompletely specified outputs (which is a consequence rather than a cause of > having an invalid transform). -- This message was sent by Atlassian JIRA (v6.3.15#6346)