supernovaer commented on issue #715: http2 / grpc问题 URL: https://github.com/apache/incubator-brpc/issues/715#issuecomment-511739962 gdb断点看了下,进到H2StreamContext::ConsumeWindowSize这个函数的时候,第一个判断条件就没通过,_remote_window_left已经小于size了。  实际各个变量的情况如下图:  与H2StreamContext关联的H2Context对象_conn_ctx的_unack_local_settings里面初始化几个的window_size变量,值都是对的,是我通过h2_client_stream_window_size、h2_client_connection_window_size这两个gflag传进去的值,均>10M。 但是_remote_window_left的值却很小,百K级别,并且在第一次请求的时候,_remote_window_left就这么小了,导致一直报 ”remote_window_left is not enough“的错。 另外,每次请求虽然失败了,但最后还是触发了H2Context::OnSettings,从grpc server端ParseH2Settings(H2Settings* out, butil::IOBufBytesIterator& it, size_t n)这个函数也执行到了out->stream_window_size = value;这里,value也是M级别的,跟grpc server的配置是吻合的。 const int64_t window_diff = static_cast<int64_t>(_remote_settings.stream_window_size) - old_stream_window_size; window_diff的计算结果正常,也成功触发了AddWindowSize,但是下一次请求仍然是”remote_window_left is not enough“
---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: [email protected] With regards, Apache Git Services --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
