Specifically:
Receiving trailing and initial metadata had to be published in
lock-step.
=> If we wanted trailing metadata, we might not get initial metadata processed
until messages arrived.
=> Compression code had no idea what codec to use.
To fix it, publish initial metadata as soon as it's ready (this is a
transport API change).
Requires changes to grpc_call to ensure ordering in processing initial
metadata and messages (one may be delayed).
Exposed at least some bugs in C++ where we never read initial metadata.
I expect at least one more similar bug.
- cleanup: change grpc_iomgr_cb_func to take a bool instead of int
success
- cleanup: follow through with iomgr callback scheduling functions
- prepare: add a workqueue to offload to to grpc_exec_ctx_enqueue*
functions
- end2end test deadlines may complete before checking IsCancelled
=> don't expect it to be false in these cases
- add exponential backoff to port_posix
- ensure run_tests rebuilds targets with a regex I commonly use
Use grpc_shutdown() instead of grpc_iomgr_shutdown() to prevent
grpc_pick_unused_port_or_die() from inappropriately destroying global
state. Fix port allocation issues.