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

Luke Cwik commented on BEAM-6111:
---------------------------------

By default, gRPC provides outbound stream observers that aren't thread safe 
(for perf reasons) and expects people interacting with them to make them thread 
safe. The issue seems to be that GrpcStateService assumes that the outbound 
stream observer is thread safe but by default it is not.

In addition to what you have added, we should also make the GrpcStateService 
take in an OutboundObserverFactory that allows the person constructing it to 
choose whether they want a "buffered and thread safe outbound observer" or a 
"non thread safe (aka direct)" observer and then the GrpcStateService will 
provide the necessary hooks for allowing runners to choose whether state 
requests are handled in parallel or not.

> org.apache.beam.runners.flink.PortableTimersExecutionTest is very flakey 
> 40/50 runs failed
> ------------------------------------------------------------------------------------------
>
>                 Key: BEAM-6111
>                 URL: https://issues.apache.org/jira/browse/BEAM-6111
>             Project: Beam
>          Issue Type: Bug
>          Components: runner-flink
>            Reporter: Alex Amato
>            Assignee: Maximilian Michels
>            Priority: Major
>              Labels: flake
>          Time Spent: 40m
>  Remaining Estimate: 0h
>
> I ran this test 50 on master and it failed about 40/50 runs. I have also seen 
> this failing in jenkins presubmit.
> build scan links from java presubmit
> https://builds.apache.org/job/beam_PreCommit_Java_Commit/2654/
> build scan links when I ran locally:
> [https://scans.gradle.com/s/hzu3bojfdbd5s]
> [https://scans.gradle.com/s/txhyj6acebkko]
> [https://scans.gradle.com/s/nhju5jthjbdds]
> org.junit.runners.model.TestTimedOutException: test timed out after 60000 
> milliseconds
> at java.lang.ClassLoader.findBootstrapClass(Native Method)
> at java.lang.ClassLoader.findBootstrapClassOrNull(ClassLoader.java:1015)
> at java.lang.ClassLoader.loadClass(ClassLoader.java:413)
> at java.lang.ClassLoader.loadClass(ClassLoader.java:411)
> at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:339)
> at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
> at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:13)
> at org.junit.Assert.assertThat(Assert.java:956)
> at org.junit.Assert.assertThat(Assert.java:923)
> at 
> org.apache.beam.runners.flink.PortableTimersExecutionTest.testTimerExecution(PortableTimersExecutionTest.java:191)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:498)
> at 
> org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
> at 
> org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
> at 
> org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
> at 
> org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
> at 
> org.junit.internal.runners.statements.FailOnTimeout$CallableStatement.call(FailOnTimeout.java:298)
> at 
> org.junit.internal.runners.statements.FailOnTimeout$CallableStatement.call(FailOnTimeout.java:292)
> at java.util.concurrent.FutureTask.run(FutureTask.java:266)
> at java.lang.Thread.run(Thread.java:748)



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to