grpc 1.50.0 → 1.52.0.pre2
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +206 -49
- data/include/grpc/byte_buffer.h +76 -1
- data/include/grpc/byte_buffer_reader.h +19 -1
- data/include/grpc/compression.h +2 -2
- data/include/grpc/event_engine/event_engine.h +27 -6
- data/include/grpc/event_engine/internal/memory_allocator_impl.h +1 -1
- data/include/grpc/event_engine/internal/slice_cast.h +67 -0
- data/include/grpc/event_engine/memory_allocator.h +1 -1
- data/include/grpc/event_engine/slice.h +24 -4
- data/include/grpc/event_engine/slice_buffer.h +31 -2
- data/include/grpc/fork.h +25 -1
- data/include/grpc/grpc.h +3 -13
- data/include/grpc/grpc_posix.h +1 -1
- data/include/grpc/impl/codegen/atm.h +3 -71
- data/include/grpc/impl/codegen/atm_gcc_atomic.h +3 -58
- data/include/grpc/impl/codegen/atm_gcc_sync.h +3 -59
- data/include/grpc/impl/codegen/atm_windows.h +3 -106
- data/include/grpc/impl/codegen/byte_buffer.h +4 -78
- data/include/grpc/impl/codegen/byte_buffer_reader.h +4 -19
- data/include/grpc/impl/codegen/compression_types.h +3 -82
- data/include/grpc/impl/codegen/connectivity_state.h +3 -20
- data/include/grpc/impl/codegen/fork.h +4 -25
- data/include/grpc/impl/codegen/gpr_types.h +2 -34
- data/include/grpc/impl/codegen/grpc_types.h +3 -791
- data/include/grpc/impl/codegen/log.h +3 -86
- data/include/grpc/impl/codegen/port_platform.h +3 -758
- data/include/grpc/impl/codegen/propagation_bits.h +3 -28
- data/include/grpc/impl/codegen/slice.h +3 -106
- data/include/grpc/impl/codegen/status.h +4 -131
- data/include/grpc/impl/codegen/sync.h +3 -42
- data/include/grpc/impl/codegen/sync_abseil.h +3 -12
- data/include/grpc/impl/codegen/sync_custom.h +3 -14
- data/include/grpc/impl/codegen/sync_generic.h +3 -25
- data/include/grpc/impl/codegen/sync_posix.h +3 -28
- data/include/grpc/impl/codegen/sync_windows.h +3 -16
- data/include/grpc/impl/compression_types.h +109 -0
- data/include/grpc/impl/connectivity_state.h +47 -0
- data/include/grpc/impl/grpc_types.h +824 -0
- data/include/grpc/impl/propagation_bits.h +54 -0
- data/include/grpc/impl/slice_type.h +112 -0
- data/include/grpc/load_reporting.h +1 -1
- data/include/grpc/module.modulemap +5 -1
- data/include/grpc/slice.h +1 -1
- data/include/grpc/status.h +131 -1
- data/include/grpc/support/atm.h +70 -1
- data/include/grpc/support/atm_gcc_atomic.h +59 -1
- data/include/grpc/support/atm_gcc_sync.h +58 -1
- data/include/grpc/support/atm_windows.h +105 -1
- data/include/grpc/support/log.h +87 -1
- data/include/grpc/support/log_windows.h +1 -1
- data/include/grpc/support/port_platform.h +767 -1
- data/include/grpc/support/string_util.h +1 -1
- data/include/grpc/support/sync.h +35 -2
- data/include/grpc/support/sync_abseil.h +11 -1
- data/include/grpc/support/sync_custom.h +13 -1
- data/include/grpc/support/sync_generic.h +24 -1
- data/include/grpc/support/sync_posix.h +27 -1
- data/include/grpc/support/sync_windows.h +15 -1
- data/include/grpc/support/time.h +25 -2
- data/src/core/ext/filters/census/grpc_context.cc +17 -18
- data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +28 -22
- data/src/core/ext/filters/channel_idle/channel_idle_filter.h +2 -1
- data/src/core/ext/filters/channel_idle/idle_filter_state.h +1 -1
- data/src/core/ext/filters/client_channel/backend_metric.cc +2 -0
- data/src/core/ext/filters/client_channel/backup_poller.cc +24 -24
- data/src/core/ext/filters/client_channel/backup_poller.h +21 -21
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +51 -28
- data/src/core/ext/filters/client_channel/client_channel.cc +157 -168
- data/src/core/ext/filters/client_channel/client_channel.h +10 -10
- data/src/core/ext/filters/client_channel/client_channel_channelz.cc +17 -19
- data/src/core/ext/filters/client_channel/client_channel_channelz.h +19 -19
- data/src/core/ext/filters/client_channel/client_channel_factory.cc +17 -17
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +18 -18
- data/src/core/ext/filters/client_channel/client_channel_service_config.cc +153 -0
- data/src/core/ext/filters/client_channel/{resolver_result_parsing.h → client_channel_service_config.h} +26 -23
- data/src/core/ext/filters/client_channel/config_selector.h +16 -20
- data/src/core/ext/filters/client_channel/connector.h +1 -1
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +28 -55
- data/src/core/ext/filters/client_channel/dynamic_filters.h +7 -8
- data/src/core/ext/filters/client_channel/global_subchannel_pool.h +18 -18
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +4 -5
- data/src/core/ext/filters/client_channel/http_proxy.cc +39 -40
- data/src/core/ext/filters/client_channel/http_proxy.h +18 -18
- data/src/core/ext/filters/client_channel/lb_call_state_internal.h +39 -0
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +3 -4
- data/src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h +17 -17
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +7 -2
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +1 -2
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +59 -130
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h +37 -21
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +131 -154
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +24 -25
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +0 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +2 -4
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +18 -20
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +18 -19
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +18 -19
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +18 -19
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +8 -9
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +212 -223
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +2 -2
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +11 -22
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +73 -101
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +20 -21
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +119 -106
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +12 -12
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +30 -16
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +60 -56
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +60 -64
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_attributes.cc +42 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/{xds.h → xds_attributes.h} +15 -17
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +22 -28
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +62 -94
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +70 -146
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.cc +651 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.h +60 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_wrr_locality.cc +364 -0
- data/src/core/ext/filters/client_channel/local_subchannel_pool.h +18 -18
- data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +9 -10
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +26 -35
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +40 -41
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +22 -23
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +82 -82
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +117 -118
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +51 -52
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_posix.cc +18 -18
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +18 -18
- data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.h +18 -19
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +3 -5
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +1 -3
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +1 -1
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +34 -27
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +44 -34
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +8 -10
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +4 -7
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +122 -119
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +1 -1
- data/src/core/ext/filters/client_channel/retry_filter.cc +81 -103
- data/src/core/ext/filters/client_channel/retry_service_config.cc +193 -235
- data/src/core/ext/filters/client_channel/retry_service_config.h +20 -23
- data/src/core/ext/filters/client_channel/retry_throttle.cc +27 -29
- data/src/core/ext/filters/client_channel/retry_throttle.h +26 -25
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +3 -3
- data/src/core/ext/filters/client_channel/subchannel.cc +158 -178
- data/src/core/ext/filters/client_channel/subchannel.h +17 -40
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +18 -18
- data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +11 -12
- data/src/core/ext/filters/deadline/deadline_filter.cc +34 -17
- data/src/core/ext/filters/deadline/deadline_filter.h +1 -1
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +3 -2
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +0 -4
- data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.cc +118 -0
- data/src/core/ext/filters/fault_injection/{service_config_parser.h → fault_injection_service_config_parser.h} +20 -12
- data/src/core/ext/filters/http/client/http_client_filter.cc +36 -37
- data/src/core/ext/filters/http/client/http_client_filter.h +17 -17
- data/src/core/ext/filters/http/client_authority_filter.cc +19 -19
- data/src/core/ext/filters/http/client_authority_filter.h +18 -18
- data/src/core/ext/filters/http/http_filters_plugin.cc +35 -51
- data/src/core/ext/filters/http/message_compress/compression_filter.cc +315 -0
- data/src/core/ext/filters/http/message_compress/compression_filter.h +132 -0
- data/src/core/ext/filters/http/server/http_server_filter.cc +44 -43
- data/src/core/ext/filters/http/server/http_server_filter.h +18 -18
- data/src/core/ext/filters/message_size/message_size_filter.cc +92 -123
- data/src/core/ext/filters/message_size/message_size_filter.h +23 -16
- data/src/core/ext/filters/rbac/rbac_filter.cc +12 -12
- data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +728 -530
- data/src/core/ext/filters/rbac/rbac_service_config_parser.h +4 -3
- data/src/core/ext/filters/server_config_selector/server_config_selector.h +6 -8
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +7 -9
- data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +229 -0
- data/src/core/ext/filters/stateful_session/stateful_session_filter.h +66 -0
- data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.cc +82 -0
- data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.h +93 -0
- data/src/core/ext/transport/chttp2/alpn/alpn.cc +18 -18
- data/src/core/ext/transport/chttp2/alpn/alpn.h +22 -22
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +69 -63
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +28 -22
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +81 -97
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +18 -18
- data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +22 -22
- data/src/core/ext/transport/chttp2/transport/bin_decoder.h +30 -30
- data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +29 -29
- data/src/core/ext/transport/chttp2/transport/bin_encoder.h +27 -27
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +273 -283
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +18 -19
- data/src/core/ext/transport/chttp2/transport/context_list.cc +19 -19
- data/src/core/ext/transport/chttp2/transport/context_list.h +25 -25
- data/src/core/ext/transport/chttp2/transport/decode_huff.cc +0 -36
- data/src/core/ext/transport/chttp2/transport/decode_huff.h +35 -82
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +112 -44
- data/src/core/ext/transport/chttp2/transport/flow_control.h +60 -34
- data/src/core/ext/transport/chttp2/transport/frame.h +19 -19
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +33 -32
- data/src/core/ext/transport/chttp2/transport/frame_data.h +23 -23
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +36 -36
- data/src/core/ext/transport/chttp2/transport/frame_goaway.h +18 -18
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +25 -24
- data/src/core/ext/transport/chttp2/transport/frame_ping.h +19 -19
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +28 -25
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +18 -18
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +34 -36
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +20 -20
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +22 -21
- data/src/core/ext/transport/chttp2/transport/frame_window_update.h +18 -18
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +133 -181
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +40 -59
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +2 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +93 -143
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +20 -20
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +26 -26
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +18 -18
- data/src/core/ext/transport/chttp2/transport/http2_settings.cc +21 -19
- data/src/core/ext/transport/chttp2/transport/http2_settings.h +36 -34
- data/src/core/ext/transport/chttp2/transport/http_trace.cc +19 -0
- data/src/core/ext/transport/chttp2/transport/http_trace.h +24 -0
- data/src/core/ext/transport/chttp2/transport/huffsyms.cc +20 -20
- data/src/core/ext/transport/chttp2/transport/huffsyms.h +19 -19
- data/src/core/ext/transport/chttp2/transport/internal.h +193 -170
- data/src/core/ext/transport/chttp2/transport/parsing.cc +147 -80
- data/src/core/ext/transport/chttp2/transport/stream_lists.cc +19 -19
- data/src/core/ext/transport/chttp2/transport/stream_map.cc +23 -23
- data/src/core/ext/transport/chttp2/transport/stream_map.h +31 -31
- data/src/core/ext/transport/chttp2/transport/varint.cc +19 -20
- data/src/core/ext/transport/chttp2/transport/varint.h +35 -32
- data/src/core/ext/transport/chttp2/transport/writing.cc +60 -56
- data/src/core/ext/transport/inproc/inproc_plugin.cc +17 -17
- data/src/core/ext/transport/inproc/inproc_transport.cc +122 -140
- data/src/core/ext/transport/inproc/inproc_transport.h +19 -19
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.c +62 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.h +179 -0
- data/src/core/ext/upb-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb.c +46 -0
- data/src/core/ext/upb-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb.h +98 -0
- data/src/core/ext/upb-generated/xds/core/v3/cidr.upb.c +47 -0
- data/src/core/ext/upb-generated/xds/core/v3/cidr.upb.h +107 -0
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +3 -2
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +9 -0
- data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.c +0 -1
- data/src/core/ext/upb-generated/xds/type/matcher/v3/cel.upb.c +46 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/cel.upb.h +98 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/domain.upb.c +62 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/domain.upb.h +174 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/http_inputs.upb.c +36 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/http_inputs.upb.h +74 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/ip.upb.c +65 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/ip.upb.h +191 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/range.upb.c +127 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/range.upb.h +474 -0
- data/src/core/ext/upb-generated/xds/type/v3/cel.upb.c +67 -0
- data/src/core/ext/upb-generated/xds/type/v3/cel.upb.h +214 -0
- data/src/core/ext/upb-generated/xds/type/v3/range.upb.c +64 -0
- data/src/core/ext/upb-generated/xds/type/v3/range.upb.h +208 -0
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c +0 -1
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.c +60 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upbdefs.c +50 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/cidr.upbdefs.c +45 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/cidr.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/cel.upbdefs.c +43 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/cel.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/domain.upbdefs.c +51 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/domain.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/http_inputs.upbdefs.c +36 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/http_inputs.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/ip.upbdefs.c +55 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/ip.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/matcher.upbdefs.c +9 -9
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/range.upbdefs.c +71 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/range.upbdefs.h +60 -0
- data/src/core/ext/upbdefs-generated/xds/type/v3/cel.upbdefs.c +60 -0
- data/src/core/ext/upbdefs-generated/xds/type/v3/cel.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/xds/type/v3/range.upbdefs.c +36 -0
- data/src/core/ext/upbdefs-generated/xds/type/v3/range.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.c +4 -7
- data/src/core/ext/xds/certificate_provider_store.cc +4 -4
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +4 -7
- data/src/core/ext/xds/xds_api.cc +20 -95
- data/src/core/ext/xds/xds_api.h +5 -8
- data/src/core/ext/xds/xds_bootstrap.h +0 -1
- data/src/core/ext/xds/xds_bootstrap_grpc.cc +3 -12
- data/src/core/ext/xds/xds_bootstrap_grpc.h +16 -1
- data/src/core/ext/xds/xds_certificate_provider.cc +22 -25
- data/src/core/ext/xds/xds_certificate_provider.h +1 -1
- data/src/core/ext/xds/xds_channel_args.h +1 -1
- data/src/core/ext/xds/xds_channel_stack_modifier.cc +0 -1
- data/src/core/ext/xds/xds_channel_stack_modifier.h +2 -2
- data/src/core/ext/xds/xds_client.cc +134 -94
- data/src/core/ext/xds/xds_client.h +13 -5
- data/src/core/ext/xds/xds_client_grpc.cc +31 -24
- data/src/core/ext/xds/xds_client_grpc.h +1 -1
- data/src/core/ext/xds/xds_client_stats.cc +17 -17
- data/src/core/ext/xds/xds_client_stats.h +18 -18
- data/src/core/ext/xds/xds_cluster.cc +359 -203
- data/src/core/ext/xds/xds_cluster.h +52 -35
- data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +54 -71
- data/src/core/ext/xds/xds_cluster_specifier_plugin.h +45 -21
- data/src/core/ext/xds/xds_common_types.cc +209 -141
- data/src/core/ext/xds/xds_common_types.h +19 -13
- data/src/core/ext/xds/xds_endpoint.cc +221 -130
- data/src/core/ext/xds/xds_endpoint.h +4 -7
- data/src/core/ext/xds/xds_health_status.cc +80 -0
- data/src/core/ext/xds/xds_health_status.h +82 -0
- data/src/core/ext/xds/xds_http_fault_filter.cc +57 -43
- data/src/core/ext/xds/xds_http_fault_filter.h +14 -22
- data/src/core/ext/xds/xds_http_filters.cc +65 -73
- data/src/core/ext/xds/xds_http_filters.h +68 -20
- data/src/core/ext/xds/xds_http_rbac_filter.cc +153 -207
- data/src/core/ext/xds/xds_http_rbac_filter.h +13 -16
- data/src/core/ext/xds/xds_http_stateful_session_filter.cc +218 -0
- data/src/core/ext/xds/xds_http_stateful_session_filter.h +58 -0
- data/src/core/ext/xds/xds_lb_policy_registry.cc +120 -171
- data/src/core/ext/xds/xds_lb_policy_registry.h +10 -11
- data/src/core/ext/xds/xds_listener.cc +447 -419
- data/src/core/ext/xds/xds_listener.h +45 -47
- data/src/core/ext/xds/xds_resource_type.h +3 -11
- data/src/core/ext/xds/xds_resource_type_impl.h +10 -13
- data/src/core/ext/xds/xds_route_config.cc +514 -528
- data/src/core/ext/xds/xds_route_config.h +39 -28
- data/src/core/ext/xds/xds_routing.cc +2 -1
- data/src/core/ext/xds/xds_routing.h +2 -0
- data/src/core/ext/xds/xds_server_config_fetcher.cc +109 -106
- data/src/core/ext/xds/xds_transport_grpc.cc +6 -7
- data/src/core/ext/xds/xds_transport_grpc.h +1 -1
- data/src/core/lib/address_utils/parse_address.cc +30 -29
- data/src/core/lib/address_utils/parse_address.h +32 -32
- data/src/core/lib/address_utils/sockaddr_utils.cc +29 -28
- data/src/core/lib/address_utils/sockaddr_utils.h +33 -33
- data/src/core/lib/avl/avl.h +4 -4
- data/src/core/lib/backoff/backoff.cc +17 -17
- data/src/core/lib/backoff/backoff.h +18 -18
- data/src/core/lib/channel/call_tracer.h +10 -1
- data/src/core/lib/channel/channel_args.cc +19 -20
- data/src/core/lib/channel/channel_args.h +59 -43
- data/src/core/lib/channel/channel_args_preconditioning.h +1 -1
- data/src/core/lib/channel/channel_stack.cc +62 -58
- data/src/core/lib/channel/channel_stack.h +144 -131
- data/src/core/lib/channel/channel_stack_builder.cc +21 -24
- data/src/core/lib/channel/channel_stack_builder.h +14 -6
- data/src/core/lib/channel/channel_stack_builder_impl.cc +43 -25
- data/src/core/lib/channel/channel_stack_builder_impl.h +2 -0
- data/src/core/lib/channel/channel_trace.cc +21 -22
- data/src/core/lib/channel/channel_trace.h +19 -19
- data/src/core/lib/channel/channelz.cc +18 -19
- data/src/core/lib/channel/channelz.h +26 -26
- data/src/core/lib/channel/channelz_registry.cc +17 -17
- data/src/core/lib/channel/channelz_registry.h +18 -18
- data/src/core/lib/channel/connected_channel.cc +732 -63
- data/src/core/lib/channel/connected_channel.h +18 -22
- data/src/core/lib/channel/context.h +18 -18
- data/src/core/lib/channel/promise_based_filter.cc +1137 -150
- data/src/core/lib/channel/promise_based_filter.h +374 -88
- data/src/core/lib/channel/status_util.cc +35 -17
- data/src/core/lib/channel/status_util.h +26 -19
- data/src/core/lib/compression/compression.cc +19 -19
- data/src/core/lib/compression/compression_internal.cc +41 -48
- data/src/core/lib/compression/compression_internal.h +22 -22
- data/src/core/lib/compression/message_compress.cc +26 -26
- data/src/core/lib/compression/message_compress.h +25 -25
- data/src/core/lib/config/core_configuration.h +1 -1
- data/src/core/lib/debug/event_log.cc +88 -0
- data/src/core/lib/debug/event_log.h +81 -0
- data/src/core/lib/debug/histogram_view.cc +69 -0
- data/src/core/lib/{slice/slice_refcount.cc → debug/histogram_view.h} +15 -13
- data/src/core/lib/debug/stats.cc +39 -136
- data/src/core/lib/debug/stats.h +46 -52
- data/src/core/lib/debug/stats_data.cc +224 -73
- data/src/core/lib/debug/stats_data.h +263 -122
- data/src/core/lib/debug/trace.cc +18 -18
- data/src/core/lib/debug/trace.h +19 -19
- data/src/core/lib/event_engine/common_closures.h +71 -0
- data/src/core/lib/event_engine/default_event_engine.cc +38 -15
- data/src/core/lib/event_engine/default_event_engine.h +15 -3
- data/src/core/lib/event_engine/default_event_engine_factory.cc +2 -4
- data/src/core/lib/event_engine/executor/executor.h +1 -1
- data/src/core/lib/event_engine/forkable.h +1 -1
- data/src/core/lib/event_engine/memory_allocator.cc +1 -1
- data/src/core/lib/event_engine/poller.h +10 -4
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +614 -0
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h +129 -0
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +900 -0
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.h +97 -0
- data/src/core/lib/event_engine/posix_engine/event_poller.h +111 -0
- data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +74 -0
- data/src/core/lib/event_engine/{executor/threaded_executor.cc → posix_engine/event_poller_posix_default.h} +11 -14
- data/src/core/lib/event_engine/posix_engine/internal_errqueue.cc +77 -0
- data/src/core/lib/event_engine/posix_engine/internal_errqueue.h +179 -0
- data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +265 -0
- data/src/core/lib/event_engine/posix_engine/lockfree_event.h +73 -0
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +1308 -0
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +684 -0
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +456 -28
- data/src/core/lib/event_engine/posix_engine/posix_engine.h +148 -24
- data/src/core/lib/event_engine/posix_engine/posix_engine_closure.h +80 -0
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +236 -0
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +228 -0
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +380 -0
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.h +91 -0
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +853 -0
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +316 -0
- data/src/core/lib/event_engine/posix_engine/timer.cc +49 -49
- data/src/core/lib/event_engine/posix_engine/timer.h +87 -86
- data/src/core/lib/event_engine/posix_engine/timer_heap.cc +27 -27
- data/src/core/lib/event_engine/posix_engine/timer_heap.h +21 -21
- data/src/core/lib/event_engine/posix_engine/timer_manager.cc +76 -214
- data/src/core/lib/event_engine/posix_engine/timer_manager.h +41 -69
- data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +332 -0
- data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +185 -0
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.cc +127 -0
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.h +45 -0
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.cc +150 -0
- data/src/core/lib/event_engine/{executor/threaded_executor.h → posix_engine/wakeup_fd_pipe.h} +16 -15
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h +76 -0
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.cc +67 -0
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h +37 -0
- data/src/core/lib/event_engine/slice.cc +7 -6
- data/src/core/lib/event_engine/slice_buffer.cc +2 -2
- data/src/core/lib/event_engine/socket_notifier.h +1 -1
- data/src/core/lib/event_engine/tcp_socket_utils.cc +373 -0
- data/src/core/lib/event_engine/tcp_socket_utils.h +85 -0
- data/src/core/lib/event_engine/thread_pool.cc +125 -43
- data/src/core/lib/event_engine/thread_pool.h +49 -26
- data/src/core/lib/event_engine/time_util.h +1 -1
- data/src/core/lib/event_engine/windows/iocp.cc +13 -12
- data/src/core/lib/event_engine/windows/iocp.h +1 -1
- data/src/core/lib/event_engine/windows/win_socket.cc +9 -9
- data/src/core/lib/event_engine/windows/windows_engine.cc +26 -20
- data/src/core/lib/event_engine/windows/windows_engine.h +8 -4
- data/src/core/lib/experiments/config.cc +1 -1
- data/src/core/lib/experiments/experiments.cc +13 -13
- data/src/core/lib/experiments/experiments.h +8 -6
- data/src/core/lib/gpr/alloc.cc +19 -17
- data/src/core/lib/gpr/alloc.h +18 -18
- data/src/core/lib/gpr/atm.cc +17 -17
- data/src/core/lib/gpr/cpu_iphone.cc +24 -24
- data/src/core/lib/gpr/cpu_linux.cc +28 -23
- data/src/core/lib/gpr/cpu_posix.cc +23 -22
- data/src/core/lib/gpr/cpu_windows.cc +20 -18
- data/src/core/lib/gpr/log.cc +27 -19
- data/src/core/lib/gpr/log_android.cc +22 -20
- data/src/core/lib/gpr/log_linux.cc +24 -24
- data/src/core/lib/gpr/log_posix.cc +20 -19
- data/src/core/lib/gpr/log_windows.cc +25 -24
- data/src/core/lib/gpr/spinlock.h +18 -18
- data/src/core/lib/gpr/string.cc +25 -24
- data/src/core/lib/gpr/string.h +58 -58
- data/src/core/lib/gpr/string_posix.cc +24 -24
- data/src/core/lib/gpr/string_util_windows.cc +22 -22
- data/src/core/lib/gpr/string_windows.cc +24 -24
- data/src/core/lib/gpr/sync.cc +25 -25
- data/src/core/lib/gpr/sync_abseil.cc +22 -20
- data/src/core/lib/gpr/sync_posix.cc +23 -21
- data/src/core/lib/gpr/sync_windows.cc +29 -27
- data/src/core/lib/gpr/time.cc +23 -21
- data/src/core/lib/gpr/time_posix.cc +35 -30
- data/src/core/lib/gpr/time_precise.cc +22 -22
- data/src/core/lib/gpr/time_precise.h +18 -19
- data/src/core/lib/gpr/time_windows.cc +25 -22
- data/src/core/lib/gpr/tmpfile.h +22 -22
- data/src/core/lib/gpr/tmpfile_msys.cc +21 -20
- data/src/core/lib/gpr/tmpfile_posix.cc +22 -20
- data/src/core/lib/gpr/tmpfile_windows.cc +23 -22
- data/src/core/lib/gpr/useful.h +40 -27
- data/src/core/lib/gpr/wrap_memcpy.cc +23 -23
- data/src/core/lib/gprpp/atomic_utils.h +18 -18
- data/src/core/lib/gprpp/bitset.h +24 -0
- data/src/core/{ext/xds/xds_resource_type.cc → lib/gprpp/crash.cc} +12 -12
- data/src/core/lib/gprpp/crash.h +34 -0
- data/src/core/lib/gprpp/debug_location.h +18 -18
- data/src/core/lib/gprpp/dual_ref_counted.h +1 -1
- data/src/core/lib/gprpp/env.h +20 -20
- data/src/core/lib/gprpp/env_linux.cc +21 -21
- data/src/core/lib/gprpp/env_posix.cc +18 -18
- data/src/core/lib/gprpp/env_windows.cc +18 -18
- data/src/core/lib/gprpp/examine_stack.cc +17 -17
- data/src/core/lib/gprpp/examine_stack.h +18 -18
- data/src/core/lib/gprpp/fork.cc +21 -22
- data/src/core/lib/gprpp/fork.h +22 -22
- data/src/core/lib/gprpp/global_config.h +18 -18
- data/src/core/lib/gprpp/global_config_custom.h +18 -18
- data/src/core/lib/gprpp/global_config_env.cc +17 -17
- data/src/core/lib/gprpp/global_config_env.h +23 -23
- data/src/core/lib/gprpp/global_config_generic.h +18 -18
- data/src/core/lib/gprpp/host_port.cc +26 -26
- data/src/core/lib/gprpp/host_port.h +29 -28
- data/src/core/lib/gprpp/load_file.cc +75 -0
- data/src/core/lib/gprpp/load_file.h +33 -0
- data/src/core/lib/gprpp/manual_constructor.h +18 -17
- data/src/core/lib/gprpp/memory.h +18 -18
- data/src/core/lib/gprpp/mpscq.cc +17 -17
- data/src/core/lib/gprpp/mpscq.h +18 -18
- data/src/core/lib/gprpp/no_destruct.h +1 -0
- data/src/core/lib/gprpp/orphanable.h +18 -18
- data/src/core/lib/gprpp/per_cpu.h +46 -0
- data/src/core/lib/gprpp/ref_counted.h +18 -18
- data/src/core/lib/gprpp/ref_counted_ptr.h +19 -18
- data/src/core/lib/gprpp/stat_posix.cc +5 -4
- data/src/core/lib/gprpp/stat_windows.cc +4 -2
- data/src/core/lib/gprpp/status_helper.cc +4 -3
- data/src/core/lib/gprpp/status_helper.h +1 -3
- data/src/core/lib/gprpp/strerror.cc +41 -0
- data/src/core/lib/gprpp/strerror.h +29 -0
- data/src/core/lib/gprpp/sync.h +20 -20
- data/src/core/lib/gprpp/table.h +1 -0
- data/src/core/lib/gprpp/thd.h +19 -19
- data/src/core/lib/gprpp/thd_posix.cc +30 -31
- data/src/core/lib/gprpp/thd_windows.cc +26 -26
- data/src/core/lib/gprpp/time.cc +16 -11
- data/src/core/lib/gprpp/time.h +13 -3
- data/src/core/lib/gprpp/time_averaged_stats.cc +20 -20
- data/src/core/lib/gprpp/time_averaged_stats.h +48 -48
- data/src/core/lib/gprpp/time_util.h +1 -1
- data/src/core/lib/gprpp/unique_type_name.h +18 -18
- data/src/core/lib/gprpp/validation_errors.h +18 -1
- data/src/core/lib/handshaker/proxy_mapper.h +18 -18
- data/src/core/lib/handshaker/proxy_mapper_registry.cc +17 -17
- data/src/core/lib/handshaker/proxy_mapper_registry.h +18 -18
- data/src/core/lib/http/format_request.cc +18 -18
- data/src/core/lib/http/format_request.h +18 -18
- data/src/core/lib/http/httpcli.cc +57 -61
- data/src/core/lib/http/httpcli.h +26 -26
- data/src/core/lib/http/httpcli_security_connector.cc +22 -25
- data/src/core/lib/http/parser.cc +76 -87
- data/src/core/lib/http/parser.h +32 -32
- data/src/core/lib/iomgr/block_annotate.h +21 -21
- data/src/core/lib/iomgr/buffer_list.cc +156 -136
- data/src/core/lib/iomgr/buffer_list.h +120 -98
- data/src/core/lib/iomgr/call_combiner.cc +29 -27
- data/src/core/lib/iomgr/call_combiner.h +21 -22
- data/src/core/lib/iomgr/cfstream_handle.cc +33 -36
- data/src/core/lib/iomgr/cfstream_handle.h +22 -22
- data/src/core/lib/iomgr/closure.h +90 -45
- data/src/core/lib/iomgr/combiner.cc +20 -19
- data/src/core/lib/iomgr/combiner.h +18 -18
- data/src/core/lib/iomgr/dualstack_socket_posix.cc +21 -21
- data/src/core/lib/iomgr/dynamic_annotations.h +20 -20
- data/src/core/lib/iomgr/endpoint.cc +17 -17
- data/src/core/lib/iomgr/endpoint.h +46 -46
- data/src/core/lib/iomgr/endpoint_cfstream.cc +44 -43
- data/src/core/lib/iomgr/endpoint_cfstream.h +27 -27
- data/src/core/lib/iomgr/endpoint_pair.h +18 -18
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +20 -19
- data/src/core/lib/iomgr/endpoint_pair_windows.cc +18 -17
- data/src/core/lib/iomgr/error.cc +49 -61
- data/src/core/lib/iomgr/error.h +42 -173
- data/src/core/lib/iomgr/error_cfstream.cc +18 -18
- data/src/core/lib/iomgr/error_cfstream.h +19 -19
- data/src/core/lib/iomgr/ev_apple.cc +21 -21
- data/src/core/lib/iomgr/ev_apple.h +17 -17
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +208 -195
- data/src/core/lib/iomgr/ev_epoll1_linux.h +18 -18
- data/src/core/lib/iomgr/ev_poll_posix.cc +212 -205
- data/src/core/lib/iomgr/ev_poll_posix.h +18 -18
- data/src/core/lib/iomgr/ev_posix.cc +36 -28
- data/src/core/lib/iomgr/ev_posix.h +85 -81
- data/src/core/lib/iomgr/ev_windows.cc +18 -18
- data/src/core/lib/iomgr/exec_ctx.cc +34 -34
- data/src/core/lib/iomgr/exec_ctx.h +141 -141
- data/src/core/lib/iomgr/executor.cc +21 -21
- data/src/core/lib/iomgr/executor.h +24 -24
- data/src/core/lib/iomgr/fork_posix.cc +24 -22
- data/src/core/lib/iomgr/fork_windows.cc +21 -21
- data/src/core/lib/iomgr/gethostname.h +18 -18
- data/src/core/lib/iomgr/gethostname_fallback.cc +17 -17
- data/src/core/lib/iomgr/gethostname_host_name_max.cc +17 -17
- data/src/core/lib/iomgr/gethostname_sysconf.cc +17 -17
- data/src/core/lib/iomgr/grpc_if_nametoindex.h +20 -20
- data/src/core/lib/iomgr/grpc_if_nametoindex_posix.cc +20 -19
- data/src/core/lib/iomgr/grpc_if_nametoindex_unsupported.cc +20 -19
- data/src/core/lib/iomgr/internal_errqueue.cc +4 -2
- data/src/core/lib/iomgr/internal_errqueue.h +80 -80
- data/src/core/lib/iomgr/iocp_windows.cc +22 -21
- data/src/core/lib/iomgr/iocp_windows.h +18 -18
- data/src/core/lib/iomgr/iomgr.cc +19 -18
- data/src/core/lib/iomgr/iomgr.h +32 -32
- data/src/core/lib/iomgr/iomgr_internal.cc +17 -17
- data/src/core/lib/iomgr/iomgr_internal.h +25 -25
- data/src/core/lib/iomgr/iomgr_posix.cc +20 -20
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +20 -19
- data/src/core/lib/iomgr/iomgr_windows.cc +24 -22
- data/src/core/lib/iomgr/load_file.cc +24 -27
- data/src/core/lib/iomgr/load_file.h +20 -20
- data/src/core/lib/iomgr/lockfree_event.cc +114 -114
- data/src/core/lib/iomgr/lockfree_event.h +19 -19
- data/src/core/lib/iomgr/nameser.h +84 -84
- data/src/core/lib/iomgr/polling_entity.cc +25 -21
- data/src/core/lib/iomgr/polling_entity.h +27 -27
- data/src/core/lib/iomgr/pollset.cc +17 -17
- data/src/core/lib/iomgr/pollset.h +51 -51
- data/src/core/lib/iomgr/pollset_set.cc +17 -17
- data/src/core/lib/iomgr/pollset_set.h +22 -22
- data/src/core/lib/iomgr/pollset_set_windows.cc +18 -18
- data/src/core/lib/iomgr/pollset_set_windows.h +18 -18
- data/src/core/lib/iomgr/pollset_windows.cc +30 -29
- data/src/core/lib/iomgr/pollset_windows.h +22 -22
- data/src/core/lib/iomgr/port.h +29 -29
- data/src/core/lib/iomgr/python_util.h +20 -20
- data/src/core/lib/iomgr/resolve_address.cc +26 -20
- data/src/core/lib/iomgr/resolve_address.h +21 -22
- data/src/core/lib/iomgr/resolve_address_impl.h +2 -2
- data/src/core/lib/iomgr/resolve_address_posix.cc +35 -45
- data/src/core/lib/iomgr/resolve_address_posix.h +1 -2
- data/src/core/lib/iomgr/resolve_address_windows.cc +18 -20
- data/src/core/lib/iomgr/resolve_address_windows.h +1 -2
- data/src/core/lib/iomgr/resolved_address.h +1 -1
- data/src/core/lib/iomgr/sockaddr.h +21 -21
- data/src/core/lib/iomgr/sockaddr_posix.h +18 -18
- data/src/core/lib/iomgr/sockaddr_utils_posix.cc +18 -17
- data/src/core/lib/iomgr/sockaddr_windows.h +18 -18
- data/src/core/lib/iomgr/socket_factory_posix.cc +18 -18
- data/src/core/lib/iomgr/socket_factory_posix.h +30 -30
- data/src/core/lib/iomgr/socket_mutator.cc +19 -18
- data/src/core/lib/iomgr/socket_mutator.h +37 -37
- data/src/core/lib/iomgr/socket_utils.h +24 -24
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +68 -66
- data/src/core/lib/iomgr/socket_utils_linux.cc +18 -17
- data/src/core/lib/iomgr/socket_utils_posix.cc +22 -20
- data/src/core/lib/iomgr/socket_utils_posix.h +78 -78
- data/src/core/lib/iomgr/socket_utils_windows.cc +20 -19
- data/src/core/lib/iomgr/socket_windows.cc +37 -36
- data/src/core/lib/iomgr/socket_windows.h +56 -56
- data/src/core/lib/iomgr/systemd_utils.cc +116 -0
- data/src/core/lib/{slice/slice_buffer_api.cc → iomgr/systemd_utils.h} +12 -14
- data/src/core/lib/iomgr/tcp_client.cc +17 -17
- data/src/core/lib/iomgr/tcp_client.h +26 -26
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +25 -28
- data/src/core/lib/iomgr/tcp_client_posix.cc +70 -73
- data/src/core/lib/iomgr/tcp_client_posix.h +43 -43
- data/src/core/lib/iomgr/tcp_client_windows.cc +36 -39
- data/src/core/lib/iomgr/tcp_posix.cc +223 -237
- data/src/core/lib/iomgr/tcp_posix.h +27 -27
- data/src/core/lib/iomgr/tcp_server.cc +30 -22
- data/src/core/lib/iomgr/tcp_server.h +68 -62
- data/src/core/lib/iomgr/tcp_server_posix.cc +124 -94
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +54 -51
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +90 -55
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +40 -40
- data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +19 -19
- data/src/core/lib/iomgr/tcp_server_windows.cc +97 -104
- data/src/core/lib/iomgr/tcp_windows.cc +109 -93
- data/src/core/lib/iomgr/tcp_windows.h +29 -29
- data/src/core/lib/iomgr/timer.cc +17 -17
- data/src/core/lib/iomgr/timer.h +65 -65
- data/src/core/lib/iomgr/timer_generic.cc +115 -122
- data/src/core/lib/iomgr/timer_generic.h +19 -19
- data/src/core/lib/iomgr/timer_heap.cc +25 -25
- data/src/core/lib/iomgr/timer_heap.h +19 -19
- data/src/core/lib/iomgr/timer_manager.cc +30 -29
- data/src/core/lib/iomgr/timer_manager.h +25 -25
- data/src/core/lib/iomgr/unix_sockets_posix.cc +20 -21
- data/src/core/lib/iomgr/unix_sockets_posix.h +18 -18
- data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +19 -17
- data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +23 -21
- data/src/core/lib/iomgr/wakeup_fd_nospecial.cc +23 -23
- data/src/core/lib/iomgr/wakeup_fd_pipe.cc +29 -26
- data/src/core/lib/iomgr/wakeup_fd_pipe.h +18 -18
- data/src/core/lib/iomgr/wakeup_fd_posix.cc +18 -18
- data/src/core/lib/iomgr/wakeup_fd_posix.h +50 -50
- data/src/core/lib/json/json_channel_args.h +42 -0
- data/src/core/lib/json/json_object_loader.cc +17 -2
- data/src/core/lib/json/json_object_loader.h +37 -1
- data/src/core/lib/json/json_reader.cc +28 -28
- data/src/core/lib/json/json_util.cc +5 -5
- data/src/core/lib/json/json_util.h +4 -4
- data/src/core/lib/json/json_writer.cc +56 -56
- data/src/core/lib/load_balancing/lb_policy.cc +18 -18
- data/src/core/lib/load_balancing/lb_policy.h +7 -4
- data/src/core/lib/load_balancing/subchannel_interface.h +1 -8
- data/src/core/lib/matchers/matchers.cc +6 -5
- data/src/core/lib/matchers/matchers.h +1 -1
- data/src/core/lib/promise/activity.cc +16 -2
- data/src/core/lib/promise/activity.h +58 -27
- data/src/core/lib/promise/arena_promise.h +82 -52
- data/src/core/lib/promise/context.h +14 -6
- data/src/core/lib/promise/detail/basic_seq.h +9 -28
- data/src/core/lib/promise/detail/promise_factory.h +59 -10
- data/src/core/lib/promise/detail/status.h +28 -0
- data/src/core/lib/promise/detail/switch.h +1455 -0
- data/src/core/lib/promise/exec_ctx_wakeup_scheduler.h +20 -12
- data/src/core/lib/promise/for_each.h +155 -0
- data/src/core/lib/promise/latch.h +13 -19
- data/src/core/lib/promise/loop.h +7 -5
- data/src/core/lib/promise/map.h +1 -0
- data/src/core/lib/promise/map_pipe.h +88 -0
- data/src/core/lib/promise/pipe.cc +19 -0
- data/src/core/lib/promise/pipe.h +505 -0
- data/src/core/lib/promise/poll.h +19 -0
- data/src/core/lib/promise/seq.h +4 -5
- data/src/core/lib/promise/sleep.cc +5 -4
- data/src/core/lib/promise/sleep.h +1 -2
- data/src/core/lib/promise/try_concurrently.h +342 -0
- data/src/core/lib/promise/try_seq.h +11 -13
- data/src/core/lib/resolver/resolver.cc +17 -17
- data/src/core/lib/resolver/server_address.cc +18 -17
- data/src/core/lib/resolver/server_address.h +19 -21
- data/src/core/lib/resource_quota/api.cc +0 -1
- data/src/core/lib/resource_quota/api.h +1 -1
- data/src/core/lib/resource_quota/arena.cc +36 -17
- data/src/core/lib/resource_quota/arena.h +107 -18
- data/src/core/lib/resource_quota/memory_quota.cc +140 -43
- data/src/core/lib/resource_quota/memory_quota.h +85 -23
- data/src/core/lib/resource_quota/resource_quota.h +1 -1
- data/src/core/lib/security/authorization/authorization_policy_provider.h +1 -1
- data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +0 -1
- data/src/core/lib/security/authorization/grpc_authorization_engine.cc +1 -3
- data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +4 -2
- data/src/core/lib/security/authorization/matchers.cc +25 -22
- data/src/core/lib/security/authorization/rbac_policy.cc +2 -3
- data/src/core/lib/security/authorization/rbac_policy.h +1 -1
- data/src/core/lib/security/context/security_context.cc +22 -23
- data/src/core/lib/security/context/security_context.h +40 -30
- data/src/core/lib/security/credentials/alts/alts_credentials.cc +17 -17
- data/src/core/lib/security/credentials/alts/alts_credentials.h +50 -50
- data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +19 -19
- data/src/core/lib/security/credentials/alts/check_gcp_environment.h +41 -41
- data/src/core/lib/security/credentials/alts/check_gcp_environment_linux.cc +17 -17
- data/src/core/lib/security/credentials/alts/check_gcp_environment_no_op.cc +18 -17
- data/src/core/lib/security/credentials/alts/check_gcp_environment_windows.cc +18 -17
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc +19 -19
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.cc +18 -18
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.h +36 -37
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc +18 -18
- data/src/core/lib/security/credentials/call_creds_util.h +1 -1
- data/src/core/lib/security/credentials/channel_creds_registry_init.cc +3 -4
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +22 -22
- data/src/core/lib/security/credentials/composite/composite_credentials.h +20 -21
- data/src/core/lib/security/credentials/credentials.cc +19 -18
- data/src/core/lib/security/credentials/credentials.h +34 -33
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +77 -55
- data/src/core/lib/security/credentials/external/aws_request_signer.cc +4 -3
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +40 -51
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +17 -21
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +21 -25
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +20 -19
- data/src/core/lib/security/credentials/fake/fake_credentials.h +34 -35
- data/src/core/lib/security/credentials/google_default/credentials_generic.cc +17 -17
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +75 -73
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +18 -19
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +18 -17
- data/src/core/lib/security/credentials/iam/iam_credentials.h +18 -18
- data/src/core/lib/security/credentials/jwt/json_token.cc +24 -25
- data/src/core/lib/security/credentials/jwt/json_token.h +32 -32
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +18 -18
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +18 -19
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +75 -75
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +43 -43
- data/src/core/lib/security/credentials/local/local_credentials.cc +17 -17
- data/src/core/lib/security/credentials/local/local_credentials.h +20 -20
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +52 -59
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +19 -19
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +24 -23
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +22 -22
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +19 -20
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +18 -18
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +20 -28
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +4 -11
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +30 -43
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +1 -1
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +18 -18
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +18 -19
- data/src/core/lib/security/credentials/tls/tls_credentials.h +18 -18
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +1 -2
- data/src/core/lib/security/credentials/xds/xds_credentials.h +1 -1
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +32 -38
- data/src/core/lib/security/security_connector/alts/alts_security_connector.h +41 -42
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +32 -41
- data/src/core/lib/security/security_connector/fake/fake_security_connector.h +20 -21
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +2 -2
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +3 -8
- data/src/core/lib/security/security_connector/load_system_roots.h +18 -18
- data/src/core/lib/security/security_connector/load_system_roots_fallback.cc +18 -18
- data/src/core/lib/security/security_connector/load_system_roots_supported.cc +19 -22
- data/src/core/lib/security/security_connector/load_system_roots_supported.h +19 -20
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +30 -34
- data/src/core/lib/security/security_connector/local/local_security_connector.h +40 -41
- data/src/core/lib/security/security_connector/security_connector.cc +17 -17
- data/src/core/lib/security/security_connector/security_connector.h +32 -33
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +34 -39
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +38 -39
- data/src/core/lib/security/security_connector/ssl_utils.cc +37 -39
- data/src/core/lib/security/security_connector/ssl_utils.h +31 -31
- data/src/core/lib/security/security_connector/ssl_utils_config.cc +22 -22
- data/src/core/lib/security/security_connector/ssl_utils_config.h +18 -19
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +42 -48
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +17 -17
- data/src/core/lib/security/transport/auth_filters.h +18 -18
- data/src/core/lib/security/transport/client_auth_filter.cc +21 -21
- data/src/core/lib/security/transport/secure_endpoint.cc +54 -56
- data/src/core/lib/security/transport/secure_endpoint.h +22 -22
- data/src/core/lib/security/transport/security_handshaker.cc +70 -70
- data/src/core/lib/security/transport/security_handshaker.h +19 -19
- data/src/core/lib/security/transport/server_auth_filter.cc +43 -44
- data/src/core/lib/security/transport/tsi_error.cc +23 -20
- data/src/core/lib/security/transport/tsi_error.h +18 -18
- data/src/core/lib/security/util/json_util.cc +21 -22
- data/src/core/lib/security/util/json_util.h +18 -18
- data/src/core/lib/service_config/service_config.h +2 -2
- data/src/core/lib/service_config/service_config_call_data.h +7 -1
- data/src/core/lib/service_config/service_config_impl.cc +111 -158
- data/src/core/lib/service_config/service_config_impl.h +14 -17
- data/src/core/lib/service_config/service_config_parser.cc +14 -31
- data/src/core/lib/service_config/service_config_parser.h +14 -10
- data/src/core/lib/slice/b64.cc +26 -26
- data/src/core/lib/slice/b64.h +29 -29
- data/src/core/lib/slice/percent_encoding.cc +17 -17
- data/src/core/lib/slice/percent_encoding.h +24 -24
- data/src/core/lib/slice/slice.cc +44 -38
- data/src/core/lib/slice/slice.h +57 -11
- data/src/core/lib/slice/slice_buffer.cc +63 -59
- data/src/core/lib/slice/slice_buffer.h +27 -2
- data/src/core/lib/slice/slice_internal.h +31 -39
- data/src/core/lib/slice/slice_refcount.h +34 -19
- data/src/core/lib/slice/slice_string_helpers.cc +17 -17
- data/src/core/lib/slice/slice_string_helpers.h +19 -19
- data/src/core/lib/surface/api_trace.cc +17 -17
- data/src/core/lib/surface/api_trace.h +22 -22
- data/src/core/lib/surface/byte_buffer.cc +22 -23
- data/src/core/lib/surface/byte_buffer_reader.cc +23 -23
- data/src/core/lib/surface/call.cc +1521 -335
- data/src/core/lib/surface/call.h +86 -39
- data/src/core/lib/surface/call_details.cc +20 -21
- data/src/core/lib/surface/call_log_batch.cc +18 -18
- data/src/core/lib/surface/call_test_only.h +30 -30
- data/src/core/lib/surface/call_trace.cc +113 -0
- data/src/core/{ext/filters/http/message_compress/message_decompress_filter.h → lib/surface/call_trace.h} +10 -12
- data/src/core/lib/surface/channel.cc +62 -67
- data/src/core/lib/surface/channel.h +40 -32
- data/src/core/lib/surface/channel_init.cc +17 -17
- data/src/core/lib/surface/channel_init.h +18 -18
- data/src/core/lib/surface/channel_ping.cc +19 -19
- data/src/core/lib/surface/channel_stack_type.cc +21 -17
- data/src/core/lib/surface/channel_stack_type.h +20 -18
- data/src/core/lib/surface/completion_queue.cc +173 -191
- data/src/core/lib/surface/completion_queue.h +32 -32
- data/src/core/lib/surface/completion_queue_factory.cc +28 -28
- data/src/core/lib/surface/completion_queue_factory.h +20 -20
- data/src/core/lib/surface/event_string.cc +17 -17
- data/src/core/lib/surface/event_string.h +20 -20
- data/src/core/lib/surface/init.cc +29 -58
- data/src/core/lib/surface/init.h +18 -18
- data/src/core/lib/surface/init_internally.cc +1 -0
- data/src/core/lib/surface/init_internally.h +9 -0
- data/src/core/lib/surface/lame_client.cc +28 -26
- data/src/core/lib/surface/lame_client.h +19 -19
- data/src/core/lib/surface/metadata_array.cc +17 -18
- data/src/core/lib/surface/server.cc +61 -83
- data/src/core/lib/surface/server.h +5 -7
- data/src/core/lib/surface/validate_metadata.cc +28 -29
- data/src/core/lib/surface/validate_metadata.h +18 -18
- data/src/core/lib/surface/version.cc +21 -21
- data/src/core/lib/transport/bdp_estimator.cc +17 -17
- data/src/core/lib/transport/bdp_estimator.h +18 -19
- data/src/core/lib/transport/connectivity_state.cc +19 -19
- data/src/core/lib/transport/connectivity_state.h +19 -19
- data/src/core/lib/transport/error_utils.cc +51 -45
- data/src/core/lib/transport/error_utils.h +21 -21
- data/src/core/lib/transport/handshaker.cc +49 -46
- data/src/core/lib/transport/handshaker.h +43 -38
- data/src/core/lib/transport/handshaker_factory.h +44 -18
- data/src/core/lib/transport/handshaker_registry.cc +25 -19
- data/src/core/lib/transport/handshaker_registry.h +21 -22
- data/src/core/lib/transport/http2_errors.h +20 -20
- data/src/core/lib/transport/http_connect_handshaker.cc +40 -41
- data/src/core/lib/transport/http_connect_handshaker.h +18 -18
- data/src/core/lib/transport/metadata_batch.cc +4 -1
- data/src/core/lib/transport/metadata_batch.h +46 -20
- data/src/core/lib/transport/parsed_metadata.cc +2 -6
- data/src/core/lib/transport/parsed_metadata.h +1 -0
- data/src/core/lib/transport/pid_controller.cc +20 -20
- data/src/core/lib/transport/pid_controller.h +24 -24
- data/src/core/lib/transport/status_conversion.cc +22 -22
- data/src/core/lib/transport/status_conversion.h +20 -20
- data/src/core/lib/transport/tcp_connect_handshaker.cc +15 -20
- data/src/core/lib/transport/tcp_connect_handshaker.h +1 -1
- data/src/core/lib/transport/timeout_encoding.cc +22 -22
- data/src/core/lib/transport/timeout_encoding.h +18 -18
- data/src/core/lib/transport/transport.cc +88 -41
- data/src/core/lib/transport/transport.h +193 -195
- data/src/core/lib/transport/transport_impl.h +42 -42
- data/src/core/lib/transport/transport_op_string.cc +26 -25
- data/src/core/plugin_registry/grpc_plugin_registry.cc +25 -27
- data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +7 -14
- data/src/core/tsi/alts/crypt/aes_gcm.cc +20 -20
- data/src/core/tsi/alts/crypt/gsec.cc +26 -26
- data/src/core/tsi/alts/crypt/gsec.h +334 -334
- data/src/core/tsi/alts/frame_protector/alts_counter.cc +23 -23
- data/src/core/tsi/alts/frame_protector/alts_counter.h +66 -66
- data/src/core/tsi/alts/frame_protector/alts_crypter.cc +19 -19
- data/src/core/tsi/alts/frame_protector/alts_crypter.h +206 -206
- data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +72 -71
- data/src/core/tsi/alts/frame_protector/alts_frame_protector.h +38 -38
- data/src/core/tsi/alts/frame_protector/alts_record_protocol_crypter_common.cc +18 -18
- data/src/core/tsi/alts/frame_protector/alts_record_protocol_crypter_common.h +80 -81
- data/src/core/tsi/alts/frame_protector/alts_seal_privacy_integrity_crypter.cc +22 -22
- data/src/core/tsi/alts/frame_protector/alts_unseal_privacy_integrity_crypter.cc +22 -22
- data/src/core/tsi/alts/frame_protector/frame_handler.cc +26 -25
- data/src/core/tsi/alts/frame_protector/frame_handler.h +166 -166
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +78 -77
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +99 -99
- data/src/core/tsi/alts/handshaker/alts_shared_resource.cc +18 -17
- data/src/core/tsi/alts/handshaker/alts_shared_resource.h +41 -42
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +37 -36
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +58 -58
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +20 -20
- data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +21 -20
- data/src/core/tsi/alts/handshaker/alts_tsi_utils.h +36 -36
- data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +19 -19
- data/src/core/tsi/alts/handshaker/transport_security_common_api.h +102 -101
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +45 -44
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.h +38 -39
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.cc +38 -36
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.h +33 -34
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol.h +65 -66
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +32 -31
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.h +53 -54
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.cc +54 -53
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.h +138 -139
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +58 -57
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.h +41 -42
- data/src/core/tsi/fake_transport_security.cc +80 -79
- data/src/core/tsi/fake_transport_security.h +30 -30
- data/src/core/tsi/local_transport_security.cc +34 -33
- data/src/core/tsi/local_transport_security.h +31 -31
- data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +8 -3
- data/src/core/tsi/ssl/session_cache/ssl_session.h +18 -18
- data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +19 -19
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +18 -17
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +19 -19
- data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +25 -20
- data/src/core/tsi/ssl_transport_security.cc +139 -323
- data/src/core/tsi/ssl_transport_security.h +201 -200
- data/src/core/tsi/ssl_transport_security_utils.cc +250 -0
- data/src/core/tsi/ssl_transport_security_utils.h +147 -0
- data/src/core/tsi/ssl_types.h +25 -25
- data/src/core/tsi/transport_security.cc +26 -26
- data/src/core/tsi/transport_security.h +45 -45
- data/src/core/tsi/transport_security_grpc.cc +20 -20
- data/src/core/tsi/transport_security_grpc.h +39 -39
- data/src/core/tsi/transport_security_interface.h +330 -330
- data/src/ruby/ext/grpc/{ext-export-truffleruby.clang → ext-export-truffleruby-with-ruby-abi-version.clang} +0 -0
- data/src/ruby/ext/grpc/{ext-export-truffleruby.gcc → ext-export-truffleruby-with-ruby-abi-version.gcc} +0 -0
- data/src/ruby/ext/grpc/ext-export-with-ruby-abi-version.clang +2 -0
- data/src/ruby/ext/grpc/ext-export-with-ruby-abi-version.gcc +7 -0
- data/src/ruby/ext/grpc/ext-export.clang +0 -1
- data/src/ruby/ext/grpc/ext-export.gcc +1 -2
- data/src/ruby/ext/grpc/extconf.rb +47 -2
- data/src/ruby/ext/grpc/rb_call.c +1 -0
- data/src/ruby/ext/grpc/rb_channel.c +1 -0
- data/src/ruby/ext/grpc/rb_channel_args.c +1 -0
- data/src/ruby/ext/grpc/rb_compression_options.c +1 -1
- data/src/ruby/ext/grpc/rb_grpc.c +1 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +38 -38
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +59 -59
- data/src/ruby/lib/grpc/generic/bidi_call.rb +2 -0
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/spec/channel_spec.rb +0 -43
- data/src/ruby/spec/client_server_spec.rb +20 -8
- data/src/ruby/spec/generic/active_call_spec.rb +12 -3
- data/third_party/abseil-cpp/absl/cleanup/cleanup.h +140 -0
- data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +100 -0
- data/third_party/re2/re2/bitstate.cc +3 -3
- data/third_party/re2/re2/dfa.cc +13 -13
- data/third_party/re2/re2/nfa.cc +4 -4
- data/third_party/re2/re2/onepass.cc +2 -2
- data/third_party/re2/re2/prefilter_tree.cc +27 -59
- data/third_party/re2/re2/prefilter_tree.h +3 -2
- data/third_party/re2/re2/prog.cc +11 -2
- data/third_party/re2/re2/prog.h +17 -5
- data/third_party/re2/re2/re2.cc +6 -11
- data/third_party/re2/re2/re2.h +1 -1
- data/third_party/re2/re2/regexp.cc +1 -2
- data/third_party/re2/re2/stringpiece.h +10 -7
- data/third_party/re2/re2/unicode_casefold.cc +25 -11
- data/third_party/re2/re2/unicode_groups.cc +319 -151
- data/third_party/re2/re2/walker-inl.h +3 -2
- data/third_party/re2/util/mutex.h +4 -4
- data/third_party/zlib/compress.c +3 -3
- data/third_party/zlib/crc32.c +21 -12
- data/third_party/zlib/deflate.c +112 -106
- data/third_party/zlib/deflate.h +2 -2
- data/third_party/zlib/gzlib.c +1 -1
- data/third_party/zlib/gzread.c +3 -5
- data/third_party/zlib/gzwrite.c +1 -1
- data/third_party/zlib/infback.c +10 -7
- data/third_party/zlib/inflate.c +5 -2
- data/third_party/zlib/inftrees.c +2 -2
- data/third_party/zlib/inftrees.h +1 -1
- data/third_party/zlib/trees.c +61 -62
- data/third_party/zlib/uncompr.c +2 -2
- data/third_party/zlib/zconf.h +16 -3
- data/third_party/zlib/zlib.h +10 -10
- data/third_party/zlib/zutil.c +9 -7
- data/third_party/zlib/zutil.h +1 -0
- metadata +148 -42
- data/include/grpc/impl/codegen/gpr_slice.h +0 -71
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +0 -188
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +0 -187
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +0 -332
- data/src/core/ext/filters/http/message_compress/message_compress_filter.h +0 -52
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +0 -322
- data/src/core/ext/filters/server_config_selector/server_config_selector.cc +0 -62
- data/src/core/lib/gpr/murmur_hash.cc +0 -82
- data/src/core/lib/gpr/murmur_hash.h +0 -29
- data/src/core/lib/gpr/tls.h +0 -156
- data/src/core/lib/promise/call_push_pull.h +0 -148
- data/src/core/lib/slice/slice_api.cc +0 -39
- data/src/core/lib/slice/slice_refcount_base.h +0 -60
@@ -27,7 +27,6 @@
|
|
27
27
|
#include <set>
|
28
28
|
#include <vector>
|
29
29
|
|
30
|
-
#include "absl/memory/memory.h"
|
31
30
|
#include "absl/status/status.h"
|
32
31
|
#include "absl/status/statusor.h"
|
33
32
|
#include "absl/strings/cord.h"
|
@@ -38,21 +37,22 @@
|
|
38
37
|
#include "absl/types/optional.h"
|
39
38
|
#include "absl/types/variant.h"
|
40
39
|
|
41
|
-
#include <grpc/
|
40
|
+
#include <grpc/event_engine/event_engine.h>
|
42
41
|
#include <grpc/slice.h>
|
43
42
|
#include <grpc/status.h>
|
44
43
|
#include <grpc/support/log.h>
|
45
44
|
#include <grpc/support/string_util.h>
|
45
|
+
#include <grpc/support/time.h>
|
46
46
|
|
47
47
|
#include "src/core/ext/filters/client_channel/backend_metric.h"
|
48
48
|
#include "src/core/ext/filters/client_channel/backup_poller.h"
|
49
49
|
#include "src/core/ext/filters/client_channel/client_channel_channelz.h"
|
50
|
+
#include "src/core/ext/filters/client_channel/client_channel_service_config.h"
|
50
51
|
#include "src/core/ext/filters/client_channel/config_selector.h"
|
51
52
|
#include "src/core/ext/filters/client_channel/dynamic_filters.h"
|
52
53
|
#include "src/core/ext/filters/client_channel/global_subchannel_pool.h"
|
53
54
|
#include "src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h"
|
54
55
|
#include "src/core/ext/filters/client_channel/local_subchannel_pool.h"
|
55
|
-
#include "src/core/ext/filters/client_channel/resolver_result_parsing.h"
|
56
56
|
#include "src/core/ext/filters/client_channel/retry_filter.h"
|
57
57
|
#include "src/core/ext/filters/client_channel/subchannel.h"
|
58
58
|
#include "src/core/ext/filters/client_channel/subchannel_interface_internal.h"
|
@@ -65,6 +65,7 @@
|
|
65
65
|
#include "src/core/lib/debug/trace.h"
|
66
66
|
#include "src/core/lib/gpr/useful.h"
|
67
67
|
#include "src/core/lib/gprpp/debug_location.h"
|
68
|
+
#include "src/core/lib/gprpp/status_helper.h"
|
68
69
|
#include "src/core/lib/gprpp/sync.h"
|
69
70
|
#include "src/core/lib/gprpp/work_serializer.h"
|
70
71
|
#include "src/core/lib/handshaker/proxy_mapper_registry.h"
|
@@ -79,7 +80,6 @@
|
|
79
80
|
#include "src/core/lib/service_config/service_config_call_data.h"
|
80
81
|
#include "src/core/lib/service_config/service_config_impl.h"
|
81
82
|
#include "src/core/lib/slice/slice_internal.h"
|
82
|
-
#include "src/core/lib/slice/slice_refcount.h"
|
83
83
|
#include "src/core/lib/surface/channel.h"
|
84
84
|
#include "src/core/lib/transport/connectivity_state.h"
|
85
85
|
#include "src/core/lib/transport/error_utils.h"
|
@@ -234,7 +234,7 @@ class ClientChannel::CallData {
|
|
234
234
|
grpc_transport_stream_op_batch* pending_batches_[MAX_PENDING_BATCHES] = {};
|
235
235
|
|
236
236
|
// Set when we get a cancel_stream op.
|
237
|
-
grpc_error_handle cancel_error_
|
237
|
+
grpc_error_handle cancel_error_;
|
238
238
|
};
|
239
239
|
|
240
240
|
//
|
@@ -274,7 +274,7 @@ class DynamicTerminationFilter {
|
|
274
274
|
GPR_ASSERT(args->is_last);
|
275
275
|
GPR_ASSERT(elem->filter == &kFilterVtable);
|
276
276
|
new (elem->channel_data) DynamicTerminationFilter(args->channel_args);
|
277
|
-
return
|
277
|
+
return absl::OkStatus();
|
278
278
|
}
|
279
279
|
|
280
280
|
static void Destroy(grpc_channel_element* elem) {
|
@@ -301,7 +301,7 @@ class DynamicTerminationFilter::CallData {
|
|
301
301
|
static grpc_error_handle Init(grpc_call_element* elem,
|
302
302
|
const grpc_call_element_args* args) {
|
303
303
|
new (elem->call_data) CallData(*args);
|
304
|
-
return
|
304
|
+
return absl::OkStatus();
|
305
305
|
}
|
306
306
|
|
307
307
|
static void Destroy(grpc_call_element* elem,
|
@@ -317,7 +317,7 @@ class DynamicTerminationFilter::CallData {
|
|
317
317
|
subchannel_call->SetAfterCallStackDestroy(then_schedule_closure);
|
318
318
|
} else {
|
319
319
|
// TODO(yashkt) : This can potentially be a Closure::Run
|
320
|
-
ExecCtx::Run(DEBUG_LOCATION, then_schedule_closure,
|
320
|
+
ExecCtx::Run(DEBUG_LOCATION, then_schedule_closure, absl::OkStatus());
|
321
321
|
}
|
322
322
|
}
|
323
323
|
|
@@ -352,14 +352,14 @@ class DynamicTerminationFilter::CallData {
|
|
352
352
|
|
353
353
|
private:
|
354
354
|
explicit CallData(const grpc_call_element_args& args)
|
355
|
-
: path_(
|
355
|
+
: path_(CSliceRef(args.path)),
|
356
356
|
deadline_(args.deadline),
|
357
357
|
arena_(args.arena),
|
358
358
|
owning_call_(args.call_stack),
|
359
359
|
call_combiner_(args.call_combiner),
|
360
360
|
call_context_(args.context) {}
|
361
361
|
|
362
|
-
~CallData() {
|
362
|
+
~CallData() { CSliceUnref(path_); }
|
363
363
|
|
364
364
|
grpc_slice path_; // Request path.
|
365
365
|
Timestamp deadline_;
|
@@ -520,8 +520,6 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
|
|
520
520
|
data_watchers_.push_back(std::move(internal_watcher));
|
521
521
|
}
|
522
522
|
|
523
|
-
ChannelArgs channel_args() override { return subchannel_->channel_args(); }
|
524
|
-
|
525
523
|
void ThrottleKeepaliveTime(int new_keepalive_time) {
|
526
524
|
subchannel_->ThrottleKeepaliveTime(new_keepalive_time);
|
527
525
|
}
|
@@ -559,7 +557,8 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
|
|
559
557
|
DEBUG_LOCATION);
|
560
558
|
}
|
561
559
|
|
562
|
-
void OnConnectivityStateChange(
|
560
|
+
void OnConnectivityStateChange(grpc_connectivity_state state,
|
561
|
+
const absl::Status& status) override {
|
563
562
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
564
563
|
gpr_log(GPR_INFO,
|
565
564
|
"chand=%p: connectivity change for subchannel wrapper %p "
|
@@ -568,9 +567,9 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
|
|
568
567
|
}
|
569
568
|
Ref().release(); // ref owned by lambda
|
570
569
|
parent_->chand_->work_serializer_->Run(
|
571
|
-
[this]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(
|
570
|
+
[this, state, status]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(
|
572
571
|
*parent_->chand_->work_serializer_) {
|
573
|
-
ApplyUpdateInControlPlaneWorkSerializer();
|
572
|
+
ApplyUpdateInControlPlaneWorkSerializer(state, status);
|
574
573
|
Unref();
|
575
574
|
},
|
576
575
|
DEBUG_LOCATION);
|
@@ -590,19 +589,20 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
|
|
590
589
|
}
|
591
590
|
|
592
591
|
private:
|
593
|
-
void ApplyUpdateInControlPlaneWorkSerializer(
|
592
|
+
void ApplyUpdateInControlPlaneWorkSerializer(grpc_connectivity_state state,
|
593
|
+
const absl::Status& status)
|
594
594
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(*parent_->chand_->work_serializer_) {
|
595
595
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
596
596
|
gpr_log(GPR_INFO,
|
597
597
|
"chand=%p: processing connectivity change in work serializer "
|
598
|
-
"for subchannel wrapper %p subchannel %p "
|
599
|
-
"
|
598
|
+
"for subchannel wrapper %p subchannel %p watcher=%p "
|
599
|
+
"state=%s status=%s",
|
600
600
|
parent_->chand_, parent_.get(), parent_->subchannel_.get(),
|
601
|
-
watcher_.get())
|
601
|
+
watcher_.get(), ConnectivityStateName(state),
|
602
|
+
status.ToString().c_str());
|
602
603
|
}
|
603
|
-
ConnectivityStateChange state_change = PopConnectivityStateChange();
|
604
604
|
absl::optional<absl::Cord> keepalive_throttling =
|
605
|
-
|
605
|
+
status.GetPayload(kKeepaliveThrottlingKey);
|
606
606
|
if (keepalive_throttling.has_value()) {
|
607
607
|
int new_keepalive_time = -1;
|
608
608
|
if (absl::SimpleAtoi(std::string(keepalive_throttling.value()),
|
@@ -634,11 +634,9 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
|
|
634
634
|
// We specifically want to avoid propagating the status for
|
635
635
|
// state IDLE that the real subchannel gave us only for the
|
636
636
|
// purpose of keepalive propagation.
|
637
|
-
|
638
|
-
|
639
|
-
|
640
|
-
watcher_->OnConnectivityStateChange(state_change.state,
|
641
|
-
state_change.status);
|
637
|
+
watcher_->OnConnectivityStateChange(
|
638
|
+
state, state == GRPC_CHANNEL_TRANSIENT_FAILURE ? status
|
639
|
+
: absl::OkStatus());
|
642
640
|
}
|
643
641
|
}
|
644
642
|
|
@@ -733,7 +731,7 @@ void ClientChannel::ExternalConnectivityWatcher::Notify(
|
|
733
731
|
chand_, on_complete_, /*cancel=*/false);
|
734
732
|
// Report new state to the user.
|
735
733
|
*state_ = state;
|
736
|
-
ExecCtx::Run(DEBUG_LOCATION, on_complete_,
|
734
|
+
ExecCtx::Run(DEBUG_LOCATION, on_complete_, absl::OkStatus());
|
737
735
|
// Hop back into the work_serializer to clean up.
|
738
736
|
// Not needed in state SHUTDOWN, because the tracker will
|
739
737
|
// automatically remove all watchers in that case.
|
@@ -756,7 +754,7 @@ void ClientChannel::ExternalConnectivityWatcher::Cancel() {
|
|
756
754
|
std::memory_order_relaxed)) {
|
757
755
|
return; // Already done.
|
758
756
|
}
|
759
|
-
ExecCtx::Run(DEBUG_LOCATION, on_complete_,
|
757
|
+
ExecCtx::Run(DEBUG_LOCATION, on_complete_, absl::CancelledError());
|
760
758
|
// Hop back into the work_serializer to clean up.
|
761
759
|
// Note: The callback takes a ref in case the ref inside the state tracker
|
762
760
|
// gets removed before the callback runs via a SHUTDOWN notification.
|
@@ -770,7 +768,7 @@ void ClientChannel::ExternalConnectivityWatcher::Cancel() {
|
|
770
768
|
}
|
771
769
|
|
772
770
|
void ClientChannel::ExternalConnectivityWatcher::AddWatcherLocked() {
|
773
|
-
Closure::Run(DEBUG_LOCATION, watcher_timer_init_,
|
771
|
+
Closure::Run(DEBUG_LOCATION, watcher_timer_init_, absl::OkStatus());
|
774
772
|
// Add new watcher. Pass the ref of the object from creation to OrphanablePtr.
|
775
773
|
chand_->state_tracker_.AddWatcher(
|
776
774
|
initial_state_, OrphanablePtr<ConnectivityStateWatcherInterface>(this));
|
@@ -885,13 +883,12 @@ class ClientChannel::ClientChannelControlHelper
|
|
885
883
|
chand_, std::move(subchannel), std::move(health_check_service_name));
|
886
884
|
}
|
887
885
|
|
888
|
-
void UpdateState(
|
889
|
-
|
890
|
-
|
891
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
|
886
|
+
void UpdateState(grpc_connectivity_state state, const absl::Status& status,
|
887
|
+
RefCountedPtr<LoadBalancingPolicy::SubchannelPicker> picker)
|
888
|
+
override ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
|
892
889
|
if (chand_->resolver_ == nullptr) return; // Shutting down.
|
893
890
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
894
|
-
const char* extra =
|
891
|
+
const char* extra = chand_->disconnect_error_.ok()
|
895
892
|
? ""
|
896
893
|
: " (ignoring -- channel shutting down)";
|
897
894
|
gpr_log(GPR_INFO, "chand=%p: update: state=%s status=(%s) picker=%p%s",
|
@@ -899,7 +896,7 @@ class ClientChannel::ClientChannelControlHelper
|
|
899
896
|
picker.get(), extra);
|
900
897
|
}
|
901
898
|
// Do update only if not shutting down.
|
902
|
-
if (
|
899
|
+
if (chand_->disconnect_error_.ok()) {
|
903
900
|
chand_->UpdateStateAndPickerLocked(state, status, "helper",
|
904
901
|
std::move(picker));
|
905
902
|
}
|
@@ -918,6 +915,10 @@ class ClientChannel::ClientChannelControlHelper
|
|
918
915
|
return chand_->default_authority_;
|
919
916
|
}
|
920
917
|
|
918
|
+
grpc_event_engine::experimental::EventEngine* GetEventEngine() override {
|
919
|
+
return chand_->owning_stack_->EventEngine();
|
920
|
+
}
|
921
|
+
|
921
922
|
void AddTraceEvent(TraceSeverity severity, absl::string_view message) override
|
922
923
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
|
923
924
|
if (chand_->resolver_ == nullptr) return; // Shutting down.
|
@@ -954,7 +955,7 @@ grpc_error_handle ClientChannel::Init(grpc_channel_element* elem,
|
|
954
955
|
grpc_channel_element_args* args) {
|
955
956
|
GPR_ASSERT(args->is_last);
|
956
957
|
GPR_ASSERT(elem->filter == &kFilterVtable);
|
957
|
-
grpc_error_handle error
|
958
|
+
grpc_error_handle error;
|
958
959
|
new (elem->channel_data) ClientChannel(args, &error);
|
959
960
|
return error;
|
960
961
|
}
|
@@ -997,7 +998,7 @@ ClientChannel::ClientChannel(grpc_channel_element_args* args,
|
|
997
998
|
grpc_client_channel_start_backup_polling(interested_parties_);
|
998
999
|
// Check client channel factory.
|
999
1000
|
if (client_channel_factory_ == nullptr) {
|
1000
|
-
*error =
|
1001
|
+
*error = GRPC_ERROR_CREATE(
|
1001
1002
|
"Missing client channel factory in args for client channel filter");
|
1002
1003
|
return;
|
1003
1004
|
}
|
@@ -1006,7 +1007,7 @@ ClientChannel::ClientChannel(grpc_channel_element_args* args,
|
|
1006
1007
|
absl::optional<absl::string_view> service_config_json =
|
1007
1008
|
channel_args_.GetString(GRPC_ARG_SERVICE_CONFIG);
|
1008
1009
|
if (!service_config_json.has_value()) service_config_json = "{}";
|
1009
|
-
*error =
|
1010
|
+
*error = absl::OkStatus();
|
1010
1011
|
auto service_config =
|
1011
1012
|
ServiceConfigImpl::Create(channel_args_, *service_config_json);
|
1012
1013
|
if (!service_config.ok()) {
|
@@ -1018,7 +1019,7 @@ ClientChannel::ClientChannel(grpc_channel_element_args* args,
|
|
1018
1019
|
absl::optional<std::string> server_uri =
|
1019
1020
|
channel_args_.GetOwnedString(GRPC_ARG_SERVER_URI);
|
1020
1021
|
if (!server_uri.has_value()) {
|
1021
|
-
*error =
|
1022
|
+
*error = GRPC_ERROR_CREATE(
|
1022
1023
|
"target URI channel arg missing or wrong type in client channel "
|
1023
1024
|
"filter");
|
1024
1025
|
return;
|
@@ -1031,7 +1032,7 @@ ClientChannel::ClientChannel(grpc_channel_element_args* args,
|
|
1031
1032
|
// resolver creation will succeed later.
|
1032
1033
|
if (!CoreConfiguration::Get().resolver_registry().IsValidTarget(
|
1033
1034
|
uri_to_resolve_)) {
|
1034
|
-
*error =
|
1035
|
+
*error = GRPC_ERROR_CREATE(
|
1035
1036
|
absl::StrCat("the target uri is not valid: ", uri_to_resolve_));
|
1036
1037
|
return;
|
1037
1038
|
}
|
@@ -1056,7 +1057,7 @@ ClientChannel::ClientChannel(grpc_channel_element_args* args,
|
|
1056
1057
|
default_authority_ = std::move(*default_authority);
|
1057
1058
|
}
|
1058
1059
|
// Success.
|
1059
|
-
*error =
|
1060
|
+
*error = absl::OkStatus();
|
1060
1061
|
}
|
1061
1062
|
|
1062
1063
|
ClientChannel::~ClientChannel() {
|
@@ -1067,7 +1068,6 @@ ClientChannel::~ClientChannel() {
|
|
1067
1068
|
// Stop backup polling.
|
1068
1069
|
grpc_client_channel_stop_backup_polling(interested_parties_);
|
1069
1070
|
grpc_pollset_set_destroy(interested_parties_);
|
1070
|
-
GRPC_ERROR_UNREF(disconnect_error_);
|
1071
1071
|
}
|
1072
1072
|
|
1073
1073
|
OrphanablePtr<ClientChannel::LoadBalancedCall>
|
@@ -1321,17 +1321,16 @@ void ClientChannel::OnResolverErrorLocked(absl::Status status) {
|
|
1321
1321
|
call = call->next) {
|
1322
1322
|
grpc_call_element* elem = call->elem;
|
1323
1323
|
CallData* calld = static_cast<CallData*>(elem->call_data);
|
1324
|
-
grpc_error_handle error
|
1324
|
+
grpc_error_handle error;
|
1325
1325
|
if (calld->CheckResolutionLocked(elem, &error)) {
|
1326
1326
|
calld->AsyncResolutionDone(elem, error);
|
1327
1327
|
}
|
1328
1328
|
}
|
1329
1329
|
}
|
1330
|
-
GRPC_ERROR_UNREF(error);
|
1331
1330
|
// Update connectivity state.
|
1332
1331
|
UpdateStateAndPickerLocked(
|
1333
1332
|
GRPC_CHANNEL_TRANSIENT_FAILURE, status, "resolver failure",
|
1334
|
-
|
1333
|
+
MakeRefCounted<LoadBalancingPolicy::TransientFailurePicker>(status));
|
1335
1334
|
}
|
1336
1335
|
}
|
1337
1336
|
|
@@ -1371,7 +1370,7 @@ OrphanablePtr<LoadBalancingPolicy> ClientChannel::CreateLbPolicyLocked(
|
|
1371
1370
|
LoadBalancingPolicy::Args lb_policy_args;
|
1372
1371
|
lb_policy_args.work_serializer = work_serializer_;
|
1373
1372
|
lb_policy_args.channel_control_helper =
|
1374
|
-
|
1373
|
+
std::make_unique<ClientChannelControlHelper>(this);
|
1375
1374
|
lb_policy_args.args = args;
|
1376
1375
|
OrphanablePtr<LoadBalancingPolicy> lb_policy =
|
1377
1376
|
MakeOrphanable<ChildPolicyHandler>(std::move(lb_policy_args),
|
@@ -1446,8 +1445,8 @@ void ClientChannel::UpdateServiceConfigInDataPlaneLocked() {
|
|
1446
1445
|
config_selector =
|
1447
1446
|
MakeRefCounted<DefaultConfigSelector>(saved_service_config_);
|
1448
1447
|
}
|
1449
|
-
ChannelArgs new_args =
|
1450
|
-
channel_args_.SetObject(this).SetObject(service_config)
|
1448
|
+
ChannelArgs new_args =
|
1449
|
+
channel_args_.SetObject(this).SetObject(service_config);
|
1451
1450
|
bool enable_retries =
|
1452
1451
|
!new_args.WantMinimalStack() &&
|
1453
1452
|
new_args.GetBool(GRPC_ARG_ENABLE_RETRIES).value_or(true);
|
@@ -1460,7 +1459,7 @@ void ClientChannel::UpdateServiceConfigInDataPlaneLocked() {
|
|
1460
1459
|
filters.push_back(&DynamicTerminationFilter::kFilterVtable);
|
1461
1460
|
}
|
1462
1461
|
RefCountedPtr<DynamicFilters> dynamic_filters =
|
1463
|
-
DynamicFilters::Create(new_args
|
1462
|
+
DynamicFilters::Create(new_args, std::move(filters));
|
1464
1463
|
GPR_ASSERT(dynamic_filters != nullptr);
|
1465
1464
|
// Grab data plane lock to update service config.
|
1466
1465
|
//
|
@@ -1489,7 +1488,7 @@ void ClientChannel::UpdateServiceConfigInDataPlaneLocked() {
|
|
1489
1488
|
ExecCtx::Get()->InvalidateNow();
|
1490
1489
|
grpc_call_element* elem = call->elem;
|
1491
1490
|
CallData* calld = static_cast<CallData*>(elem->call_data);
|
1492
|
-
grpc_error_handle error
|
1491
|
+
grpc_error_handle error;
|
1493
1492
|
if (calld->CheckResolutionLocked(elem, &error)) {
|
1494
1493
|
calld->AsyncResolutionDone(elem, error);
|
1495
1494
|
}
|
@@ -1505,13 +1504,13 @@ void ClientChannel::CreateResolverLocked() {
|
|
1505
1504
|
}
|
1506
1505
|
resolver_ = CoreConfiguration::Get().resolver_registry().CreateResolver(
|
1507
1506
|
uri_to_resolve_.c_str(), channel_args_, interested_parties_,
|
1508
|
-
work_serializer_,
|
1507
|
+
work_serializer_, std::make_unique<ResolverResultHandler>(this));
|
1509
1508
|
// Since the validity of the args was checked when the channel was created,
|
1510
1509
|
// CreateResolver() must return a non-null result.
|
1511
1510
|
GPR_ASSERT(resolver_ != nullptr);
|
1512
1511
|
UpdateStateAndPickerLocked(
|
1513
1512
|
GRPC_CHANNEL_CONNECTING, absl::Status(), "started resolving",
|
1514
|
-
|
1513
|
+
MakeRefCounted<LoadBalancingPolicy::QueuePicker>(nullptr));
|
1515
1514
|
resolver_->StartLocked();
|
1516
1515
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1517
1516
|
gpr_log(GPR_INFO, "chand=%p: created resolver=%p", this, resolver_.get());
|
@@ -1540,7 +1539,7 @@ void ClientChannel::DestroyResolverAndLbPolicyLocked() {
|
|
1540
1539
|
void ClientChannel::UpdateStateAndPickerLocked(
|
1541
1540
|
grpc_connectivity_state state, const absl::Status& status,
|
1542
1541
|
const char* reason,
|
1543
|
-
|
1542
|
+
RefCountedPtr<LoadBalancingPolicy::SubchannelPicker> picker) {
|
1544
1543
|
// Special case for IDLE and SHUTDOWN states.
|
1545
1544
|
if (picker == nullptr || state == GRPC_CHANNEL_SHUTDOWN) {
|
1546
1545
|
saved_service_config_.reset();
|
@@ -1587,7 +1586,7 @@ void ClientChannel::UpdateStateAndPickerLocked(
|
|
1587
1586
|
// on the stale value, which results in the timer firing too early. To
|
1588
1587
|
// avoid this, we invalidate the cached value for each call we process.
|
1589
1588
|
ExecCtx::Get()->InvalidateNow();
|
1590
|
-
grpc_error_handle error
|
1589
|
+
grpc_error_handle error;
|
1591
1590
|
if (call->lb_call->PickSubchannelLocked(&error)) {
|
1592
1591
|
call->lb_call->AsyncPickDone(error);
|
1593
1592
|
}
|
@@ -1631,7 +1630,7 @@ T HandlePickResult(
|
|
1631
1630
|
|
1632
1631
|
grpc_error_handle ClientChannel::DoPingLocked(grpc_transport_op* op) {
|
1633
1632
|
if (state_tracker_.state() != GRPC_CHANNEL_READY) {
|
1634
|
-
return
|
1633
|
+
return GRPC_ERROR_CREATE("channel not connected");
|
1635
1634
|
}
|
1636
1635
|
LoadBalancingPolicy::PickResult result;
|
1637
1636
|
{
|
@@ -1648,16 +1647,15 @@ grpc_error_handle ClientChannel::DoPingLocked(grpc_transport_op* op) {
|
|
1648
1647
|
RefCountedPtr<ConnectedSubchannel> connected_subchannel =
|
1649
1648
|
subchannel->connected_subchannel();
|
1650
1649
|
if (connected_subchannel == nullptr) {
|
1651
|
-
return
|
1652
|
-
"LB pick for ping not connected");
|
1650
|
+
return GRPC_ERROR_CREATE("LB pick for ping not connected");
|
1653
1651
|
}
|
1654
1652
|
connected_subchannel->Ping(op->send_ping.on_initiate,
|
1655
1653
|
op->send_ping.on_ack);
|
1656
|
-
return
|
1654
|
+
return absl::OkStatus();
|
1657
1655
|
},
|
1658
1656
|
// Queue pick.
|
1659
1657
|
[](LoadBalancingPolicy::PickResult::Queue* /*queue_pick*/) {
|
1660
|
-
return
|
1658
|
+
return GRPC_ERROR_CREATE("LB picker queued call");
|
1661
1659
|
},
|
1662
1660
|
// Fail pick.
|
1663
1661
|
[](LoadBalancingPolicy::PickResult::Fail* fail_pick) {
|
@@ -1681,9 +1679,8 @@ void ClientChannel::StartTransportOpLocked(grpc_transport_op* op) {
|
|
1681
1679
|
// Ping.
|
1682
1680
|
if (op->send_ping.on_initiate != nullptr || op->send_ping.on_ack != nullptr) {
|
1683
1681
|
grpc_error_handle error = DoPingLocked(op);
|
1684
|
-
if (!
|
1685
|
-
ExecCtx::Run(DEBUG_LOCATION, op->send_ping.on_initiate,
|
1686
|
-
GRPC_ERROR_REF(error));
|
1682
|
+
if (!error.ok()) {
|
1683
|
+
ExecCtx::Run(DEBUG_LOCATION, op->send_ping.on_initiate, error);
|
1687
1684
|
ExecCtx::Run(DEBUG_LOCATION, op->send_ping.on_ack, error);
|
1688
1685
|
}
|
1689
1686
|
op->bind_pollset = nullptr;
|
@@ -1697,34 +1694,34 @@ void ClientChannel::StartTransportOpLocked(grpc_transport_op* op) {
|
|
1697
1694
|
}
|
1698
1695
|
}
|
1699
1696
|
// Disconnect or enter IDLE.
|
1700
|
-
if (!
|
1697
|
+
if (!op->disconnect_with_error.ok()) {
|
1701
1698
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1702
1699
|
gpr_log(GPR_INFO, "chand=%p: disconnect_with_error: %s", this,
|
1703
|
-
|
1700
|
+
StatusToString(op->disconnect_with_error).c_str());
|
1704
1701
|
}
|
1705
1702
|
DestroyResolverAndLbPolicyLocked();
|
1706
1703
|
intptr_t value;
|
1707
1704
|
if (grpc_error_get_int(op->disconnect_with_error,
|
1708
|
-
|
1705
|
+
StatusIntProperty::ChannelConnectivityState,
|
1706
|
+
&value) &&
|
1709
1707
|
static_cast<grpc_connectivity_state>(value) == GRPC_CHANNEL_IDLE) {
|
1710
|
-
if (
|
1708
|
+
if (disconnect_error_.ok()) {
|
1711
1709
|
// Enter IDLE state.
|
1712
1710
|
UpdateStateAndPickerLocked(GRPC_CHANNEL_IDLE, absl::Status(),
|
1713
1711
|
"channel entering IDLE", nullptr);
|
1714
1712
|
}
|
1715
|
-
GRPC_ERROR_UNREF(op->disconnect_with_error);
|
1716
1713
|
} else {
|
1717
1714
|
// Disconnect.
|
1718
|
-
GPR_ASSERT(
|
1715
|
+
GPR_ASSERT(disconnect_error_.ok());
|
1719
1716
|
disconnect_error_ = op->disconnect_with_error;
|
1720
1717
|
UpdateStateAndPickerLocked(
|
1721
1718
|
GRPC_CHANNEL_SHUTDOWN, absl::Status(), "shutdown from API",
|
1722
|
-
|
1719
|
+
MakeRefCounted<LoadBalancingPolicy::TransientFailurePicker>(
|
1723
1720
|
grpc_error_to_absl_status(op->disconnect_with_error)));
|
1724
1721
|
}
|
1725
1722
|
}
|
1726
1723
|
GRPC_CHANNEL_STACK_UNREF(owning_stack_, "start_transport_op");
|
1727
|
-
ExecCtx::Run(DEBUG_LOCATION, op->on_consumed,
|
1724
|
+
ExecCtx::Run(DEBUG_LOCATION, op->on_consumed, absl::OkStatus());
|
1728
1725
|
}
|
1729
1726
|
|
1730
1727
|
void ClientChannel::StartTransportOp(grpc_channel_element* elem,
|
@@ -1828,7 +1825,7 @@ ClientChannel::CallData::CallData(grpc_call_element* elem,
|
|
1828
1825
|
GPR_LIKELY(chand.deadline_checking_enabled_)
|
1829
1826
|
? args.deadline
|
1830
1827
|
: Timestamp::InfFuture()),
|
1831
|
-
path_(
|
1828
|
+
path_(CSliceRef(args.path)),
|
1832
1829
|
call_start_time_(args.start_time),
|
1833
1830
|
deadline_(args.deadline),
|
1834
1831
|
arena_(args.arena),
|
@@ -1841,8 +1838,7 @@ ClientChannel::CallData::CallData(grpc_call_element* elem,
|
|
1841
1838
|
}
|
1842
1839
|
|
1843
1840
|
ClientChannel::CallData::~CallData() {
|
1844
|
-
|
1845
|
-
GRPC_ERROR_UNREF(cancel_error_);
|
1841
|
+
CSliceUnref(path_);
|
1846
1842
|
// Make sure there are no remaining pending batches.
|
1847
1843
|
for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) {
|
1848
1844
|
GPR_ASSERT(pending_batches_[i] == nullptr);
|
@@ -1853,7 +1849,7 @@ grpc_error_handle ClientChannel::CallData::Init(
|
|
1853
1849
|
grpc_call_element* elem, const grpc_call_element_args* args) {
|
1854
1850
|
ClientChannel* chand = static_cast<ClientChannel*>(elem->channel_data);
|
1855
1851
|
new (elem->call_data) CallData(elem, *chand, *args);
|
1856
|
-
return
|
1852
|
+
return absl::OkStatus();
|
1857
1853
|
}
|
1858
1854
|
|
1859
1855
|
void ClientChannel::CallData::Destroy(
|
@@ -1867,7 +1863,7 @@ void ClientChannel::CallData::Destroy(
|
|
1867
1863
|
dynamic_call->SetAfterCallStackDestroy(then_schedule_closure);
|
1868
1864
|
} else {
|
1869
1865
|
// TODO(yashkt) : This can potentially be a Closure::Run
|
1870
|
-
ExecCtx::Run(DEBUG_LOCATION, then_schedule_closure,
|
1866
|
+
ExecCtx::Run(DEBUG_LOCATION, then_schedule_closure, absl::OkStatus());
|
1871
1867
|
}
|
1872
1868
|
}
|
1873
1869
|
|
@@ -1909,15 +1905,14 @@ void ClientChannel::CallData::StartTransportStreamOpBatch(
|
|
1909
1905
|
// We do not yet have a dynamic call.
|
1910
1906
|
//
|
1911
1907
|
// If we've previously been cancelled, immediately fail any new batches.
|
1912
|
-
if (GPR_UNLIKELY(!
|
1908
|
+
if (GPR_UNLIKELY(!calld->cancel_error_.ok())) {
|
1913
1909
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
1914
1910
|
gpr_log(GPR_INFO, "chand=%p calld=%p: failing batch with error: %s",
|
1915
|
-
chand, calld,
|
1916
|
-
grpc_error_std_string(calld->cancel_error_).c_str());
|
1911
|
+
chand, calld, StatusToString(calld->cancel_error_).c_str());
|
1917
1912
|
}
|
1918
1913
|
// Note: This will release the call combiner.
|
1919
1914
|
grpc_transport_stream_op_batch_finish_with_failure(
|
1920
|
-
batch,
|
1915
|
+
batch, calld->cancel_error_, calld->call_combiner_);
|
1921
1916
|
return;
|
1922
1917
|
}
|
1923
1918
|
// Handle cancellation.
|
@@ -1927,19 +1922,16 @@ void ClientChannel::CallData::StartTransportStreamOpBatch(
|
|
1927
1922
|
// cancelled before any batches are passed down (e.g., if the deadline
|
1928
1923
|
// is in the past when the call starts), we can return the right
|
1929
1924
|
// error to the caller when the first batch does get passed down.
|
1930
|
-
|
1931
|
-
calld->cancel_error_ =
|
1932
|
-
GRPC_ERROR_REF(batch->payload->cancel_stream.cancel_error);
|
1925
|
+
calld->cancel_error_ = batch->payload->cancel_stream.cancel_error;
|
1933
1926
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
1934
1927
|
gpr_log(GPR_INFO, "chand=%p calld=%p: recording cancel_error=%s", chand,
|
1935
|
-
calld,
|
1928
|
+
calld, StatusToString(calld->cancel_error_).c_str());
|
1936
1929
|
}
|
1937
1930
|
// Fail all pending batches.
|
1938
|
-
calld->PendingBatchesFail(elem,
|
1939
|
-
NoYieldCallCombiner);
|
1931
|
+
calld->PendingBatchesFail(elem, calld->cancel_error_, NoYieldCallCombiner);
|
1940
1932
|
// Note: This will release the call combiner.
|
1941
1933
|
grpc_transport_stream_op_batch_finish_with_failure(
|
1942
|
-
batch,
|
1934
|
+
batch, calld->cancel_error_, calld->call_combiner_);
|
1943
1935
|
return;
|
1944
1936
|
}
|
1945
1937
|
// Add the batch to the pending list.
|
@@ -1954,7 +1946,7 @@ void ClientChannel::CallData::StartTransportStreamOpBatch(
|
|
1954
1946
|
"config",
|
1955
1947
|
chand, calld);
|
1956
1948
|
}
|
1957
|
-
CheckResolution(elem,
|
1949
|
+
CheckResolution(elem, absl::OkStatus());
|
1958
1950
|
} else {
|
1959
1951
|
// For all other batches, release the call combiner.
|
1960
1952
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
@@ -2013,24 +2005,23 @@ void ClientChannel::CallData::FailPendingBatchInCallCombiner(
|
|
2013
2005
|
static_cast<grpc_transport_stream_op_batch*>(arg);
|
2014
2006
|
CallData* calld = static_cast<CallData*>(batch->handler_private.extra_arg);
|
2015
2007
|
// Note: This will release the call combiner.
|
2016
|
-
grpc_transport_stream_op_batch_finish_with_failure(
|
2017
|
-
|
2008
|
+
grpc_transport_stream_op_batch_finish_with_failure(batch, error,
|
2009
|
+
calld->call_combiner_);
|
2018
2010
|
}
|
2019
2011
|
|
2020
2012
|
// This is called via the call combiner, so access to calld is synchronized.
|
2021
2013
|
void ClientChannel::CallData::PendingBatchesFail(
|
2022
2014
|
grpc_call_element* elem, grpc_error_handle error,
|
2023
2015
|
YieldCallCombinerPredicate yield_call_combiner_predicate) {
|
2024
|
-
GPR_ASSERT(!
|
2016
|
+
GPR_ASSERT(!error.ok());
|
2025
2017
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
2026
2018
|
size_t num_batches = 0;
|
2027
2019
|
for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) {
|
2028
2020
|
if (pending_batches_[i] != nullptr) ++num_batches;
|
2029
2021
|
}
|
2030
|
-
gpr_log(
|
2031
|
-
|
2032
|
-
|
2033
|
-
grpc_error_std_string(error).c_str());
|
2022
|
+
gpr_log(
|
2023
|
+
GPR_INFO, "chand=%p calld=%p: failing %" PRIuPTR " pending batches: %s",
|
2024
|
+
elem->channel_data, this, num_batches, StatusToString(error).c_str());
|
2034
2025
|
}
|
2035
2026
|
CallCombinerClosureList closures;
|
2036
2027
|
for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) {
|
@@ -2040,7 +2031,7 @@ void ClientChannel::CallData::PendingBatchesFail(
|
|
2040
2031
|
GRPC_CLOSURE_INIT(&batch->handler_private.closure,
|
2041
2032
|
FailPendingBatchInCallCombiner, batch,
|
2042
2033
|
grpc_schedule_on_exec_ctx);
|
2043
|
-
closures.Add(&batch->handler_private.closure,
|
2034
|
+
closures.Add(&batch->handler_private.closure, error,
|
2044
2035
|
"PendingBatchesFail");
|
2045
2036
|
batch = nullptr;
|
2046
2037
|
}
|
@@ -2050,7 +2041,6 @@ void ClientChannel::CallData::PendingBatchesFail(
|
|
2050
2041
|
} else {
|
2051
2042
|
closures.RunClosuresWithoutYielding(call_combiner_);
|
2052
2043
|
}
|
2053
|
-
GRPC_ERROR_UNREF(error);
|
2054
2044
|
}
|
2055
2045
|
|
2056
2046
|
// This is called via the call combiner, so access to calld is synchronized.
|
@@ -2086,7 +2076,7 @@ void ClientChannel::CallData::PendingBatchesResume(grpc_call_element* elem) {
|
|
2086
2076
|
batch->handler_private.extra_arg = elem;
|
2087
2077
|
GRPC_CLOSURE_INIT(&batch->handler_private.closure,
|
2088
2078
|
ResumePendingBatchInCallCombiner, batch, nullptr);
|
2089
|
-
closures.Add(&batch->handler_private.closure,
|
2079
|
+
closures.Add(&batch->handler_private.closure, absl::OkStatus(),
|
2090
2080
|
"resuming pending batch from client channel call");
|
2091
2081
|
batch = nullptr;
|
2092
2082
|
}
|
@@ -2122,15 +2112,14 @@ class ClientChannel::CallData::ResolverQueuedCallCanceller {
|
|
2122
2112
|
gpr_log(GPR_INFO,
|
2123
2113
|
"chand=%p calld=%p: cancelling resolver queued pick: "
|
2124
2114
|
"error=%s self=%p calld->resolver_pick_canceller=%p",
|
2125
|
-
chand, calld,
|
2115
|
+
chand, calld, StatusToString(error).c_str(), self,
|
2126
2116
|
calld->resolver_call_canceller_);
|
2127
2117
|
}
|
2128
|
-
if (calld->resolver_call_canceller_ == self &&
|
2129
|
-
!GRPC_ERROR_IS_NONE(error)) {
|
2118
|
+
if (calld->resolver_call_canceller_ == self && !error.ok()) {
|
2130
2119
|
// Remove pick from list of queued picks.
|
2131
2120
|
calld->MaybeRemoveCallFromResolverQueuedCallsLocked(self->elem_);
|
2132
2121
|
// Fail pending batches on the call.
|
2133
|
-
calld->PendingBatchesFail(self->elem_,
|
2122
|
+
calld->PendingBatchesFail(self->elem_, error,
|
2134
2123
|
YieldCallCombinerIfPendingBatchesFound);
|
2135
2124
|
}
|
2136
2125
|
}
|
@@ -2155,6 +2144,12 @@ void ClientChannel::CallData::MaybeRemoveCallFromResolverQueuedCallsLocked(
|
|
2155
2144
|
queued_pending_resolver_result_ = false;
|
2156
2145
|
// Lame the call combiner canceller.
|
2157
2146
|
resolver_call_canceller_ = nullptr;
|
2147
|
+
// Add trace annotation
|
2148
|
+
auto* call_tracer =
|
2149
|
+
static_cast<CallTracer*>(call_context_[GRPC_CONTEXT_CALL_TRACER].value);
|
2150
|
+
if (call_tracer != nullptr) {
|
2151
|
+
call_tracer->RecordAnnotation("Delayed name resolution complete.");
|
2152
|
+
}
|
2158
2153
|
}
|
2159
2154
|
|
2160
2155
|
void ClientChannel::CallData::MaybeAddCallToResolverQueuedCallsLocked(
|
@@ -2182,11 +2177,11 @@ grpc_error_handle ClientChannel::CallData::ApplyServiceConfigToCallLocked(
|
|
2182
2177
|
ConfigSelector* config_selector = chand->config_selector_.get();
|
2183
2178
|
if (config_selector != nullptr) {
|
2184
2179
|
// Use the ConfigSelector to determine the config for the call.
|
2185
|
-
|
2180
|
+
auto call_config =
|
2186
2181
|
config_selector->GetCallConfig({&path_, initial_metadata, arena_});
|
2187
|
-
if (!call_config.
|
2182
|
+
if (!call_config.ok()) {
|
2188
2183
|
return absl_status_to_grpc_error(MaybeRewriteIllegalStatusCode(
|
2189
|
-
|
2184
|
+
call_config.status(), "ConfigSelector"));
|
2190
2185
|
}
|
2191
2186
|
// Create a ClientChannelServiceConfigCallData for the call. This stores
|
2192
2187
|
// a ref to the ServiceConfig and caches the right set of parsed configs
|
@@ -2195,9 +2190,9 @@ grpc_error_handle ClientChannel::CallData::ApplyServiceConfigToCallLocked(
|
|
2195
2190
|
// below us in the stack, and it will be cleaned up when the call ends.
|
2196
2191
|
auto* service_config_call_data =
|
2197
2192
|
arena_->New<ClientChannelServiceConfigCallData>(
|
2198
|
-
std::move(call_config
|
2199
|
-
std::move(call_config
|
2200
|
-
call_config
|
2193
|
+
std::move(call_config->service_config), call_config->method_configs,
|
2194
|
+
std::move(call_config->call_attributes),
|
2195
|
+
call_config->call_dispatch_controller, call_context_);
|
2201
2196
|
// Apply our own method params to the call.
|
2202
2197
|
auto* method_params = static_cast<ClientChannelMethodParsedConfig*>(
|
2203
2198
|
service_config_call_data->GetMethodParsedConfig(
|
@@ -2229,7 +2224,7 @@ grpc_error_handle ClientChannel::CallData::ApplyServiceConfigToCallLocked(
|
|
2229
2224
|
// Set the dynamic filter stack.
|
2230
2225
|
dynamic_filters_ = chand->dynamic_filters_;
|
2231
2226
|
}
|
2232
|
-
return
|
2227
|
+
return absl::OkStatus();
|
2233
2228
|
}
|
2234
2229
|
|
2235
2230
|
void ClientChannel::CallData::
|
@@ -2245,7 +2240,7 @@ void ClientChannel::CallData::
|
|
2245
2240
|
gpr_log(GPR_INFO,
|
2246
2241
|
"chand=%p calld=%p: got recv_trailing_metadata_ready: error=%s "
|
2247
2242
|
"service_config_call_data=%p",
|
2248
|
-
chand, calld,
|
2243
|
+
chand, calld, StatusToString(error).c_str(),
|
2249
2244
|
service_config_call_data);
|
2250
2245
|
}
|
2251
2246
|
if (service_config_call_data != nullptr) {
|
@@ -2253,7 +2248,7 @@ void ClientChannel::CallData::
|
|
2253
2248
|
}
|
2254
2249
|
// Chain to original callback.
|
2255
2250
|
Closure::Run(DEBUG_LOCATION, calld->original_recv_trailing_metadata_ready_,
|
2256
|
-
|
2251
|
+
error);
|
2257
2252
|
}
|
2258
2253
|
|
2259
2254
|
void ClientChannel::CallData::AsyncResolutionDone(grpc_call_element* elem,
|
@@ -2268,13 +2263,13 @@ void ClientChannel::CallData::ResolutionDone(void* arg,
|
|
2268
2263
|
grpc_call_element* elem = static_cast<grpc_call_element*>(arg);
|
2269
2264
|
ClientChannel* chand = static_cast<ClientChannel*>(elem->channel_data);
|
2270
2265
|
CallData* calld = static_cast<CallData*>(elem->call_data);
|
2271
|
-
if (!
|
2266
|
+
if (!error.ok()) {
|
2272
2267
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
2273
2268
|
gpr_log(GPR_INFO,
|
2274
2269
|
"chand=%p calld=%p: error applying config to call: error=%s",
|
2275
|
-
chand, calld,
|
2270
|
+
chand, calld, StatusToString(error).c_str());
|
2276
2271
|
}
|
2277
|
-
calld->PendingBatchesFail(elem,
|
2272
|
+
calld->PendingBatchesFail(elem, error, YieldCallCombiner);
|
2278
2273
|
return;
|
2279
2274
|
}
|
2280
2275
|
calld->CreateDynamicCall(elem);
|
@@ -2292,7 +2287,6 @@ void ClientChannel::CallData::CheckResolution(void* arg,
|
|
2292
2287
|
}
|
2293
2288
|
if (resolution_complete) {
|
2294
2289
|
ResolutionDone(elem, error);
|
2295
|
-
GRPC_ERROR_UNREF(error);
|
2296
2290
|
}
|
2297
2291
|
}
|
2298
2292
|
|
@@ -2324,7 +2318,7 @@ bool ClientChannel::CallData::CheckResolutionLocked(grpc_call_element* elem,
|
|
2324
2318
|
DEBUG_LOCATION);
|
2325
2319
|
},
|
2326
2320
|
chand, nullptr),
|
2327
|
-
|
2321
|
+
absl::OkStatus());
|
2328
2322
|
}
|
2329
2323
|
// Get send_initial_metadata batch and flags.
|
2330
2324
|
auto& send_initial_metadata =
|
@@ -2376,7 +2370,7 @@ void ClientChannel::CallData::CreateDynamicCall(grpc_call_element* elem) {
|
|
2376
2370
|
arena_,
|
2377
2371
|
call_context_,
|
2378
2372
|
call_combiner_};
|
2379
|
-
grpc_error_handle error
|
2373
|
+
grpc_error_handle error;
|
2380
2374
|
DynamicFilters* channel_stack = args.channel_stack.get();
|
2381
2375
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
2382
2376
|
gpr_log(
|
@@ -2385,11 +2379,11 @@ void ClientChannel::CallData::CreateDynamicCall(grpc_call_element* elem) {
|
|
2385
2379
|
chand, this, channel_stack);
|
2386
2380
|
}
|
2387
2381
|
dynamic_call_ = channel_stack->CreateCall(std::move(args), &error);
|
2388
|
-
if (!
|
2382
|
+
if (!error.ok()) {
|
2389
2383
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
2390
2384
|
gpr_log(GPR_INFO,
|
2391
2385
|
"chand=%p calld=%p: failed to create dynamic call: error=%s",
|
2392
|
-
chand, this,
|
2386
|
+
chand, this, StatusToString(error).c_str());
|
2393
2387
|
}
|
2394
2388
|
PendingBatchesFail(elem, error, YieldCallCombiner);
|
2395
2389
|
return;
|
@@ -2556,7 +2550,7 @@ ClientChannel::LoadBalancedCall::LoadBalancedCall(
|
|
2556
2550
|
? "LoadBalancedCall"
|
2557
2551
|
: nullptr),
|
2558
2552
|
chand_(chand),
|
2559
|
-
path_(
|
2553
|
+
path_(CSliceRef(args.path)),
|
2560
2554
|
deadline_(args.deadline),
|
2561
2555
|
arena_(args.arena),
|
2562
2556
|
owning_call_(args.call_stack),
|
@@ -2573,8 +2567,6 @@ ClientChannel::LoadBalancedCall::LoadBalancedCall(
|
|
2573
2567
|
}
|
2574
2568
|
|
2575
2569
|
ClientChannel::LoadBalancedCall::~LoadBalancedCall() {
|
2576
|
-
GRPC_ERROR_UNREF(cancel_error_);
|
2577
|
-
GRPC_ERROR_UNREF(failure_error_);
|
2578
2570
|
if (backend_metric_data_ != nullptr) {
|
2579
2571
|
backend_metric_data_->BackendMetricData::~BackendMetricData();
|
2580
2572
|
}
|
@@ -2584,7 +2576,7 @@ ClientChannel::LoadBalancedCall::~LoadBalancedCall() {
|
|
2584
2576
|
}
|
2585
2577
|
if (on_call_destruction_complete_ != nullptr) {
|
2586
2578
|
ExecCtx::Run(DEBUG_LOCATION, on_call_destruction_complete_,
|
2587
|
-
|
2579
|
+
absl::OkStatus());
|
2588
2580
|
}
|
2589
2581
|
}
|
2590
2582
|
|
@@ -2637,16 +2629,15 @@ void ClientChannel::LoadBalancedCall::FailPendingBatchInCallCombiner(
|
|
2637
2629
|
static_cast<grpc_transport_stream_op_batch*>(arg);
|
2638
2630
|
auto* self = static_cast<LoadBalancedCall*>(batch->handler_private.extra_arg);
|
2639
2631
|
// Note: This will release the call combiner.
|
2640
|
-
grpc_transport_stream_op_batch_finish_with_failure(
|
2641
|
-
|
2632
|
+
grpc_transport_stream_op_batch_finish_with_failure(batch, error,
|
2633
|
+
self->call_combiner_);
|
2642
2634
|
}
|
2643
2635
|
|
2644
2636
|
// This is called via the call combiner, so access to calld is synchronized.
|
2645
2637
|
void ClientChannel::LoadBalancedCall::PendingBatchesFail(
|
2646
2638
|
grpc_error_handle error,
|
2647
2639
|
YieldCallCombinerPredicate yield_call_combiner_predicate) {
|
2648
|
-
GPR_ASSERT(!
|
2649
|
-
GRPC_ERROR_UNREF(failure_error_);
|
2640
|
+
GPR_ASSERT(!error.ok());
|
2650
2641
|
failure_error_ = error;
|
2651
2642
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2652
2643
|
size_t num_batches = 0;
|
@@ -2655,7 +2646,7 @@ void ClientChannel::LoadBalancedCall::PendingBatchesFail(
|
|
2655
2646
|
}
|
2656
2647
|
gpr_log(GPR_INFO,
|
2657
2648
|
"chand=%p lb_call=%p: failing %" PRIuPTR " pending batches: %s",
|
2658
|
-
chand_, this, num_batches,
|
2649
|
+
chand_, this, num_batches, StatusToString(error).c_str());
|
2659
2650
|
}
|
2660
2651
|
CallCombinerClosureList closures;
|
2661
2652
|
for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) {
|
@@ -2665,7 +2656,7 @@ void ClientChannel::LoadBalancedCall::PendingBatchesFail(
|
|
2665
2656
|
GRPC_CLOSURE_INIT(&batch->handler_private.closure,
|
2666
2657
|
FailPendingBatchInCallCombiner, batch,
|
2667
2658
|
grpc_schedule_on_exec_ctx);
|
2668
|
-
closures.Add(&batch->handler_private.closure,
|
2659
|
+
closures.Add(&batch->handler_private.closure, error,
|
2669
2660
|
"PendingBatchesFail");
|
2670
2661
|
batch = nullptr;
|
2671
2662
|
}
|
@@ -2708,7 +2699,7 @@ void ClientChannel::LoadBalancedCall::PendingBatchesResume() {
|
|
2708
2699
|
GRPC_CLOSURE_INIT(&batch->handler_private.closure,
|
2709
2700
|
ResumePendingBatchInCallCombiner, batch,
|
2710
2701
|
grpc_schedule_on_exec_ctx);
|
2711
|
-
closures.Add(&batch->handler_private.closure,
|
2702
|
+
closures.Add(&batch->handler_private.closure, absl::OkStatus(),
|
2712
2703
|
"resuming pending batch from LB call");
|
2713
2704
|
batch = nullptr;
|
2714
2705
|
}
|
@@ -2732,7 +2723,7 @@ void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
|
|
2732
2723
|
// Record send ops in tracer.
|
2733
2724
|
if (batch->cancel_stream) {
|
2734
2725
|
call_attempt_tracer_->RecordCancel(
|
2735
|
-
|
2726
|
+
batch->payload->cancel_stream.cancel_error);
|
2736
2727
|
}
|
2737
2728
|
if (batch->send_initial_metadata) {
|
2738
2729
|
call_attempt_tracer_->RecordSendInitialMetadata(
|
@@ -2800,14 +2791,14 @@ void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
|
|
2800
2791
|
// We do not yet have a subchannel call.
|
2801
2792
|
//
|
2802
2793
|
// If we've previously been cancelled, immediately fail any new batches.
|
2803
|
-
if (GPR_UNLIKELY(!
|
2794
|
+
if (GPR_UNLIKELY(!cancel_error_.ok())) {
|
2804
2795
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2805
2796
|
gpr_log(GPR_INFO, "chand=%p lb_call=%p: failing batch with error: %s",
|
2806
|
-
chand_, this,
|
2797
|
+
chand_, this, StatusToString(cancel_error_).c_str());
|
2807
2798
|
}
|
2808
2799
|
// Note: This will release the call combiner.
|
2809
|
-
grpc_transport_stream_op_batch_finish_with_failure(
|
2810
|
-
|
2800
|
+
grpc_transport_stream_op_batch_finish_with_failure(batch, cancel_error_,
|
2801
|
+
call_combiner_);
|
2811
2802
|
return;
|
2812
2803
|
}
|
2813
2804
|
// Handle cancellation.
|
@@ -2817,17 +2808,16 @@ void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
|
|
2817
2808
|
// cancelled before any batches are passed down (e.g., if the deadline
|
2818
2809
|
// is in the past when the call starts), we can return the right
|
2819
2810
|
// error to the caller when the first batch does get passed down.
|
2820
|
-
|
2821
|
-
cancel_error_ = GRPC_ERROR_REF(batch->payload->cancel_stream.cancel_error);
|
2811
|
+
cancel_error_ = batch->payload->cancel_stream.cancel_error;
|
2822
2812
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2823
2813
|
gpr_log(GPR_INFO, "chand=%p lb_call=%p: recording cancel_error=%s",
|
2824
|
-
chand_, this,
|
2814
|
+
chand_, this, StatusToString(cancel_error_).c_str());
|
2825
2815
|
}
|
2826
2816
|
// Fail all pending batches.
|
2827
|
-
PendingBatchesFail(
|
2817
|
+
PendingBatchesFail(cancel_error_, NoYieldCallCombiner);
|
2828
2818
|
// Note: This will release the call combiner.
|
2829
|
-
grpc_transport_stream_op_batch_finish_with_failure(
|
2830
|
-
|
2819
|
+
grpc_transport_stream_op_batch_finish_with_failure(batch, cancel_error_,
|
2820
|
+
call_combiner_);
|
2831
2821
|
return;
|
2832
2822
|
}
|
2833
2823
|
// Add the batch to the pending list.
|
@@ -2840,7 +2830,7 @@ void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
|
|
2840
2830
|
"chand=%p lb_call=%p: grabbing data plane mutex to perform pick",
|
2841
2831
|
chand_, this);
|
2842
2832
|
}
|
2843
|
-
PickSubchannel(this,
|
2833
|
+
PickSubchannel(this, absl::OkStatus());
|
2844
2834
|
} else {
|
2845
2835
|
// For all other batches, release the call combiner.
|
2846
2836
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
@@ -2860,13 +2850,12 @@ void ClientChannel::LoadBalancedCall::SendInitialMetadataOnComplete(
|
|
2860
2850
|
gpr_log(GPR_INFO,
|
2861
2851
|
"chand=%p lb_call=%p: got on_complete for send_initial_metadata: "
|
2862
2852
|
"error=%s",
|
2863
|
-
self->chand_, self,
|
2853
|
+
self->chand_, self, StatusToString(error).c_str());
|
2864
2854
|
}
|
2865
2855
|
self->call_attempt_tracer_->RecordOnDoneSendInitialMetadata(
|
2866
2856
|
self->peer_string_);
|
2867
2857
|
Closure::Run(DEBUG_LOCATION,
|
2868
|
-
self->original_send_initial_metadata_on_complete_,
|
2869
|
-
GRPC_ERROR_REF(error));
|
2858
|
+
self->original_send_initial_metadata_on_complete_, error);
|
2870
2859
|
}
|
2871
2860
|
|
2872
2861
|
void ClientChannel::LoadBalancedCall::RecvInitialMetadataReady(
|
@@ -2875,15 +2864,15 @@ void ClientChannel::LoadBalancedCall::RecvInitialMetadataReady(
|
|
2875
2864
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2876
2865
|
gpr_log(GPR_INFO,
|
2877
2866
|
"chand=%p lb_call=%p: got recv_initial_metadata_ready: error=%s",
|
2878
|
-
self->chand_, self,
|
2867
|
+
self->chand_, self, StatusToString(error).c_str());
|
2879
2868
|
}
|
2880
|
-
if (
|
2869
|
+
if (error.ok()) {
|
2881
2870
|
// recv_initial_metadata_flags is not populated for clients
|
2882
2871
|
self->call_attempt_tracer_->RecordReceivedInitialMetadata(
|
2883
2872
|
self->recv_initial_metadata_, 0 /* recv_initial_metadata_flags */);
|
2884
2873
|
}
|
2885
2874
|
Closure::Run(DEBUG_LOCATION, self->original_recv_initial_metadata_ready_,
|
2886
|
-
|
2875
|
+
error);
|
2887
2876
|
}
|
2888
2877
|
|
2889
2878
|
void ClientChannel::LoadBalancedCall::RecvMessageReady(
|
@@ -2891,13 +2880,12 @@ void ClientChannel::LoadBalancedCall::RecvMessageReady(
|
|
2891
2880
|
auto* self = static_cast<LoadBalancedCall*>(arg);
|
2892
2881
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2893
2882
|
gpr_log(GPR_INFO, "chand=%p lb_call=%p: got recv_message_ready: error=%s",
|
2894
|
-
self->chand_, self,
|
2883
|
+
self->chand_, self, StatusToString(error).c_str());
|
2895
2884
|
}
|
2896
2885
|
if (self->recv_message_->has_value()) {
|
2897
2886
|
self->call_attempt_tracer_->RecordReceivedMessage(**self->recv_message_);
|
2898
2887
|
}
|
2899
|
-
Closure::Run(DEBUG_LOCATION, self->original_recv_message_ready_,
|
2900
|
-
GRPC_ERROR_REF(error));
|
2888
|
+
Closure::Run(DEBUG_LOCATION, self->original_recv_message_ready_, error);
|
2901
2889
|
}
|
2902
2890
|
|
2903
2891
|
void ClientChannel::LoadBalancedCall::RecvTrailingMetadataReady(
|
@@ -2908,16 +2896,16 @@ void ClientChannel::LoadBalancedCall::RecvTrailingMetadataReady(
|
|
2908
2896
|
"chand=%p lb_call=%p: got recv_trailing_metadata_ready: error=%s "
|
2909
2897
|
"call_attempt_tracer_=%p lb_subchannel_call_tracker_=%p "
|
2910
2898
|
"failure_error_=%s",
|
2911
|
-
self->chand_, self,
|
2899
|
+
self->chand_, self, StatusToString(error).c_str(),
|
2912
2900
|
self->call_attempt_tracer_, self->lb_subchannel_call_tracker_.get(),
|
2913
|
-
|
2901
|
+
StatusToString(self->failure_error_).c_str());
|
2914
2902
|
}
|
2915
2903
|
// Check if we have a tracer or an LB callback to invoke.
|
2916
2904
|
if (self->call_attempt_tracer_ != nullptr ||
|
2917
2905
|
self->lb_subchannel_call_tracker_ != nullptr) {
|
2918
2906
|
// Get the call's status.
|
2919
2907
|
absl::Status status;
|
2920
|
-
if (!
|
2908
|
+
if (!error.ok()) {
|
2921
2909
|
// Get status from error.
|
2922
2910
|
grpc_status_code code;
|
2923
2911
|
std::string message;
|
@@ -2940,11 +2928,9 @@ void ClientChannel::LoadBalancedCall::RecvTrailingMetadataReady(
|
|
2940
2928
|
self->RecordCallCompletion(status);
|
2941
2929
|
}
|
2942
2930
|
// Chain to original callback.
|
2943
|
-
if (!
|
2931
|
+
if (!self->failure_error_.ok()) {
|
2944
2932
|
error = self->failure_error_;
|
2945
|
-
self->failure_error_ =
|
2946
|
-
} else {
|
2947
|
-
error = GRPC_ERROR_REF(error);
|
2933
|
+
self->failure_error_ = absl::OkStatus();
|
2948
2934
|
}
|
2949
2935
|
Closure::Run(DEBUG_LOCATION, self->original_recv_trailing_metadata_ready_,
|
2950
2936
|
error);
|
@@ -2976,18 +2962,18 @@ void ClientChannel::LoadBalancedCall::CreateSubchannelCall() {
|
|
2976
2962
|
// TODO(roth): When we implement hedging support, we will probably
|
2977
2963
|
// need to use a separate call context for each subchannel call.
|
2978
2964
|
call_context_, call_combiner_};
|
2979
|
-
grpc_error_handle error
|
2965
|
+
grpc_error_handle error;
|
2980
2966
|
subchannel_call_ = SubchannelCall::Create(std::move(call_args), &error);
|
2981
2967
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2982
2968
|
gpr_log(GPR_INFO,
|
2983
2969
|
"chand=%p lb_call=%p: create subchannel_call=%p: error=%s", chand_,
|
2984
|
-
this, subchannel_call_.get(),
|
2970
|
+
this, subchannel_call_.get(), StatusToString(error).c_str());
|
2985
2971
|
}
|
2986
2972
|
if (on_call_destruction_complete_ != nullptr) {
|
2987
2973
|
subchannel_call_->SetAfterCallStackDestroy(on_call_destruction_complete_);
|
2988
2974
|
on_call_destruction_complete_ = nullptr;
|
2989
2975
|
}
|
2990
|
-
if (GPR_UNLIKELY(!
|
2976
|
+
if (GPR_UNLIKELY(!error.ok())) {
|
2991
2977
|
PendingBatchesFail(error, YieldCallCombiner);
|
2992
2978
|
} else {
|
2993
2979
|
PendingBatchesResume();
|
@@ -3021,15 +3007,15 @@ class ClientChannel::LoadBalancedCall::LbQueuedCallCanceller {
|
|
3021
3007
|
gpr_log(GPR_INFO,
|
3022
3008
|
"chand=%p lb_call=%p: cancelling queued pick: "
|
3023
3009
|
"error=%s self=%p calld->pick_canceller=%p",
|
3024
|
-
chand, lb_call,
|
3010
|
+
chand, lb_call, StatusToString(error).c_str(), self,
|
3025
3011
|
lb_call->lb_call_canceller_);
|
3026
3012
|
}
|
3027
|
-
if (lb_call->lb_call_canceller_ == self && !
|
3013
|
+
if (lb_call->lb_call_canceller_ == self && !error.ok()) {
|
3028
3014
|
lb_call->call_dispatch_controller_->Commit();
|
3029
3015
|
// Remove pick from list of queued picks.
|
3030
3016
|
lb_call->MaybeRemoveCallFromLbQueuedCallsLocked();
|
3031
3017
|
// Fail pending batches on the call.
|
3032
|
-
lb_call->PendingBatchesFail(
|
3018
|
+
lb_call->PendingBatchesFail(error,
|
3033
3019
|
YieldCallCombinerIfPendingBatchesFound);
|
3034
3020
|
}
|
3035
3021
|
}
|
@@ -3051,6 +3037,10 @@ void ClientChannel::LoadBalancedCall::MaybeRemoveCallFromLbQueuedCallsLocked() {
|
|
3051
3037
|
queued_pending_lb_pick_ = false;
|
3052
3038
|
// Lame the call combiner canceller.
|
3053
3039
|
lb_call_canceller_ = nullptr;
|
3040
|
+
// Add trace annotation
|
3041
|
+
if (call_attempt_tracer_ != nullptr) {
|
3042
|
+
call_attempt_tracer_->RecordAnnotation("Delayed LB pick complete.");
|
3043
|
+
}
|
3054
3044
|
}
|
3055
3045
|
|
3056
3046
|
void ClientChannel::LoadBalancedCall::MaybeAddCallToLbQueuedCallsLocked() {
|
@@ -3075,13 +3065,13 @@ void ClientChannel::LoadBalancedCall::AsyncPickDone(grpc_error_handle error) {
|
|
3075
3065
|
void ClientChannel::LoadBalancedCall::PickDone(void* arg,
|
3076
3066
|
grpc_error_handle error) {
|
3077
3067
|
auto* self = static_cast<LoadBalancedCall*>(arg);
|
3078
|
-
if (!
|
3068
|
+
if (!error.ok()) {
|
3079
3069
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
3080
3070
|
gpr_log(GPR_INFO,
|
3081
3071
|
"chand=%p lb_call=%p: failed to pick subchannel: error=%s",
|
3082
|
-
self->chand_, self,
|
3072
|
+
self->chand_, self, StatusToString(error).c_str());
|
3083
3073
|
}
|
3084
|
-
self->PendingBatchesFail(
|
3074
|
+
self->PendingBatchesFail(error, YieldCallCombiner);
|
3085
3075
|
return;
|
3086
3076
|
}
|
3087
3077
|
self->call_dispatch_controller_->Commit();
|
@@ -3098,7 +3088,6 @@ void ClientChannel::LoadBalancedCall::PickSubchannel(void* arg,
|
|
3098
3088
|
}
|
3099
3089
|
if (pick_complete) {
|
3100
3090
|
PickDone(self, error);
|
3101
|
-
GRPC_ERROR_UNREF(error);
|
3102
3091
|
}
|
3103
3092
|
}
|
3104
3093
|
|
@@ -3199,7 +3188,7 @@ bool ClientChannel::LoadBalancedCall::PickSubchannelLocked(
|
|
3199
3188
|
*error = grpc_error_set_int(
|
3200
3189
|
absl_status_to_grpc_error(MaybeRewriteIllegalStatusCode(
|
3201
3190
|
std::move(drop_pick->status), "LB drop")),
|
3202
|
-
|
3191
|
+
StatusIntProperty::kLbPolicyDrop, 1);
|
3203
3192
|
MaybeRemoveCallFromLbQueuedCallsLocked();
|
3204
3193
|
return true;
|
3205
3194
|
});
|