diff options
author | ganmacs <ganmacs@gmail.com> | 2018-06-22 00:48:06 +0900 |
---|---|---|
committer | ganmacs <ganmacs@gmail.com> | 2018-06-23 04:19:28 +0900 |
commit | c1b64e3493779c0e105b901d2a8f1fb8512d8bef (patch) | |
tree | c8471c95d31ab709034be3acc6310e8b5be087f7 /src/ruby/lib | |
parent | 222655cab54028db55d8a24e08de26fbe84dcf8b (diff) |
GRPC::Cancelled should be occured when calling Enumrable#next on canceled call
Diffstat (limited to 'src/ruby/lib')
-rw-r--r-- | src/ruby/lib/grpc/generic/active_call.rb | 24 |
1 files changed, 14 insertions, 10 deletions
diff --git a/src/ruby/lib/grpc/generic/active_call.rb b/src/ruby/lib/grpc/generic/active_call.rb index 6e601bdc91..688726ef4a 100644 --- a/src/ruby/lib/grpc/generic/active_call.rb +++ b/src/ruby/lib/grpc/generic/active_call.rb @@ -322,18 +322,22 @@ module GRPC # @return [Enumerator] if no block was given def each_remote_read_then_finish return enum_for(:each_remote_read_then_finish) unless block_given? - begin - loop do - resp = remote_read - if resp.nil? # the last response was received - receive_and_check_status - break + loop do + resp = + begin + remote_read + rescue GRPC::Core::CallError => e + GRPC.logger.warn("In each_remote_read_then_finish: #{e}") + nil end - yield resp - end - ensure - set_input_stream_done + + break if resp.nil? # the last response was received + yield resp end + + receive_and_check_status + ensure + set_input_stream_done end # request_response sends a request to a GRPC server, and returns the |