Be more lazy about stream flow control updates

pull/9511/head
Craig Tiller 8 years ago
parent 52e5f68f87
commit 277eb9ea3b
  1. 7
      src/core/ext/transport/chttp2/transport/parsing.c
  2. 5
      src/core/ext/transport/chttp2/transport/writing.c

@ -375,9 +375,14 @@ static grpc_error *update_incoming_window(grpc_exec_ctx *exec_ctx,
return err; return err;
} }
uint32_t target_incoming_window = GPR_MAX(
t->settings[GRPC_SENT_SETTINGS][GRPC_CHTTP2_SETTINGS_INITIAL_WINDOW_SIZE],
1024);
GRPC_CHTTP2_FLOW_DEBIT_TRANSPORT("parse", t, incoming_window, GRPC_CHTTP2_FLOW_DEBIT_TRANSPORT("parse", t, incoming_window,
incoming_frame_size); incoming_frame_size);
grpc_chttp2_initiate_write(exec_ctx, t, false, "flow_control"); if (t->incoming_window < target_incoming_window / 2) {
grpc_chttp2_initiate_write(exec_ctx, t, false, "flow_control");
}
if (s != NULL) { if (s != NULL) {
if (incoming_frame_size > if (incoming_frame_size >

@ -295,7 +295,10 @@ bool grpc_chttp2_begin_write(grpc_exec_ctx *exec_ctx,
uint32_t target_incoming_window = GPR_MAX( uint32_t target_incoming_window = GPR_MAX(
t->settings[GRPC_SENT_SETTINGS][GRPC_CHTTP2_SETTINGS_INITIAL_WINDOW_SIZE], t->settings[GRPC_SENT_SETTINGS][GRPC_CHTTP2_SETTINGS_INITIAL_WINDOW_SIZE],
1024); 1024);
if (t->incoming_window < 3 * target_incoming_window / 4) { uint32_t threshold_to_send_transport_window_update =
t->outbuf.count > 0 ? target_incoming_window
: 3 * target_incoming_window / 4;
if (t->incoming_window < threshold_to_send_transport_window_update) {
maybe_initiate_ping(exec_ctx, t, maybe_initiate_ping(exec_ctx, t,
GRPC_CHTTP2_PING_BEFORE_TRANSPORT_WINDOW_UPDATE); GRPC_CHTTP2_PING_BEFORE_TRANSPORT_WINDOW_UPDATE);
uint32_t announced = (uint32_t)GPR_CLAMP( uint32_t announced = (uint32_t)GPR_CLAMP(

Loading…
Cancel
Save