You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@flink.apache.org by "Piotr Nowojski (JIRA)" <ji...@apache.org> on 2019/01/23 17:34:00 UTC
[jira] [Commented] (FLINK-11397) Speed up initialization of
AbstractStreamOperatorTestHarness
[ https://issues.apache.org/jira/browse/FLINK-11397?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16750256#comment-16750256 ]
Piotr Nowojski commented on FLINK-11397:
----------------------------------------
[~Tison] thanks for reporting the issue. Can you tell how have you investigated it? Don't get me wrong, I'm a big opponent of using mockito for things like that and it would be very valuable on it's own to replace this {{mockTask = mock(StreamTask.class)}} with a proper mock or some dummy implementation, but I couldn't fully reproduce your findings.
I wrote a simple micro benchmark for both {{mock(StreamTask.class)}} and {{new OneInputStreamOperatorTestHarness()}} constructor and it seemed like first one takes under 0.01ms to completed. Second one is significantly slower, somewhere between 0.1 and 1ms, but I couldn't get the more precise number nor I couldn't investigate/profile the code what's taking so much time because apparently {{new OneInputStreamOperatorTestHarness()}} is leaking some resources and I was getting:
{code:java}
java.lang.OutOfMemoryError: unable to create new native thread
at java.lang.Thread.start0(Native Method)
at java.lang.Thread.start(Thread.java:717)
at org.apache.flink.runtime.io.disk.iomanager.IOManagerAsync.<init>(IOManagerAsync.java:88)
at org.apache.flink.runtime.io.disk.iomanager.IOManagerAsync.<init>(IOManagerAsync.java:69)
at org.apache.flink.runtime.io.disk.iomanager.IOManagerAsync.<init>(IOManagerAsync.java:60)
at org.apache.flink.runtime.operators.testutils.MockEnvironment.<init>(MockEnvironment.java:144)
at org.apache.flink.runtime.operators.testutils.MockEnvironmentBuilder.build(MockEnvironmentBuilder.java:126)
at org.apache.flink.streaming.util.AbstractStreamOperatorTestHarness.<init>(AbstractStreamOperatorTestHarness.java:164)
at org.apache.flink.streaming.util.OneInputStreamOperatorTestHarness.<init>(OneInputStreamOperatorTestHarness.java:92)
at org.apache.flink.streaming.util.OneInputStreamOperatorTestHarness.<init>(OneInputStreamOperatorTestHarness.java:83)
at org.apache.flink.streaming.util.OneInputStreamOperatorTestHarness.<init>(OneInputStreamOperatorTestHarness.java:75)
{code}
Regardless of that, 1ms is still pretty far away from "a few seconds".
But as I wrote above - even ignoring the speed up I would more then happy to review/merge the code that gets rid of this mockito mock :)
> Speed up initialization of AbstractStreamOperatorTestHarness
> ------------------------------------------------------------
>
> Key: FLINK-11397
> URL: https://issues.apache.org/jira/browse/FLINK-11397
> Project: Flink
> Issue Type: Improvement
> Components: Tests
> Affects Versions: 1.8.0
> Reporter: TisonKun
> Priority: Major
>
> Currently Kafka connector tests are unbearably slow, which is tracked by FLINK-10603. With investigation, the construction and initialization of {{AbstractStreamOperatorTestHarness}} is quite slow.
> When walk down the code, it amazed me that {{mockTask = mock(StreamTask.class);}} cost a few of second to finish. If we can introduce a test class instead of mock framework, the situation might be loosen.
> cc [~Zentol] [~pnowojski]
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)