Re: [grpc-io] grpc c++ stream blocked when connect to an unavailable server

2017-12-07 Thread csenanda
Thanks for your reply.

I have considered those options and it would not work for me.
1. The streaming rpc will provide incremental on change data from server to 
the client, if I set the deadline the streaming rpc gets reestablished if 
server is still connected and have no data to send within the period 
configured in the deadline.  I do not want the client to reconnect and get 
the stale data when the server has not really broken and keeps idle.
2. I am still using grpc v1.0.0 and keep alive channel arguments are not 
supported in that version.  I may need to upgrade to v1.6.0.

Just wondering if there are any other options with v1.0.0.  
Thanks again for your reply,

On Thursday, 7 December 2017 16:26:45 UTC-6, Yang Gao wrote:
>
> You can set a deadline to your stream. Re-issuing the rpc is not really a 
> problem because a failed read at the client means the rpc is done at the 
> server or failed somehow anyway.
>
> Or you can configure client side channel keep alive by adding channel 
> arguments: GRPC_ARG_KEEPALIVE_TIME_MS and GRPC_ARG_KEEPALIVE_TIMEOUT_MS. 
> See 
> https://github.com/grpc/grpc/blob/a8021572683c4a6e6af59888cf3a000933abe00c/include/grpc/impl/codegen/grpc_types.h#L218
>
> On Monday, December 4, 2017 at 12:22:34 PM UTC-8, csen...@gmail.com wrote:
>>
>> Hi,
>> Can you help me understand how did you overcome this issue.  I too have a 
>> client that invokes streaming rpc and it gets blocked in ClientReader::Read.
>> I cant set a timeout as it would mean the rpc needs to be invoked again 
>> after the timeout.
>>
>> I need a way to reestablish the server connection if client gets blocked 
>> in ClientReader::Read.  I cannot read the connection state as the call is 
>> blocked.
>> However Read fails and gets unblocked if
>> - I kill the server process or unplug the connection between client and 
>> server
>> But the client gets blocked indefinitely when the server is 
>> shutdown/powered off.
>>
>> My code goes like this
>> ClientContext context;
>> std::unique_ptr stub_ = Consumer::NewStub(channel);
>> ThreadEventReader = stub_->GetDataStream(, Filter);  //rpc call
>> // blocked read - until stream closed
>> while (ThreadEventReader->Read())
>> {
>> cout << "UpdateStream: " << StreamedData.displayvalue() 
>> << endl;
>> }
>>
>> On Wednesday, 25 May 2016 10:29:57 UTC-5, yangya...@gmail.com wrote:
>>>
>>> Hi, my version has fail_fast, and I checked the state of channel. When 
>>> server is shutdown, the state is GRPC_CHANNEL_CONNECTING, which helps me 
>>> know server is unavailable.
>>> Thank you!
>>>
>>

-- 
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 post to this group, send email to grpc-io@googlegroups.com.
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/94be5c76-aa5d-4786-95c9-66f350eb0445%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: [grpc-io] grpc c++ stream blocked when connect to an unavailable server

2017-12-07 Thread 'Yang Gao' via grpc.io
You can set a deadline to your stream. Re-issuing the rpc is not really a 
problem because a failed read at the client means the rpc is done at the 
server or failed somehow anyway.

Or you can configure client side channel keep alive by adding channel 
arguments: GRPC_ARG_KEEPALIVE_TIME_MS and GRPC_ARG_KEEPALIVE_TIMEOUT_MS. 
See 
https://github.com/grpc/grpc/blob/a8021572683c4a6e6af59888cf3a000933abe00c/include/grpc/impl/codegen/grpc_types.h#L218

On Monday, December 4, 2017 at 12:22:34 PM UTC-8, csen...@gmail.com wrote:
>
> Hi,
> Can you help me understand how did you overcome this issue.  I too have a 
> client that invokes streaming rpc and it gets blocked in ClientReader::Read.
> I cant set a timeout as it would mean the rpc needs to be invoked again 
> after the timeout.
>
> I need a way to reestablish the server connection if client gets blocked 
> in ClientReader::Read.  I cannot read the connection state as the call is 
> blocked.
> However Read fails and gets unblocked if
> - I kill the server process or unplug the connection between client and 
> server
> But the client gets blocked indefinitely when the server is 
> shutdown/powered off.
>
> My code goes like this
> ClientContext context;
> std::unique_ptr stub_ = Consumer::NewStub(channel);
> ThreadEventReader = stub_->GetDataStream(, Filter);  //rpc call
> // blocked read - until stream closed
> while (ThreadEventReader->Read())
> {
> cout << "UpdateStream: " << StreamedData.displayvalue() << 
> endl;
> }
>
> On Wednesday, 25 May 2016 10:29:57 UTC-5, yangya...@gmail.com wrote:
>>
>> Hi, my version has fail_fast, and I checked the state of channel. When 
>> server is shutdown, the state is GRPC_CHANNEL_CONNECTING, which helps me 
>> know server is unavailable.
>> Thank you!
>>
>

-- 
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 post to this group, send email to grpc-io@googlegroups.com.
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/3a1006e9-aa06-455e-a80f-835c1744b8d5%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: [grpc-io] grpc c++ stream blocked when connect to an unavailable server

2017-12-04 Thread csenanda
Hi,
Can you help me understand how did you overcome this issue.  I too have a 
client that invokes streaming rpc and it gets blocked in ClientReader::Read.
I cant set a timeout as it would mean the rpc needs to be invoked again 
after the timeout.

I need a way to reestablish the server connection if client gets blocked in 
ClientReader::Read.  I cannot read the connection state as the call is 
blocked.
However Read fails and gets unblocked if
- I kill the server process or unplug the connection between client and 
server
But the client gets blocked indefinitely when the server is 
shutdown/powered off.

My code goes like this
ClientContext context;
std::unique_ptr stub_ = Consumer::NewStub(channel);
ThreadEventReader = stub_->GetDataStream(, Filter);  //rpc call
// blocked read - until stream closed
while (ThreadEventReader->Read())
{
cout << "UpdateStream: " << StreamedData.displayvalue() << 
endl;
}

On Wednesday, 25 May 2016 10:29:57 UTC-5, yangya...@gmail.com wrote:
>
> Hi, my version has fail_fast, and I checked the state of channel. When 
> server is shutdown, the state is GRPC_CHANNEL_CONNECTING, which helps me 
> know server is unavailable.
> Thank you!
>

-- 
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 post to this group, send email to grpc-io@googlegroups.com.
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/6655a757-e39a-43c0-8bac-a556170d5eae%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.