So it seems breaking of  TCP connection is detected by a separate thread
than the main thread right?


On Mon, May 6, 2019 at 8:39 PM Eric Anderson <[email protected]> wrote:

> When the TCP connection is detected to be broken, all RPCs on that
> connection are cancelled. This calls context.cancel()
> <https://grpc.github.io/grpc-java/javadoc/io/grpc/Context.CancellableContext.html#cancel-java.lang.Throwable->.
> That immediately does two things: changes the boolean that isCancelled()
> returns and calls/schedules all cancellation listeners (registered via
> addListener()
> <https://grpc.github.io/grpc-java/javadoc/io/grpc/Context.html#addListener-io.grpc.Context.CancellationListener-java.util.concurrent.Executor->).
> So the isCancelled() method is passive.
>
> On Sat, May 4, 2019 at 3:39 AM Isuru Samaraweera <[email protected]> wrote:
>
>> Hi Carl,
>> So when you enable keep alive with 5 mins and 10 second keepalivetimeout
>> connection will be checked for activeness and if time out elapsed it will
>> be closed. Thats clear..So whats happening when you say
>> Context.current().isCancelled()??Does it do  ping internally ?How it is
>> done?
>> Because when network cable is unplugged from server
>> Context.current().isCancelled() takes sometime to detect cable
>> detachment(like 1-2 seconds).When I delay main thread by Thread.sleep(500)
>> I can reduce data stream loss which is fine in my case.My question is on
>> how Context.current().isCancelled() is implemented??Is it doing a real
>> time ping or listening to a flag set by another thread?
>>
>> Thanks
>> Isuru
>>
>> On Thu, May 2, 2019 at 10:44 PM 'Carl Mastrangelo' via grpc.io <
>> [email protected]> wrote:
>>
>>> You can turn on keep alives on the channel / server builder, but that's
>>> about the best you can do.  The problem is that a broken connection just
>>> means silence.  You can't tell the difference between the packets taking a
>>> long time, and the the packets not arriving.  Keep-alives let you check the
>>> connection is still active, and close it after a time out (like 10s).
>>>
>>> On Tuesday, April 30, 2019 at 9:10:22 AM UTC-7, Isuru Samaraweera wrote:
>>>>
>>>> Hi All,
>>>> I am using grpc java with serverside streaming.In the grpc server side
>>>> streaming service I am doing streaming such as below to detect stream
>>>> cancellations due to network errors.
>>>>
>>>> while(true) {
>>>> if(Context.current().isCancelled()) {
>>>> responseObserver.onNext(response)
>>>> } else break;
>>>>
>>>> The issue is when I disconnect the client still onNext invokes around
>>>> 100 times before network failure is detected by
>>>> Context.current().isCancelled().
>>>>
>>>> To prevent this I did as below.
>>>> while(true) {
>>>> Thread.sleep(500)
>>>> if(Context.current().isCancelled()) {
>>>> responseObserver.onNext(response)
>>>> } else break;
>>>>
>>>> Now it seems isCancelled is detected before onNext is called when
>>>> network between client and server is disrupted.This implies cancel=true is
>>>> updated by a separate thread apart from main thread??
>>>>
>>>>
>>>> Is there any better way of doing this using GRPC Java?
>>>>
>>>> Thanks
>>>> Isuru
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> --
>>> 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 [email protected].
>>> To post to this group, send email to [email protected].
>>> Visit this group at https://groups.google.com/group/grpc-io.
>>> To view this discussion on the web visit
>>> https://groups.google.com/d/msgid/grpc-io/4dc517ad-195c-420f-9f7a-4e73aa78b659%40googlegroups.com
>>> <https://groups.google.com/d/msgid/grpc-io/4dc517ad-195c-420f-9f7a-4e73aa78b659%40googlegroups.com?utm_medium=email&utm_source=footer>
>>> .
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>
>>
>> --
>> Isuru Samaraweera
>>
>> --
>> 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 [email protected].
>> To post to this group, send email to [email protected].
>> Visit this group at https://groups.google.com/group/grpc-io.
>> To view this discussion on the web visit
>> https://groups.google.com/d/msgid/grpc-io/CAOtGh-rYyqWaKPLxyEyS9xXQOhyP0P8FS1MwyibO8Ke-VbXDiQ%40mail.gmail.com
>> <https://groups.google.com/d/msgid/grpc-io/CAOtGh-rYyqWaKPLxyEyS9xXQOhyP0P8FS1MwyibO8Ke-VbXDiQ%40mail.gmail.com?utm_medium=email&utm_source=footer>
>> .
>> For more options, visit https://groups.google.com/d/optout.
>>
>

-- 
Isuru Samaraweera

-- 
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 [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/grpc-io.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/grpc-io/CAOtGh-rUgW5hELQrq58gmxyKfDR9bqN2otbTF_%3DGoR_kdYkPNg%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to