Fix flowctl announcements

reviewable/pr8008/r2
Craig Tiller 9 years ago
parent c8db73c419
commit 8af29b684d
  1. 3
      src/core/ext/transport/chttp2/transport/chttp2_transport.c
  2. 7
      src/core/ext/transport/chttp2/transport/internal.h
  3. 7
      src/core/ext/transport/chttp2/transport/writing.c

@ -1818,8 +1818,7 @@ static void incoming_byte_stream_update_flow_control(grpc_exec_ctx *exec_ctx,
add_max_recv_bytes);
GRPC_CHTTP2_FLOW_CREDIT_STREAM("op", t, s, incoming_window,
add_max_recv_bytes);
GRPC_CHTTP2_FLOW_CREDIT_STREAM("op", t, s,
unannounced_incoming_window_for_writing,
GRPC_CHTTP2_FLOW_CREDIT_STREAM("op", t, s, announce_window,
add_max_recv_bytes);
grpc_chttp2_become_writable(exec_ctx, t, s, false, "read_incoming_stream");
}

@ -339,13 +339,6 @@ struct grpc_chttp2_stream {
As the upper layer offers more bytes, this value increases.
As bytes are read, this value decreases. */
uint32_t max_recv_bytes;
/** The number of bytes the upper layer has offered to read but we have
not yet announced to HTTP2 flow control.
As the upper layers offer to read more bytes, this value increases.
As we advertise incoming flow control window, this value decreases. */
/* TODO(ctiller): remove this, it's equivalent to incoming_window now
uint32_t unannounced_incoming_window_for_parse; */
uint32_t unannounced_incoming_window_for_writing;
/** things the upper layers would like to send */
grpc_metadata_batch *send_initial_metadata;
grpc_closure *send_initial_metadata_finished;

@ -109,7 +109,10 @@ bool grpc_chttp2_begin_write(grpc_exec_ctx *exec_ctx,
bool sent_initial_metadata = s->sent_initial_metadata;
bool now_writing = false;
gpr_log(GPR_DEBUG, "W:%d: sim=%d ann=%d fcb_len=%d (t,s)-win=%d,%d", (int)s->id,sent_initial_metadata, (int) s->announce_window, (int)s->flow_controlled_buffer.length, (int)t->outgoing_window,(int)s->outgoing_window);
gpr_log(GPR_DEBUG, "W:%d: sim=%d ann=%d fcb_len=%d (t,s)-win=%d,%d",
(int)s->id, sent_initial_metadata, (int)s->announce_window,
(int)s->flow_controlled_buffer.length, (int)t->outgoing_window,
(int)s->outgoing_window);
/* send initial metadata if it's available */
if (!sent_initial_metadata && s->send_initial_metadata) {
@ -128,8 +131,6 @@ bool grpc_chttp2_begin_write(grpc_exec_ctx *exec_ctx,
grpc_chttp2_window_update_create(
s->id, s->announce_window, &s->stats.outgoing));
GRPC_CHTTP2_FLOW_DEBIT_STREAM("write", t, s, announce_window, announce);
/* TODO(ctiller): why? */
s->announce_window = 0;
}
if (sent_initial_metadata) {
/* send any body bytes, if allowed by flow control */

Loading…
Cancel
Save