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

Ismaël Mejía commented on BEAM-3409:
------------------------------------

For some extra context Alexey found this one with a test that was failing 
because the teardown part of the DoFn took a long time but the thread execution 
on TestPipeline was finishing before completion. I tested this with other 
TestPipelines e.g.TestSparkPipeline and TestFlinkPipeline and it worked ok, so 
I suppose this is probably closer to the direct runner and junit thread 
creation/finalization.
We are a bit surprised of this behavior but it could be easily a source for 
other flaky tests.

> Unexpected behavior of DoFn teardown method running in unit tests 
> ------------------------------------------------------------------
>
>                 Key: BEAM-3409
>                 URL: https://issues.apache.org/jira/browse/BEAM-3409
>             Project: Beam
>          Issue Type: Bug
>          Components: runner-direct, testing
>    Affects Versions: 2.3.0
>            Reporter: Alexey Romanenko
>            Assignee: Thomas Groh
>            Priority: Minor
>              Labels: test
>
> Writing a unit test, I found out a strange behaviour of Teardown method of 
> DoFn implementation when I run this method in unit tests using TestPipeline.
> To be more precise, it doesn’t wait until teardown() method will be finished, 
> it just exits from this method after about 1 sec (on my machine) even if it 
> should take longer (very simple example - running infinite loop inside this 
> method or put thread in sleep). In the same time, when I run the same code 
> from main() with ordinary Pipeline and direct runner, then it’s ok and it 
> works as expected - teardown() method will be performed completely despite 
> how much time it will take.
> I created two test cases to reproduce this issue - the first one to run with 
> main() and the second one to run with junit. They use the same implementation 
> of DoFn (class LongTearDownFn) and expects that teardown method will be 
> running at least for SLEEP_TIME ms. In case of running as junit test it's not 
> a case (see output log).
> - run with main()
> https://github.com/aromanenko-dev/beam-samples/blob/master/runners-tests/src/main/java/TearDown.java
> - run with junit
> https://github.com/aromanenko-dev/beam-samples/blob/master/runners-tests/src/test/java/TearDownTest.java



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

Reply via email to