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

Sam Whittle commented on BEAM-12203:
------------------------------------

Realized that this could further be simplified by just instructing grpc to use 
the desired executor and we can execute requests inline to the observer.

The previous path involved several thread switches:
grpc executor -> direct observer which queued -> thread reading queue, queues 
on executor -> executor runs request
or even worse if the buffering observer was enabled
grpc executor -> buffering observer queues -> buffering observer pulling thread 
pulls from buffer queues on unbounded buffer -> thread reads queue, queues on 
executor -> executor runs request

> Reduce thread context switches in BeamFnControlClient
> -----------------------------------------------------
>
>                 Key: BEAM-12203
>                 URL: https://issues.apache.org/jira/browse/BEAM-12203
>             Project: Beam
>          Issue Type: Bug
>          Components: sdk-java-harness
>            Reporter: Sam Whittle
>            Assignee: Sam Whittle
>            Priority: P2
>          Time Spent: 0.5h
>  Remaining Estimate: 0h
>
> This class has a grpc observer that queues recieved messages on a 
> LinkedBlockingQueue and then has a separate thread pulling from the the queue 
> to add to an executor.
> Instead we could just add directly to the executor from the grpc stream, as 
> the executor by default has an unbounded queue size (and there are comments 
> indicating that a limited size executor can cause deadlocks otherwise)



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to