Hi Sanjay,

Thanks for sharing this. I will try using backpressure.

Regards,
Nitish

On Thursday, May 27, 2021 at 10:37:06 PM UTC+5:30 sanjay...@google.com 
wrote:

> Just want to comment on the following :
>
> > I guess bi-di streams required to be used as ping-pong. Therefore, there 
> could be a race condition where client or server's rate of writes is more 
> data read causing out of sync in stream headers.
>
> Have you taken a look at 
> https://github.com/grpc/grpc-java/tree/master/examples/src/main/java/io/grpc/examples/manualflowcontrol
>  
> ? It shows that bi-di processing doesn't have to be ping pong.
>
>
> On Thu, May 27, 2021 at 9:31 AM nitish bhardwaj <bhardwaj...@gmail.com> 
> wrote:
>
>> Hi Eric,
>>
>> Thanks for sharing this information. Unary calls works fine for me. But, 
>> when I switched to streams both client and server side, it starts giving 
>> that error message.
>>
>> I guess bi-di streams required to be used as ping-pong. Therefore, there 
>> could be a race condition where client or server's rate of writes is more 
>> data read causing out of sync in stream headers.
>>
>> Please share your thoughts.
>>
>> Thanks & Regards,
>> Nitish
>>
>> On Thu, 27 May 2021, 11:03 Eric Gribkoff, <ericgr...@google.com> wrote:
>>
>>> Hi,
>>>
>>> It sounds like you are trying to send multiple messages for a unary RPC, 
>>> which results in the "Too many responses" error. The distinction between 
>>> unary-response and server-streaming RPC here is about the semantics of the 
>>> service - namely, how many responses the server can send - and not 
>>> performance. Both unary and streaming RPCs use streams under the hood. It 
>>> sounds like you may have other synchronization challenges with your 
>>> specific service, which would up to your application and not gRPC's stream 
>>> handler to enforce, but you could also consider just changing your RPC 
>>> service definition to specify that the server response will be streaming.
>>>
>>> There was also a somewhat related discussion that you might find helpful 
>>> on this old question on the grpc-java repository: 
>>> https://github.com/grpc/grpc-java/issues/6323
>>>
>>> Thanks,
>>>
>>> Eric
>>>
>>> On Wed, May 26, 2021 at 10:01 PM nitish bhardwaj <bhardwaj...@gmail.com> 
>>> wrote:
>>>
>>>> *NOTE*: The same code works perfectly if I switch streams to normal 
>>>> GRPC calls. 
>>>>
>>>> But, to avoid extra latency, I need to use streams.
>>>>
>>>> On Thursday, May 27, 2021 at 10:25:55 AM UTC+5:30 nitish bhardwaj wrote:
>>>>
>>>>> Hi,
>>>>>
>>>>> I am trying to use bi-directional streams with JAVA. Everything works 
>>>>> as expected in a POC of bi-di stream where I have 1 client and server 
>>>>> which 
>>>>> reads and writes to it.
>>>>>
>>>>> But, it starts to break when I use the same in a mature way.
>>>>>
>>>>> *UseCase:* I am trying to implement gossip using grpc in Java. 
>>>>> Whenever any server receives a request, it gossips to the other 2 servers 
>>>>> using grpc streams. For an instance, I have 4 servers, server1, server2, 
>>>>> server3 and server4. All servers have 1 client configured to connect to 
>>>>> every other server. 
>>>>>
>>>>> whenever any server receives a message, it selects the other two 
>>>>> servers and transmits the message and the other server does the same.
>>>>>
>>>>> *Issue: *As each request would be served in a new thread by grpc, I 
>>>>> get an error 
>>>>> Cancelling the stream with status Status{code=INTERNAL, 
>>>>> description=Too many) responses, cause=null}
>>>>>
>>>>> That's bcz every request is read and write to stream isn't sync as it 
>>>>> might not have got a response from server stream but it has written new 
>>>>> data to it on a new request.
>>>>>
>>>>> What can be done to overcome this problem? 
>>>>>
>>>>> Thanks for the support!!
>>>>>
>>>> -- 
>>>> You received this message because you are subscribed to the Google 
>>>> Groups "grpc.io" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send 
>>>> an email to grpc-io+u...@googlegroups.com.
>>>> To view this discussion on the web visit 
>>>> https://groups.google.com/d/msgid/grpc-io/7fe537c0-ac40-48eb-913c-5c1ad8be066cn%40googlegroups.com
>>>>  
>>>> <https://groups.google.com/d/msgid/grpc-io/7fe537c0-ac40-48eb-913c-5c1ad8be066cn%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>> .
>>>>
>>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "grpc.io" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to grpc-io+u...@googlegroups.com.
>>
> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/grpc-io/CAO-rZtSWWfPRDh2usDbS%2BEuAPAxLXgHNLbdU4H8egDWufUucCA%40mail.gmail.com
>>  
>> <https://groups.google.com/d/msgid/grpc-io/CAO-rZtSWWfPRDh2usDbS%2BEuAPAxLXgHNLbdU4H8egDWufUucCA%40mail.gmail.com?utm_medium=email&utm_source=footer>
>> .
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"grpc.io" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to grpc-io+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/grpc-io/5cb25252-590c-4c9f-8cf0-891004154b29n%40googlegroups.com.

Reply via email to