grpc 1.43.1 → 1.53.0
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 +765 -449
- 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/endpoint_config.h +11 -5
- data/include/grpc/event_engine/event_engine.h +131 -41
- 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 -16
- data/include/grpc/event_engine/port.h +1 -1
- data/include/grpc/event_engine/slice.h +306 -0
- data/include/grpc/event_engine/slice_buffer.h +159 -0
- data/include/grpc/fork.h +25 -1
- data/include/grpc/grpc.h +44 -28
- data/include/grpc/grpc_posix.h +21 -20
- data/include/grpc/grpc_security.h +47 -50
- data/include/grpc/impl/codegen/atm.h +3 -71
- data/include/grpc/impl/codegen/atm_gcc_atomic.h +3 -67
- data/include/grpc/impl/codegen/atm_gcc_sync.h +3 -61
- data/include/grpc/impl/codegen/atm_windows.h +3 -108
- 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 +5 -85
- data/include/grpc/impl/codegen/connectivity_state.h +5 -21
- data/include/grpc/impl/codegen/fork.h +4 -25
- data/include/grpc/impl/codegen/gpr_types.h +4 -35
- data/include/grpc/impl/codegen/grpc_types.h +5 -788
- data/include/grpc/impl/codegen/log.h +3 -86
- data/include/grpc/impl/codegen/port_platform.h +3 -699
- data/include/grpc/impl/codegen/propagation_bits.h +3 -28
- data/include/grpc/impl/codegen/slice.h +4 -104
- 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 +827 -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 -12
- 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 +31 -6
- data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +148 -0
- data/src/core/ext/filters/backend_metrics/backend_metric_filter.h +52 -0
- data/src/core/ext/filters/backend_metrics/backend_metric_provider.h +29 -0
- data/src/core/ext/filters/census/grpc_context.cc +19 -17
- data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +315 -0
- data/src/core/ext/filters/channel_idle/channel_idle_filter.h +142 -0
- data/src/core/ext/filters/channel_idle/idle_filter_state.cc +96 -0
- data/src/core/ext/filters/channel_idle/idle_filter_state.h +68 -0
- data/src/core/ext/filters/client_channel/backend_metric.cc +22 -15
- data/src/core/ext/filters/client_channel/backend_metric.h +21 -11
- data/src/core/ext/filters/client_channel/backup_poller.cc +44 -40
- data/src/core/ext/filters/client_channel/backup_poller.h +26 -28
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +94 -49
- data/src/core/ext/filters/client_channel/client_channel.cc +681 -648
- data/src/core/ext/filters/client_channel/client_channel.h +106 -61
- data/src/core/ext/filters/client_channel/client_channel_channelz.cc +19 -23
- data/src/core/ext/filters/client_channel/client_channel_channelz.h +33 -23
- data/src/core/ext/filters/client_channel/client_channel_factory.cc +19 -43
- data/src/core/ext/filters/client_channel/client_channel_factory.h +11 -11
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +26 -57
- data/src/core/ext/filters/client_channel/client_channel_service_config.cc +153 -0
- data/src/core/ext/filters/client_channel/client_channel_service_config.h +111 -0
- data/src/core/ext/filters/client_channel/config_selector.cc +1 -0
- data/src/core/ext/filters/client_channel/config_selector.h +33 -27
- data/src/core/ext/filters/client_channel/connector.h +20 -11
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +40 -55
- data/src/core/ext/filters/client_channel/dynamic_filters.h +22 -13
- data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +4 -22
- data/src/core/ext/filters/client_channel/global_subchannel_pool.h +27 -36
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +139 -583
- data/src/core/ext/filters/client_channel/health/health_check_client.h +29 -163
- data/src/core/ext/filters/client_channel/http_proxy.cc +130 -164
- data/src/core/ext/filters/client_channel/http_proxy.h +46 -22
- 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 +12 -8
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +9 -7
- data/src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h +49 -0
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +37 -16
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +18 -13
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +71 -134
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h +41 -24
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +468 -413
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +27 -35
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +15 -3
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +10 -8
- 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 +27 -22
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +43 -34
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +30 -29
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +338 -0
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.h +57 -0
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric_internal.h +117 -0
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +1129 -0
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +94 -0
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +221 -209
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +488 -480
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +525 -391
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +19 -9
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +726 -701
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +282 -254
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +177 -150
- data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/static_stride_scheduler.cc +128 -0
- data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/static_stride_scheduler.h +71 -0
- data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/weighted_round_robin.cc +972 -0
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +289 -251
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +274 -201
- 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_attributes.h +64 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h +3 -3
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +215 -264
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +213 -215
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +578 -667
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.cc +819 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.h +67 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_wrr_locality.cc +369 -0
- data/src/core/ext/filters/client_channel/local_subchannel_pool.cc +4 -0
- data/src/core/ext/filters/client_channel/local_subchannel_pool.h +22 -21
- data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +42 -33
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +678 -336
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +67 -51
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +50 -45
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +109 -119
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +421 -420
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +95 -81
- 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 +21 -20
- data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.cc +2 -0
- data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.h +22 -22
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +124 -255
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +37 -49
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +21 -6
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +190 -96
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +269 -0
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +121 -0
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +56 -61
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +537 -338
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +6 -4
- data/src/core/ext/filters/client_channel/retry_filter.cc +392 -307
- data/src/core/ext/filters/client_channel/retry_filter.h +4 -3
- data/src/core/ext/filters/client_channel/retry_service_config.cc +198 -232
- data/src/core/ext/filters/client_channel/retry_service_config.h +44 -35
- data/src/core/ext/filters/client_channel/retry_throttle.cc +37 -60
- data/src/core/ext/filters/client_channel/retry_throttle.h +47 -34
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +40 -22
- data/src/core/ext/filters/client_channel/subchannel.cc +343 -402
- data/src/core/ext/filters/client_channel/subchannel.h +116 -86
- data/src/core/ext/filters/client_channel/subchannel_interface_internal.h +38 -0
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +17 -77
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +41 -47
- data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +470 -0
- data/src/core/ext/filters/client_channel/subchannel_stream_client.h +222 -0
- data/src/core/ext/filters/deadline/deadline_filter.cc +102 -83
- data/src/core/ext/filters/deadline/deadline_filter.h +17 -14
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +180 -403
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +41 -9
- data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.cc +118 -0
- data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.h +112 -0
- data/src/core/ext/filters/http/client/http_client_filter.cc +123 -548
- data/src/core/ext/filters/http/client/http_client_filter.h +55 -25
- data/src/core/ext/filters/http/client_authority_filter.cc +60 -129
- data/src/core/ext/filters/http/client_authority_filter.h +49 -27
- data/src/core/ext/filters/http/http_filters_plugin.cc +53 -60
- data/src/core/ext/filters/http/message_compress/compression_filter.cc +307 -0
- data/src/core/ext/filters/http/message_compress/compression_filter.h +139 -0
- data/src/core/ext/filters/http/server/http_server_filter.cc +116 -474
- data/src/core/ext/filters/http/server/http_server_filter.h +58 -24
- data/src/core/ext/filters/message_size/message_size_filter.cc +137 -165
- data/src/core/ext/filters/message_size/message_size_filter.h +44 -20
- data/src/core/ext/filters/rbac/rbac_filter.cc +175 -0
- data/src/core/ext/filters/rbac/rbac_filter.h +84 -0
- data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +819 -0
- data/src/core/ext/filters/rbac/rbac_service_config_parser.h +86 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector.h +23 -10
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +93 -199
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.h +4 -3
- data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +219 -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 +24 -24
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +316 -137
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +38 -30
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +378 -182
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +26 -26
- data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +24 -24
- data/src/core/ext/transport/chttp2/transport/bin_decoder.h +35 -34
- data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +31 -30
- data/src/core/ext/transport/chttp2/transport/bin_encoder.h +29 -29
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +972 -1236
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +36 -25
- data/src/core/ext/transport/chttp2/transport/context_list.cc +23 -19
- data/src/core/ext/transport/chttp2/transport/context_list.h +32 -29
- data/src/core/ext/transport/chttp2/transport/decode_huff.cc +251 -0
- data/src/core/ext/transport/chttp2/transport/decode_huff.h +971 -0
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +351 -301
- data/src/core/ext/transport/chttp2/transport/flow_control.h +249 -326
- data/src/core/ext/transport/chttp2/transport/frame.h +22 -26
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +85 -235
- data/src/core/ext/transport/chttp2/transport/frame_data.h +38 -61
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +41 -36
- data/src/core/ext/transport/chttp2/transport/frame_goaway.h +24 -22
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +34 -28
- data/src/core/ext/transport/chttp2/transport/frame_ping.h +25 -22
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +40 -26
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +24 -21
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +46 -77
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +27 -23
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +34 -33
- data/src/core/ext/transport/chttp2/transport/frame_window_update.h +24 -21
- data/src/core/ext/transport/chttp2/transport/hpack_constants.h +10 -4
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +432 -422
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +127 -219
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +5 -2
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +15 -4
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +143 -620
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +31 -25
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +162 -61
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +71 -71
- data/src/core/ext/transport/chttp2/transport/http2_settings.cc +21 -19
- data/src/core/ext/transport/chttp2/transport/http2_settings.h +39 -38
- 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 +21 -21
- data/src/core/ext/transport/chttp2/transport/internal.h +257 -338
- data/src/core/ext/transport/chttp2/transport/parsing.cc +367 -140
- data/src/core/ext/transport/chttp2/transport/stream_lists.cc +30 -30
- data/src/core/ext/transport/chttp2/transport/stream_map.cc +24 -24
- data/src/core/ext/transport/chttp2/transport/stream_map.h +34 -33
- data/src/core/ext/transport/chttp2/transport/varint.cc +19 -20
- data/src/core/ext/transport/chttp2/transport/varint.h +39 -34
- data/src/core/ext/transport/chttp2/transport/writing.cc +199 -227
- data/src/core/ext/transport/inproc/inproc_plugin.cc +17 -22
- data/src/core/ext/transport/inproc/inproc_transport.cc +252 -347
- data/src/core/ext/transport/inproc/inproc_transport.h +23 -24
- data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.c +117 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.h +502 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.c +122 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.h +578 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +46 -359
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +280 -1357
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.c +388 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.h +1953 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.c +56 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.h +159 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.c +64 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.h +189 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.c +46 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.h +128 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.c +43 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.h +106 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.c +43 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.h +101 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.c +106 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.h +613 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.c +48 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.h +107 -0
- data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c +14 -12
- data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +49 -16
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +13 -11
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +53 -23
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +98 -96
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +729 -386
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +191 -173
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +1403 -664
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +34 -26
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +212 -91
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +256 -250
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +1774 -852
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +10 -8
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +46 -24
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +49 -27
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +276 -99
- data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.c +299 -0
- data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.h +1437 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +78 -51
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +519 -190
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +11 -8
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +49 -25
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +159 -154
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +1178 -584
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +87 -42
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +553 -167
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +9 -7
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +42 -24
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +11 -29
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +45 -101
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.c +58 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.h +159 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +108 -104
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +820 -410
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +118 -84
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +813 -358
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +11 -9
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +61 -31
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +164 -108
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +1082 -399
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +8 -6
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +32 -17
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +15 -13
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +91 -49
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c +29 -12
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +140 -34
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +15 -13
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +97 -49
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +11 -9
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +50 -26
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +34 -32
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +206 -109
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +58 -49
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +405 -191
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +49 -47
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +377 -188
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +9 -7
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +38 -21
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +101 -64
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +684 -261
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +77 -69
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +588 -301
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +21 -15
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +130 -49
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +15 -10
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +98 -41
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.c +53 -0
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.h +140 -0
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +58 -55
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +445 -235
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +62 -60
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +442 -237
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +98 -77
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +672 -294
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +46 -36
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +301 -163
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +589 -475
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +4357 -1895
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +25 -19
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +160 -72
- data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.c +241 -0
- data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.h +1191 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.c +45 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.h +101 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.c +49 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.h +107 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +15 -13
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +85 -46
- data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.c +52 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.h +138 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.c +63 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.h +254 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.c +47 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.h +107 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.c +47 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.h +98 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.c +69 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.h +221 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.c +33 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.h +43 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.c +71 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.h +226 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.c +55 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.h +159 -0
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +8 -6
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +38 -24
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +29 -27
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +208 -113
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +36 -34
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +272 -132
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c +71 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +237 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +19 -14
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +113 -43
- 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/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +239 -197
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +1708 -734
- 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/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.c +54 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.h +188 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/common/v3/common.upb.c +111 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/common/v3/common.upb.h +444 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.c +56 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +192 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.c +46 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.h +98 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +3 -1
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +2 -1
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +89 -58
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +606 -235
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +26 -24
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +168 -87
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +100 -71
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +672 -263
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.c +62 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h +168 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +6 -4
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +26 -16
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +185 -66
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +1118 -256
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +18 -16
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +115 -62
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +52 -50
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +367 -186
- data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.c +48 -0
- data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.h +116 -0
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +20 -18
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +140 -82
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/filter_state.upb.c +47 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/filter_state.upb.h +113 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c +74 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h +230 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +16 -14
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +107 -57
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +10 -8
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +54 -31
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +10 -8
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +52 -27
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +9 -7
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +42 -24
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +21 -19
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +129 -69
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/status_code_input.upb.c +43 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/status_code_input.upb.h +114 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +19 -17
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +131 -65
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +14 -12
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +93 -53
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +23 -21
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +162 -83
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +32 -30
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +258 -146
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +36 -34
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +255 -131
- data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.c +66 -0
- data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.h +213 -0
- data/src/core/ext/upb-generated/envoy/type/v3/http.upb.c +3 -1
- data/src/core/ext/upb-generated/envoy/type/v3/http.upb.h +2 -1
- data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.c +42 -0
- data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.h +143 -0
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c +13 -11
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +70 -36
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +19 -17
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +110 -52
- data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.c +63 -0
- data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.h +202 -0
- data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_unit.upb.c +26 -0
- data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_unit.upb.h +43 -0
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +10 -8
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +44 -19
- data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.c +51 -0
- data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.h +131 -0
- data/src/core/ext/upb-generated/google/api/annotations.upb.c +8 -6
- data/src/core/ext/upb-generated/google/api/annotations.upb.h +22 -6
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +109 -103
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +764 -382
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +120 -112
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +843 -402
- data/src/core/ext/upb-generated/google/api/http.upb.c +29 -27
- data/src/core/ext/upb-generated/google/api/http.upb.h +228 -115
- data/src/core/ext/upb-generated/google/api/httpbody.upb.c +46 -0
- data/src/core/ext/upb-generated/google/api/httpbody.upb.h +115 -0
- data/src/core/ext/upb-generated/google/protobuf/any.upb.c +9 -7
- data/src/core/ext/upb-generated/google/protobuf/any.upb.h +42 -22
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +292 -237
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +2198 -1030
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +9 -7
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +40 -20
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +6 -4
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +26 -16
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +31 -29
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +189 -93
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +9 -7
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +40 -20
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +40 -38
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +276 -149
- data/src/core/ext/upb-generated/google/rpc/status.upb.c +11 -9
- data/src/core/ext/upb-generated/google/rpc/status.upb.h +56 -30
- data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.c +84 -0
- data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.h +335 -0
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +21 -19
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +107 -48
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +102 -96
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +725 -359
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +16 -13
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +84 -41
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +12 -10
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +64 -35
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +57 -55
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +419 -219
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +22 -20
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +123 -63
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.c +175 -0
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.h +792 -0
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +36 -34
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +201 -78
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +14 -12
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +57 -22
- data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c +7 -5
- data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +15 -6
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +14 -12
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +59 -24
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +13 -11
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +53 -23
- data/src/core/ext/upb-generated/validate/validate.upb.c +339 -312
- data/src/core/ext/upb-generated/validate/validate.upb.h +2818 -1180
- data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.c +110 -0
- data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.h +290 -0
- data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.c +55 -0
- data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.h +112 -0
- data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.c +38 -0
- data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.h +46 -0
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +34 -32
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +187 -80
- data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.c +53 -0
- data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.h +103 -0
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +8 -6
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +34 -19
- 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/core/v3/collection_entry.upb.c +18 -16
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +106 -55
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +14 -12
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +57 -30
- data/src/core/ext/upb-generated/xds/core/v3/extension.upb.c +46 -0
- data/src/core/ext/upb-generated/xds/core/v3/extension.upb.h +107 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +12 -10
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +59 -30
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +20 -18
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +138 -70
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +12 -10
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +62 -30
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +24 -21
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +114 -46
- data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.c +46 -0
- data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.h +113 -0
- 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/matcher.upb.c +207 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.h +914 -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/matcher/v3/regex.upb.c +52 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.h +151 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.c +65 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.h +226 -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 +10 -9
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +46 -24
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/certs.upbdefs.c +84 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/certs.upbdefs.h +55 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/clusters.upbdefs.c +128 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/clusters.upbdefs.h +50 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +73 -278
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.h +16 -101
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.c +277 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.h +125 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/init_dump.upbdefs.c +43 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/init_dump.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.c +56 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/memory.upbdefs.c +49 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/memory.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/metrics.upbdefs.c +46 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/metrics.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/mutex_stats.upbdefs.c +46 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/mutex_stats.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/server_info.upbdefs.c +142 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/server_info.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/tap.upbdefs.c +51 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/tap.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c +8 -6
- data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.h +1 -1
- data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.c +8 -6
- data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +118 -115
- data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.h +46 -46
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +257 -237
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.h +55 -55
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +58 -51
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.h +10 -10
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +394 -370
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +73 -78
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.c +14 -11
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +23 -16
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/config/common/matcher/v3/matcher.upbdefs.c +206 -0
- data/src/core/ext/upbdefs-generated/envoy/config/common/matcher/v3/matcher.upbdefs.h +105 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c +101 -79
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.h +27 -22
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.c +15 -12
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +203 -194
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +73 -73
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +138 -101
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.h +26 -16
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.c +14 -12
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c +22 -34
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.h +4 -9
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_method_list.upbdefs.c +53 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_method_list.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.c +21 -18
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.h +43 -43
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +182 -165
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.h +30 -25
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.c +14 -12
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +252 -219
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h +53 -43
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +12 -9
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.c +14 -11
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.h +7 -7
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c +18 -11
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.h +9 -4
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +24 -21
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.c +13 -11
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c +18 -15
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.h +13 -13
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +81 -73
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.h +19 -19
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.c +18 -15
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.h +16 -16
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.c +14 -11
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +180 -146
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +24 -19
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +153 -147
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.h +22 -22
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.c +26 -19
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +44 -33
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.h +7 -7
- data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/metrics_service.upbdefs.c +69 -0
- data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/metrics_service.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.c +17 -14
- data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.h +25 -25
- data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.c +17 -14
- data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.h +28 -28
- data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c +201 -0
- data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.h +75 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +91 -74
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +10 -10
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +902 -806
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +180 -160
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c +52 -37
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.h +10 -10
- data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.c +199 -0
- data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.h +90 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/datadog.upbdefs.c +56 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/datadog.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/dynamic_ot.upbdefs.c +57 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/dynamic_ot.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c +15 -12
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.h +7 -7
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/lightstep.upbdefs.c +72 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/lightstep.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opencensus.upbdefs.c +99 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opencensus.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.c +48 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/service.upbdefs.c +52 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/service.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/skywalking.upbdefs.c +71 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/skywalking.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.c +61 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.h +30 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/xray.upbdefs.c +75 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/xray.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/zipkin.upbdefs.c +79 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/zipkin.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c +15 -11
- data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.c +17 -14
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.h +16 -16
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +18 -15
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.h +10 -10
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c +80 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c +59 -44
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.h +4 -4
- 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/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +506 -463
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +63 -58
- 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/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +15 -11
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h +1 -1
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +172 -140
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h +24 -19
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +19 -16
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h +10 -10
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +220 -198
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h +24 -19
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.c +58 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c +14 -11
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +163 -88
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +57 -22
- data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +16 -13
- data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.h +7 -7
- data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +123 -120
- data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.h +16 -16
- data/src/core/ext/upbdefs-generated/envoy/type/http/v3/cookie.upbdefs.c +46 -0
- data/src/core/ext/upbdefs-generated/envoy/type/http/v3/cookie.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.c +13 -10
- data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.h +13 -13
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/filter_state.upbdefs.c +48 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/filter_state.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.c +52 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.h +50 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.c +15 -12
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.h +7 -7
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.c +15 -12
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.c +15 -12
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.c +15 -12
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +36 -32
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.h +10 -10
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/status_code_input.upbdefs.c +40 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/status_code_input.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c +15 -12
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.h +7 -7
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.c +14 -12
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.h +7 -7
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.c +16 -13
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.h +10 -10
- data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.c +13 -10
- data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.h +22 -22
- data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.c +14 -11
- data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.h +16 -16
- data/src/core/ext/upbdefs-generated/envoy/type/v3/hash_policy.upbdefs.c +53 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/hash_policy.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.c +10 -8
- data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.h +1 -1
- data/src/core/ext/upbdefs-generated/envoy/type/v3/http_status.upbdefs.c +94 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/http_status.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.c +12 -10
- data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.h +7 -7
- data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.c +11 -8
- data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.h +10 -10
- data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.c +69 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_unit.upbdefs.c +39 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_unit.upbdefs.h +30 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.c +11 -9
- data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/type/v3/token_bucket.upbdefs.c +57 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/token_bucket.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.c +5 -5
- data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.h +1 -1
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.c +154 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.h +95 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.c +153 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.h +100 -0
- data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.c +3 -3
- data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.h +10 -10
- data/src/core/ext/upbdefs-generated/google/api/httpbody.upbdefs.c +39 -0
- data/src/core/ext/upbdefs-generated/google/api/httpbody.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c +3 -3
- data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +94 -92
- data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.h +82 -82
- data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c +3 -3
- data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c +3 -3
- data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c +3 -3
- data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.h +13 -13
- data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c +3 -3
- data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c +3 -3
- data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.h +28 -28
- data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c +4 -4
- data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/opencensus/proto/trace/v1/trace_config.upbdefs.c +67 -0
- data/src/core/ext/upbdefs-generated/opencensus/proto/trace/v1/trace_config.upbdefs.h +50 -0
- data/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.c +99 -0
- data/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.h +75 -0
- data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c +4 -4
- data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.h +10 -10
- data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c +5 -5
- data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c +4 -4
- data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.h +1 -1
- data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c +4 -4
- data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c +4 -4
- data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +6 -6
- data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.h +70 -70
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/migrate.upbdefs.c +63 -0
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/migrate.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/security.upbdefs.c +47 -0
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/security.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/sensitive.upbdefs.c +35 -0
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/sensitive.upbdefs.h +30 -0
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.c +4 -4
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.h +13 -13
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/versioning.upbdefs.c +40 -0
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/versioning.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c +5 -5
- data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.h +4 -4
- 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/core/v3/collection_entry.upbdefs.c +7 -7
- data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.h +7 -7
- data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c +4 -4
- data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.h +7 -7
- data/src/core/ext/upbdefs-generated/xds/core/v3/extension.upbdefs.c +41 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/extension.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c +6 -6
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c +6 -6
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.h +7 -7
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.c +6 -6
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.h +4 -4
- 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 +126 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/matcher.upbdefs.h +80 -0
- 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/matcher/v3/regex.upbdefs.c +40 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/regex.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/string.upbdefs.c +52 -0
- data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/string.upbdefs.h +40 -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 +6 -9
- data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.h +4 -4
- data/src/core/ext/xds/certificate_provider_store.cc +75 -3
- data/src/core/ext/xds/certificate_provider_store.h +30 -4
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +21 -14
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +14 -6
- data/src/core/ext/xds/upb_utils.h +45 -0
- data/src/core/ext/xds/xds_api.cc +294 -3740
- data/src/core/ext/xds/xds_api.h +82 -635
- data/src/core/ext/xds/xds_bootstrap.cc +10 -446
- data/src/core/ext/xds/xds_bootstrap.h +46 -83
- data/src/core/ext/xds/xds_bootstrap_grpc.cc +362 -0
- data/src/core/ext/xds/xds_bootstrap_grpc.h +184 -0
- data/src/core/ext/xds/xds_certificate_provider.cc +36 -25
- data/src/core/ext/xds/xds_certificate_provider.h +37 -4
- data/src/core/ext/xds/xds_channel_args.h +3 -3
- data/src/core/ext/xds/xds_channel_stack_modifier.cc +27 -20
- data/src/core/ext/xds/xds_channel_stack_modifier.h +20 -7
- data/src/core/ext/xds/xds_client.cc +1247 -2097
- data/src/core/ext/xds/xds_client.h +159 -204
- data/src/core/ext/xds/xds_client_grpc.cc +235 -0
- data/src/core/ext/xds/xds_client_grpc.h +79 -0
- data/src/core/ext/xds/xds_client_stats.cc +35 -36
- data/src/core/ext/xds/xds_client_stats.h +31 -28
- data/src/core/ext/xds/xds_cluster.cc +711 -0
- data/src/core/ext/xds/xds_cluster.h +137 -0
- data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +132 -0
- data/src/core/ext/xds/xds_cluster_specifier_plugin.h +97 -0
- data/src/core/ext/xds/xds_common_types.cc +503 -0
- data/src/core/ext/xds/xds_common_types.h +108 -0
- data/src/core/ext/xds/xds_endpoint.cc +474 -0
- data/src/core/ext/xds/xds_endpoint.h +139 -0
- data/src/core/ext/xds/xds_health_status.cc +80 -0
- data/src/core/ext/xds/xds_health_status.h +109 -0
- data/src/core/ext/xds/xds_http_fault_filter.cc +68 -59
- data/src/core/ext/xds/xds_http_fault_filter.h +20 -26
- data/src/core/ext/xds/xds_http_filters.cc +71 -66
- data/src/core/ext/xds/xds_http_filters.h +74 -26
- data/src/core/ext/xds/xds_http_rbac_filter.cc +506 -0
- data/src/core/ext/xds/xds_http_rbac_filter.h +58 -0
- 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 +334 -0
- data/src/core/ext/xds/xds_lb_policy_registry.h +71 -0
- data/src/core/ext/xds/xds_listener.cc +1131 -0
- data/src/core/ext/xds/xds_listener.h +226 -0
- data/src/core/ext/xds/xds_resource_type.h +104 -0
- data/src/core/ext/xds/xds_resource_type_impl.h +88 -0
- data/src/core/ext/xds/xds_route_config.cc +1144 -0
- data/src/core/ext/xds/xds_route_config.h +252 -0
- data/src/core/ext/xds/xds_routing.cc +33 -16
- data/src/core/ext/xds/xds_routing.h +25 -17
- data/src/core/ext/xds/xds_server_config_fetcher.cc +386 -281
- data/src/core/ext/xds/xds_transport.h +86 -0
- data/src/core/ext/xds/xds_transport_grpc.cc +356 -0
- data/src/core/ext/xds/xds_transport_grpc.h +135 -0
- data/src/core/lib/address_utils/parse_address.cc +55 -35
- data/src/core/lib/address_utils/parse_address.h +46 -37
- data/src/core/lib/address_utils/sockaddr_utils.cc +112 -79
- data/src/core/lib/address_utils/sockaddr_utils.h +45 -55
- data/src/core/lib/avl/avl.h +100 -13
- data/src/core/lib/backoff/backoff.cc +26 -57
- data/src/core/lib/backoff/backoff.h +32 -32
- data/src/core/lib/channel/call_finalization.h +88 -0
- data/src/core/lib/channel/call_tracer.h +27 -9
- data/src/core/lib/channel/channel_args.cc +291 -65
- data/src/core/lib/channel/channel_args.h +461 -54
- data/src/core/lib/channel/channel_args_preconditioning.cc +6 -10
- data/src/core/lib/channel/channel_args_preconditioning.h +7 -7
- data/src/core/lib/channel/channel_fwd.h +26 -0
- data/src/core/lib/channel/channel_stack.cc +100 -53
- data/src/core/lib/channel/channel_stack.h +212 -130
- data/src/core/lib/channel/channel_stack_builder.cc +35 -295
- data/src/core/lib/channel/channel_stack_builder.h +115 -153
- data/src/core/lib/channel/channel_stack_builder_impl.cc +126 -0
- data/src/core/lib/channel/channel_stack_builder_impl.h +48 -0
- data/src/core/lib/channel/channel_trace.cc +29 -39
- data/src/core/lib/channel/channel_trace.h +27 -24
- data/src/core/lib/channel/channelz.cc +51 -65
- data/src/core/lib/channel/channelz.h +50 -33
- data/src/core/lib/channel/channelz_registry.cc +28 -36
- data/src/core/lib/channel/channelz_registry.h +31 -30
- data/src/core/lib/channel/connected_channel.cc +1269 -75
- data/src/core/lib/channel/connected_channel.h +23 -24
- data/src/core/lib/channel/context.h +36 -21
- data/src/core/lib/channel/promise_based_filter.cc +2521 -0
- data/src/core/lib/channel/promise_based_filter.h +937 -0
- data/src/core/lib/channel/status_util.cc +64 -17
- data/src/core/lib/channel/status_util.h +38 -24
- data/src/core/lib/compression/compression.cc +44 -131
- data/src/core/lib/compression/compression_internal.cc +189 -230
- data/src/core/lib/compression/compression_internal.h +90 -94
- data/src/core/lib/compression/message_compress.cc +39 -37
- data/src/core/lib/compression/message_compress.h +30 -31
- data/src/core/lib/config/core_configuration.cc +15 -2
- data/src/core/lib/config/core_configuration.h +125 -39
- 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/debug/histogram_view.h +37 -0
- data/src/core/lib/debug/stats.cc +48 -152
- data/src/core/lib/debug/stats.h +50 -57
- data/src/core/lib/debug/stats_data.cc +302 -649
- data/src/core/lib/debug/stats_data.h +293 -548
- data/src/core/lib/debug/trace.cc +18 -20
- data/src/core/lib/debug/trace.h +27 -48
- data/src/core/lib/event_engine/channel_args_endpoint_config.cc +16 -17
- data/src/core/lib/event_engine/channel_args_endpoint_config.h +16 -9
- data/src/core/lib/event_engine/common_closures.h +71 -0
- data/src/core/lib/event_engine/default_event_engine.cc +99 -0
- data/src/core/lib/event_engine/default_event_engine.h +73 -0
- data/src/core/lib/event_engine/default_event_engine_factory.cc +48 -0
- data/src/core/lib/event_engine/default_event_engine_factory.h +33 -0
- data/src/core/lib/event_engine/event_engine.cc +3 -15
- data/src/core/lib/event_engine/executor/executor.h +38 -0
- data/src/core/lib/event_engine/forkable.cc +106 -0
- data/src/core/lib/event_engine/forkable.h +61 -0
- data/src/core/lib/event_engine/handle_containers.h +74 -0
- data/src/core/lib/event_engine/memory_allocator.cc +19 -15
- data/src/core/lib/event_engine/poller.h +62 -0
- data/src/core/lib/event_engine/posix.h +158 -0
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +642 -0
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h +139 -0
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +899 -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/posix_engine/event_poller_posix_default.h +33 -0
- 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 +1305 -0
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +717 -0
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +640 -0
- data/src/core/lib/event_engine/posix_engine/posix_engine.h +259 -0
- 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 +289 -0
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +279 -0
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +379 -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 +311 -0
- data/src/core/lib/event_engine/posix_engine/timer.h +194 -0
- data/src/core/lib/event_engine/posix_engine/timer_heap.cc +107 -0
- data/src/core/lib/event_engine/posix_engine/timer_heap.h +56 -0
- data/src/core/lib/event_engine/posix_engine/timer_manager.cc +173 -0
- data/src/core/lib/event_engine/posix_engine/timer_manager.h +114 -0
- 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/posix_engine/wakeup_fd_pipe.h +45 -0
- 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/resolved_address.cc +60 -0
- data/src/core/lib/event_engine/resolved_address_internal.h +34 -0
- data/src/core/lib/event_engine/shim.cc +56 -0
- data/src/core/lib/event_engine/shim.h +33 -0
- data/src/core/lib/event_engine/slice.cc +103 -0
- data/src/core/lib/event_engine/slice_buffer.cc +50 -0
- data/src/core/lib/event_engine/tcp_socket_utils.cc +389 -0
- data/src/core/lib/event_engine/tcp_socket_utils.h +90 -0
- data/src/core/lib/event_engine/thread_local.cc +29 -0
- data/src/core/lib/event_engine/thread_local.h +32 -0
- data/src/core/lib/event_engine/thread_pool.cc +253 -0
- data/src/core/lib/event_engine/thread_pool.h +141 -0
- data/src/core/lib/event_engine/time_util.cc +30 -0
- data/src/core/lib/event_engine/time_util.h +32 -0
- data/src/core/lib/event_engine/trace.cc +24 -0
- data/src/core/lib/event_engine/trace.h +43 -0
- data/src/core/lib/event_engine/utils.cc +44 -0
- data/src/core/lib/event_engine/utils.h +44 -0
- data/src/core/lib/event_engine/windows/iocp.cc +140 -0
- data/src/core/lib/event_engine/windows/iocp.h +69 -0
- data/src/core/lib/event_engine/windows/win_socket.cc +219 -0
- data/src/core/lib/event_engine/windows/win_socket.h +129 -0
- data/src/core/lib/event_engine/windows/windows_endpoint.cc +331 -0
- data/src/core/lib/event_engine/windows/windows_endpoint.h +103 -0
- data/src/core/lib/event_engine/windows/windows_engine.cc +388 -0
- data/src/core/lib/event_engine/windows/windows_engine.h +163 -0
- data/src/core/lib/experiments/config.cc +161 -0
- data/src/core/lib/experiments/config.h +53 -0
- data/src/core/lib/experiments/experiments.cc +81 -0
- data/src/core/lib/experiments/experiments.h +117 -0
- data/src/core/lib/gpr/alloc.cc +19 -25
- data/src/core/lib/gpr/alloc.h +20 -20
- 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 +30 -17
- 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 -25
- data/src/core/lib/gpr/spinlock.h +20 -20
- data/src/core/lib/gpr/string.cc +25 -24
- data/src/core/lib/gpr/string.h +61 -61
- data/src/core/lib/gpr/string_posix.cc +24 -24
- data/src/core/lib/gpr/string_util_windows.cc +25 -52
- 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 +36 -40
- data/src/core/lib/gpr/sync_posix.cc +23 -34
- data/src/core/lib/gpr/sync_windows.cc +29 -27
- data/src/core/lib/gpr/time.cc +36 -31
- data/src/core/lib/gpr/time_posix.cc +41 -45
- data/src/core/lib/gpr/time_precise.cc +22 -22
- data/src/core/lib/gpr/time_precise.h +21 -22
- data/src/core/lib/gpr/time_windows.cc +35 -29
- data/src/core/lib/gpr/tmpfile.h +24 -24
- 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 +28 -29
- data/src/core/lib/gpr/useful.h +101 -30
- data/src/core/lib/gpr/wrap_memcpy.cc +23 -23
- data/src/core/lib/gprpp/atomic_utils.h +20 -20
- data/src/core/lib/gprpp/bitset.h +54 -17
- data/src/core/lib/gprpp/chunked_vector.h +52 -6
- data/src/core/lib/gprpp/construct_destruct.h +4 -3
- data/src/core/lib/gprpp/cpp_impl_of.h +7 -3
- data/src/core/lib/gprpp/crash.cc +33 -0
- data/src/core/lib/gprpp/crash.h +34 -0
- data/src/core/lib/gprpp/debug_location.h +62 -31
- data/src/core/lib/gprpp/dual_ref_counted.h +4 -7
- data/src/core/lib/gprpp/env.h +53 -0
- data/src/core/lib/gprpp/env_linux.cc +80 -0
- data/src/core/lib/gprpp/env_posix.cc +47 -0
- data/src/core/lib/gprpp/env_windows.cc +56 -0
- data/src/core/lib/gprpp/examine_stack.cc +17 -17
- data/src/core/lib/gprpp/examine_stack.h +21 -22
- data/src/core/lib/gprpp/fork.cc +58 -53
- data/src/core/lib/gprpp/fork.h +29 -35
- data/src/core/lib/gprpp/global_config.h +22 -24
- data/src/core/lib/gprpp/global_config_custom.h +20 -20
- data/src/core/lib/gprpp/global_config_env.cc +28 -25
- data/src/core/lib/gprpp/global_config_env.h +29 -27
- data/src/core/lib/gprpp/global_config_generic.h +21 -25
- data/src/core/lib/gprpp/host_port.cc +30 -26
- data/src/core/lib/gprpp/host_port.h +32 -31
- 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 +21 -89
- data/src/core/lib/gprpp/match.h +75 -0
- data/src/core/lib/gprpp/memory.h +22 -26
- data/src/core/lib/gprpp/mpscq.cc +17 -17
- data/src/core/lib/gprpp/mpscq.h +21 -21
- data/src/core/lib/gprpp/no_destruct.h +95 -0
- data/src/core/lib/gprpp/notification.h +67 -0
- data/src/core/lib/gprpp/orphanable.h +22 -25
- data/src/core/lib/gprpp/overload.h +59 -0
- data/src/core/lib/gprpp/packed_table.h +40 -0
- data/src/core/lib/gprpp/per_cpu.h +46 -0
- data/src/core/lib/gprpp/ref_counted.h +24 -24
- data/src/core/lib/gprpp/ref_counted_ptr.h +42 -55
- data/src/core/lib/gprpp/single_set_ptr.h +87 -0
- data/src/core/lib/gprpp/sorted_pack.h +98 -0
- data/src/core/lib/gprpp/stat.h +3 -5
- data/src/core/lib/gprpp/stat_posix.cc +10 -4
- data/src/core/lib/gprpp/stat_windows.cc +4 -2
- data/src/core/lib/gprpp/status_helper.cc +79 -51
- data/src/core/lib/gprpp/status_helper.h +19 -24
- data/src/core/lib/gprpp/strerror.cc +43 -0
- data/src/core/lib/gprpp/strerror.h +29 -0
- data/src/core/lib/gprpp/sync.h +26 -24
- data/src/core/lib/gprpp/table.h +33 -4
- data/src/core/lib/gprpp/tchar.cc +49 -0
- data/src/core/lib/gprpp/tchar.h +33 -0
- data/src/core/lib/gprpp/thd.h +25 -28
- data/src/core/lib/gprpp/thd_posix.cc +33 -32
- data/src/core/lib/gprpp/thd_windows.cc +28 -26
- data/src/core/lib/gprpp/time.cc +241 -0
- data/src/core/lib/gprpp/time.h +366 -0
- data/src/core/lib/gprpp/time_averaged_stats.cc +60 -0
- data/src/core/lib/gprpp/time_averaged_stats.h +79 -0
- data/src/core/lib/gprpp/time_util.cc +4 -0
- data/src/core/lib/gprpp/time_util.h +3 -3
- data/src/core/lib/gprpp/unique_type_name.h +104 -0
- data/src/core/lib/gprpp/validation_errors.cc +61 -0
- data/src/core/lib/gprpp/validation_errors.h +127 -0
- data/src/core/lib/gprpp/work_serializer.cc +247 -0
- data/src/core/lib/gprpp/work_serializer.h +86 -0
- data/src/core/lib/handshaker/proxy_mapper.h +53 -0
- data/src/core/lib/handshaker/proxy_mapper_registry.cc +71 -0
- data/src/core/lib/handshaker/proxy_mapper_registry.h +75 -0
- data/src/core/lib/http/format_request.cc +81 -47
- data/src/core/lib/http/format_request.h +30 -27
- data/src/core/lib/http/httpcli.cc +328 -262
- data/src/core/lib/http/httpcli.h +256 -115
- data/src/core/lib/http/httpcli_security_connector.cc +101 -104
- data/src/core/lib/http/httpcli_ssl_credentials.h +39 -0
- data/src/core/lib/http/parser.cc +144 -85
- data/src/core/lib/http/parser.h +51 -35
- data/src/core/lib/iomgr/block_annotate.h +23 -23
- data/src/core/lib/iomgr/buffer_list.cc +156 -136
- data/src/core/lib/iomgr/buffer_list.h +128 -106
- data/src/core/lib/iomgr/call_combiner.cc +37 -58
- data/src/core/lib/iomgr/call_combiner.h +24 -25
- data/src/core/lib/iomgr/cfstream_handle.cc +33 -36
- data/src/core/lib/iomgr/cfstream_handle.h +25 -25
- data/src/core/lib/iomgr/closure.cc +27 -0
- data/src/core/lib/iomgr/closure.h +111 -54
- data/src/core/lib/iomgr/combiner.cc +29 -26
- data/src/core/lib/iomgr/combiner.h +20 -20
- data/src/core/lib/iomgr/dualstack_socket_posix.cc +21 -21
- data/src/core/lib/iomgr/dynamic_annotations.h +22 -22
- data/src/core/lib/iomgr/endpoint.cc +21 -21
- data/src/core/lib/iomgr/endpoint.h +53 -51
- data/src/core/lib/iomgr/endpoint_cfstream.cc +51 -47
- data/src/core/lib/iomgr/endpoint_cfstream.h +32 -32
- data/src/core/lib/iomgr/endpoint_pair.h +20 -20
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +34 -27
- data/src/core/lib/iomgr/endpoint_pair_windows.cc +30 -21
- data/src/core/lib/iomgr/error.cc +52 -832
- data/src/core/lib/iomgr/error.h +45 -319
- data/src/core/lib/iomgr/error_cfstream.cc +18 -23
- data/src/core/lib/iomgr/error_cfstream.h +21 -21
- data/src/core/lib/iomgr/ev_apple.cc +27 -26
- data/src/core/lib/iomgr/ev_apple.h +21 -21
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +270 -254
- data/src/core/lib/iomgr/ev_epoll1_linux.h +21 -21
- data/src/core/lib/iomgr/ev_poll_posix.cc +302 -277
- data/src/core/lib/iomgr/ev_poll_posix.h +22 -22
- data/src/core/lib/iomgr/ev_posix.cc +91 -125
- data/src/core/lib/iomgr/ev_posix.h +94 -88
- data/src/core/lib/iomgr/ev_windows.cc +18 -18
- data/src/core/lib/iomgr/event_engine_shims/closure.cc +62 -0
- data/src/core/lib/iomgr/event_engine_shims/closure.h +39 -0
- data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +430 -0
- data/src/core/lib/iomgr/event_engine_shims/endpoint.h +43 -0
- data/src/core/lib/iomgr/event_engine_shims/tcp_client.cc +91 -0
- data/src/core/lib/iomgr/event_engine_shims/tcp_client.h +44 -0
- data/src/core/lib/iomgr/exec_ctx.cc +45 -139
- data/src/core/lib/iomgr/exec_ctx.h +154 -195
- data/src/core/lib/iomgr/executor.cc +25 -26
- data/src/core/lib/iomgr/executor.h +27 -30
- data/src/core/lib/iomgr/fork_posix.cc +30 -26
- data/src/core/lib/iomgr/fork_windows.cc +21 -21
- data/src/core/lib/iomgr/gethostname.h +20 -20
- 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 +22 -22
- 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 +41 -48
- data/src/core/lib/iomgr/internal_errqueue.h +84 -89
- data/src/core/lib/iomgr/iocp_windows.cc +31 -31
- data/src/core/lib/iomgr/iocp_windows.h +22 -22
- data/src/core/lib/iomgr/iomgr.cc +25 -20
- data/src/core/lib/iomgr/iomgr.h +35 -35
- data/src/core/lib/iomgr/iomgr_fwd.h +26 -0
- data/src/core/lib/iomgr/iomgr_internal.cc +17 -17
- data/src/core/lib/iomgr/iomgr_internal.h +28 -28
- data/src/core/lib/iomgr/iomgr_posix.cc +22 -21
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +22 -20
- data/src/core/lib/iomgr/iomgr_windows.cc +25 -23
- data/src/core/lib/iomgr/load_file.cc +24 -27
- data/src/core/lib/iomgr/load_file.h +22 -22
- data/src/core/lib/iomgr/lockfree_event.cc +114 -131
- data/src/core/lib/iomgr/lockfree_event.h +23 -23
- data/src/core/lib/iomgr/nameser.h +86 -86
- data/src/core/lib/iomgr/polling_entity.cc +25 -21
- data/src/core/lib/iomgr/polling_entity.h +35 -29
- data/src/core/lib/iomgr/pollset.cc +18 -18
- data/src/core/lib/iomgr/pollset.h +60 -60
- data/src/core/lib/iomgr/pollset_set.cc +17 -17
- data/src/core/lib/iomgr/pollset_set.h +26 -28
- data/src/core/lib/iomgr/pollset_set_windows.cc +18 -18
- data/src/core/lib/iomgr/pollset_set_windows.h +20 -20
- data/src/core/lib/iomgr/pollset_windows.cc +34 -33
- data/src/core/lib/iomgr/pollset_windows.h +24 -24
- data/src/core/lib/iomgr/port.h +59 -42
- data/src/core/lib/iomgr/python_util.h +24 -24
- data/src/core/lib/iomgr/resolve_address.cc +34 -39
- data/src/core/lib/iomgr/resolve_address.h +100 -67
- data/src/core/lib/iomgr/resolve_address_impl.h +59 -0
- data/src/core/lib/iomgr/resolve_address_posix.cc +133 -98
- data/src/core/lib/iomgr/resolve_address_posix.h +63 -0
- data/src/core/lib/iomgr/resolve_address_windows.cc +129 -84
- data/src/core/lib/iomgr/resolve_address_windows.h +63 -0
- data/src/core/lib/iomgr/resolved_address.h +39 -0
- data/src/core/lib/iomgr/sockaddr.h +25 -26
- data/src/core/lib/iomgr/sockaddr_posix.h +23 -21
- data/src/core/lib/iomgr/sockaddr_utils_posix.cc +64 -0
- data/src/core/lib/iomgr/sockaddr_windows.h +23 -21
- data/src/core/lib/iomgr/socket_factory_posix.cc +18 -18
- data/src/core/lib/iomgr/socket_factory_posix.h +32 -32
- data/src/core/lib/iomgr/socket_mutator.cc +19 -18
- data/src/core/lib/iomgr/socket_mutator.h +39 -39
- data/src/core/lib/iomgr/socket_utils.h +27 -27
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +82 -118
- data/src/core/lib/iomgr/socket_utils_linux.cc +18 -17
- data/src/core/lib/iomgr/socket_utils_posix.cc +103 -19
- data/src/core/lib/iomgr/socket_utils_posix.h +176 -84
- 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 +59 -61
- data/src/core/lib/iomgr/systemd_utils.cc +116 -0
- data/src/core/lib/iomgr/systemd_utils.h +33 -0
- data/src/core/lib/iomgr/tcp_client.cc +28 -24
- data/src/core/lib/iomgr/tcp_client.h +49 -37
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +46 -35
- data/src/core/lib/iomgr/tcp_client_posix.cc +244 -106
- data/src/core/lib/iomgr/tcp_client_posix.h +55 -52
- data/src/core/lib/iomgr/tcp_client_windows.cc +73 -53
- data/src/core/lib/iomgr/tcp_posix.cc +563 -361
- data/src/core/lib/iomgr/tcp_posix.h +32 -30
- data/src/core/lib/iomgr/tcp_server.cc +33 -24
- data/src/core/lib/iomgr/tcp_server.h +78 -69
- data/src/core/lib/iomgr/tcp_server_posix.cc +402 -145
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +68 -55
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +121 -82
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +47 -43
- data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +19 -19
- data/src/core/lib/iomgr/tcp_server_windows.cc +116 -118
- data/src/core/lib/iomgr/tcp_windows.cc +123 -98
- data/src/core/lib/iomgr/tcp_windows.h +34 -35
- data/src/core/lib/iomgr/timer.cc +19 -19
- data/src/core/lib/iomgr/timer.h +78 -73
- data/src/core/lib/iomgr/timer_generic.cc +214 -204
- data/src/core/lib/iomgr/timer_generic.h +21 -21
- data/src/core/lib/iomgr/timer_heap.cc +25 -25
- data/src/core/lib/iomgr/timer_heap.h +22 -22
- data/src/core/lib/iomgr/timer_manager.cc +44 -43
- data/src/core/lib/iomgr/timer_manager.h +27 -27
- data/src/core/lib/iomgr/unix_sockets_posix.cc +38 -51
- data/src/core/lib/iomgr/unix_sockets_posix.h +25 -28
- data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +25 -32
- data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +23 -23
- 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 +20 -20
- data/src/core/lib/iomgr/wakeup_fd_posix.cc +33 -30
- data/src/core/lib/iomgr/wakeup_fd_posix.h +52 -54
- data/src/core/lib/json/json.h +23 -27
- data/src/core/lib/json/json_args.h +34 -0
- data/src/core/lib/json/json_channel_args.h +42 -0
- data/src/core/lib/json/json_object_loader.cc +217 -0
- data/src/core/lib/json/json_object_loader.h +634 -0
- data/src/core/lib/json/json_reader.cc +123 -90
- data/src/core/lib/json/json_util.cc +17 -37
- data/src/core/lib/json/json_util.h +21 -12
- data/src/core/lib/json/json_writer.cc +62 -57
- data/src/core/lib/load_balancing/lb_policy.cc +102 -0
- data/src/core/lib/load_balancing/lb_policy.h +442 -0
- data/src/core/lib/load_balancing/lb_policy_factory.h +49 -0
- data/src/core/lib/load_balancing/lb_policy_registry.cc +142 -0
- data/src/core/lib/load_balancing/lb_policy_registry.h +82 -0
- data/src/core/lib/load_balancing/subchannel_interface.h +135 -0
- data/src/core/lib/matchers/matchers.cc +13 -8
- data/src/core/lib/matchers/matchers.h +5 -3
- data/src/core/lib/promise/activity.cc +36 -15
- data/src/core/lib/promise/activity.h +287 -188
- data/src/core/lib/promise/arena_promise.h +231 -0
- data/src/core/lib/promise/context.h +18 -11
- data/src/core/lib/promise/detail/basic_join.h +197 -0
- data/src/core/lib/promise/detail/basic_seq.h +104 -20
- data/src/core/lib/promise/detail/promise_factory.h +62 -15
- data/src/core/lib/promise/detail/promise_like.h +3 -3
- data/src/core/lib/promise/detail/status.h +37 -3
- data/src/core/lib/promise/detail/switch.h +21 -21
- data/src/core/lib/promise/exec_ctx_wakeup_scheduler.h +23 -15
- data/src/core/lib/promise/if.h +195 -0
- data/src/core/lib/promise/interceptor_list.h +308 -0
- data/src/core/lib/promise/intra_activity_waiter.h +55 -0
- data/src/core/lib/promise/latch.h +191 -0
- data/src/core/lib/promise/loop.h +44 -14
- data/src/core/lib/promise/map.h +4 -6
- data/src/core/lib/promise/pipe.h +608 -0
- data/src/core/lib/promise/poll.h +132 -8
- data/src/core/lib/promise/promise.h +95 -0
- data/src/core/lib/promise/race.h +6 -10
- data/src/core/lib/promise/seq.h +45 -9
- data/src/core/lib/promise/sleep.cc +90 -0
- data/src/core/lib/promise/sleep.h +84 -0
- data/src/core/lib/promise/trace.cc +20 -0
- data/src/core/lib/promise/trace.h +24 -0
- data/src/core/lib/promise/try_join.h +82 -0
- data/src/core/lib/promise/try_seq.h +175 -0
- data/src/core/lib/resolver/resolver.cc +37 -0
- data/src/core/lib/resolver/resolver.h +138 -0
- data/src/core/lib/resolver/resolver_factory.h +77 -0
- data/src/core/lib/resolver/resolver_registry.cc +164 -0
- data/src/core/lib/resolver/resolver_registry.h +123 -0
- data/src/core/lib/resolver/server_address.cc +182 -0
- data/src/core/lib/resolver/server_address.h +145 -0
- data/src/core/lib/resource_quota/api.cc +25 -29
- data/src/core/lib/resource_quota/api.h +14 -6
- data/src/core/lib/resource_quota/arena.cc +165 -0
- data/src/core/lib/resource_quota/arena.h +314 -0
- data/src/core/lib/resource_quota/memory_quota.cc +418 -173
- data/src/core/lib/resource_quota/memory_quota.h +287 -116
- data/src/core/lib/resource_quota/periodic_update.cc +78 -0
- data/src/core/lib/resource_quota/periodic_update.h +71 -0
- data/src/core/lib/resource_quota/resource_quota.h +20 -4
- data/src/core/lib/resource_quota/thread_quota.cc +2 -0
- data/src/core/lib/resource_quota/thread_quota.h +7 -3
- data/src/core/lib/resource_quota/trace.h +3 -3
- data/src/core/lib/security/authorization/authorization_engine.h +3 -3
- data/src/core/lib/security/authorization/authorization_policy_provider.h +17 -3
- data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +3 -0
- data/src/core/lib/security/authorization/evaluate_args.cc +42 -28
- data/src/core/lib/security/authorization/evaluate_args.h +10 -7
- data/src/core/lib/security/authorization/grpc_authorization_engine.cc +64 -0
- data/src/core/lib/security/authorization/grpc_authorization_engine.h +69 -0
- data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +122 -0
- data/src/core/lib/security/authorization/grpc_server_authz_filter.h +61 -0
- data/src/core/lib/security/authorization/matchers.cc +241 -0
- data/src/core/lib/security/authorization/matchers.h +218 -0
- data/src/core/lib/security/authorization/rbac_policy.cc +446 -0
- data/src/core/lib/security/authorization/rbac_policy.h +178 -0
- data/src/core/lib/security/certificate_provider/certificate_provider_factory.h +66 -0
- data/src/core/lib/security/certificate_provider/certificate_provider_registry.cc +60 -0
- data/src/core/lib/security/certificate_provider/certificate_provider_registry.h +70 -0
- data/src/core/lib/security/context/security_context.cc +31 -27
- data/src/core/lib/security/context/security_context.h +65 -36
- data/src/core/lib/security/credentials/alts/alts_credentials.cc +35 -27
- data/src/core/lib/security/credentials/alts/alts_credentials.h +71 -57
- data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +19 -19
- data/src/core/lib/security/credentials/alts/check_gcp_environment.h +43 -43
- 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 +20 -22
- 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 +38 -39
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc +19 -22
- data/src/core/lib/security/credentials/call_creds_util.cc +97 -0
- data/src/core/lib/security/credentials/call_creds_util.h +43 -0
- data/src/core/lib/security/credentials/channel_creds_registry.h +103 -0
- data/src/core/lib/security/credentials/channel_creds_registry_init.cc +80 -0
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +52 -111
- data/src/core/lib/security/credentials/composite/composite_credentials.h +65 -40
- data/src/core/lib/security/credentials/credentials.cc +25 -29
- data/src/core/lib/security/credentials/credentials.h +141 -133
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +248 -104
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +22 -3
- data/src/core/lib/security/credentials/external/aws_request_signer.cc +14 -3
- data/src/core/lib/security/credentials/external/aws_request_signer.h +3 -3
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +137 -101
- data/src/core/lib/security/credentials/external/external_account_credentials.h +19 -12
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +29 -27
- data/src/core/lib/security/credentials/external/file_external_account_credentials.h +9 -3
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +77 -44
- data/src/core/lib/security/credentials/external/url_external_account_credentials.h +14 -3
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +62 -62
- data/src/core/lib/security/credentials/fake/fake_credentials.h +71 -63
- data/src/core/lib/security/credentials/google_default/credentials_generic.cc +23 -25
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +163 -124
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +41 -29
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +50 -47
- data/src/core/lib/security/credentials/iam/iam_credentials.h +46 -30
- data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +35 -26
- data/src/core/lib/security/credentials/insecure/insecure_credentials.h +61 -0
- data/src/core/lib/security/credentials/jwt/json_token.cc +44 -35
- data/src/core/lib/security/credentials/jwt/json_token.h +36 -36
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +62 -71
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +51 -33
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +166 -129
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +51 -49
- data/src/core/lib/security/credentials/local/local_credentials.cc +36 -30
- data/src/core/lib/security/credentials/local/local_credentials.h +42 -26
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +229 -234
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +103 -55
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +122 -174
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +101 -48
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +49 -54
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +49 -26
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +22 -30
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +16 -17
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +65 -48
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +69 -9
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +44 -4
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +75 -13
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +47 -23
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +70 -83
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +55 -50
- data/src/core/lib/security/credentials/tls/tls_credentials.h +34 -25
- data/src/core/lib/security/credentials/tls/tls_utils.cc +5 -1
- data/src/core/lib/security/credentials/tls/tls_utils.h +4 -4
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +77 -81
- data/src/core/lib/security/credentials/xds/xds_credentials.h +56 -11
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +68 -68
- data/src/core/lib/security/security_connector/alts/alts_security_connector.h +50 -48
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +79 -91
- data/src/core/lib/security/security_connector/fake/fake_security_connector.h +26 -29
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +21 -22
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +30 -24
- data/src/core/lib/security/security_connector/load_system_roots.h +20 -20
- data/src/core/lib/security/security_connector/load_system_roots_fallback.cc +22 -20
- data/src/core/lib/security/security_connector/load_system_roots_supported.cc +175 -0
- data/src/core/lib/security/security_connector/load_system_roots_supported.h +45 -0
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +74 -65
- data/src/core/lib/security/security_connector/local/local_security_connector.h +49 -46
- data/src/core/lib/security/security_connector/security_connector.cc +39 -49
- data/src/core/lib/security/security_connector/security_connector.h +82 -65
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +65 -59
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +44 -43
- data/src/core/lib/security/security_connector/ssl_utils.cc +76 -70
- data/src/core/lib/security/security_connector/ssl_utils.h +57 -58
- data/src/core/lib/security/security_connector/ssl_utils_config.cc +22 -22
- data/src/core/lib/security/security_connector/ssl_utils_config.h +21 -22
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +83 -71
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +54 -34
- data/src/core/lib/security/transport/auth_filters.h +89 -27
- data/src/core/lib/security/transport/client_auth_filter.cc +142 -388
- data/src/core/lib/security/transport/secure_endpoint.cc +305 -181
- data/src/core/lib/security/transport/secure_endpoint.h +29 -28
- data/src/core/lib/security/transport/security_handshaker.cc +147 -107
- data/src/core/lib/security/transport/security_handshaker.h +28 -23
- data/src/core/lib/security/transport/server_auth_filter.cc +179 -282
- data/src/core/lib/security/transport/tsi_error.cc +23 -20
- data/src/core/lib/security/transport/tsi_error.h +20 -20
- data/src/core/lib/security/util/json_util.cc +24 -24
- data/src/core/lib/security/util/json_util.h +21 -23
- data/src/core/lib/service_config/service_config.h +89 -0
- data/src/core/lib/service_config/service_config_call_data.h +82 -0
- data/src/core/lib/service_config/service_config_impl.cc +191 -0
- data/src/core/lib/service_config/service_config_impl.h +125 -0
- data/src/core/lib/service_config/service_config_parser.cc +81 -0
- data/src/core/lib/service_config/service_config_parser.h +105 -0
- data/src/core/lib/slice/b64.cc +26 -26
- data/src/core/lib/slice/b64.h +34 -32
- data/src/core/lib/slice/percent_encoding.cc +24 -30
- data/src/core/lib/slice/percent_encoding.h +28 -34
- data/src/core/lib/slice/slice.cc +128 -218
- data/src/core/lib/slice/slice.h +126 -39
- data/src/core/lib/slice/slice_buffer.cc +136 -76
- data/src/core/lib/slice/slice_buffer.h +168 -0
- data/src/core/lib/slice/slice_internal.h +43 -69
- data/src/core/lib/slice/slice_refcount.cc +4 -1
- data/src/core/lib/slice/slice_refcount.h +51 -96
- data/src/core/lib/slice/slice_string_helpers.cc +17 -33
- data/src/core/lib/slice/slice_string_helpers.h +23 -30
- data/src/core/lib/surface/api_trace.cc +17 -17
- data/src/core/lib/surface/api_trace.h +25 -25
- data/src/core/lib/surface/builtins.cc +11 -6
- data/src/core/lib/surface/builtins.h +3 -3
- data/src/core/lib/surface/byte_buffer.cc +26 -21
- data/src/core/lib/surface/byte_buffer_reader.cc +24 -24
- data/src/core/lib/surface/call.cc +3070 -1436
- data/src/core/lib/surface/call.h +140 -61
- data/src/core/lib/surface/call_details.cc +22 -23
- data/src/core/lib/surface/call_log_batch.cc +25 -18
- data/src/core/lib/surface/call_test_only.h +34 -31
- data/src/core/lib/surface/call_trace.cc +123 -0
- data/src/core/lib/surface/call_trace.h +30 -0
- data/src/core/lib/surface/channel.cc +249 -322
- data/src/core/lib/surface/channel.h +140 -94
- data/src/core/lib/surface/channel_init.cc +19 -20
- data/src/core/lib/surface/channel_init.h +25 -27
- data/src/core/lib/surface/channel_ping.cc +26 -20
- data/src/core/lib/surface/channel_stack_type.cc +21 -19
- data/src/core/lib/surface/channel_stack_type.h +22 -22
- data/src/core/lib/surface/completion_queue.cc +210 -231
- data/src/core/lib/surface/completion_queue.h +42 -40
- data/src/core/lib/surface/completion_queue_factory.cc +34 -28
- data/src/core/lib/surface/completion_queue_factory.h +21 -23
- data/src/core/lib/surface/event_string.cc +19 -24
- data/src/core/lib/surface/event_string.h +21 -21
- data/src/core/lib/surface/init.cc +106 -94
- data/src/core/lib/surface/init.h +20 -30
- data/src/core/lib/surface/init_internally.cc +25 -0
- data/src/core/lib/surface/init_internally.h +37 -0
- data/src/core/lib/surface/lame_client.cc +87 -130
- data/src/core/lib/surface/lame_client.h +62 -24
- data/src/core/lib/surface/metadata_array.cc +18 -17
- data/src/core/lib/surface/server.cc +421 -228
- data/src/core/lib/surface/server.h +62 -31
- data/src/core/lib/surface/validate_metadata.cc +34 -48
- data/src/core/lib/surface/validate_metadata.h +24 -21
- data/src/core/lib/surface/version.cc +21 -21
- data/src/core/lib/transport/bdp_estimator.cc +28 -29
- data/src/core/lib/transport/bdp_estimator.h +24 -26
- data/src/core/lib/transport/connectivity_state.cc +24 -23
- data/src/core/lib/transport/connectivity_state.h +24 -25
- data/src/core/lib/transport/error_utils.cc +62 -82
- data/src/core/lib/transport/error_utils.h +31 -26
- data/src/core/lib/transport/handshaker.cc +239 -0
- data/src/core/lib/transport/handshaker.h +172 -0
- data/src/core/lib/transport/handshaker_factory.h +74 -0
- data/src/core/lib/transport/handshaker_registry.cc +61 -0
- data/src/core/lib/transport/handshaker_registry.h +69 -0
- data/src/core/lib/transport/http2_errors.h +22 -22
- data/src/core/lib/transport/http_connect_handshaker.cc +400 -0
- data/src/core/lib/transport/http_connect_handshaker.h +42 -0
- data/src/core/lib/transport/metadata_batch.cc +278 -72
- data/src/core/lib/transport/metadata_batch.h +1052 -825
- data/src/core/lib/transport/parsed_metadata.cc +4 -4
- data/src/core/lib/transport/parsed_metadata.h +128 -100
- data/src/core/lib/transport/pid_controller.cc +20 -20
- data/src/core/lib/transport/pid_controller.h +27 -27
- data/src/core/lib/transport/status_conversion.cc +25 -25
- data/src/core/lib/transport/status_conversion.h +25 -25
- data/src/core/lib/transport/tcp_connect_handshaker.cc +245 -0
- data/src/core/lib/transport/tcp_connect_handshaker.h +39 -0
- data/src/core/lib/transport/timeout_encoding.cc +225 -92
- data/src/core/lib/transport/timeout_encoding.h +65 -31
- data/src/core/lib/transport/transport.cc +99 -57
- data/src/core/lib/transport/transport.h +282 -152
- data/src/core/lib/transport/transport_fwd.h +20 -0
- data/src/core/lib/transport/transport_impl.h +59 -35
- data/src/core/lib/transport/transport_op_string.cc +44 -85
- data/src/core/lib/uri/uri_parser.cc +239 -57
- data/src/core/lib/uri/uri_parser.h +40 -28
- data/src/core/plugin_registry/grpc_plugin_registry.cc +77 -156
- data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +66 -0
- 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 +336 -336
- data/src/core/tsi/alts/frame_protector/alts_counter.cc +23 -23
- data/src/core/tsi/alts/frame_protector/alts_counter.h +68 -68
- data/src/core/tsi/alts/frame_protector/alts_crypter.cc +19 -19
- data/src/core/tsi/alts/frame_protector/alts_crypter.h +209 -209
- data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +72 -71
- data/src/core/tsi/alts/frame_protector/alts_frame_protector.h +40 -40
- 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 +82 -83
- 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 +169 -169
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +142 -117
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +104 -104
- data/src/core/tsi/alts/handshaker/alts_shared_resource.cc +27 -18
- data/src/core/tsi/alts/handshaker/alts_shared_resource.h +43 -44
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +72 -56
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +60 -60
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +24 -24
- data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +23 -22
- data/src/core/tsi/alts/handshaker/alts_tsi_utils.h +39 -39
- data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +21 -21
- data/src/core/tsi/alts/handshaker/transport_security_common_api.h +107 -106
- 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 +40 -41
- 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 +35 -36
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol.h +67 -68
- 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 +55 -56
- 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 +141 -142
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +67 -58
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.h +43 -44
- data/src/core/tsi/fake_transport_security.cc +146 -110
- data/src/core/tsi/fake_transport_security.h +36 -30
- data/src/core/tsi/local_transport_security.cc +46 -49
- data/src/core/tsi/local_transport_security.h +34 -37
- data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +146 -0
- data/src/core/tsi/ssl/key_logging/ssl_key_logging.h +81 -0
- data/src/core/tsi/ssl/session_cache/ssl_session.h +24 -24
- data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +21 -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 +34 -27
- data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +27 -20
- data/src/core/tsi/ssl_transport_security.cc +451 -394
- data/src/core/tsi/ssl_transport_security.h +235 -194
- 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 +27 -27
- data/src/core/tsi/transport_security.cc +44 -32
- data/src/core/tsi/transport_security.h +49 -48
- data/src/core/tsi/transport_security_grpc.cc +23 -22
- data/src/core/tsi/transport_security_grpc.h +44 -41
- data/src/core/tsi/transport_security_interface.h +346 -332
- data/src/ruby/ext/grpc/ext-export-truffleruby-with-ruby-abi-version.clang +2 -0
- data/src/ruby/ext/grpc/ext-export-truffleruby-with-ruby-abi-version.gcc +7 -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.gcc +1 -1
- data/src/ruby/ext/grpc/extconf.rb +107 -22
- data/src/ruby/ext/grpc/rb_call.c +1 -0
- data/src/ruby/ext/grpc/rb_channel.c +6 -2
- 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 +58 -62
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +90 -96
- data/src/ruby/ext/grpc/rb_loader.c +6 -2
- data/src/ruby/ext/grpc/rb_server.c +7 -4
- data/src/ruby/lib/grpc/errors.rb +1 -1
- data/src/ruby/lib/grpc/generic/active_call.rb +7 -1
- data/src/ruby/lib/grpc/generic/bidi_call.rb +2 -0
- data/src/ruby/lib/grpc/grpc.rb +1 -1
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/generate_proto_ruby.sh +1 -6
- data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +4 -0
- data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +2 -1
- data/src/ruby/pb/test/client.rb +769 -0
- data/src/ruby/pb/test/server.rb +252 -0
- data/src/ruby/pb/test/xds_client.rb +415 -0
- data/src/ruby/spec/channel_spec.rb +5 -43
- data/src/ruby/spec/client_server_spec.rb +20 -8
- data/src/ruby/spec/generic/active_call_spec.rb +12 -3
- data/src/ruby/spec/generic/client_stub_spec.rb +23 -23
- data/src/ruby/spec/generic/server_interceptors_spec.rb +1 -1
- data/src/ruby/spec/user_agent_spec.rb +1 -1
- data/third_party/abseil-cpp/absl/algorithm/container.h +57 -58
- data/third_party/abseil-cpp/absl/base/attributes.h +88 -41
- data/third_party/abseil-cpp/absl/base/casts.h +61 -68
- data/third_party/abseil-cpp/absl/base/config.h +221 -39
- data/third_party/abseil-cpp/absl/base/internal/cycleclock.cc +12 -42
- data/third_party/abseil-cpp/absl/base/internal/cycleclock.h +52 -2
- data/third_party/abseil-cpp/absl/base/internal/cycleclock_config.h +55 -0
- data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +5 -4
- data/third_party/abseil-cpp/absl/base/internal/endian.h +17 -62
- data/third_party/abseil-cpp/absl/base/internal/fast_type_id.h +50 -0
- data/third_party/abseil-cpp/absl/base/internal/inline_variable.h +3 -3
- data/third_party/abseil-cpp/absl/base/internal/invoke.h +54 -0
- data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +2 -2
- data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.h +1 -1
- data/third_party/abseil-cpp/absl/base/internal/prefetch.h +138 -0
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +39 -28
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +36 -36
- data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +6 -3
- data/third_party/abseil-cpp/absl/base/internal/spinlock.h +10 -6
- data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +2 -5
- data/third_party/abseil-cpp/absl/base/internal/spinlock_win32.inc +4 -1
- data/third_party/abseil-cpp/absl/base/internal/strerror.cc +88 -0
- data/third_party/abseil-cpp/absl/base/internal/strerror.h +39 -0
- data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +14 -11
- data/third_party/abseil-cpp/absl/base/internal/thread_annotations.h +9 -0
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +2 -1
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +4 -0
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +6 -7
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +12 -40
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock_config.h +62 -0
- data/third_party/abseil-cpp/absl/base/log_severity.cc +28 -0
- data/third_party/abseil-cpp/absl/base/log_severity.h +51 -0
- data/third_party/abseil-cpp/absl/base/macros.h +4 -21
- data/third_party/abseil-cpp/absl/base/optimization.h +76 -16
- data/third_party/abseil-cpp/absl/base/options.h +1 -7
- data/third_party/abseil-cpp/absl/base/policy_checks.h +15 -13
- data/third_party/abseil-cpp/absl/base/thread_annotations.h +2 -2
- 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/abseil-cpp/absl/container/fixed_array.h +9 -5
- data/third_party/abseil-cpp/absl/container/flat_hash_map.h +11 -4
- data/third_party/abseil-cpp/absl/container/flat_hash_set.h +503 -0
- data/third_party/abseil-cpp/absl/container/inlined_vector.h +84 -25
- data/third_party/abseil-cpp/absl/container/internal/common.h +9 -8
- data/third_party/abseil-cpp/absl/container/internal/common_policy_traits.h +132 -0
- data/third_party/abseil-cpp/absl/container/internal/container_memory.h +23 -29
- data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +4 -55
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +116 -23
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +40 -54
- data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +165 -66
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +159 -4
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +1121 -470
- data/third_party/abseil-cpp/absl/crc/crc32c.cc +99 -0
- data/third_party/abseil-cpp/absl/crc/crc32c.h +183 -0
- data/third_party/abseil-cpp/absl/crc/internal/cpu_detect.cc +256 -0
- data/third_party/abseil-cpp/absl/crc/internal/cpu_detect.h +57 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc.cc +468 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc.h +91 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc32_x86_arm_combined_simd.h +269 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc32c.h +39 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc32c_inline.h +72 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc_cord_state.cc +130 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc_cord_state.h +159 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc_internal.h +179 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc_memcpy.h +119 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc_memcpy_fallback.cc +75 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc_memcpy_x86_64.cc +434 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc_non_temporal_memcpy.cc +93 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc +725 -0
- data/third_party/abseil-cpp/absl/crc/internal/non_temporal_arm_intrinsics.h +79 -0
- data/third_party/abseil-cpp/absl/crc/internal/non_temporal_memcpy.h +180 -0
- data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc +45 -88
- data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +67 -38
- data/third_party/abseil-cpp/absl/debugging/internal/demangle.h +1 -1
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +16 -13
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +3 -2
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +19 -12
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +8 -3
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +2 -1
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +1 -1
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +8 -3
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +59 -102
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_win32-inl.inc +5 -4
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +41 -11
- data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +18 -4
- data/third_party/abseil-cpp/absl/debugging/symbolize.cc +6 -1
- data/third_party/abseil-cpp/absl/debugging/symbolize_darwin.inc +3 -2
- data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +164 -101
- data/third_party/abseil-cpp/absl/debugging/symbolize_win32.inc +7 -6
- data/third_party/abseil-cpp/absl/functional/any_invocable.h +316 -0
- data/third_party/abseil-cpp/absl/functional/bind_front.h +10 -1
- data/third_party/abseil-cpp/absl/functional/function_ref.h +2 -1
- data/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +878 -0
- data/third_party/abseil-cpp/absl/hash/hash.h +82 -8
- data/third_party/abseil-cpp/absl/hash/internal/city.cc +10 -10
- data/third_party/abseil-cpp/absl/hash/internal/hash.h +235 -26
- data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.cc +3 -14
- data/third_party/abseil-cpp/absl/memory/memory.h +26 -447
- data/third_party/abseil-cpp/absl/meta/type_traits.h +104 -12
- data/third_party/abseil-cpp/absl/numeric/bits.h +1 -1
- data/third_party/abseil-cpp/absl/numeric/int128.cc +14 -10
- data/third_party/abseil-cpp/absl/numeric/int128.h +2 -2
- data/third_party/abseil-cpp/absl/profiling/internal/sample_recorder.h +33 -10
- data/third_party/abseil-cpp/absl/random/bernoulli_distribution.h +200 -0
- data/third_party/abseil-cpp/absl/random/beta_distribution.h +427 -0
- data/third_party/abseil-cpp/absl/random/discrete_distribution.cc +98 -0
- data/third_party/abseil-cpp/absl/random/discrete_distribution.h +247 -0
- data/third_party/abseil-cpp/absl/random/distributions.h +452 -0
- data/third_party/abseil-cpp/absl/random/exponential_distribution.h +165 -0
- data/third_party/abseil-cpp/absl/random/gaussian_distribution.cc +104 -0
- data/third_party/abseil-cpp/absl/random/gaussian_distribution.h +275 -0
- data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +95 -0
- data/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +270 -0
- data/third_party/abseil-cpp/absl/random/internal/fastmath.h +57 -0
- data/third_party/abseil-cpp/absl/random/internal/generate_real.h +144 -0
- data/third_party/abseil-cpp/absl/random/internal/iostream_state_saver.h +245 -0
- data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +161 -0
- data/third_party/abseil-cpp/absl/random/internal/pcg_engine.h +287 -0
- data/third_party/abseil-cpp/absl/random/internal/platform.h +171 -0
- data/third_party/abseil-cpp/absl/random/internal/pool_urbg.cc +253 -0
- data/third_party/abseil-cpp/absl/random/internal/pool_urbg.h +131 -0
- data/third_party/abseil-cpp/absl/random/internal/randen.cc +91 -0
- data/third_party/abseil-cpp/absl/random/internal/randen.h +96 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +225 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_detect.h +33 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_engine.h +264 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_hwaes.cc +526 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_hwaes.h +50 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_round_keys.cc +462 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_slow.cc +471 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_slow.h +40 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_traits.h +88 -0
- data/third_party/abseil-cpp/absl/random/internal/salted_seed_seq.h +165 -0
- data/third_party/abseil-cpp/absl/random/internal/seed_material.cc +267 -0
- data/third_party/abseil-cpp/absl/random/internal/seed_material.h +104 -0
- data/third_party/abseil-cpp/absl/random/internal/traits.h +149 -0
- data/third_party/abseil-cpp/absl/random/internal/uniform_helper.h +244 -0
- data/third_party/abseil-cpp/absl/random/internal/wide_multiply.h +96 -0
- data/third_party/abseil-cpp/absl/random/log_uniform_int_distribution.h +256 -0
- data/third_party/abseil-cpp/absl/random/poisson_distribution.h +261 -0
- data/third_party/abseil-cpp/absl/random/random.h +189 -0
- data/third_party/abseil-cpp/absl/random/seed_gen_exception.cc +46 -0
- data/third_party/abseil-cpp/absl/random/seed_gen_exception.h +55 -0
- data/third_party/abseil-cpp/absl/random/seed_sequences.cc +29 -0
- data/third_party/abseil-cpp/absl/random/seed_sequences.h +111 -0
- data/third_party/abseil-cpp/absl/random/uniform_int_distribution.h +275 -0
- data/third_party/abseil-cpp/absl/random/uniform_real_distribution.h +202 -0
- data/third_party/abseil-cpp/absl/random/zipf_distribution.h +272 -0
- data/third_party/abseil-cpp/absl/status/internal/status_internal.h +18 -0
- data/third_party/abseil-cpp/absl/status/status.cc +193 -14
- data/third_party/abseil-cpp/absl/status/status.h +24 -14
- data/third_party/abseil-cpp/absl/status/statusor.h +9 -3
- data/third_party/abseil-cpp/absl/strings/ascii.cc +5 -5
- data/third_party/abseil-cpp/absl/strings/ascii.h +4 -4
- data/third_party/abseil-cpp/absl/strings/charconv.cc +534 -96
- data/third_party/abseil-cpp/absl/strings/cord.cc +257 -924
- data/third_party/abseil-cpp/absl/strings/cord.h +268 -156
- data/third_party/abseil-cpp/absl/strings/cord_analysis.cc +188 -0
- data/third_party/abseil-cpp/absl/strings/cord_analysis.h +44 -0
- data/third_party/abseil-cpp/absl/strings/cord_buffer.cc +30 -0
- data/third_party/abseil-cpp/absl/strings/cord_buffer.h +575 -0
- data/third_party/abseil-cpp/absl/strings/escaping.cc +73 -62
- data/third_party/abseil-cpp/absl/strings/escaping.h +24 -19
- data/third_party/abseil-cpp/absl/strings/internal/char_map.h +14 -12
- data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.cc +4 -4
- data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +2 -2
- data/third_party/abseil-cpp/absl/strings/internal/cord_data_edge.h +63 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +20 -32
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +441 -150
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +157 -53
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.h +70 -73
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.cc +8 -6
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.h +4 -2
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.cc +3 -2
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.h +5 -4
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.cc +7 -74
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.cc +56 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.h +103 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +58 -17
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +13 -11
- data/third_party/abseil-cpp/absl/strings/internal/cordz_functions.h +7 -15
- data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.h +3 -3
- data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +19 -43
- data/third_party/abseil-cpp/absl/strings/internal/cordz_info.h +7 -7
- data/third_party/abseil-cpp/absl/strings/internal/cordz_statistics.h +5 -4
- data/third_party/abseil-cpp/absl/strings/internal/cordz_update_tracker.h +4 -2
- data/third_party/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance.cc +93 -0
- data/third_party/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance.h +34 -0
- data/third_party/abseil-cpp/absl/strings/internal/escaping.cc +18 -15
- data/third_party/abseil-cpp/absl/strings/internal/escaping.h +7 -9
- data/third_party/abseil-cpp/absl/strings/internal/has_absl_stringify.h +55 -0
- data/third_party/abseil-cpp/absl/strings/internal/memutil.cc +9 -6
- data/third_party/abseil-cpp/absl/strings/internal/ostringstream.cc +14 -7
- data/third_party/abseil-cpp/absl/strings/internal/ostringstream.h +35 -10
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +113 -46
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +127 -30
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +3 -2
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +42 -10
- data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +56 -289
- data/third_party/abseil-cpp/absl/strings/internal/str_format/constexpr_parser.h +351 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +6 -6
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +9 -4
- data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +215 -181
- data/third_party/abseil-cpp/absl/strings/internal/str_format/output.h +2 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +10 -209
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +14 -103
- data/third_party/abseil-cpp/absl/strings/internal/str_join_internal.h +9 -6
- data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +2 -1
- data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +10 -2
- data/third_party/abseil-cpp/absl/strings/internal/stringify_sink.cc +28 -0
- data/third_party/abseil-cpp/absl/strings/internal/stringify_sink.h +57 -0
- data/third_party/abseil-cpp/absl/strings/internal/utf8.cc +9 -9
- data/third_party/abseil-cpp/absl/strings/numbers.cc +42 -39
- data/third_party/abseil-cpp/absl/strings/numbers.h +26 -23
- data/third_party/abseil-cpp/absl/strings/str_cat.cc +9 -6
- data/third_party/abseil-cpp/absl/strings/str_cat.h +70 -16
- data/third_party/abseil-cpp/absl/strings/str_format.h +71 -9
- data/third_party/abseil-cpp/absl/strings/str_join.h +9 -15
- data/third_party/abseil-cpp/absl/strings/str_split.h +1 -2
- data/third_party/abseil-cpp/absl/strings/string_view.cc +8 -19
- data/third_party/abseil-cpp/absl/strings/string_view.h +6 -12
- data/third_party/abseil-cpp/absl/strings/strip.h +8 -6
- data/third_party/abseil-cpp/absl/strings/substitute.cc +8 -6
- data/third_party/abseil-cpp/absl/strings/substitute.h +55 -21
- data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +9 -6
- data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.h +0 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/futex.h +20 -17
- data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +37 -31
- data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +22 -8
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +0 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +1 -6
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +0 -25
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +10 -4
- data/third_party/abseil-cpp/absl/synchronization/mutex.cc +172 -88
- data/third_party/abseil-cpp/absl/synchronization/mutex.h +102 -55
- data/third_party/abseil-cpp/absl/synchronization/notification.cc +0 -1
- data/third_party/abseil-cpp/absl/synchronization/notification.h +3 -3
- data/third_party/abseil-cpp/absl/time/civil_time.cc +26 -0
- data/third_party/abseil-cpp/absl/time/civil_time.h +25 -0
- data/third_party/abseil-cpp/absl/time/clock.cc +17 -11
- data/third_party/abseil-cpp/absl/time/duration.cc +12 -11
- data/third_party/abseil-cpp/absl/time/format.cc +2 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +11 -7
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +1 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +26 -5
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +7 -6
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +36 -35
- data/third_party/abseil-cpp/absl/time/time.cc +2 -2
- data/third_party/abseil-cpp/absl/time/time.h +268 -169
- data/third_party/abseil-cpp/absl/types/internal/optional.h +8 -0
- data/third_party/abseil-cpp/absl/types/internal/span.h +30 -19
- data/third_party/abseil-cpp/absl/types/internal/variant.h +28 -40
- data/third_party/abseil-cpp/absl/types/optional.h +17 -14
- data/third_party/abseil-cpp/absl/types/span.h +31 -8
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +13 -0
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +21 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +12 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +1 -2
- data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/mem.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7.c +29 -0
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_genn.c +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/base64.h +8 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +13 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +10 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +9 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +6 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +23 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +1 -2
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +4 -0
- data/third_party/cares/cares/include/ares.h +742 -0
- data/third_party/cares/cares/include/ares_dns.h +112 -0
- data/third_party/cares/cares/include/ares_version.h +24 -0
- data/third_party/cares/cares/src/lib/ares__close_sockets.c +61 -0
- data/third_party/cares/cares/src/lib/ares__get_hostent.c +260 -0
- data/third_party/cares/cares/src/lib/ares__parse_into_addrinfo.c +260 -0
- data/third_party/cares/cares/src/lib/ares__readaddrinfo.c +264 -0
- data/third_party/cares/cares/src/lib/ares__sortaddrinfo.c +499 -0
- data/third_party/cares/cares/src/lib/ares_android.c +444 -0
- data/third_party/cares/cares/src/lib/ares_android.h +27 -0
- data/third_party/cares/cares/src/lib/ares_create_query.c +197 -0
- data/third_party/cares/cares/src/lib/ares_data.c +240 -0
- data/third_party/cares/cares/src/lib/ares_data.h +74 -0
- data/third_party/cares/cares/src/lib/ares_expand_name.c +300 -0
- data/third_party/cares/cares/src/lib/ares_expand_string.c +67 -0
- data/third_party/cares/cares/src/lib/ares_free_hostent.c +43 -0
- data/third_party/cares/cares/src/lib/ares_freeaddrinfo.c +59 -0
- data/third_party/cares/cares/src/lib/ares_getaddrinfo.c +772 -0
- data/third_party/cares/cares/src/lib/ares_getenv.c +28 -0
- data/third_party/cares/cares/src/lib/ares_gethostbyaddr.c +287 -0
- data/third_party/cares/cares/src/lib/ares_gethostbyname.c +534 -0
- data/third_party/cares/cares/src/lib/ares_getnameinfo.c +447 -0
- data/third_party/cares/cares/src/lib/ares_init.c +2654 -0
- data/third_party/cares/cares/src/lib/ares_ipv6.h +85 -0
- data/third_party/cares/cares/src/lib/ares_library_init.c +200 -0
- data/third_party/cares/cares/src/lib/ares_library_init.h +43 -0
- data/third_party/cares/cares/src/lib/ares_nameser.h +482 -0
- data/third_party/cares/cares/src/lib/ares_parse_a_reply.c +209 -0
- data/third_party/cares/cares/src/lib/ares_parse_aaaa_reply.c +212 -0
- data/third_party/cares/cares/src/lib/ares_parse_caa_reply.c +199 -0
- data/third_party/cares/cares/src/lib/ares_parse_mx_reply.c +164 -0
- data/third_party/cares/cares/src/lib/ares_parse_naptr_reply.c +183 -0
- data/third_party/cares/cares/src/lib/ares_parse_ns_reply.c +177 -0
- data/third_party/cares/cares/src/lib/ares_parse_ptr_reply.c +228 -0
- data/third_party/cares/cares/src/lib/ares_parse_soa_reply.c +179 -0
- data/third_party/cares/cares/src/lib/ares_parse_srv_reply.c +168 -0
- data/third_party/cares/cares/src/lib/ares_parse_txt_reply.c +214 -0
- data/third_party/cares/cares/src/lib/ares_private.h +423 -0
- data/third_party/cares/cares/src/lib/ares_process.c +1548 -0
- data/third_party/cares/cares/src/lib/ares_query.c +180 -0
- data/third_party/cares/cares/src/lib/ares_search.c +321 -0
- data/third_party/cares/cares/src/lib/ares_send.c +131 -0
- data/third_party/cares/cares/src/lib/ares_setup.h +220 -0
- data/third_party/cares/cares/src/lib/ares_strsplit.c +178 -0
- data/third_party/cares/cares/src/lib/ares_writev.h +36 -0
- data/third_party/cares/cares/src/lib/config-dos.h +115 -0
- data/third_party/cares/cares/src/lib/inet_net_pton.c +444 -0
- data/third_party/cares/cares/src/lib/inet_ntop.c +201 -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/upb/third_party/utf8_range/naive.c +92 -0
- data/third_party/upb/third_party/utf8_range/range2-neon.c +157 -0
- data/third_party/upb/third_party/utf8_range/range2-sse.c +170 -0
- data/third_party/upb/third_party/utf8_range/utf8_range.h +9 -0
- data/third_party/upb/upb/arena.c +277 -0
- data/third_party/upb/upb/arena.h +225 -0
- data/third_party/upb/upb/array.c +114 -0
- data/third_party/upb/upb/array.h +83 -0
- data/third_party/upb/upb/collections.h +36 -0
- data/third_party/upb/upb/decode.c +685 -366
- data/third_party/upb/upb/decode.h +44 -17
- data/third_party/upb/upb/decode_fast.c +304 -302
- data/third_party/upb/upb/decode_fast.h +18 -18
- data/third_party/upb/upb/def.c +1932 -1076
- data/third_party/upb/upb/def.h +336 -288
- data/third_party/upb/upb/def.hpp +134 -174
- data/third_party/upb/upb/encode.c +228 -186
- data/third_party/upb/upb/encode.h +24 -16
- data/third_party/upb/upb/extension_registry.c +93 -0
- data/third_party/upb/upb/extension_registry.h +84 -0
- data/third_party/upb/upb/internal/decode.h +211 -0
- data/third_party/upb/upb/internal/table.h +385 -0
- data/third_party/upb/upb/internal/upb.h +68 -0
- data/third_party/upb/upb/internal/vsnprintf_compat.h +52 -0
- data/third_party/upb/upb/json_decode.c +1512 -0
- data/third_party/upb/upb/json_decode.h +47 -0
- data/third_party/upb/upb/json_encode.c +780 -0
- data/third_party/upb/upb/json_encode.h +65 -0
- data/third_party/upb/upb/map.c +108 -0
- data/third_party/upb/upb/map.h +117 -0
- data/third_party/upb/upb/message_value.h +66 -0
- data/third_party/upb/upb/mini_table.c +1147 -0
- data/third_party/upb/upb/mini_table.h +189 -0
- data/third_party/upb/upb/mini_table.hpp +112 -0
- data/third_party/upb/upb/msg.c +125 -167
- data/third_party/upb/upb/msg.h +18 -55
- data/third_party/upb/upb/msg_internal.h +352 -284
- data/third_party/upb/upb/port_def.inc +10 -1
- data/third_party/upb/upb/port_undef.inc +2 -0
- data/third_party/upb/upb/reflection.c +150 -267
- data/third_party/upb/upb/reflection.h +36 -126
- data/third_party/upb/upb/reflection.hpp +6 -6
- data/third_party/upb/upb/status.c +86 -0
- data/third_party/upb/upb/status.h +66 -0
- data/third_party/upb/upb/table.c +233 -149
- data/third_party/upb/upb/table_internal.h +9 -324
- data/third_party/upb/upb/text_encode.c +115 -91
- data/third_party/upb/upb/text_encode.h +10 -10
- data/third_party/upb/upb/upb.c +34 -281
- data/third_party/upb/upb/upb.h +79 -262
- data/third_party/upb/upb/upb.hpp +31 -28
- data/third_party/xxhash/xxhash.h +607 -352
- data/third_party/zlib/compress.c +3 -3
- data/third_party/zlib/crc32.c +975 -292
- data/third_party/zlib/crc32.h +9441 -436
- data/third_party/zlib/deflate.c +183 -129
- data/third_party/zlib/deflate.h +12 -15
- data/third_party/zlib/gzguts.h +3 -2
- data/third_party/zlib/gzlib.c +6 -4
- data/third_party/zlib/gzread.c +8 -12
- data/third_party/zlib/gzwrite.c +26 -14
- data/third_party/zlib/infback.c +12 -8
- data/third_party/zlib/inffast.c +14 -14
- data/third_party/zlib/inflate.c +44 -10
- data/third_party/zlib/inflate.h +3 -2
- data/third_party/zlib/inftrees.c +3 -3
- data/third_party/zlib/inftrees.h +1 -1
- data/third_party/zlib/trees.c +85 -107
- data/third_party/zlib/uncompr.c +2 -2
- data/third_party/zlib/zconf.h +16 -3
- data/third_party/zlib/zlib.h +129 -106
- data/third_party/zlib/zutil.c +11 -9
- data/third_party/zlib/zutil.h +13 -9
- metadata +790 -298
- data/include/grpc/impl/codegen/gpr_slice.h +0 -71
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +0 -390
- data/src/core/ext/filters/client_channel/http_connect_handshaker.h +0 -42
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +0 -44
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +0 -83
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +0 -60
- data/src/core/ext/filters/client_channel/lb_policy.cc +0 -131
- data/src/core/ext/filters/client_channel/lb_policy.h +0 -441
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +0 -48
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +0 -185
- data/src/core/ext/filters/client_channel/lb_policy_registry.h +0 -65
- data/src/core/ext/filters/client_channel/proxy_mapper.h +0 -54
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +0 -89
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.h +0 -50
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_event_engine.cc +0 -31
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_event_engine.cc +0 -28
- data/src/core/ext/filters/client_channel/resolver.cc +0 -87
- data/src/core/ext/filters/client_channel/resolver.h +0 -136
- data/src/core/ext/filters/client_channel/resolver_factory.h +0 -75
- data/src/core/ext/filters/client_channel/resolver_registry.cc +0 -194
- data/src/core/ext/filters/client_channel/resolver_registry.h +0 -88
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +0 -189
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +0 -99
- data/src/core/ext/filters/client_channel/server_address.cc +0 -170
- data/src/core/ext/filters/client_channel/server_address.h +0 -144
- data/src/core/ext/filters/client_channel/subchannel_interface.h +0 -130
- data/src/core/ext/filters/client_idle/client_idle_filter.cc +0 -264
- data/src/core/ext/filters/client_idle/idle_filter_state.cc +0 -96
- data/src/core/ext/filters/client_idle/idle_filter_state.h +0 -66
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +0 -181
- data/src/core/ext/filters/fault_injection/service_config_parser.h +0 -85
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +0 -553
- data/src/core/ext/filters/http/message_compress/message_compress_filter.h +0 -53
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +0 -398
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.h +0 -31
- data/src/core/ext/filters/max_age/max_age_filter.cc +0 -560
- data/src/core/ext/filters/max_age/max_age_filter.h +0 -26
- data/src/core/ext/filters/server_config_selector/server_config_selector.cc +0 -67
- data/src/core/ext/service_config/service_config.cc +0 -227
- data/src/core/ext/service_config/service_config.h +0 -127
- data/src/core/ext/service_config/service_config_call_data.h +0 -72
- data/src/core/ext/service_config/service_config_parser.cc +0 -89
- data/src/core/ext/service_config/service_config_parser.h +0 -97
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +0 -122
- data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +0 -92
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +0 -192
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +0 -52
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +0 -79
- data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +0 -125
- data/src/core/ext/transport/chttp2/transport/chttp2_plugin.cc +0 -37
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_index.h +0 -107
- data/src/core/ext/transport/chttp2/transport/hpack_utils.cc +0 -46
- data/src/core/ext/transport/chttp2/transport/hpack_utils.h +0 -30
- data/src/core/ext/transport/chttp2/transport/popularity_count.h +0 -60
- data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.c +0 -38
- data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.h +0 -64
- data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.c +0 -38
- data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.h +0 -64
- data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.c +0 -38
- data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.h +0 -64
- data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.c +0 -38
- data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.h +0 -64
- data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.c +0 -38
- data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.h +0 -64
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/eval.upb.c +0 -102
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/eval.upb.h +0 -306
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/explain.upb.c +0 -56
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/explain.upb.h +0 -135
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/value.upb.c +0 -115
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/value.upb.h +0 -371
- data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.c +0 -67
- data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.h +0 -35
- data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.c +0 -68
- data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.h +0 -35
- data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.c +0 -67
- data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.h +0 -35
- data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.c +0 -75
- data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.h +0 -35
- data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.c +0 -69
- data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.h +0 -35
- data/src/core/ext/xds/certificate_provider_factory.h +0 -61
- data/src/core/ext/xds/certificate_provider_registry.cc +0 -103
- data/src/core/ext/xds/certificate_provider_registry.h +0 -57
- data/src/core/lib/channel/handshaker.cc +0 -222
- data/src/core/lib/channel/handshaker.h +0 -161
- data/src/core/lib/channel/handshaker_factory.h +0 -50
- data/src/core/lib/channel/handshaker_registry.cc +0 -50
- data/src/core/lib/channel/handshaker_registry.h +0 -71
- data/src/core/lib/compression/algorithm_metadata.h +0 -62
- data/src/core/lib/compression/compression_args.cc +0 -140
- data/src/core/lib/compression/compression_args.h +0 -58
- data/src/core/lib/compression/stream_compression.cc +0 -81
- data/src/core/lib/compression/stream_compression.h +0 -117
- data/src/core/lib/compression/stream_compression_gzip.cc +0 -231
- data/src/core/lib/compression/stream_compression_gzip.h +0 -28
- data/src/core/lib/compression/stream_compression_identity.cc +0 -91
- data/src/core/lib/compression/stream_compression_identity.h +0 -29
- data/src/core/lib/event_engine/event_engine_factory.cc +0 -49
- data/src/core/lib/event_engine/event_engine_factory.h +0 -33
- data/src/core/lib/event_engine/sockaddr.cc +0 -40
- data/src/core/lib/event_engine/sockaddr.h +0 -44
- data/src/core/lib/gpr/env.h +0 -40
- data/src/core/lib/gpr/env_linux.cc +0 -75
- data/src/core/lib/gpr/env_posix.cc +0 -46
- data/src/core/lib/gpr/env_windows.cc +0 -74
- 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/string_windows.h +0 -32
- data/src/core/lib/gpr/tls.h +0 -157
- data/src/core/lib/gprpp/arena.cc +0 -104
- data/src/core/lib/gprpp/arena.h +0 -131
- data/src/core/lib/iomgr/endpoint_pair_event_engine.cc +0 -32
- data/src/core/lib/iomgr/error_internal.h +0 -66
- data/src/core/lib/iomgr/ev_epollex_linux.cc +0 -1654
- data/src/core/lib/iomgr/ev_epollex_linux.h +0 -30
- data/src/core/lib/iomgr/event_engine/closure.cc +0 -77
- data/src/core/lib/iomgr/event_engine/closure.h +0 -42
- data/src/core/lib/iomgr/event_engine/endpoint.cc +0 -172
- data/src/core/lib/iomgr/event_engine/endpoint.h +0 -52
- data/src/core/lib/iomgr/event_engine/iomgr.cc +0 -84
- data/src/core/lib/iomgr/event_engine/pollset.cc +0 -88
- data/src/core/lib/iomgr/event_engine/pollset.h +0 -25
- data/src/core/lib/iomgr/event_engine/promise.h +0 -51
- data/src/core/lib/iomgr/event_engine/resolved_address_internal.cc +0 -41
- data/src/core/lib/iomgr/event_engine/resolved_address_internal.h +0 -35
- data/src/core/lib/iomgr/event_engine/resolver.cc +0 -115
- data/src/core/lib/iomgr/event_engine/tcp.cc +0 -295
- data/src/core/lib/iomgr/event_engine/timer.cc +0 -63
- data/src/core/lib/iomgr/executor/mpmcqueue.cc +0 -182
- data/src/core/lib/iomgr/executor/mpmcqueue.h +0 -171
- data/src/core/lib/iomgr/executor/threadpool.cc +0 -136
- data/src/core/lib/iomgr/executor/threadpool.h +0 -150
- data/src/core/lib/iomgr/iomgr_custom.cc +0 -79
- data/src/core/lib/iomgr/iomgr_custom.h +0 -49
- data/src/core/lib/iomgr/is_epollexclusive_available.cc +0 -119
- data/src/core/lib/iomgr/is_epollexclusive_available.h +0 -36
- data/src/core/lib/iomgr/pollset_custom.cc +0 -105
- data/src/core/lib/iomgr/pollset_custom.h +0 -37
- data/src/core/lib/iomgr/pollset_set_custom.cc +0 -47
- data/src/core/lib/iomgr/pollset_set_custom.h +0 -26
- data/src/core/lib/iomgr/resolve_address_custom.cc +0 -169
- data/src/core/lib/iomgr/resolve_address_custom.h +0 -44
- data/src/core/lib/iomgr/sys_epoll_wrapper.h +0 -30
- data/src/core/lib/iomgr/tcp_client_custom.cc +0 -146
- data/src/core/lib/iomgr/tcp_custom.cc +0 -350
- data/src/core/lib/iomgr/tcp_custom.h +0 -85
- data/src/core/lib/iomgr/tcp_server_custom.cc +0 -457
- data/src/core/lib/iomgr/time_averaged_stats.cc +0 -64
- data/src/core/lib/iomgr/time_averaged_stats.h +0 -72
- data/src/core/lib/iomgr/timer_custom.cc +0 -96
- data/src/core/lib/iomgr/timer_custom.h +0 -43
- data/src/core/lib/iomgr/work_serializer.cc +0 -226
- data/src/core/lib/iomgr/work_serializer.h +0 -93
- data/src/core/lib/profiling/basic_timers.cc +0 -295
- data/src/core/lib/profiling/stap_timers.cc +0 -50
- data/src/core/lib/profiling/timers.h +0 -94
- data/src/core/lib/security/authorization/sdk_server_authz_filter.cc +0 -173
- data/src/core/lib/security/authorization/sdk_server_authz_filter.h +0 -67
- data/src/core/lib/security/credentials/credentials_metadata.cc +0 -61
- data/src/core/lib/security/security_connector/load_system_roots_linux.cc +0 -170
- data/src/core/lib/security/security_connector/load_system_roots_linux.h +0 -46
- data/src/core/lib/slice/slice_api.cc +0 -39
- data/src/core/lib/slice/slice_intern.cc +0 -367
- data/src/core/lib/slice/slice_refcount_base.h +0 -181
- data/src/core/lib/slice/slice_split.cc +0 -100
- data/src/core/lib/slice/slice_split.h +0 -40
- data/src/core/lib/slice/slice_utils.h +0 -200
- data/src/core/lib/slice/static_slice.cc +0 -377
- data/src/core/lib/slice/static_slice.h +0 -300
- data/src/core/lib/surface/init_secure.cc +0 -103
- data/src/core/lib/transport/byte_stream.cc +0 -162
- data/src/core/lib/transport/byte_stream.h +0 -166
- data/src/core/lib/transport/metadata.cc +0 -714
- data/src/core/lib/transport/metadata.h +0 -449
- data/src/core/lib/transport/static_metadata.cc +0 -1032
- data/src/core/lib/transport/static_metadata.h +0 -322
- data/src/core/lib/transport/status_metadata.cc +0 -63
- data/src/core/lib/transport/status_metadata.h +0 -48
- data/third_party/abseil-cpp/absl/container/internal/have_sse.h +0 -50
- data/third_party/cares/cares/ares.h +0 -670
- data/third_party/cares/cares/ares__close_sockets.c +0 -61
- data/third_party/cares/cares/ares__get_hostent.c +0 -261
- data/third_party/cares/cares/ares_create_query.c +0 -206
- data/third_party/cares/cares/ares_data.c +0 -222
- data/third_party/cares/cares/ares_data.h +0 -72
- data/third_party/cares/cares/ares_dns.h +0 -103
- data/third_party/cares/cares/ares_expand_name.c +0 -209
- data/third_party/cares/cares/ares_expand_string.c +0 -70
- data/third_party/cares/cares/ares_free_hostent.c +0 -41
- data/third_party/cares/cares/ares_getenv.c +0 -30
- data/third_party/cares/cares/ares_gethostbyaddr.c +0 -294
- data/third_party/cares/cares/ares_gethostbyname.c +0 -529
- data/third_party/cares/cares/ares_getnameinfo.c +0 -453
- data/third_party/cares/cares/ares_getopt.c +0 -122
- data/third_party/cares/cares/ares_getopt.h +0 -53
- data/third_party/cares/cares/ares_init.c +0 -2615
- data/third_party/cares/cares/ares_ipv6.h +0 -78
- data/third_party/cares/cares/ares_library_init.c +0 -195
- data/third_party/cares/cares/ares_library_init.h +0 -43
- data/third_party/cares/cares/ares_parse_a_reply.c +0 -264
- data/third_party/cares/cares/ares_parse_aaaa_reply.c +0 -264
- data/third_party/cares/cares/ares_parse_mx_reply.c +0 -170
- data/third_party/cares/cares/ares_parse_naptr_reply.c +0 -194
- data/third_party/cares/cares/ares_parse_ns_reply.c +0 -183
- data/third_party/cares/cares/ares_parse_ptr_reply.c +0 -221
- data/third_party/cares/cares/ares_parse_soa_reply.c +0 -133
- data/third_party/cares/cares/ares_parse_srv_reply.c +0 -179
- data/third_party/cares/cares/ares_parse_txt_reply.c +0 -220
- data/third_party/cares/cares/ares_private.h +0 -382
- data/third_party/cares/cares/ares_process.c +0 -1473
- data/third_party/cares/cares/ares_query.c +0 -186
- data/third_party/cares/cares/ares_search.c +0 -323
- data/third_party/cares/cares/ares_send.c +0 -137
- data/third_party/cares/cares/ares_setup.h +0 -217
- data/third_party/cares/cares/ares_strsplit.c +0 -174
- data/third_party/cares/cares/ares_version.h +0 -24
- data/third_party/cares/cares/inet_net_pton.c +0 -450
- data/third_party/cares/cares/inet_ntop.c +0 -207
- data/third_party/upb/upb/decode_internal.h +0 -194
- data/third_party/upb/upb/upb_internal.h +0 -58
- /data/third_party/cares/cares/{ares_rules.h → include/ares_rules.h} +0 -0
- /data/third_party/cares/cares/{ares__read_line.c → src/lib/ares__read_line.c} +0 -0
- /data/third_party/cares/cares/{ares__timeval.c → src/lib/ares__timeval.c} +0 -0
- /data/third_party/cares/cares/{ares_cancel.c → src/lib/ares_cancel.c} +0 -0
- /data/third_party/cares/cares/{ares_destroy.c → src/lib/ares_destroy.c} +0 -0
- /data/third_party/cares/cares/{ares_fds.c → src/lib/ares_fds.c} +0 -0
- /data/third_party/cares/cares/{ares_free_string.c → src/lib/ares_free_string.c} +0 -0
- /data/third_party/cares/cares/{ares_getenv.h → src/lib/ares_getenv.h} +0 -0
- /data/third_party/cares/cares/{ares_getsock.c → src/lib/ares_getsock.c} +0 -0
- /data/third_party/cares/cares/{ares_inet_net_pton.h → src/lib/ares_inet_net_pton.h} +0 -0
- /data/third_party/cares/cares/{ares_iphlpapi.h → src/lib/ares_iphlpapi.h} +0 -0
- /data/third_party/cares/cares/{ares_llist.c → src/lib/ares_llist.c} +0 -0
- /data/third_party/cares/cares/{ares_llist.h → src/lib/ares_llist.h} +0 -0
- /data/third_party/cares/cares/{ares_mkquery.c → src/lib/ares_mkquery.c} +0 -0
- /data/third_party/cares/cares/{ares_nowarn.c → src/lib/ares_nowarn.c} +0 -0
- /data/third_party/cares/cares/{ares_nowarn.h → src/lib/ares_nowarn.h} +0 -0
- /data/third_party/cares/cares/{ares_options.c → src/lib/ares_options.c} +0 -0
- /data/third_party/cares/cares/{ares_platform.c → src/lib/ares_platform.c} +0 -0
- /data/third_party/cares/cares/{ares_platform.h → src/lib/ares_platform.h} +0 -0
- /data/third_party/cares/cares/{ares_strcasecmp.c → src/lib/ares_strcasecmp.c} +0 -0
- /data/third_party/cares/cares/{ares_strcasecmp.h → src/lib/ares_strcasecmp.h} +0 -0
- /data/third_party/cares/cares/{ares_strdup.c → src/lib/ares_strdup.c} +0 -0
- /data/third_party/cares/cares/{ares_strdup.h → src/lib/ares_strdup.h} +0 -0
- /data/third_party/cares/cares/{ares_strerror.c → src/lib/ares_strerror.c} +0 -0
- /data/third_party/cares/cares/{ares_strsplit.h → src/lib/ares_strsplit.h} +0 -0
- /data/third_party/cares/cares/{ares_timeout.c → src/lib/ares_timeout.c} +0 -0
- /data/third_party/cares/cares/{ares_version.c → src/lib/ares_version.c} +0 -0
- /data/third_party/cares/cares/{ares_writev.c → src/lib/ares_writev.c} +0 -0
- /data/third_party/cares/cares/{bitncmp.c → src/lib/bitncmp.c} +0 -0
- /data/third_party/cares/cares/{bitncmp.h → src/lib/bitncmp.h} +0 -0
- /data/third_party/cares/cares/{config-win32.h → src/lib/config-win32.h} +0 -0
- /data/third_party/cares/cares/{setup_once.h → src/lib/setup_once.h} +0 -0
- /data/third_party/cares/cares/{windows_port.c → src/lib/windows_port.c} +0 -0
@@ -20,60 +20,70 @@
|
|
20
20
|
|
21
21
|
#include <inttypes.h>
|
22
22
|
#include <limits.h>
|
23
|
-
#include <stdbool.h>
|
24
|
-
#include <stdio.h>
|
25
|
-
#include <string.h>
|
26
23
|
|
24
|
+
#include <algorithm>
|
25
|
+
#include <functional>
|
26
|
+
#include <new>
|
27
27
|
#include <set>
|
28
|
+
#include <vector>
|
28
29
|
|
29
|
-
#include "absl/
|
30
|
+
#include "absl/status/status.h"
|
31
|
+
#include "absl/status/statusor.h"
|
32
|
+
#include "absl/strings/cord.h"
|
30
33
|
#include "absl/strings/numbers.h"
|
31
34
|
#include "absl/strings/str_cat.h"
|
32
35
|
#include "absl/strings/str_join.h"
|
33
36
|
#include "absl/strings/string_view.h"
|
34
37
|
#include "absl/types/optional.h"
|
38
|
+
#include "absl/types/variant.h"
|
35
39
|
|
36
|
-
#include <grpc/
|
40
|
+
#include <grpc/event_engine/event_engine.h>
|
41
|
+
#include <grpc/slice.h>
|
42
|
+
#include <grpc/status.h>
|
37
43
|
#include <grpc/support/log.h>
|
38
44
|
#include <grpc/support/string_util.h>
|
39
|
-
#include <grpc/support/
|
45
|
+
#include <grpc/support/time.h>
|
40
46
|
|
41
47
|
#include "src/core/ext/filters/client_channel/backend_metric.h"
|
42
48
|
#include "src/core/ext/filters/client_channel/backup_poller.h"
|
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"
|
43
51
|
#include "src/core/ext/filters/client_channel/config_selector.h"
|
44
52
|
#include "src/core/ext/filters/client_channel/dynamic_filters.h"
|
45
53
|
#include "src/core/ext/filters/client_channel/global_subchannel_pool.h"
|
46
|
-
#include "src/core/ext/filters/client_channel/http_connect_handshaker.h"
|
47
54
|
#include "src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h"
|
48
|
-
#include "src/core/ext/filters/client_channel/lb_policy_registry.h"
|
49
55
|
#include "src/core/ext/filters/client_channel/local_subchannel_pool.h"
|
50
|
-
#include "src/core/ext/filters/client_channel/proxy_mapper_registry.h"
|
51
|
-
#include "src/core/ext/filters/client_channel/resolver_registry.h"
|
52
|
-
#include "src/core/ext/filters/client_channel/resolver_result_parsing.h"
|
53
56
|
#include "src/core/ext/filters/client_channel/retry_filter.h"
|
54
57
|
#include "src/core/ext/filters/client_channel/subchannel.h"
|
58
|
+
#include "src/core/ext/filters/client_channel/subchannel_interface_internal.h"
|
55
59
|
#include "src/core/ext/filters/deadline/deadline_filter.h"
|
56
|
-
#include "src/core/ext/service_config/service_config.h"
|
57
|
-
#include "src/core/ext/service_config/service_config_call_data.h"
|
58
|
-
#include "src/core/lib/backoff/backoff.h"
|
59
60
|
#include "src/core/lib/channel/channel_args.h"
|
60
|
-
#include "src/core/lib/channel/
|
61
|
+
#include "src/core/lib/channel/channel_stack.h"
|
62
|
+
#include "src/core/lib/channel/channel_trace.h"
|
61
63
|
#include "src/core/lib/channel/status_util.h"
|
62
|
-
#include "src/core/lib/
|
64
|
+
#include "src/core/lib/config/core_configuration.h"
|
65
|
+
#include "src/core/lib/debug/trace.h"
|
66
|
+
#include "src/core/lib/gpr/useful.h"
|
67
|
+
#include "src/core/lib/gprpp/debug_location.h"
|
68
|
+
#include "src/core/lib/gprpp/status_helper.h"
|
63
69
|
#include "src/core/lib/gprpp/sync.h"
|
64
|
-
#include "src/core/lib/
|
70
|
+
#include "src/core/lib/gprpp/work_serializer.h"
|
71
|
+
#include "src/core/lib/handshaker/proxy_mapper_registry.h"
|
72
|
+
#include "src/core/lib/iomgr/exec_ctx.h"
|
65
73
|
#include "src/core/lib/iomgr/polling_entity.h"
|
66
|
-
#include "src/core/lib/iomgr/
|
67
|
-
#include "src/core/lib/
|
74
|
+
#include "src/core/lib/iomgr/pollset_set.h"
|
75
|
+
#include "src/core/lib/json/json.h"
|
76
|
+
#include "src/core/lib/load_balancing/lb_policy_registry.h"
|
77
|
+
#include "src/core/lib/load_balancing/subchannel_interface.h"
|
78
|
+
#include "src/core/lib/resolver/resolver_registry.h"
|
79
|
+
#include "src/core/lib/resolver/server_address.h"
|
80
|
+
#include "src/core/lib/service_config/service_config_call_data.h"
|
81
|
+
#include "src/core/lib/service_config/service_config_impl.h"
|
68
82
|
#include "src/core/lib/slice/slice_internal.h"
|
69
|
-
#include "src/core/lib/slice/slice_string_helpers.h"
|
70
83
|
#include "src/core/lib/surface/channel.h"
|
71
84
|
#include "src/core/lib/transport/connectivity_state.h"
|
72
85
|
#include "src/core/lib/transport/error_utils.h"
|
73
|
-
#include "src/core/lib/transport/metadata.h"
|
74
86
|
#include "src/core/lib/transport/metadata_batch.h"
|
75
|
-
#include "src/core/lib/transport/static_metadata.h"
|
76
|
-
#include "src/core/lib/transport/status_metadata.h"
|
77
87
|
|
78
88
|
//
|
79
89
|
// Client channel filter
|
@@ -84,12 +94,11 @@
|
|
84
94
|
|
85
95
|
namespace grpc_core {
|
86
96
|
|
87
|
-
using internal::ClientChannelGlobalParsedConfig;
|
88
97
|
using internal::ClientChannelMethodParsedConfig;
|
89
|
-
using internal::ClientChannelServiceConfigParser;
|
90
98
|
|
99
|
+
TraceFlag grpc_client_channel_trace(false, "client_channel");
|
91
100
|
TraceFlag grpc_client_channel_call_trace(false, "client_channel_call");
|
92
|
-
TraceFlag
|
101
|
+
TraceFlag grpc_client_channel_lb_call_trace(false, "client_channel_lb_call");
|
93
102
|
|
94
103
|
//
|
95
104
|
// ClientChannel::CallData definition
|
@@ -178,25 +187,19 @@ class ClientChannel::CallData {
|
|
178
187
|
|
179
188
|
static void RecvTrailingMetadataReadyForConfigSelectorCommitCallback(
|
180
189
|
void* arg, grpc_error_handle error);
|
181
|
-
void InjectRecvTrailingMetadataReadyForConfigSelectorCommitCallback(
|
182
|
-
grpc_transport_stream_op_batch* batch);
|
183
190
|
|
184
191
|
void CreateDynamicCall(grpc_call_element* elem);
|
185
192
|
|
193
|
+
Arena* arena() const { return deadline_state_.arena; }
|
194
|
+
grpc_call_stack* owning_call() const { return deadline_state_.call_stack; }
|
195
|
+
CallCombiner* call_combiner() const { return deadline_state_.call_combiner; }
|
196
|
+
|
186
197
|
// State for handling deadlines.
|
187
|
-
// The code in deadline_filter.c requires this to be the first field.
|
188
|
-
// TODO(roth): This is slightly sub-optimal in that grpc_deadline_state
|
189
|
-
// and this struct both independently store pointers to the call stack
|
190
|
-
// and call combiner. If/when we have time, find a way to avoid this
|
191
|
-
// without breaking the grpc_deadline_state abstraction.
|
192
198
|
grpc_deadline_state deadline_state_;
|
193
199
|
|
194
200
|
grpc_slice path_; // Request path.
|
195
201
|
gpr_cycle_counter call_start_time_;
|
196
|
-
|
197
|
-
Arena* arena_;
|
198
|
-
grpc_call_stack* owning_call_;
|
199
|
-
CallCombiner* call_combiner_;
|
202
|
+
Timestamp deadline_;
|
200
203
|
grpc_call_context_element* call_context_;
|
201
204
|
|
202
205
|
grpc_polling_entity* pollent_ = nullptr;
|
@@ -227,7 +230,7 @@ class ClientChannel::CallData {
|
|
227
230
|
grpc_transport_stream_op_batch* pending_batches_[MAX_PENDING_BATCHES] = {};
|
228
231
|
|
229
232
|
// Set when we get a cancel_stream op.
|
230
|
-
grpc_error_handle cancel_error_
|
233
|
+
grpc_error_handle cancel_error_;
|
231
234
|
};
|
232
235
|
|
233
236
|
//
|
@@ -236,6 +239,7 @@ class ClientChannel::CallData {
|
|
236
239
|
|
237
240
|
const grpc_channel_filter ClientChannel::kFilterVtable = {
|
238
241
|
ClientChannel::CallData::StartTransportStreamOpBatch,
|
242
|
+
nullptr,
|
239
243
|
ClientChannel::StartTransportOp,
|
240
244
|
sizeof(ClientChannel::CallData),
|
241
245
|
ClientChannel::CallData::Init,
|
@@ -243,6 +247,7 @@ const grpc_channel_filter ClientChannel::kFilterVtable = {
|
|
243
247
|
ClientChannel::CallData::Destroy,
|
244
248
|
sizeof(ClientChannel),
|
245
249
|
ClientChannel::Init,
|
250
|
+
grpc_channel_stack_no_post_init,
|
246
251
|
ClientChannel::Destroy,
|
247
252
|
ClientChannel::GetChannelInfo,
|
248
253
|
"client-channel",
|
@@ -254,28 +259,6 @@ const grpc_channel_filter ClientChannel::kFilterVtable = {
|
|
254
259
|
|
255
260
|
namespace {
|
256
261
|
|
257
|
-
// Channel arg pointer vtable for GRPC_ARG_CLIENT_CHANNEL.
|
258
|
-
void* ClientChannelArgCopy(void* p) { return p; }
|
259
|
-
void ClientChannelArgDestroy(void* /*p*/) {}
|
260
|
-
int ClientChannelArgCmp(void* p, void* q) { return QsortCompare(p, q); }
|
261
|
-
const grpc_arg_pointer_vtable kClientChannelArgPointerVtable = {
|
262
|
-
ClientChannelArgCopy, ClientChannelArgDestroy, ClientChannelArgCmp};
|
263
|
-
|
264
|
-
// Channel arg pointer vtable for GRPC_ARG_SERVICE_CONFIG_OBJ.
|
265
|
-
void* ServiceConfigObjArgCopy(void* p) {
|
266
|
-
auto* service_config = static_cast<ServiceConfig*>(p);
|
267
|
-
service_config->Ref().release();
|
268
|
-
return p;
|
269
|
-
}
|
270
|
-
void ServiceConfigObjArgDestroy(void* p) {
|
271
|
-
auto* service_config = static_cast<ServiceConfig*>(p);
|
272
|
-
service_config->Unref();
|
273
|
-
}
|
274
|
-
int ServiceConfigObjArgCmp(void* p, void* q) { return QsortCompare(p, q); }
|
275
|
-
const grpc_arg_pointer_vtable kServiceConfigObjArgPointerVtable = {
|
276
|
-
ServiceConfigObjArgCopy, ServiceConfigObjArgDestroy,
|
277
|
-
ServiceConfigObjArgCmp};
|
278
|
-
|
279
262
|
class DynamicTerminationFilter {
|
280
263
|
public:
|
281
264
|
class CallData;
|
@@ -287,7 +270,7 @@ class DynamicTerminationFilter {
|
|
287
270
|
GPR_ASSERT(args->is_last);
|
288
271
|
GPR_ASSERT(elem->filter == &kFilterVtable);
|
289
272
|
new (elem->channel_data) DynamicTerminationFilter(args->channel_args);
|
290
|
-
return
|
273
|
+
return absl::OkStatus();
|
291
274
|
}
|
292
275
|
|
293
276
|
static void Destroy(grpc_channel_element* elem) {
|
@@ -302,9 +285,8 @@ class DynamicTerminationFilter {
|
|
302
285
|
const grpc_channel_info* /*info*/) {}
|
303
286
|
|
304
287
|
private:
|
305
|
-
explicit DynamicTerminationFilter(const
|
306
|
-
: chand_(
|
307
|
-
args, GRPC_ARG_CLIENT_CHANNEL)) {}
|
288
|
+
explicit DynamicTerminationFilter(const ChannelArgs& args)
|
289
|
+
: chand_(args.GetObject<ClientChannel>()) {}
|
308
290
|
|
309
291
|
ClientChannel* chand_;
|
310
292
|
};
|
@@ -314,7 +296,7 @@ class DynamicTerminationFilter::CallData {
|
|
314
296
|
static grpc_error_handle Init(grpc_call_element* elem,
|
315
297
|
const grpc_call_element_args* args) {
|
316
298
|
new (elem->call_data) CallData(*args);
|
317
|
-
return
|
299
|
+
return absl::OkStatus();
|
318
300
|
}
|
319
301
|
|
320
302
|
static void Destroy(grpc_call_element* elem,
|
@@ -330,7 +312,7 @@ class DynamicTerminationFilter::CallData {
|
|
330
312
|
subchannel_call->SetAfterCallStackDestroy(then_schedule_closure);
|
331
313
|
} else {
|
332
314
|
// TODO(yashkt) : This can potentially be a Closure::Run
|
333
|
-
ExecCtx::Run(DEBUG_LOCATION, then_schedule_closure,
|
315
|
+
ExecCtx::Run(DEBUG_LOCATION, then_schedule_closure, absl::OkStatus());
|
334
316
|
}
|
335
317
|
}
|
336
318
|
|
@@ -356,7 +338,7 @@ class DynamicTerminationFilter::CallData {
|
|
356
338
|
args, pollent, nullptr,
|
357
339
|
service_config_call_data->call_dispatch_controller(),
|
358
340
|
/*is_transparent_retry=*/false);
|
359
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
341
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
360
342
|
gpr_log(GPR_INFO,
|
361
343
|
"chand=%p dynamic_termination_calld=%p: create lb_call=%p", chand,
|
362
344
|
client_channel, calld->lb_call_.get());
|
@@ -365,17 +347,17 @@ class DynamicTerminationFilter::CallData {
|
|
365
347
|
|
366
348
|
private:
|
367
349
|
explicit CallData(const grpc_call_element_args& args)
|
368
|
-
: path_(
|
350
|
+
: path_(CSliceRef(args.path)),
|
369
351
|
deadline_(args.deadline),
|
370
352
|
arena_(args.arena),
|
371
353
|
owning_call_(args.call_stack),
|
372
354
|
call_combiner_(args.call_combiner),
|
373
355
|
call_context_(args.context) {}
|
374
356
|
|
375
|
-
~CallData() {
|
357
|
+
~CallData() { CSliceUnref(path_); }
|
376
358
|
|
377
359
|
grpc_slice path_; // Request path.
|
378
|
-
|
360
|
+
Timestamp deadline_;
|
379
361
|
Arena* arena_;
|
380
362
|
grpc_call_stack* owning_call_;
|
381
363
|
CallCombiner* call_combiner_;
|
@@ -386,6 +368,7 @@ class DynamicTerminationFilter::CallData {
|
|
386
368
|
|
387
369
|
const grpc_channel_filter DynamicTerminationFilter::kFilterVtable = {
|
388
370
|
DynamicTerminationFilter::CallData::StartTransportStreamOpBatch,
|
371
|
+
nullptr,
|
389
372
|
DynamicTerminationFilter::StartTransportOp,
|
390
373
|
sizeof(DynamicTerminationFilter::CallData),
|
391
374
|
DynamicTerminationFilter::CallData::Init,
|
@@ -393,6 +376,7 @@ const grpc_channel_filter DynamicTerminationFilter::kFilterVtable = {
|
|
393
376
|
DynamicTerminationFilter::CallData::Destroy,
|
394
377
|
sizeof(DynamicTerminationFilter),
|
395
378
|
DynamicTerminationFilter::Init,
|
379
|
+
grpc_channel_stack_no_post_init,
|
396
380
|
DynamicTerminationFilter::Destroy,
|
397
381
|
DynamicTerminationFilter::GetChannelInfo,
|
398
382
|
"dynamic_filter_termination",
|
@@ -411,22 +395,17 @@ class ClientChannel::ResolverResultHandler : public Resolver::ResultHandler {
|
|
411
395
|
}
|
412
396
|
|
413
397
|
~ResolverResultHandler() override {
|
414
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
398
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
415
399
|
gpr_log(GPR_INFO, "chand=%p: resolver shutdown complete", chand_);
|
416
400
|
}
|
417
401
|
GRPC_CHANNEL_STACK_UNREF(chand_->owning_stack_, "ResolverResultHandler");
|
418
402
|
}
|
419
403
|
|
420
|
-
void
|
421
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
|
404
|
+
void ReportResult(Resolver::Result result) override
|
405
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
|
422
406
|
chand_->OnResolverResultChangedLocked(std::move(result));
|
423
407
|
}
|
424
408
|
|
425
|
-
void ReturnError(grpc_error_handle error) override
|
426
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
|
427
|
-
chand_->OnResolverErrorLocked(error);
|
428
|
-
}
|
429
|
-
|
430
409
|
private:
|
431
410
|
ClientChannel* chand_;
|
432
411
|
};
|
@@ -447,14 +426,13 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
|
|
447
426
|
public:
|
448
427
|
SubchannelWrapper(ClientChannel* chand, RefCountedPtr<Subchannel> subchannel,
|
449
428
|
absl::optional<std::string> health_check_service_name)
|
450
|
-
: SubchannelInterface(
|
451
|
-
|
452
|
-
|
453
|
-
: nullptr),
|
429
|
+
: SubchannelInterface(GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)
|
430
|
+
? "SubchannelWrapper"
|
431
|
+
: nullptr),
|
454
432
|
chand_(chand),
|
455
433
|
subchannel_(std::move(subchannel)),
|
456
434
|
health_check_service_name_(std::move(health_check_service_name)) {
|
457
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
435
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
458
436
|
gpr_log(GPR_INFO,
|
459
437
|
"chand=%p: creating subchannel wrapper %p for subchannel %p",
|
460
438
|
chand, this, subchannel_.get());
|
@@ -476,7 +454,7 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
|
|
476
454
|
}
|
477
455
|
|
478
456
|
~SubchannelWrapper() override {
|
479
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
457
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
480
458
|
gpr_log(GPR_INFO,
|
481
459
|
"chand=%p: destroying subchannel wrapper %p for subchannel %p",
|
482
460
|
chand_, this, subchannel_.get());
|
@@ -498,27 +476,21 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
|
|
498
476
|
GRPC_CHANNEL_STACK_UNREF(chand_->owning_stack_, "SubchannelWrapper");
|
499
477
|
}
|
500
478
|
|
501
|
-
grpc_connectivity_state CheckConnectivityState() override {
|
502
|
-
return subchannel_->CheckConnectivityState(health_check_service_name_);
|
503
|
-
}
|
504
|
-
|
505
479
|
void WatchConnectivityState(
|
506
|
-
grpc_connectivity_state initial_state,
|
507
480
|
std::unique_ptr<ConnectivityStateWatcherInterface> watcher) override
|
508
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
|
481
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
|
509
482
|
auto& watcher_wrapper = watcher_map_[watcher.get()];
|
510
483
|
GPR_ASSERT(watcher_wrapper == nullptr);
|
511
484
|
watcher_wrapper = new WatcherWrapper(std::move(watcher),
|
512
|
-
Ref(DEBUG_LOCATION, "WatcherWrapper")
|
513
|
-
initial_state);
|
485
|
+
Ref(DEBUG_LOCATION, "WatcherWrapper"));
|
514
486
|
subchannel_->WatchConnectivityState(
|
515
|
-
|
487
|
+
health_check_service_name_,
|
516
488
|
RefCountedPtr<Subchannel::ConnectivityStateWatcherInterface>(
|
517
489
|
watcher_wrapper));
|
518
490
|
}
|
519
491
|
|
520
492
|
void CancelConnectivityStateWatch(ConnectivityStateWatcherInterface* watcher)
|
521
|
-
override ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
|
493
|
+
override ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
|
522
494
|
auto it = watcher_map_.find(watcher);
|
523
495
|
GPR_ASSERT(it != watcher_map_.end());
|
524
496
|
subchannel_->CancelConnectivityStateWatch(health_check_service_name_,
|
@@ -530,12 +502,17 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
|
|
530
502
|
return subchannel_->connected_subchannel();
|
531
503
|
}
|
532
504
|
|
533
|
-
void
|
505
|
+
void RequestConnection() override { subchannel_->RequestConnection(); }
|
534
506
|
|
535
507
|
void ResetBackoff() override { subchannel_->ResetBackoff(); }
|
536
508
|
|
537
|
-
|
538
|
-
|
509
|
+
void AddDataWatcher(std::unique_ptr<DataWatcherInterface> watcher) override
|
510
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
|
511
|
+
std::unique_ptr<InternalSubchannelDataWatcherInterface> internal_watcher(
|
512
|
+
static_cast<InternalSubchannelDataWatcherInterface*>(
|
513
|
+
watcher.release()));
|
514
|
+
internal_watcher->SetSubchannel(subchannel_.get());
|
515
|
+
data_watchers_.push_back(std::move(internal_watcher));
|
539
516
|
}
|
540
517
|
|
541
518
|
void ThrottleKeepaliveTime(int new_keepalive_time) {
|
@@ -562,24 +539,22 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
|
|
562
539
|
WatcherWrapper(
|
563
540
|
std::unique_ptr<SubchannelInterface::ConnectivityStateWatcherInterface>
|
564
541
|
watcher,
|
565
|
-
RefCountedPtr<SubchannelWrapper> parent
|
566
|
-
|
567
|
-
: watcher_(std::move(watcher)),
|
568
|
-
parent_(std::move(parent)),
|
569
|
-
last_seen_state_(initial_state) {}
|
542
|
+
RefCountedPtr<SubchannelWrapper> parent)
|
543
|
+
: watcher_(std::move(watcher)), parent_(std::move(parent)) {}
|
570
544
|
|
571
545
|
~WatcherWrapper() override {
|
572
546
|
auto* parent = parent_.release(); // ref owned by lambda
|
573
547
|
parent->chand_->work_serializer_->Run(
|
574
|
-
[parent]()
|
575
|
-
|
576
|
-
|
577
|
-
|
548
|
+
[parent]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(
|
549
|
+
*parent_->chand_->work_serializer_) {
|
550
|
+
parent->Unref(DEBUG_LOCATION, "WatcherWrapper");
|
551
|
+
},
|
578
552
|
DEBUG_LOCATION);
|
579
553
|
}
|
580
554
|
|
581
|
-
void OnConnectivityStateChange(
|
582
|
-
|
555
|
+
void OnConnectivityStateChange(grpc_connectivity_state state,
|
556
|
+
const absl::Status& status) override {
|
557
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
583
558
|
gpr_log(GPR_INFO,
|
584
559
|
"chand=%p: connectivity change for subchannel wrapper %p "
|
585
560
|
"subchannel %p; hopping into work_serializer",
|
@@ -587,11 +562,11 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
|
|
587
562
|
}
|
588
563
|
Ref().release(); // ref owned by lambda
|
589
564
|
parent_->chand_->work_serializer_->Run(
|
590
|
-
[this]()
|
591
|
-
|
592
|
-
|
593
|
-
|
594
|
-
|
565
|
+
[this, state, status]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(
|
566
|
+
*parent_->chand_->work_serializer_) {
|
567
|
+
ApplyUpdateInControlPlaneWorkSerializer(state, status);
|
568
|
+
Unref();
|
569
|
+
},
|
595
570
|
DEBUG_LOCATION);
|
596
571
|
}
|
597
572
|
|
@@ -603,35 +578,33 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
|
|
603
578
|
}
|
604
579
|
|
605
580
|
WatcherWrapper* MakeReplacement() {
|
606
|
-
auto* replacement =
|
607
|
-
new WatcherWrapper(std::move(watcher_), parent_, last_seen_state_);
|
581
|
+
auto* replacement = new WatcherWrapper(std::move(watcher_), parent_);
|
608
582
|
replacement_ = replacement;
|
609
583
|
return replacement;
|
610
584
|
}
|
611
585
|
|
612
|
-
grpc_connectivity_state last_seen_state() const { return last_seen_state_; }
|
613
|
-
|
614
586
|
private:
|
615
|
-
void ApplyUpdateInControlPlaneWorkSerializer(
|
616
|
-
|
617
|
-
|
587
|
+
void ApplyUpdateInControlPlaneWorkSerializer(grpc_connectivity_state state,
|
588
|
+
const absl::Status& status)
|
589
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(*parent_->chand_->work_serializer_) {
|
590
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
618
591
|
gpr_log(GPR_INFO,
|
619
592
|
"chand=%p: processing connectivity change in work serializer "
|
620
|
-
"for subchannel wrapper %p subchannel %p "
|
621
|
-
"
|
593
|
+
"for subchannel wrapper %p subchannel %p watcher=%p "
|
594
|
+
"state=%s status=%s",
|
622
595
|
parent_->chand_, parent_.get(), parent_->subchannel_.get(),
|
623
|
-
watcher_.get())
|
596
|
+
watcher_.get(), ConnectivityStateName(state),
|
597
|
+
status.ToString().c_str());
|
624
598
|
}
|
625
|
-
ConnectivityStateChange state_change = PopConnectivityStateChange();
|
626
599
|
absl::optional<absl::Cord> keepalive_throttling =
|
627
|
-
|
600
|
+
status.GetPayload(kKeepaliveThrottlingKey);
|
628
601
|
if (keepalive_throttling.has_value()) {
|
629
602
|
int new_keepalive_time = -1;
|
630
603
|
if (absl::SimpleAtoi(std::string(keepalive_throttling.value()),
|
631
604
|
&new_keepalive_time)) {
|
632
605
|
if (new_keepalive_time > parent_->chand_->keepalive_time_) {
|
633
606
|
parent_->chand_->keepalive_time_ = new_keepalive_time;
|
634
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
607
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
635
608
|
gpr_log(GPR_INFO, "chand=%p: throttling keepalive time to %d",
|
636
609
|
parent_->chand_, parent_->chand_->keepalive_time_);
|
637
610
|
}
|
@@ -652,15 +625,19 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
|
|
652
625
|
// Ignore update if the parent WatcherWrapper has been replaced
|
653
626
|
// since this callback was scheduled.
|
654
627
|
if (watcher_ != nullptr) {
|
655
|
-
|
656
|
-
|
628
|
+
// Propagate status only in state TF.
|
629
|
+
// We specifically want to avoid propagating the status for
|
630
|
+
// state IDLE that the real subchannel gave us only for the
|
631
|
+
// purpose of keepalive propagation.
|
632
|
+
watcher_->OnConnectivityStateChange(
|
633
|
+
state, state == GRPC_CHANNEL_TRANSIENT_FAILURE ? status
|
634
|
+
: absl::OkStatus());
|
657
635
|
}
|
658
636
|
}
|
659
637
|
|
660
638
|
std::unique_ptr<SubchannelInterface::ConnectivityStateWatcherInterface>
|
661
639
|
watcher_;
|
662
640
|
RefCountedPtr<SubchannelWrapper> parent_;
|
663
|
-
grpc_connectivity_state last_seen_state_;
|
664
641
|
WatcherWrapper* replacement_ = nullptr;
|
665
642
|
};
|
666
643
|
|
@@ -673,7 +650,9 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
|
|
673
650
|
// CancelConnectivityStateWatch() with its watcher, we know the
|
674
651
|
// corresponding WrapperWatcher to cancel on the underlying subchannel.
|
675
652
|
std::map<ConnectivityStateWatcherInterface*, WatcherWrapper*> watcher_map_
|
676
|
-
ABSL_GUARDED_BY(
|
653
|
+
ABSL_GUARDED_BY(*chand_->work_serializer_);
|
654
|
+
std::vector<std::unique_ptr<InternalSubchannelDataWatcherInterface>>
|
655
|
+
data_watchers_ ABSL_GUARDED_BY(*chand_->work_serializer_);
|
677
656
|
};
|
678
657
|
|
679
658
|
//
|
@@ -703,7 +682,7 @@ ClientChannel::ExternalConnectivityWatcher::ExternalConnectivityWatcher(
|
|
703
682
|
}
|
704
683
|
// Pass the ref from creating the object to Start().
|
705
684
|
chand_->work_serializer_->Run(
|
706
|
-
[this]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
|
685
|
+
[this]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
|
707
686
|
// The ref is passed to AddWatcherLocked().
|
708
687
|
AddWatcherLocked();
|
709
688
|
},
|
@@ -747,14 +726,18 @@ void ClientChannel::ExternalConnectivityWatcher::Notify(
|
|
747
726
|
chand_, on_complete_, /*cancel=*/false);
|
748
727
|
// Report new state to the user.
|
749
728
|
*state_ = state;
|
750
|
-
ExecCtx::Run(DEBUG_LOCATION, on_complete_,
|
729
|
+
ExecCtx::Run(DEBUG_LOCATION, on_complete_, absl::OkStatus());
|
751
730
|
// Hop back into the work_serializer to clean up.
|
752
731
|
// Not needed in state SHUTDOWN, because the tracker will
|
753
732
|
// automatically remove all watchers in that case.
|
733
|
+
// Note: The callback takes a ref in case the ref inside the state tracker
|
734
|
+
// gets removed before the callback runs via a SHUTDOWN notification.
|
754
735
|
if (state != GRPC_CHANNEL_SHUTDOWN) {
|
736
|
+
Ref(DEBUG_LOCATION, "RemoveWatcherLocked()").release();
|
755
737
|
chand_->work_serializer_->Run(
|
756
|
-
[this]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
|
738
|
+
[this]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
|
757
739
|
RemoveWatcherLocked();
|
740
|
+
Unref(DEBUG_LOCATION, "RemoveWatcherLocked()");
|
758
741
|
},
|
759
742
|
DEBUG_LOCATION);
|
760
743
|
}
|
@@ -766,17 +749,21 @@ void ClientChannel::ExternalConnectivityWatcher::Cancel() {
|
|
766
749
|
std::memory_order_relaxed)) {
|
767
750
|
return; // Already done.
|
768
751
|
}
|
769
|
-
ExecCtx::Run(DEBUG_LOCATION, on_complete_,
|
752
|
+
ExecCtx::Run(DEBUG_LOCATION, on_complete_, absl::CancelledError());
|
770
753
|
// Hop back into the work_serializer to clean up.
|
754
|
+
// Note: The callback takes a ref in case the ref inside the state tracker
|
755
|
+
// gets removed before the callback runs via a SHUTDOWN notification.
|
756
|
+
Ref(DEBUG_LOCATION, "RemoveWatcherLocked()").release();
|
771
757
|
chand_->work_serializer_->Run(
|
772
|
-
[this]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
|
758
|
+
[this]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
|
773
759
|
RemoveWatcherLocked();
|
760
|
+
Unref(DEBUG_LOCATION, "RemoveWatcherLocked()");
|
774
761
|
},
|
775
762
|
DEBUG_LOCATION);
|
776
763
|
}
|
777
764
|
|
778
765
|
void ClientChannel::ExternalConnectivityWatcher::AddWatcherLocked() {
|
779
|
-
Closure::Run(DEBUG_LOCATION, watcher_timer_init_,
|
766
|
+
Closure::Run(DEBUG_LOCATION, watcher_timer_init_, absl::OkStatus());
|
780
767
|
// Add new watcher. Pass the ref of the object from creation to OrphanablePtr.
|
781
768
|
chand_->state_tracker_.AddWatcher(
|
782
769
|
initial_state_, OrphanablePtr<ConnectivityStateWatcherInterface>(this));
|
@@ -800,7 +787,7 @@ class ClientChannel::ConnectivityWatcherAdder {
|
|
800
787
|
watcher_(std::move(watcher)) {
|
801
788
|
GRPC_CHANNEL_STACK_REF(chand_->owning_stack_, "ConnectivityWatcherAdder");
|
802
789
|
chand_->work_serializer_->Run(
|
803
|
-
[this]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
|
790
|
+
[this]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
|
804
791
|
AddWatcherLocked();
|
805
792
|
},
|
806
793
|
DEBUG_LOCATION);
|
@@ -808,7 +795,7 @@ class ClientChannel::ConnectivityWatcherAdder {
|
|
808
795
|
|
809
796
|
private:
|
810
797
|
void AddWatcherLocked()
|
811
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
|
798
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
|
812
799
|
chand_->state_tracker_.AddWatcher(initial_state_, std::move(watcher_));
|
813
800
|
GRPC_CHANNEL_STACK_UNREF(chand_->owning_stack_, "ConnectivityWatcherAdder");
|
814
801
|
delete this;
|
@@ -830,7 +817,7 @@ class ClientChannel::ConnectivityWatcherRemover {
|
|
830
817
|
: chand_(chand), watcher_(watcher) {
|
831
818
|
GRPC_CHANNEL_STACK_REF(chand_->owning_stack_, "ConnectivityWatcherRemover");
|
832
819
|
chand_->work_serializer_->Run(
|
833
|
-
[this]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
|
820
|
+
[this]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
|
834
821
|
RemoveWatcherLocked();
|
835
822
|
},
|
836
823
|
DEBUG_LOCATION);
|
@@ -838,7 +825,7 @@ class ClientChannel::ConnectivityWatcherRemover {
|
|
838
825
|
|
839
826
|
private:
|
840
827
|
void RemoveWatcherLocked()
|
841
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
|
828
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
|
842
829
|
chand_->state_tracker_.RemoveWatcher(watcher_);
|
843
830
|
GRPC_CHANNEL_STACK_UNREF(chand_->owning_stack_,
|
844
831
|
"ConnectivityWatcherRemover");
|
@@ -866,67 +853,23 @@ class ClientChannel::ClientChannelControlHelper
|
|
866
853
|
}
|
867
854
|
|
868
855
|
RefCountedPtr<SubchannelInterface> CreateSubchannel(
|
869
|
-
ServerAddress address, const
|
870
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
|
856
|
+
ServerAddress address, const ChannelArgs& args) override
|
857
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
|
871
858
|
if (chand_->resolver_ == nullptr) return nullptr; // Shutting down.
|
872
859
|
// Determine health check service name.
|
873
860
|
absl::optional<std::string> health_check_service_name;
|
874
|
-
|
875
|
-
|
876
|
-
|
877
|
-
bool inhibit_health_checking = grpc_channel_args_find_bool(
|
878
|
-
&args, GRPC_ARG_INHIBIT_HEALTH_CHECKING, false);
|
879
|
-
if (!inhibit_health_checking) {
|
880
|
-
health_check_service_name = health_check_service_name_arg;
|
881
|
-
}
|
861
|
+
if (!args.GetBool(GRPC_ARG_INHIBIT_HEALTH_CHECKING).value_or(false)) {
|
862
|
+
health_check_service_name =
|
863
|
+
args.GetOwnedString(GRPC_ARG_HEALTH_CHECK_SERVICE_NAME);
|
882
864
|
}
|
883
865
|
// Construct channel args for subchannel.
|
884
|
-
|
885
|
-
|
886
|
-
|
887
|
-
GRPC_ARG_INHIBIT_HEALTH_CHECKING,
|
888
|
-
GRPC_ARG_CHANNELZ_CHANNEL_NODE,
|
889
|
-
};
|
890
|
-
// Add channel args needed for the subchannel.
|
891
|
-
absl::InlinedVector<grpc_arg, 2> args_to_add = {
|
892
|
-
SubchannelPoolInterface::CreateChannelArg(
|
893
|
-
chand_->subchannel_pool_.get()),
|
894
|
-
};
|
895
|
-
// Check if default authority arg is already set.
|
896
|
-
const char* default_authority =
|
897
|
-
grpc_channel_args_find_string(&args, GRPC_ARG_DEFAULT_AUTHORITY);
|
898
|
-
// Add args from subchannel address.
|
899
|
-
if (address.args() != nullptr) {
|
900
|
-
for (size_t j = 0; j < address.args()->num_args; ++j) {
|
901
|
-
grpc_arg& arg = address.args()->args[j];
|
902
|
-
if (strcmp(arg.key, GRPC_ARG_DEFAULT_AUTHORITY) == 0) {
|
903
|
-
// Don't add default authority arg from subchannel address if
|
904
|
-
// it's already set at the channel level -- the value from the
|
905
|
-
// application should take precedence over what is set by the
|
906
|
-
// resolver.
|
907
|
-
if (default_authority != nullptr) continue;
|
908
|
-
default_authority = arg.value.string;
|
909
|
-
}
|
910
|
-
args_to_add.emplace_back(arg);
|
911
|
-
}
|
912
|
-
}
|
913
|
-
// If we haven't already set the default authority arg, add it from
|
914
|
-
// the channel.
|
915
|
-
if (default_authority == nullptr) {
|
916
|
-
// Remove it, just in case it's actually present but is the wrong type.
|
917
|
-
args_to_remove.push_back(GRPC_ARG_DEFAULT_AUTHORITY);
|
918
|
-
args_to_add.push_back(grpc_channel_arg_string_create(
|
919
|
-
const_cast<char*>(GRPC_ARG_DEFAULT_AUTHORITY),
|
920
|
-
const_cast<char*>(chand_->default_authority_.c_str())));
|
921
|
-
}
|
922
|
-
grpc_channel_args* new_args = grpc_channel_args_copy_and_add_and_remove(
|
923
|
-
&args, args_to_remove.data(), args_to_remove.size(), args_to_add.data(),
|
924
|
-
args_to_add.size());
|
866
|
+
ChannelArgs subchannel_args = ClientChannel::MakeSubchannelArgs(
|
867
|
+
args, address.args(), chand_->subchannel_pool_,
|
868
|
+
chand_->default_authority_);
|
925
869
|
// Create subchannel.
|
926
870
|
RefCountedPtr<Subchannel> subchannel =
|
927
871
|
chand_->client_channel_factory_->CreateSubchannel(address.address(),
|
928
|
-
|
929
|
-
grpc_channel_args_destroy(new_args);
|
872
|
+
subchannel_args);
|
930
873
|
if (subchannel == nullptr) return nullptr;
|
931
874
|
// Make sure the subchannel has updated keepalive time.
|
932
875
|
subchannel->ThrottleKeepaliveTime(chand_->keepalive_time_);
|
@@ -935,13 +878,12 @@ class ClientChannel::ClientChannelControlHelper
|
|
935
878
|
chand_, std::move(subchannel), std::move(health_check_service_name));
|
936
879
|
}
|
937
880
|
|
938
|
-
void UpdateState(
|
939
|
-
|
940
|
-
|
941
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
|
881
|
+
void UpdateState(grpc_connectivity_state state, const absl::Status& status,
|
882
|
+
RefCountedPtr<LoadBalancingPolicy::SubchannelPicker> picker)
|
883
|
+
override ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
|
942
884
|
if (chand_->resolver_ == nullptr) return; // Shutting down.
|
943
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
944
|
-
const char* extra = chand_->disconnect_error_
|
885
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
886
|
+
const char* extra = chand_->disconnect_error_.ok()
|
945
887
|
? ""
|
946
888
|
: " (ignoring -- channel shutting down)";
|
947
889
|
gpr_log(GPR_INFO, "chand=%p: update: state=%s status=(%s) picker=%p%s",
|
@@ -949,16 +891,16 @@ class ClientChannel::ClientChannelControlHelper
|
|
949
891
|
picker.get(), extra);
|
950
892
|
}
|
951
893
|
// Do update only if not shutting down.
|
952
|
-
if (chand_->disconnect_error_
|
894
|
+
if (chand_->disconnect_error_.ok()) {
|
953
895
|
chand_->UpdateStateAndPickerLocked(state, status, "helper",
|
954
896
|
std::move(picker));
|
955
897
|
}
|
956
898
|
}
|
957
899
|
|
958
900
|
void RequestReresolution() override
|
959
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
|
901
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
|
960
902
|
if (chand_->resolver_ == nullptr) return; // Shutting down.
|
961
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
903
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
962
904
|
gpr_log(GPR_INFO, "chand=%p: started name re-resolving", chand_);
|
963
905
|
}
|
964
906
|
chand_->resolver_->RequestReresolutionLocked();
|
@@ -968,8 +910,12 @@ class ClientChannel::ClientChannelControlHelper
|
|
968
910
|
return chand_->default_authority_;
|
969
911
|
}
|
970
912
|
|
913
|
+
grpc_event_engine::experimental::EventEngine* GetEventEngine() override {
|
914
|
+
return chand_->owning_stack_->EventEngine();
|
915
|
+
}
|
916
|
+
|
971
917
|
void AddTraceEvent(TraceSeverity severity, absl::string_view message) override
|
972
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
|
918
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
|
973
919
|
if (chand_->resolver_ == nullptr) return; // Shutting down.
|
974
920
|
if (chand_->channelz_node_ != nullptr) {
|
975
921
|
chand_->channelz_node_->AddTraceEvent(
|
@@ -993,9 +939,9 @@ class ClientChannel::ClientChannelControlHelper
|
|
993
939
|
// ClientChannel implementation
|
994
940
|
//
|
995
941
|
|
996
|
-
ClientChannel* ClientChannel::GetFromChannel(
|
942
|
+
ClientChannel* ClientChannel::GetFromChannel(Channel* channel) {
|
997
943
|
grpc_channel_element* elem =
|
998
|
-
grpc_channel_stack_last_element(
|
944
|
+
grpc_channel_stack_last_element(channel->channel_stack());
|
999
945
|
if (elem->filter != &kFilterVtable) return nullptr;
|
1000
946
|
return static_cast<ClientChannel*>(elem->channel_data);
|
1001
947
|
}
|
@@ -1004,7 +950,7 @@ grpc_error_handle ClientChannel::Init(grpc_channel_element* elem,
|
|
1004
950
|
grpc_channel_element_args* args) {
|
1005
951
|
GPR_ASSERT(args->is_last);
|
1006
952
|
GPR_ASSERT(elem->filter == &kFilterVtable);
|
1007
|
-
grpc_error_handle error
|
953
|
+
grpc_error_handle error;
|
1008
954
|
new (elem->channel_data) ClientChannel(args, &error);
|
1009
955
|
return error;
|
1010
956
|
}
|
@@ -1017,35 +963,29 @@ void ClientChannel::Destroy(grpc_channel_element* elem) {
|
|
1017
963
|
namespace {
|
1018
964
|
|
1019
965
|
RefCountedPtr<SubchannelPoolInterface> GetSubchannelPool(
|
1020
|
-
const
|
1021
|
-
|
1022
|
-
args, GRPC_ARG_USE_LOCAL_SUBCHANNEL_POOL, false);
|
1023
|
-
if (use_local_subchannel_pool) {
|
966
|
+
const ChannelArgs& args) {
|
967
|
+
if (args.GetBool(GRPC_ARG_USE_LOCAL_SUBCHANNEL_POOL).value_or(false)) {
|
1024
968
|
return MakeRefCounted<LocalSubchannelPool>();
|
1025
969
|
}
|
1026
970
|
return GlobalSubchannelPool::instance();
|
1027
971
|
}
|
1028
972
|
|
1029
|
-
channelz::ChannelNode* GetChannelzNode(const grpc_channel_args* args) {
|
1030
|
-
return grpc_channel_args_find_pointer<channelz::ChannelNode>(
|
1031
|
-
args, GRPC_ARG_CHANNELZ_CHANNEL_NODE);
|
1032
|
-
}
|
1033
|
-
|
1034
973
|
} // namespace
|
1035
974
|
|
1036
975
|
ClientChannel::ClientChannel(grpc_channel_element_args* args,
|
1037
976
|
grpc_error_handle* error)
|
1038
|
-
:
|
1039
|
-
|
977
|
+
: channel_args_(args->channel_args),
|
978
|
+
deadline_checking_enabled_(grpc_deadline_checking_enabled(channel_args_)),
|
1040
979
|
owning_stack_(args->channel_stack),
|
1041
|
-
client_channel_factory_(
|
1042
|
-
|
1043
|
-
channelz_node_(GetChannelzNode(args->channel_args)),
|
980
|
+
client_channel_factory_(channel_args_.GetObject<ClientChannelFactory>()),
|
981
|
+
channelz_node_(channel_args_.GetObject<channelz::ChannelNode>()),
|
1044
982
|
interested_parties_(grpc_pollset_set_create()),
|
983
|
+
service_config_parser_index_(
|
984
|
+
internal::ClientChannelServiceConfigParser::ParserIndex()),
|
1045
985
|
work_serializer_(std::make_shared<WorkSerializer>()),
|
1046
986
|
state_tracker_("client_channel", GRPC_CHANNEL_IDLE),
|
1047
|
-
subchannel_pool_(GetSubchannelPool(
|
1048
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
987
|
+
subchannel_pool_(GetSubchannelPool(channel_args_)) {
|
988
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1049
989
|
gpr_log(GPR_INFO, "chand=%p: creating client_channel for channel stack %p",
|
1050
990
|
this, owning_stack_);
|
1051
991
|
}
|
@@ -1053,80 +993,76 @@ ClientChannel::ClientChannel(grpc_channel_element_args* args,
|
|
1053
993
|
grpc_client_channel_start_backup_polling(interested_parties_);
|
1054
994
|
// Check client channel factory.
|
1055
995
|
if (client_channel_factory_ == nullptr) {
|
1056
|
-
*error =
|
996
|
+
*error = GRPC_ERROR_CREATE(
|
1057
997
|
"Missing client channel factory in args for client channel filter");
|
1058
998
|
return;
|
1059
999
|
}
|
1060
1000
|
// Get default service config. If none is specified via the client API,
|
1061
1001
|
// we use an empty config.
|
1062
|
-
|
1063
|
-
|
1064
|
-
if (service_config_json
|
1065
|
-
*error =
|
1066
|
-
|
1067
|
-
|
1068
|
-
if (
|
1069
|
-
|
1002
|
+
absl::optional<absl::string_view> service_config_json =
|
1003
|
+
channel_args_.GetString(GRPC_ARG_SERVICE_CONFIG);
|
1004
|
+
if (!service_config_json.has_value()) service_config_json = "{}";
|
1005
|
+
*error = absl::OkStatus();
|
1006
|
+
auto service_config =
|
1007
|
+
ServiceConfigImpl::Create(channel_args_, *service_config_json);
|
1008
|
+
if (!service_config.ok()) {
|
1009
|
+
*error = absl_status_to_grpc_error(service_config.status());
|
1070
1010
|
return;
|
1071
1011
|
}
|
1012
|
+
default_service_config_ = std::move(*service_config);
|
1072
1013
|
// Get URI to resolve, using proxy mapper if needed.
|
1073
|
-
|
1074
|
-
|
1075
|
-
if (server_uri
|
1076
|
-
*error =
|
1014
|
+
absl::optional<std::string> server_uri =
|
1015
|
+
channel_args_.GetOwnedString(GRPC_ARG_SERVER_URI);
|
1016
|
+
if (!server_uri.has_value()) {
|
1017
|
+
*error = GRPC_ERROR_CREATE(
|
1077
1018
|
"target URI channel arg missing or wrong type in client channel "
|
1078
1019
|
"filter");
|
1079
1020
|
return;
|
1080
1021
|
}
|
1081
|
-
uri_to_resolve_ =
|
1082
|
-
|
1083
|
-
|
1084
|
-
|
1085
|
-
&new_args);
|
1086
|
-
if (proxy_name != nullptr) {
|
1087
|
-
uri_to_resolve_ = proxy_name;
|
1088
|
-
gpr_free(proxy_name);
|
1089
|
-
}
|
1022
|
+
uri_to_resolve_ = CoreConfiguration::Get()
|
1023
|
+
.proxy_mapper_registry()
|
1024
|
+
.MapName(*server_uri, &channel_args_)
|
1025
|
+
.value_or(*server_uri);
|
1090
1026
|
// Make sure the URI to resolve is valid, so that we know that
|
1091
1027
|
// resolver creation will succeed later.
|
1092
|
-
if (!
|
1093
|
-
|
1028
|
+
if (!CoreConfiguration::Get().resolver_registry().IsValidTarget(
|
1029
|
+
uri_to_resolve_)) {
|
1030
|
+
*error = GRPC_ERROR_CREATE(
|
1094
1031
|
absl::StrCat("the target uri is not valid: ", uri_to_resolve_));
|
1095
1032
|
return;
|
1096
1033
|
}
|
1097
1034
|
// Strip out service config channel arg, so that it doesn't affect
|
1098
1035
|
// subchannel uniqueness when the args flow down to that layer.
|
1099
|
-
|
1100
|
-
channel_args_ = grpc_channel_args_copy_and_remove(
|
1101
|
-
new_args != nullptr ? new_args : args->channel_args, &arg_to_remove, 1);
|
1102
|
-
grpc_channel_args_destroy(new_args);
|
1036
|
+
channel_args_ = channel_args_.Remove(GRPC_ARG_SERVICE_CONFIG);
|
1103
1037
|
// Set initial keepalive time.
|
1104
|
-
|
1105
|
-
|
1106
|
-
|
1038
|
+
auto keepalive_arg = channel_args_.GetInt(GRPC_ARG_KEEPALIVE_TIME_MS);
|
1039
|
+
if (keepalive_arg.has_value()) {
|
1040
|
+
keepalive_time_ = Clamp(*keepalive_arg, 1, INT_MAX);
|
1041
|
+
} else {
|
1042
|
+
keepalive_time_ = -1; // unset
|
1043
|
+
}
|
1107
1044
|
// Set default authority.
|
1108
|
-
|
1109
|
-
|
1110
|
-
if (default_authority
|
1111
|
-
default_authority_ =
|
1045
|
+
absl::optional<std::string> default_authority =
|
1046
|
+
channel_args_.GetOwnedString(GRPC_ARG_DEFAULT_AUTHORITY);
|
1047
|
+
if (!default_authority.has_value()) {
|
1048
|
+
default_authority_ =
|
1049
|
+
CoreConfiguration::Get().resolver_registry().GetDefaultAuthority(
|
1050
|
+
*server_uri);
|
1112
1051
|
} else {
|
1113
|
-
default_authority_ = default_authority;
|
1052
|
+
default_authority_ = std::move(*default_authority);
|
1114
1053
|
}
|
1115
1054
|
// Success.
|
1116
|
-
*error =
|
1055
|
+
*error = absl::OkStatus();
|
1117
1056
|
}
|
1118
1057
|
|
1119
1058
|
ClientChannel::~ClientChannel() {
|
1120
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1059
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1121
1060
|
gpr_log(GPR_INFO, "chand=%p: destroying channel", this);
|
1122
1061
|
}
|
1123
1062
|
DestroyResolverAndLbPolicyLocked();
|
1124
|
-
grpc_channel_args_destroy(channel_args_);
|
1125
|
-
GRPC_ERROR_UNREF(resolver_transient_failure_error_);
|
1126
1063
|
// Stop backup polling.
|
1127
1064
|
grpc_client_channel_stop_backup_polling(interested_parties_);
|
1128
1065
|
grpc_pollset_set_destroy(interested_parties_);
|
1129
|
-
GRPC_ERROR_UNREF(disconnect_error_);
|
1130
1066
|
}
|
1131
1067
|
|
1132
1068
|
OrphanablePtr<ClientChannel::LoadBalancedCall>
|
@@ -1140,6 +1076,29 @@ ClientChannel::CreateLoadBalancedCall(
|
|
1140
1076
|
call_dispatch_controller, is_transparent_retry));
|
1141
1077
|
}
|
1142
1078
|
|
1079
|
+
ChannelArgs ClientChannel::MakeSubchannelArgs(
|
1080
|
+
const ChannelArgs& channel_args, const ChannelArgs& address_args,
|
1081
|
+
const RefCountedPtr<SubchannelPoolInterface>& subchannel_pool,
|
1082
|
+
const std::string& channel_default_authority) {
|
1083
|
+
// Note that we start with the channel-level args and then apply the
|
1084
|
+
// per-address args, so that if a value is present in both, the one
|
1085
|
+
// in the channel-level args is used. This is particularly important
|
1086
|
+
// for the GRPC_ARG_DEFAULT_AUTHORITY arg, which we want to allow
|
1087
|
+
// resolvers to set on a per-address basis only if the application
|
1088
|
+
// did not explicitly set it at the channel level.
|
1089
|
+
return channel_args.UnionWith(address_args)
|
1090
|
+
.SetObject(subchannel_pool)
|
1091
|
+
// If we haven't already set the default authority arg (i.e., it
|
1092
|
+
// was not explicitly set by the application nor overridden by
|
1093
|
+
// the resolver), add it from the channel's default.
|
1094
|
+
.SetIfUnset(GRPC_ARG_DEFAULT_AUTHORITY, channel_default_authority)
|
1095
|
+
// Remove channel args that should not affect subchannel
|
1096
|
+
// uniqueness.
|
1097
|
+
.Remove(GRPC_ARG_HEALTH_CHECK_SERVICE_NAME)
|
1098
|
+
.Remove(GRPC_ARG_INHIBIT_HEALTH_CHECKING)
|
1099
|
+
.Remove(GRPC_ARG_CHANNELZ_CHANNEL_NODE);
|
1100
|
+
}
|
1101
|
+
|
1143
1102
|
namespace {
|
1144
1103
|
|
1145
1104
|
RefCountedPtr<LoadBalancingPolicy::Config> ChooseLbPolicy(
|
@@ -1151,38 +1110,52 @@ RefCountedPtr<LoadBalancingPolicy::Config> ChooseLbPolicy(
|
|
1151
1110
|
}
|
1152
1111
|
// Try the deprecated LB policy name from the service config.
|
1153
1112
|
// If not, try the setting from channel args.
|
1154
|
-
|
1113
|
+
absl::optional<absl::string_view> policy_name;
|
1155
1114
|
if (!parsed_service_config->parsed_deprecated_lb_policy().empty()) {
|
1156
|
-
policy_name = parsed_service_config->parsed_deprecated_lb_policy()
|
1115
|
+
policy_name = parsed_service_config->parsed_deprecated_lb_policy();
|
1157
1116
|
} else {
|
1158
|
-
policy_name =
|
1159
|
-
|
1117
|
+
policy_name = resolver_result.args.GetString(GRPC_ARG_LB_POLICY_NAME);
|
1118
|
+
bool requires_config = false;
|
1119
|
+
if (policy_name.has_value() &&
|
1120
|
+
(!CoreConfiguration::Get()
|
1121
|
+
.lb_policy_registry()
|
1122
|
+
.LoadBalancingPolicyExists(*policy_name, &requires_config) ||
|
1123
|
+
requires_config)) {
|
1124
|
+
if (requires_config) {
|
1125
|
+
gpr_log(GPR_ERROR,
|
1126
|
+
"LB policy: %s passed through channel_args must not "
|
1127
|
+
"require a config. Using pick_first instead.",
|
1128
|
+
std::string(*policy_name).c_str());
|
1129
|
+
} else {
|
1130
|
+
gpr_log(GPR_ERROR,
|
1131
|
+
"LB policy: %s passed through channel_args does not exist. "
|
1132
|
+
"Using pick_first instead.",
|
1133
|
+
std::string(*policy_name).c_str());
|
1134
|
+
}
|
1135
|
+
policy_name = "pick_first";
|
1136
|
+
}
|
1160
1137
|
}
|
1161
1138
|
// Use pick_first if nothing was specified and we didn't select grpclb
|
1162
1139
|
// above.
|
1163
|
-
if (policy_name
|
1140
|
+
if (!policy_name.has_value()) policy_name = "pick_first";
|
1164
1141
|
// Now that we have the policy name, construct an empty config for it.
|
1165
1142
|
Json config_json = Json::Array{Json::Object{
|
1166
|
-
{policy_name, Json::Object{}},
|
1143
|
+
{std::string(*policy_name), Json::Object{}},
|
1167
1144
|
}};
|
1168
|
-
|
1169
|
-
|
1170
|
-
|
1145
|
+
auto lb_policy_config =
|
1146
|
+
CoreConfiguration::Get().lb_policy_registry().ParseLoadBalancingConfig(
|
1147
|
+
config_json);
|
1171
1148
|
// The policy name came from one of three places:
|
1172
1149
|
// - The deprecated loadBalancingPolicy field in the service config,
|
1173
1150
|
// in which case the code in ClientChannelServiceConfigParser
|
1174
1151
|
// already verified that the policy does not require a config.
|
1175
1152
|
// - One of the hard-coded values here, all of which are known to not
|
1176
1153
|
// require a config.
|
1177
|
-
// - A channel arg, in which case the
|
1178
|
-
//
|
1179
|
-
//
|
1180
|
-
|
1181
|
-
|
1182
|
-
// handling here.
|
1183
|
-
GPR_ASSERT(lb_policy_config != nullptr);
|
1184
|
-
GPR_ASSERT(parse_error == GRPC_ERROR_NONE);
|
1185
|
-
return lb_policy_config;
|
1154
|
+
// - A channel arg, in which case we check that the specified policy exists
|
1155
|
+
// and accepts an empty config. If not, we revert to using pick_first
|
1156
|
+
// lb_policy
|
1157
|
+
GPR_ASSERT(lb_policy_config.ok());
|
1158
|
+
return std::move(*lb_policy_config);
|
1186
1159
|
}
|
1187
1160
|
|
1188
1161
|
} // namespace
|
@@ -1190,9 +1163,12 @@ RefCountedPtr<LoadBalancingPolicy::Config> ChooseLbPolicy(
|
|
1190
1163
|
void ClientChannel::OnResolverResultChangedLocked(Resolver::Result result) {
|
1191
1164
|
// Handle race conditions.
|
1192
1165
|
if (resolver_ == nullptr) return;
|
1193
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1166
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1194
1167
|
gpr_log(GPR_INFO, "chand=%p: got resolver result", this);
|
1195
1168
|
}
|
1169
|
+
// Grab resolver result health callback.
|
1170
|
+
auto resolver_callback = std::move(result.result_health_callback);
|
1171
|
+
absl::Status resolver_result_status;
|
1196
1172
|
// We only want to trace the address resolution in the follow cases:
|
1197
1173
|
// (a) Address resolution resulted in service config change.
|
1198
1174
|
// (b) Address resolution that causes number of backends to go from
|
@@ -1202,32 +1178,35 @@ void ClientChannel::OnResolverResultChangedLocked(Resolver::Result result) {
|
|
1202
1178
|
// (d) Address resolution that causes a new LB policy to be created.
|
1203
1179
|
//
|
1204
1180
|
// We track a list of strings to eventually be concatenated and traced.
|
1205
|
-
|
1206
|
-
|
1181
|
+
std::vector<const char*> trace_strings;
|
1182
|
+
const bool resolution_contains_addresses =
|
1183
|
+
result.addresses.ok() && !result.addresses->empty();
|
1184
|
+
if (!resolution_contains_addresses &&
|
1185
|
+
previous_resolution_contained_addresses_) {
|
1207
1186
|
trace_strings.push_back("Address list became empty");
|
1208
|
-
} else if (
|
1187
|
+
} else if (resolution_contains_addresses &&
|
1209
1188
|
!previous_resolution_contained_addresses_) {
|
1210
1189
|
trace_strings.push_back("Address list became non-empty");
|
1211
1190
|
}
|
1212
|
-
previous_resolution_contained_addresses_ =
|
1191
|
+
previous_resolution_contained_addresses_ = resolution_contains_addresses;
|
1213
1192
|
std::string service_config_error_string_storage;
|
1214
|
-
if (result.
|
1193
|
+
if (!result.service_config.ok()) {
|
1215
1194
|
service_config_error_string_storage =
|
1216
|
-
|
1195
|
+
result.service_config.status().ToString();
|
1217
1196
|
trace_strings.push_back(service_config_error_string_storage.c_str());
|
1218
1197
|
}
|
1219
1198
|
// Choose the service config.
|
1220
1199
|
RefCountedPtr<ServiceConfig> service_config;
|
1221
1200
|
RefCountedPtr<ConfigSelector> config_selector;
|
1222
|
-
if (result.
|
1223
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1201
|
+
if (!result.service_config.ok()) {
|
1202
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1224
1203
|
gpr_log(GPR_INFO, "chand=%p: resolver returned service config error: %s",
|
1225
|
-
this,
|
1204
|
+
this, result.service_config.status().ToString().c_str());
|
1226
1205
|
}
|
1227
1206
|
// If the service config was invalid, then fallback to the
|
1228
1207
|
// previously returned service config.
|
1229
1208
|
if (saved_service_config_ != nullptr) {
|
1230
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1209
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1231
1210
|
gpr_log(GPR_INFO,
|
1232
1211
|
"chand=%p: resolver returned invalid service config. "
|
1233
1212
|
"Continuing to use previous service config.",
|
@@ -1236,15 +1215,17 @@ void ClientChannel::OnResolverResultChangedLocked(Resolver::Result result) {
|
|
1236
1215
|
service_config = saved_service_config_;
|
1237
1216
|
config_selector = saved_config_selector_;
|
1238
1217
|
} else {
|
1239
|
-
// We received
|
1218
|
+
// We received a service config error and we don't have a
|
1240
1219
|
// previous service config to fall back to. Put the channel into
|
1241
1220
|
// TRANSIENT_FAILURE.
|
1242
|
-
OnResolverErrorLocked(
|
1221
|
+
OnResolverErrorLocked(result.service_config.status());
|
1243
1222
|
trace_strings.push_back("no valid service config");
|
1223
|
+
resolver_result_status =
|
1224
|
+
absl::UnavailableError("no valid service config");
|
1244
1225
|
}
|
1245
|
-
} else if (result.service_config == nullptr) {
|
1226
|
+
} else if (*result.service_config == nullptr) {
|
1246
1227
|
// Resolver did not return any service config.
|
1247
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1228
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1248
1229
|
gpr_log(GPR_INFO,
|
1249
1230
|
"chand=%p: resolver returned no service config. Using default "
|
1250
1231
|
"service config for channel.",
|
@@ -1253,15 +1234,18 @@ void ClientChannel::OnResolverResultChangedLocked(Resolver::Result result) {
|
|
1253
1234
|
service_config = default_service_config_;
|
1254
1235
|
} else {
|
1255
1236
|
// Use ServiceConfig and ConfigSelector returned by resolver.
|
1256
|
-
service_config = result.service_config;
|
1257
|
-
config_selector =
|
1237
|
+
service_config = std::move(*result.service_config);
|
1238
|
+
config_selector = result.args.GetObjectRef<ConfigSelector>();
|
1258
1239
|
}
|
1240
|
+
// Note: The only case in which service_config is null here is if the resolver
|
1241
|
+
// returned a service config error and we don't have a previous service
|
1242
|
+
// config to fall back to.
|
1259
1243
|
if (service_config != nullptr) {
|
1260
1244
|
// Extract global config for client channel.
|
1261
1245
|
const internal::ClientChannelGlobalParsedConfig* parsed_service_config =
|
1262
1246
|
static_cast<const internal::ClientChannelGlobalParsedConfig*>(
|
1263
1247
|
service_config->GetGlobalParsedConfig(
|
1264
|
-
|
1248
|
+
service_config_parser_index_));
|
1265
1249
|
// Choose LB policy config.
|
1266
1250
|
RefCountedPtr<LoadBalancingPolicy::Config> lb_policy_config =
|
1267
1251
|
ChooseLbPolicy(result, parsed_service_config);
|
@@ -1275,14 +1259,14 @@ void ClientChannel::OnResolverResultChangedLocked(Resolver::Result result) {
|
|
1275
1259
|
// If either has changed, apply the global parameters now.
|
1276
1260
|
if (service_config_changed || config_selector_changed) {
|
1277
1261
|
// Update service config in control plane.
|
1278
|
-
UpdateServiceConfigInControlPlaneLocked(
|
1279
|
-
|
1280
|
-
|
1281
|
-
} else if (GRPC_TRACE_FLAG_ENABLED(
|
1262
|
+
UpdateServiceConfigInControlPlaneLocked(
|
1263
|
+
std::move(service_config), std::move(config_selector),
|
1264
|
+
std::string(lb_policy_config->name()));
|
1265
|
+
} else if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1282
1266
|
gpr_log(GPR_INFO, "chand=%p: service config not changed", this);
|
1283
1267
|
}
|
1284
1268
|
// Create or update LB policy, as needed.
|
1285
|
-
CreateOrUpdateLbPolicyLocked(
|
1269
|
+
resolver_result_status = CreateOrUpdateLbPolicyLocked(
|
1286
1270
|
std::move(lb_policy_config),
|
1287
1271
|
parsed_service_config->health_check_service_name(), std::move(result));
|
1288
1272
|
if (service_config_changed || config_selector_changed) {
|
@@ -1296,6 +1280,10 @@ void ClientChannel::OnResolverResultChangedLocked(Resolver::Result result) {
|
|
1296
1280
|
trace_strings.push_back("Service config changed");
|
1297
1281
|
}
|
1298
1282
|
}
|
1283
|
+
// Invoke resolver callback if needed.
|
1284
|
+
if (resolver_callback != nullptr) {
|
1285
|
+
resolver_callback(std::move(resolver_result_status));
|
1286
|
+
}
|
1299
1287
|
// Add channel trace event.
|
1300
1288
|
if (!trace_strings.empty()) {
|
1301
1289
|
std::string message =
|
@@ -1307,34 +1295,27 @@ void ClientChannel::OnResolverResultChangedLocked(Resolver::Result result) {
|
|
1307
1295
|
}
|
1308
1296
|
}
|
1309
1297
|
|
1310
|
-
void ClientChannel::OnResolverErrorLocked(
|
1311
|
-
if (resolver_ == nullptr)
|
1312
|
-
|
1313
|
-
return;
|
1314
|
-
}
|
1315
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
|
1298
|
+
void ClientChannel::OnResolverErrorLocked(absl::Status status) {
|
1299
|
+
if (resolver_ == nullptr) return;
|
1300
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1316
1301
|
gpr_log(GPR_INFO, "chand=%p: resolver transient failure: %s", this,
|
1317
|
-
|
1302
|
+
status.ToString().c_str());
|
1318
1303
|
}
|
1319
1304
|
// If we already have an LB policy from a previous resolution
|
1320
1305
|
// result, then we continue to let it set the connectivity state.
|
1321
1306
|
// Otherwise, we go into TRANSIENT_FAILURE.
|
1322
1307
|
if (lb_policy_ == nullptr) {
|
1323
|
-
grpc_error_handle state_error =
|
1324
|
-
GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
|
1325
|
-
"Resolver transient failure", &error, 1);
|
1326
|
-
absl::Status status = grpc_error_to_absl_status(state_error);
|
1327
1308
|
{
|
1328
1309
|
MutexLock lock(&resolution_mu_);
|
1329
1310
|
// Update resolver transient failure.
|
1330
|
-
|
1331
|
-
|
1311
|
+
resolver_transient_failure_error_ =
|
1312
|
+
MaybeRewriteIllegalStatusCode(status, "resolver");
|
1332
1313
|
// Process calls that were queued waiting for the resolver result.
|
1333
1314
|
for (ResolverQueuedCall* call = resolver_queued_calls_; call != nullptr;
|
1334
1315
|
call = call->next) {
|
1335
1316
|
grpc_call_element* elem = call->elem;
|
1336
1317
|
CallData* calld = static_cast<CallData*>(elem->call_data);
|
1337
|
-
grpc_error_handle error
|
1318
|
+
grpc_error_handle error;
|
1338
1319
|
if (calld->CheckResolutionLocked(elem, &error)) {
|
1339
1320
|
calld->AsyncResolutionDone(elem, error);
|
1340
1321
|
}
|
@@ -1343,12 +1324,11 @@ void ClientChannel::OnResolverErrorLocked(grpc_error_handle error) {
|
|
1343
1324
|
// Update connectivity state.
|
1344
1325
|
UpdateStateAndPickerLocked(
|
1345
1326
|
GRPC_CHANNEL_TRANSIENT_FAILURE, status, "resolver failure",
|
1346
|
-
|
1327
|
+
MakeRefCounted<LoadBalancingPolicy::TransientFailurePicker>(status));
|
1347
1328
|
}
|
1348
|
-
GRPC_ERROR_UNREF(error);
|
1349
1329
|
}
|
1350
1330
|
|
1351
|
-
|
1331
|
+
absl::Status ClientChannel::CreateOrUpdateLbPolicyLocked(
|
1352
1332
|
RefCountedPtr<LoadBalancingPolicy::Config> lb_policy_config,
|
1353
1333
|
const absl::optional<std::string>& health_check_service_name,
|
1354
1334
|
Resolver::Result result) {
|
@@ -1356,43 +1336,40 @@ void ClientChannel::CreateOrUpdateLbPolicyLocked(
|
|
1356
1336
|
LoadBalancingPolicy::UpdateArgs update_args;
|
1357
1337
|
update_args.addresses = std::move(result.addresses);
|
1358
1338
|
update_args.config = std::move(lb_policy_config);
|
1359
|
-
|
1360
|
-
absl::InlinedVector<grpc_arg, 1> args_to_add;
|
1361
|
-
if (health_check_service_name.has_value()) {
|
1362
|
-
args_to_add.push_back(grpc_channel_arg_string_create(
|
1363
|
-
const_cast<char*>(GRPC_ARG_HEALTH_CHECK_SERVICE_NAME),
|
1364
|
-
const_cast<char*>(health_check_service_name->c_str())));
|
1365
|
-
}
|
1339
|
+
update_args.resolution_note = std::move(result.resolution_note);
|
1366
1340
|
// Remove the config selector from channel args so that we're not holding
|
1367
1341
|
// unnecessary refs that cause it to be destroyed somewhere other than in the
|
1368
1342
|
// WorkSerializer.
|
1369
|
-
|
1370
|
-
|
1371
|
-
|
1343
|
+
update_args.args = result.args.Remove(GRPC_ARG_CONFIG_SELECTOR);
|
1344
|
+
// Add health check service name to channel args.
|
1345
|
+
if (health_check_service_name.has_value()) {
|
1346
|
+
update_args.args = update_args.args.Set(GRPC_ARG_HEALTH_CHECK_SERVICE_NAME,
|
1347
|
+
*health_check_service_name);
|
1348
|
+
}
|
1372
1349
|
// Create policy if needed.
|
1373
1350
|
if (lb_policy_ == nullptr) {
|
1374
|
-
lb_policy_ = CreateLbPolicyLocked(
|
1351
|
+
lb_policy_ = CreateLbPolicyLocked(update_args.args);
|
1375
1352
|
}
|
1376
1353
|
// Update the policy.
|
1377
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1354
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1378
1355
|
gpr_log(GPR_INFO, "chand=%p: Updating child policy %p", this,
|
1379
1356
|
lb_policy_.get());
|
1380
1357
|
}
|
1381
|
-
lb_policy_->UpdateLocked(std::move(update_args));
|
1358
|
+
return lb_policy_->UpdateLocked(std::move(update_args));
|
1382
1359
|
}
|
1383
1360
|
|
1384
1361
|
// Creates a new LB policy.
|
1385
1362
|
OrphanablePtr<LoadBalancingPolicy> ClientChannel::CreateLbPolicyLocked(
|
1386
|
-
const
|
1363
|
+
const ChannelArgs& args) {
|
1387
1364
|
LoadBalancingPolicy::Args lb_policy_args;
|
1388
1365
|
lb_policy_args.work_serializer = work_serializer_;
|
1389
1366
|
lb_policy_args.channel_control_helper =
|
1390
|
-
|
1391
|
-
lb_policy_args.args =
|
1367
|
+
std::make_unique<ClientChannelControlHelper>(this);
|
1368
|
+
lb_policy_args.args = args;
|
1392
1369
|
OrphanablePtr<LoadBalancingPolicy> lb_policy =
|
1393
1370
|
MakeOrphanable<ChildPolicyHandler>(std::move(lb_policy_args),
|
1394
|
-
&
|
1395
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1371
|
+
&grpc_client_channel_trace);
|
1372
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1396
1373
|
gpr_log(GPR_INFO, "chand=%p: created new LB policy %p", this,
|
1397
1374
|
lb_policy.get());
|
1398
1375
|
}
|
@@ -1427,26 +1404,23 @@ void ClientChannel::RemoveResolverQueuedCall(ResolverQueuedCall* to_remove,
|
|
1427
1404
|
|
1428
1405
|
void ClientChannel::UpdateServiceConfigInControlPlaneLocked(
|
1429
1406
|
RefCountedPtr<ServiceConfig> service_config,
|
1430
|
-
RefCountedPtr<ConfigSelector> config_selector,
|
1431
|
-
|
1432
|
-
|
1433
|
-
|
1434
|
-
|
1435
|
-
"chand=%p: resolver returned updated service config: \"%s\"", this,
|
1436
|
-
service_config_json.get());
|
1407
|
+
RefCountedPtr<ConfigSelector> config_selector, std::string lb_policy_name) {
|
1408
|
+
std::string service_config_json(service_config->json_string());
|
1409
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1410
|
+
gpr_log(GPR_INFO, "chand=%p: using service config: \"%s\"", this,
|
1411
|
+
service_config_json.c_str());
|
1437
1412
|
}
|
1438
1413
|
// Save service config.
|
1439
1414
|
saved_service_config_ = std::move(service_config);
|
1440
1415
|
// Swap out the data used by GetChannelInfo().
|
1441
|
-
UniquePtr<char> lb_policy_name_owned(gpr_strdup(lb_policy_name));
|
1442
1416
|
{
|
1443
1417
|
MutexLock lock(&info_mu_);
|
1444
|
-
info_lb_policy_name_ = std::move(
|
1418
|
+
info_lb_policy_name_ = std::move(lb_policy_name);
|
1445
1419
|
info_service_config_json_ = std::move(service_config_json);
|
1446
1420
|
}
|
1447
1421
|
// Save config selector.
|
1448
1422
|
saved_config_selector_ = std::move(config_selector);
|
1449
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1423
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1450
1424
|
gpr_log(GPR_INFO, "chand=%p: using ConfigSelector %p", this,
|
1451
1425
|
saved_config_selector_.get());
|
1452
1426
|
}
|
@@ -1457,7 +1431,7 @@ void ClientChannel::UpdateServiceConfigInDataPlaneLocked() {
|
|
1457
1431
|
RefCountedPtr<ServiceConfig> service_config = saved_service_config_;
|
1458
1432
|
// Grab ref to config selector. Use default if resolver didn't supply one.
|
1459
1433
|
RefCountedPtr<ConfigSelector> config_selector = saved_config_selector_;
|
1460
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1434
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1461
1435
|
gpr_log(GPR_INFO, "chand=%p: switching to ConfigSelector %p", this,
|
1462
1436
|
saved_config_selector_.get());
|
1463
1437
|
}
|
@@ -1465,19 +1439,11 @@ void ClientChannel::UpdateServiceConfigInDataPlaneLocked() {
|
|
1465
1439
|
config_selector =
|
1466
1440
|
MakeRefCounted<DefaultConfigSelector>(saved_service_config_);
|
1467
1441
|
}
|
1468
|
-
|
1469
|
-
|
1470
|
-
const_cast<char*>(GRPC_ARG_CLIENT_CHANNEL), this,
|
1471
|
-
&kClientChannelArgPointerVtable),
|
1472
|
-
grpc_channel_arg_pointer_create(
|
1473
|
-
const_cast<char*>(GRPC_ARG_SERVICE_CONFIG_OBJ), service_config.get(),
|
1474
|
-
&kServiceConfigObjArgPointerVtable),
|
1475
|
-
};
|
1476
|
-
grpc_channel_args* new_args = grpc_channel_args_copy_and_add(
|
1477
|
-
channel_args_, args_to_add.data(), args_to_add.size());
|
1478
|
-
new_args = config_selector->ModifyChannelArgs(new_args);
|
1442
|
+
ChannelArgs new_args =
|
1443
|
+
channel_args_.SetObject(this).SetObject(service_config);
|
1479
1444
|
bool enable_retries =
|
1480
|
-
|
1445
|
+
!new_args.WantMinimalStack() &&
|
1446
|
+
new_args.GetBool(GRPC_ARG_ENABLE_RETRIES).value_or(true);
|
1481
1447
|
// Construct dynamic filter stack.
|
1482
1448
|
std::vector<const grpc_channel_filter*> filters =
|
1483
1449
|
config_selector->GetFilters();
|
@@ -1489,15 +1455,13 @@ void ClientChannel::UpdateServiceConfigInDataPlaneLocked() {
|
|
1489
1455
|
RefCountedPtr<DynamicFilters> dynamic_filters =
|
1490
1456
|
DynamicFilters::Create(new_args, std::move(filters));
|
1491
1457
|
GPR_ASSERT(dynamic_filters != nullptr);
|
1492
|
-
grpc_channel_args_destroy(new_args);
|
1493
1458
|
// Grab data plane lock to update service config.
|
1494
1459
|
//
|
1495
1460
|
// We defer unreffing the old values (and deallocating memory) until
|
1496
1461
|
// after releasing the lock to keep the critical section small.
|
1497
1462
|
{
|
1498
1463
|
MutexLock lock(&resolution_mu_);
|
1499
|
-
|
1500
|
-
resolver_transient_failure_error_ = GRPC_ERROR_NONE;
|
1464
|
+
resolver_transient_failure_error_ = absl::OkStatus();
|
1501
1465
|
// Update service config.
|
1502
1466
|
received_service_config_data_ = true;
|
1503
1467
|
// Old values will be unreffed after lock is released.
|
@@ -1518,7 +1482,7 @@ void ClientChannel::UpdateServiceConfigInDataPlaneLocked() {
|
|
1518
1482
|
ExecCtx::Get()->InvalidateNow();
|
1519
1483
|
grpc_call_element* elem = call->elem;
|
1520
1484
|
CallData* calld = static_cast<CallData*>(elem->call_data);
|
1521
|
-
grpc_error_handle error
|
1485
|
+
grpc_error_handle error;
|
1522
1486
|
if (calld->CheckResolutionLocked(elem, &error)) {
|
1523
1487
|
calld->AsyncResolutionDone(elem, error);
|
1524
1488
|
}
|
@@ -1529,33 +1493,33 @@ void ClientChannel::UpdateServiceConfigInDataPlaneLocked() {
|
|
1529
1493
|
}
|
1530
1494
|
|
1531
1495
|
void ClientChannel::CreateResolverLocked() {
|
1532
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1496
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1533
1497
|
gpr_log(GPR_INFO, "chand=%p: starting name resolution", this);
|
1534
1498
|
}
|
1535
|
-
resolver_ =
|
1499
|
+
resolver_ = CoreConfiguration::Get().resolver_registry().CreateResolver(
|
1536
1500
|
uri_to_resolve_.c_str(), channel_args_, interested_parties_,
|
1537
|
-
work_serializer_,
|
1501
|
+
work_serializer_, std::make_unique<ResolverResultHandler>(this));
|
1538
1502
|
// Since the validity of the args was checked when the channel was created,
|
1539
1503
|
// CreateResolver() must return a non-null result.
|
1540
1504
|
GPR_ASSERT(resolver_ != nullptr);
|
1541
1505
|
UpdateStateAndPickerLocked(
|
1542
1506
|
GRPC_CHANNEL_CONNECTING, absl::Status(), "started resolving",
|
1543
|
-
|
1507
|
+
MakeRefCounted<LoadBalancingPolicy::QueuePicker>(nullptr));
|
1544
1508
|
resolver_->StartLocked();
|
1545
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1509
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1546
1510
|
gpr_log(GPR_INFO, "chand=%p: created resolver=%p", this, resolver_.get());
|
1547
1511
|
}
|
1548
1512
|
}
|
1549
1513
|
|
1550
1514
|
void ClientChannel::DestroyResolverAndLbPolicyLocked() {
|
1551
1515
|
if (resolver_ != nullptr) {
|
1552
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1516
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1553
1517
|
gpr_log(GPR_INFO, "chand=%p: shutting down resolver=%p", this,
|
1554
1518
|
resolver_.get());
|
1555
1519
|
}
|
1556
1520
|
resolver_.reset();
|
1557
1521
|
if (lb_policy_ != nullptr) {
|
1558
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1522
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1559
1523
|
gpr_log(GPR_INFO, "chand=%p: shutting down lb_policy=%p", this,
|
1560
1524
|
lb_policy_.get());
|
1561
1525
|
}
|
@@ -1569,7 +1533,7 @@ void ClientChannel::DestroyResolverAndLbPolicyLocked() {
|
|
1569
1533
|
void ClientChannel::UpdateStateAndPickerLocked(
|
1570
1534
|
grpc_connectivity_state state, const absl::Status& status,
|
1571
1535
|
const char* reason,
|
1572
|
-
|
1536
|
+
RefCountedPtr<LoadBalancingPolicy::SubchannelPicker> picker) {
|
1573
1537
|
// Special case for IDLE and SHUTDOWN states.
|
1574
1538
|
if (picker == nullptr || state == GRPC_CHANNEL_SHUTDOWN) {
|
1575
1539
|
saved_service_config_.reset();
|
@@ -1616,7 +1580,7 @@ void ClientChannel::UpdateStateAndPickerLocked(
|
|
1616
1580
|
// on the stale value, which results in the timer firing too early. To
|
1617
1581
|
// avoid this, we invalidate the cached value for each call we process.
|
1618
1582
|
ExecCtx::Get()->InvalidateNow();
|
1619
|
-
grpc_error_handle error
|
1583
|
+
grpc_error_handle error;
|
1620
1584
|
if (call->lb_call->PickSubchannelLocked(&error)) {
|
1621
1585
|
call->lb_call->AsyncPickDone(error);
|
1622
1586
|
}
|
@@ -1660,7 +1624,7 @@ T HandlePickResult(
|
|
1660
1624
|
|
1661
1625
|
grpc_error_handle ClientChannel::DoPingLocked(grpc_transport_op* op) {
|
1662
1626
|
if (state_tracker_.state() != GRPC_CHANNEL_READY) {
|
1663
|
-
return
|
1627
|
+
return GRPC_ERROR_CREATE("channel not connected");
|
1664
1628
|
}
|
1665
1629
|
LoadBalancingPolicy::PickResult result;
|
1666
1630
|
{
|
@@ -1671,18 +1635,21 @@ grpc_error_handle ClientChannel::DoPingLocked(grpc_transport_op* op) {
|
|
1671
1635
|
&result,
|
1672
1636
|
// Complete pick.
|
1673
1637
|
[op](LoadBalancingPolicy::PickResult::Complete* complete_pick)
|
1674
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(
|
1638
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(*ClientChannel::work_serializer_) {
|
1675
1639
|
SubchannelWrapper* subchannel = static_cast<SubchannelWrapper*>(
|
1676
1640
|
complete_pick->subchannel.get());
|
1677
1641
|
RefCountedPtr<ConnectedSubchannel> connected_subchannel =
|
1678
1642
|
subchannel->connected_subchannel();
|
1643
|
+
if (connected_subchannel == nullptr) {
|
1644
|
+
return GRPC_ERROR_CREATE("LB pick for ping not connected");
|
1645
|
+
}
|
1679
1646
|
connected_subchannel->Ping(op->send_ping.on_initiate,
|
1680
1647
|
op->send_ping.on_ack);
|
1681
|
-
return
|
1648
|
+
return absl::OkStatus();
|
1682
1649
|
},
|
1683
1650
|
// Queue pick.
|
1684
1651
|
[](LoadBalancingPolicy::PickResult::Queue* /*queue_pick*/) {
|
1685
|
-
return
|
1652
|
+
return GRPC_ERROR_CREATE("LB picker queued call");
|
1686
1653
|
},
|
1687
1654
|
// Fail pick.
|
1688
1655
|
[](LoadBalancingPolicy::PickResult::Fail* fail_pick) {
|
@@ -1706,9 +1673,8 @@ void ClientChannel::StartTransportOpLocked(grpc_transport_op* op) {
|
|
1706
1673
|
// Ping.
|
1707
1674
|
if (op->send_ping.on_initiate != nullptr || op->send_ping.on_ack != nullptr) {
|
1708
1675
|
grpc_error_handle error = DoPingLocked(op);
|
1709
|
-
if (error
|
1710
|
-
ExecCtx::Run(DEBUG_LOCATION, op->send_ping.on_initiate,
|
1711
|
-
GRPC_ERROR_REF(error));
|
1676
|
+
if (!error.ok()) {
|
1677
|
+
ExecCtx::Run(DEBUG_LOCATION, op->send_ping.on_initiate, error);
|
1712
1678
|
ExecCtx::Run(DEBUG_LOCATION, op->send_ping.on_ack, error);
|
1713
1679
|
}
|
1714
1680
|
op->bind_pollset = nullptr;
|
@@ -1722,34 +1688,34 @@ void ClientChannel::StartTransportOpLocked(grpc_transport_op* op) {
|
|
1722
1688
|
}
|
1723
1689
|
}
|
1724
1690
|
// Disconnect or enter IDLE.
|
1725
|
-
if (op->disconnect_with_error
|
1726
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1691
|
+
if (!op->disconnect_with_error.ok()) {
|
1692
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1727
1693
|
gpr_log(GPR_INFO, "chand=%p: disconnect_with_error: %s", this,
|
1728
|
-
|
1694
|
+
StatusToString(op->disconnect_with_error).c_str());
|
1729
1695
|
}
|
1730
1696
|
DestroyResolverAndLbPolicyLocked();
|
1731
1697
|
intptr_t value;
|
1732
1698
|
if (grpc_error_get_int(op->disconnect_with_error,
|
1733
|
-
|
1699
|
+
StatusIntProperty::ChannelConnectivityState,
|
1700
|
+
&value) &&
|
1734
1701
|
static_cast<grpc_connectivity_state>(value) == GRPC_CHANNEL_IDLE) {
|
1735
|
-
if (disconnect_error_
|
1702
|
+
if (disconnect_error_.ok()) {
|
1736
1703
|
// Enter IDLE state.
|
1737
1704
|
UpdateStateAndPickerLocked(GRPC_CHANNEL_IDLE, absl::Status(),
|
1738
1705
|
"channel entering IDLE", nullptr);
|
1739
1706
|
}
|
1740
|
-
GRPC_ERROR_UNREF(op->disconnect_with_error);
|
1741
1707
|
} else {
|
1742
1708
|
// Disconnect.
|
1743
|
-
GPR_ASSERT(disconnect_error_
|
1709
|
+
GPR_ASSERT(disconnect_error_.ok());
|
1744
1710
|
disconnect_error_ = op->disconnect_with_error;
|
1745
1711
|
UpdateStateAndPickerLocked(
|
1746
1712
|
GRPC_CHANNEL_SHUTDOWN, absl::Status(), "shutdown from API",
|
1747
|
-
|
1713
|
+
MakeRefCounted<LoadBalancingPolicy::TransientFailurePicker>(
|
1748
1714
|
grpc_error_to_absl_status(op->disconnect_with_error)));
|
1749
1715
|
}
|
1750
1716
|
}
|
1751
1717
|
GRPC_CHANNEL_STACK_UNREF(owning_stack_, "start_transport_op");
|
1752
|
-
ExecCtx::Run(DEBUG_LOCATION, op->on_consumed,
|
1718
|
+
ExecCtx::Run(DEBUG_LOCATION, op->on_consumed, absl::OkStatus());
|
1753
1719
|
}
|
1754
1720
|
|
1755
1721
|
void ClientChannel::StartTransportOp(grpc_channel_element* elem,
|
@@ -1763,7 +1729,7 @@ void ClientChannel::StartTransportOp(grpc_channel_element* elem,
|
|
1763
1729
|
// Pop into control plane work_serializer for remaining ops.
|
1764
1730
|
GRPC_CHANNEL_STACK_REF(chand->owning_stack_, "start_transport_op");
|
1765
1731
|
chand->work_serializer_->Run(
|
1766
|
-
[chand, op]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand->work_serializer_) {
|
1732
|
+
[chand, op]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand->work_serializer_) {
|
1767
1733
|
chand->StartTransportOpLocked(op);
|
1768
1734
|
},
|
1769
1735
|
DEBUG_LOCATION);
|
@@ -1774,11 +1740,11 @@ void ClientChannel::GetChannelInfo(grpc_channel_element* elem,
|
|
1774
1740
|
ClientChannel* chand = static_cast<ClientChannel*>(elem->channel_data);
|
1775
1741
|
MutexLock lock(&chand->info_mu_);
|
1776
1742
|
if (info->lb_policy_name != nullptr) {
|
1777
|
-
*info->lb_policy_name = gpr_strdup(chand->info_lb_policy_name_.
|
1743
|
+
*info->lb_policy_name = gpr_strdup(chand->info_lb_policy_name_.c_str());
|
1778
1744
|
}
|
1779
1745
|
if (info->service_config_json != nullptr) {
|
1780
1746
|
*info->service_config_json =
|
1781
|
-
gpr_strdup(chand->info_service_config_json_.
|
1747
|
+
gpr_strdup(chand->info_service_config_json_.c_str());
|
1782
1748
|
}
|
1783
1749
|
}
|
1784
1750
|
|
@@ -1825,7 +1791,7 @@ grpc_connectivity_state ClientChannel::CheckConnectivityState(
|
|
1825
1791
|
if (out == GRPC_CHANNEL_IDLE && try_to_connect) {
|
1826
1792
|
GRPC_CHANNEL_STACK_REF(owning_stack_, "TryToConnect");
|
1827
1793
|
work_serializer_->Run([this]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(
|
1828
|
-
work_serializer_) { TryToConnectLocked(); },
|
1794
|
+
*work_serializer_) { TryToConnectLocked(); },
|
1829
1795
|
DEBUG_LOCATION);
|
1830
1796
|
}
|
1831
1797
|
return out;
|
@@ -1852,13 +1818,10 @@ ClientChannel::CallData::CallData(grpc_call_element* elem,
|
|
1852
1818
|
: deadline_state_(elem, args,
|
1853
1819
|
GPR_LIKELY(chand.deadline_checking_enabled_)
|
1854
1820
|
? args.deadline
|
1855
|
-
:
|
1856
|
-
path_(
|
1821
|
+
: Timestamp::InfFuture()),
|
1822
|
+
path_(CSliceRef(args.path)),
|
1857
1823
|
call_start_time_(args.start_time),
|
1858
1824
|
deadline_(args.deadline),
|
1859
|
-
arena_(args.arena),
|
1860
|
-
owning_call_(args.call_stack),
|
1861
|
-
call_combiner_(args.call_combiner),
|
1862
1825
|
call_context_(args.context) {
|
1863
1826
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
1864
1827
|
gpr_log(GPR_INFO, "chand=%p calld=%p: created call", &chand, this);
|
@@ -1866,8 +1829,7 @@ ClientChannel::CallData::CallData(grpc_call_element* elem,
|
|
1866
1829
|
}
|
1867
1830
|
|
1868
1831
|
ClientChannel::CallData::~CallData() {
|
1869
|
-
|
1870
|
-
GRPC_ERROR_UNREF(cancel_error_);
|
1832
|
+
CSliceUnref(path_);
|
1871
1833
|
// Make sure there are no remaining pending batches.
|
1872
1834
|
for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) {
|
1873
1835
|
GPR_ASSERT(pending_batches_[i] == nullptr);
|
@@ -1878,7 +1840,7 @@ grpc_error_handle ClientChannel::CallData::Init(
|
|
1878
1840
|
grpc_call_element* elem, const grpc_call_element_args* args) {
|
1879
1841
|
ClientChannel* chand = static_cast<ClientChannel*>(elem->channel_data);
|
1880
1842
|
new (elem->call_data) CallData(elem, *chand, *args);
|
1881
|
-
return
|
1843
|
+
return absl::OkStatus();
|
1882
1844
|
}
|
1883
1845
|
|
1884
1846
|
void ClientChannel::CallData::Destroy(
|
@@ -1892,24 +1854,34 @@ void ClientChannel::CallData::Destroy(
|
|
1892
1854
|
dynamic_call->SetAfterCallStackDestroy(then_schedule_closure);
|
1893
1855
|
} else {
|
1894
1856
|
// TODO(yashkt) : This can potentially be a Closure::Run
|
1895
|
-
ExecCtx::Run(DEBUG_LOCATION, then_schedule_closure,
|
1857
|
+
ExecCtx::Run(DEBUG_LOCATION, then_schedule_closure, absl::OkStatus());
|
1896
1858
|
}
|
1897
1859
|
}
|
1898
1860
|
|
1899
1861
|
void ClientChannel::CallData::StartTransportStreamOpBatch(
|
1900
1862
|
grpc_call_element* elem, grpc_transport_stream_op_batch* batch) {
|
1901
|
-
GPR_TIMER_SCOPE("cc_start_transport_stream_op_batch", 0);
|
1902
1863
|
CallData* calld = static_cast<CallData*>(elem->call_data);
|
1903
1864
|
ClientChannel* chand = static_cast<ClientChannel*>(elem->channel_data);
|
1865
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace) &&
|
1866
|
+
!GRPC_TRACE_FLAG_ENABLED(grpc_trace_channel)) {
|
1867
|
+
gpr_log(GPR_INFO, "chand=%p calld=%p: batch started from above: %s", chand,
|
1868
|
+
calld, grpc_transport_stream_op_batch_string(batch).c_str());
|
1869
|
+
}
|
1904
1870
|
if (GPR_LIKELY(chand->deadline_checking_enabled_)) {
|
1905
|
-
grpc_deadline_state_client_start_transport_stream_op_batch(
|
1871
|
+
grpc_deadline_state_client_start_transport_stream_op_batch(
|
1872
|
+
&calld->deadline_state_, batch);
|
1906
1873
|
}
|
1907
1874
|
// Intercept recv_trailing_metadata to call CallDispatchController::Commit(),
|
1908
1875
|
// in case we wind up failing the call before we get down to the retry
|
1909
1876
|
// or LB call layer.
|
1910
1877
|
if (batch->recv_trailing_metadata) {
|
1911
|
-
calld->
|
1912
|
-
batch
|
1878
|
+
calld->original_recv_trailing_metadata_ready_ =
|
1879
|
+
batch->payload->recv_trailing_metadata.recv_trailing_metadata_ready;
|
1880
|
+
GRPC_CLOSURE_INIT(&calld->recv_trailing_metadata_ready_,
|
1881
|
+
RecvTrailingMetadataReadyForConfigSelectorCommitCallback,
|
1882
|
+
elem, nullptr);
|
1883
|
+
batch->payload->recv_trailing_metadata.recv_trailing_metadata_ready =
|
1884
|
+
&calld->recv_trailing_metadata_ready_;
|
1913
1885
|
}
|
1914
1886
|
// If we already have a dynamic call, pass the batch down to it.
|
1915
1887
|
// Note that once we have done so, we do not need to acquire the channel's
|
@@ -1925,15 +1897,14 @@ void ClientChannel::CallData::StartTransportStreamOpBatch(
|
|
1925
1897
|
// We do not yet have a dynamic call.
|
1926
1898
|
//
|
1927
1899
|
// If we've previously been cancelled, immediately fail any new batches.
|
1928
|
-
if (GPR_UNLIKELY(calld->cancel_error_
|
1900
|
+
if (GPR_UNLIKELY(!calld->cancel_error_.ok())) {
|
1929
1901
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
1930
1902
|
gpr_log(GPR_INFO, "chand=%p calld=%p: failing batch with error: %s",
|
1931
|
-
chand, calld,
|
1932
|
-
grpc_error_std_string(calld->cancel_error_).c_str());
|
1903
|
+
chand, calld, StatusToString(calld->cancel_error_).c_str());
|
1933
1904
|
}
|
1934
1905
|
// Note: This will release the call combiner.
|
1935
1906
|
grpc_transport_stream_op_batch_finish_with_failure(
|
1936
|
-
batch,
|
1907
|
+
batch, calld->cancel_error_, calld->call_combiner());
|
1937
1908
|
return;
|
1938
1909
|
}
|
1939
1910
|
// Handle cancellation.
|
@@ -1943,19 +1914,16 @@ void ClientChannel::CallData::StartTransportStreamOpBatch(
|
|
1943
1914
|
// cancelled before any batches are passed down (e.g., if the deadline
|
1944
1915
|
// is in the past when the call starts), we can return the right
|
1945
1916
|
// error to the caller when the first batch does get passed down.
|
1946
|
-
|
1947
|
-
calld->cancel_error_ =
|
1948
|
-
GRPC_ERROR_REF(batch->payload->cancel_stream.cancel_error);
|
1917
|
+
calld->cancel_error_ = batch->payload->cancel_stream.cancel_error;
|
1949
1918
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
1950
1919
|
gpr_log(GPR_INFO, "chand=%p calld=%p: recording cancel_error=%s", chand,
|
1951
|
-
calld,
|
1920
|
+
calld, StatusToString(calld->cancel_error_).c_str());
|
1952
1921
|
}
|
1953
1922
|
// Fail all pending batches.
|
1954
|
-
calld->PendingBatchesFail(elem,
|
1955
|
-
NoYieldCallCombiner);
|
1923
|
+
calld->PendingBatchesFail(elem, calld->cancel_error_, NoYieldCallCombiner);
|
1956
1924
|
// Note: This will release the call combiner.
|
1957
1925
|
grpc_transport_stream_op_batch_finish_with_failure(
|
1958
|
-
batch,
|
1926
|
+
batch, calld->cancel_error_, calld->call_combiner());
|
1959
1927
|
return;
|
1960
1928
|
}
|
1961
1929
|
// Add the batch to the pending list.
|
@@ -1970,7 +1938,7 @@ void ClientChannel::CallData::StartTransportStreamOpBatch(
|
|
1970
1938
|
"config",
|
1971
1939
|
chand, calld);
|
1972
1940
|
}
|
1973
|
-
CheckResolution(elem,
|
1941
|
+
CheckResolution(elem, absl::OkStatus());
|
1974
1942
|
} else {
|
1975
1943
|
// For all other batches, release the call combiner.
|
1976
1944
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
@@ -1978,7 +1946,7 @@ void ClientChannel::CallData::StartTransportStreamOpBatch(
|
|
1978
1946
|
"chand=%p calld=%p: saved batch, yielding call combiner", chand,
|
1979
1947
|
calld);
|
1980
1948
|
}
|
1981
|
-
GRPC_CALL_COMBINER_STOP(calld->
|
1949
|
+
GRPC_CALL_COMBINER_STOP(calld->call_combiner(),
|
1982
1950
|
"batch does not include send_initial_metadata");
|
1983
1951
|
}
|
1984
1952
|
}
|
@@ -2029,24 +1997,23 @@ void ClientChannel::CallData::FailPendingBatchInCallCombiner(
|
|
2029
1997
|
static_cast<grpc_transport_stream_op_batch*>(arg);
|
2030
1998
|
CallData* calld = static_cast<CallData*>(batch->handler_private.extra_arg);
|
2031
1999
|
// Note: This will release the call combiner.
|
2032
|
-
grpc_transport_stream_op_batch_finish_with_failure(
|
2033
|
-
|
2000
|
+
grpc_transport_stream_op_batch_finish_with_failure(batch, error,
|
2001
|
+
calld->call_combiner());
|
2034
2002
|
}
|
2035
2003
|
|
2036
2004
|
// This is called via the call combiner, so access to calld is synchronized.
|
2037
2005
|
void ClientChannel::CallData::PendingBatchesFail(
|
2038
2006
|
grpc_call_element* elem, grpc_error_handle error,
|
2039
2007
|
YieldCallCombinerPredicate yield_call_combiner_predicate) {
|
2040
|
-
GPR_ASSERT(error
|
2008
|
+
GPR_ASSERT(!error.ok());
|
2041
2009
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
2042
2010
|
size_t num_batches = 0;
|
2043
2011
|
for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) {
|
2044
2012
|
if (pending_batches_[i] != nullptr) ++num_batches;
|
2045
2013
|
}
|
2046
|
-
gpr_log(
|
2047
|
-
|
2048
|
-
|
2049
|
-
grpc_error_std_string(error).c_str());
|
2014
|
+
gpr_log(
|
2015
|
+
GPR_INFO, "chand=%p calld=%p: failing %" PRIuPTR " pending batches: %s",
|
2016
|
+
elem->channel_data, this, num_batches, StatusToString(error).c_str());
|
2050
2017
|
}
|
2051
2018
|
CallCombinerClosureList closures;
|
2052
2019
|
for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) {
|
@@ -2056,17 +2023,16 @@ void ClientChannel::CallData::PendingBatchesFail(
|
|
2056
2023
|
GRPC_CLOSURE_INIT(&batch->handler_private.closure,
|
2057
2024
|
FailPendingBatchInCallCombiner, batch,
|
2058
2025
|
grpc_schedule_on_exec_ctx);
|
2059
|
-
closures.Add(&batch->handler_private.closure,
|
2026
|
+
closures.Add(&batch->handler_private.closure, error,
|
2060
2027
|
"PendingBatchesFail");
|
2061
2028
|
batch = nullptr;
|
2062
2029
|
}
|
2063
2030
|
}
|
2064
2031
|
if (yield_call_combiner_predicate(closures)) {
|
2065
|
-
closures.RunClosures(
|
2032
|
+
closures.RunClosures(call_combiner());
|
2066
2033
|
} else {
|
2067
|
-
closures.RunClosuresWithoutYielding(
|
2034
|
+
closures.RunClosuresWithoutYielding(call_combiner());
|
2068
2035
|
}
|
2069
|
-
GRPC_ERROR_UNREF(error);
|
2070
2036
|
}
|
2071
2037
|
|
2072
2038
|
// This is called via the call combiner, so access to calld is synchronized.
|
@@ -2102,13 +2068,13 @@ void ClientChannel::CallData::PendingBatchesResume(grpc_call_element* elem) {
|
|
2102
2068
|
batch->handler_private.extra_arg = elem;
|
2103
2069
|
GRPC_CLOSURE_INIT(&batch->handler_private.closure,
|
2104
2070
|
ResumePendingBatchInCallCombiner, batch, nullptr);
|
2105
|
-
closures.Add(&batch->handler_private.closure,
|
2071
|
+
closures.Add(&batch->handler_private.closure, absl::OkStatus(),
|
2106
2072
|
"resuming pending batch from client channel call");
|
2107
2073
|
batch = nullptr;
|
2108
2074
|
}
|
2109
2075
|
}
|
2110
2076
|
// Note: This will release the call combiner.
|
2111
|
-
closures.RunClosures(
|
2077
|
+
closures.RunClosures(call_combiner());
|
2112
2078
|
}
|
2113
2079
|
|
2114
2080
|
//
|
@@ -2121,10 +2087,10 @@ class ClientChannel::CallData::ResolverQueuedCallCanceller {
|
|
2121
2087
|
public:
|
2122
2088
|
explicit ResolverQueuedCallCanceller(grpc_call_element* elem) : elem_(elem) {
|
2123
2089
|
auto* calld = static_cast<CallData*>(elem->call_data);
|
2124
|
-
GRPC_CALL_STACK_REF(calld->
|
2090
|
+
GRPC_CALL_STACK_REF(calld->owning_call(), "ResolverQueuedCallCanceller");
|
2125
2091
|
GRPC_CLOSURE_INIT(&closure_, &CancelLocked, this,
|
2126
2092
|
grpc_schedule_on_exec_ctx);
|
2127
|
-
calld->
|
2093
|
+
calld->call_combiner()->SetNotifyOnCancel(&closure_);
|
2128
2094
|
}
|
2129
2095
|
|
2130
2096
|
private:
|
@@ -2134,22 +2100,22 @@ class ClientChannel::CallData::ResolverQueuedCallCanceller {
|
|
2134
2100
|
auto* calld = static_cast<CallData*>(self->elem_->call_data);
|
2135
2101
|
{
|
2136
2102
|
MutexLock lock(&chand->resolution_mu_);
|
2137
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
2103
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
2138
2104
|
gpr_log(GPR_INFO,
|
2139
2105
|
"chand=%p calld=%p: cancelling resolver queued pick: "
|
2140
2106
|
"error=%s self=%p calld->resolver_pick_canceller=%p",
|
2141
|
-
chand, calld,
|
2107
|
+
chand, calld, StatusToString(error).c_str(), self,
|
2142
2108
|
calld->resolver_call_canceller_);
|
2143
2109
|
}
|
2144
|
-
if (calld->resolver_call_canceller_ == self && error
|
2110
|
+
if (calld->resolver_call_canceller_ == self && !error.ok()) {
|
2145
2111
|
// Remove pick from list of queued picks.
|
2146
2112
|
calld->MaybeRemoveCallFromResolverQueuedCallsLocked(self->elem_);
|
2147
2113
|
// Fail pending batches on the call.
|
2148
|
-
calld->PendingBatchesFail(self->elem_,
|
2114
|
+
calld->PendingBatchesFail(self->elem_, error,
|
2149
2115
|
YieldCallCombinerIfPendingBatchesFound);
|
2150
2116
|
}
|
2151
2117
|
}
|
2152
|
-
GRPC_CALL_STACK_UNREF(calld->
|
2118
|
+
GRPC_CALL_STACK_UNREF(calld->owning_call(), "ResolvingQueuedCallCanceller");
|
2153
2119
|
delete self;
|
2154
2120
|
}
|
2155
2121
|
|
@@ -2161,7 +2127,7 @@ void ClientChannel::CallData::MaybeRemoveCallFromResolverQueuedCallsLocked(
|
|
2161
2127
|
grpc_call_element* elem) {
|
2162
2128
|
if (!queued_pending_resolver_result_) return;
|
2163
2129
|
auto* chand = static_cast<ClientChannel*>(elem->channel_data);
|
2164
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
2130
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
2165
2131
|
gpr_log(GPR_INFO,
|
2166
2132
|
"chand=%p calld=%p: removing from resolver queued picks list",
|
2167
2133
|
chand, this);
|
@@ -2170,13 +2136,19 @@ void ClientChannel::CallData::MaybeRemoveCallFromResolverQueuedCallsLocked(
|
|
2170
2136
|
queued_pending_resolver_result_ = false;
|
2171
2137
|
// Lame the call combiner canceller.
|
2172
2138
|
resolver_call_canceller_ = nullptr;
|
2139
|
+
// Add trace annotation
|
2140
|
+
auto* call_tracer =
|
2141
|
+
static_cast<CallTracer*>(call_context_[GRPC_CONTEXT_CALL_TRACER].value);
|
2142
|
+
if (call_tracer != nullptr) {
|
2143
|
+
call_tracer->RecordAnnotation("Delayed name resolution complete.");
|
2144
|
+
}
|
2173
2145
|
}
|
2174
2146
|
|
2175
2147
|
void ClientChannel::CallData::MaybeAddCallToResolverQueuedCallsLocked(
|
2176
2148
|
grpc_call_element* elem) {
|
2177
2149
|
if (queued_pending_resolver_result_) return;
|
2178
2150
|
auto* chand = static_cast<ClientChannel*>(elem->channel_data);
|
2179
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
2151
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
2180
2152
|
gpr_log(GPR_INFO, "chand=%p calld=%p: adding to resolver queued picks list",
|
2181
2153
|
chand, this);
|
2182
2154
|
}
|
@@ -2190,88 +2162,85 @@ void ClientChannel::CallData::MaybeAddCallToResolverQueuedCallsLocked(
|
|
2190
2162
|
grpc_error_handle ClientChannel::CallData::ApplyServiceConfigToCallLocked(
|
2191
2163
|
grpc_call_element* elem, grpc_metadata_batch* initial_metadata) {
|
2192
2164
|
ClientChannel* chand = static_cast<ClientChannel*>(elem->channel_data);
|
2193
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
2165
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
2194
2166
|
gpr_log(GPR_INFO, "chand=%p calld=%p: applying service config to call",
|
2195
2167
|
chand, this);
|
2196
2168
|
}
|
2197
2169
|
ConfigSelector* config_selector = chand->config_selector_.get();
|
2198
2170
|
if (config_selector != nullptr) {
|
2199
2171
|
// Use the ConfigSelector to determine the config for the call.
|
2200
|
-
|
2201
|
-
config_selector->GetCallConfig({&path_, initial_metadata,
|
2202
|
-
if (call_config.
|
2172
|
+
auto call_config =
|
2173
|
+
config_selector->GetCallConfig({&path_, initial_metadata, arena()});
|
2174
|
+
if (!call_config.ok()) {
|
2175
|
+
return absl_status_to_grpc_error(MaybeRewriteIllegalStatusCode(
|
2176
|
+
call_config.status(), "ConfigSelector"));
|
2177
|
+
}
|
2203
2178
|
// Create a ClientChannelServiceConfigCallData for the call. This stores
|
2204
2179
|
// a ref to the ServiceConfig and caches the right set of parsed configs
|
2205
2180
|
// to use for the call. The ClientChannelServiceConfigCallData will store
|
2206
2181
|
// itself in the call context, so that it can be accessed by filters
|
2207
2182
|
// below us in the stack, and it will be cleaned up when the call ends.
|
2208
2183
|
auto* service_config_call_data =
|
2209
|
-
|
2210
|
-
std::move(call_config
|
2211
|
-
std::move(call_config
|
2212
|
-
call_config
|
2184
|
+
arena()->New<ClientChannelServiceConfigCallData>(
|
2185
|
+
std::move(call_config->service_config), call_config->method_configs,
|
2186
|
+
std::move(call_config->call_attributes),
|
2187
|
+
call_config->call_dispatch_controller, call_context_);
|
2213
2188
|
// Apply our own method params to the call.
|
2214
2189
|
auto* method_params = static_cast<ClientChannelMethodParsedConfig*>(
|
2215
2190
|
service_config_call_data->GetMethodParsedConfig(
|
2216
|
-
|
2191
|
+
chand->service_config_parser_index_));
|
2217
2192
|
if (method_params != nullptr) {
|
2218
2193
|
// If the deadline from the service config is shorter than the one
|
2219
2194
|
// from the client API, reset the deadline timer.
|
2220
|
-
if (chand->deadline_checking_enabled_ &&
|
2221
|
-
|
2222
|
-
|
2195
|
+
if (chand->deadline_checking_enabled_ &&
|
2196
|
+
method_params->timeout() != Duration::Zero()) {
|
2197
|
+
const Timestamp per_method_deadline =
|
2198
|
+
Timestamp::FromCycleCounterRoundUp(call_start_time_) +
|
2223
2199
|
method_params->timeout();
|
2224
2200
|
if (per_method_deadline < deadline_) {
|
2225
2201
|
deadline_ = per_method_deadline;
|
2226
|
-
grpc_deadline_state_reset(
|
2202
|
+
grpc_deadline_state_reset(&deadline_state_, deadline_);
|
2227
2203
|
}
|
2228
2204
|
}
|
2229
2205
|
// If the service config set wait_for_ready and the application
|
2230
2206
|
// did not explicitly set it, use the value from the service config.
|
2231
|
-
|
2232
|
-
|
2233
|
-
|
2207
|
+
auto* wait_for_ready =
|
2208
|
+
pending_batches_[0]
|
2209
|
+
->payload->send_initial_metadata.send_initial_metadata
|
2210
|
+
->GetOrCreatePointer(WaitForReady());
|
2234
2211
|
if (method_params->wait_for_ready().has_value() &&
|
2235
|
-
!
|
2236
|
-
|
2237
|
-
if (method_params->wait_for_ready().value()) {
|
2238
|
-
*send_initial_metadata_flags |= GRPC_INITIAL_METADATA_WAIT_FOR_READY;
|
2239
|
-
} else {
|
2240
|
-
*send_initial_metadata_flags &= ~GRPC_INITIAL_METADATA_WAIT_FOR_READY;
|
2241
|
-
}
|
2212
|
+
!wait_for_ready->explicitly_set) {
|
2213
|
+
wait_for_ready->value = method_params->wait_for_ready().value();
|
2242
2214
|
}
|
2243
2215
|
}
|
2244
2216
|
// Set the dynamic filter stack.
|
2245
2217
|
dynamic_filters_ = chand->dynamic_filters_;
|
2246
2218
|
}
|
2247
|
-
return
|
2219
|
+
return absl::OkStatus();
|
2248
2220
|
}
|
2249
2221
|
|
2250
2222
|
void ClientChannel::CallData::
|
2251
2223
|
RecvTrailingMetadataReadyForConfigSelectorCommitCallback(
|
2252
2224
|
void* arg, grpc_error_handle error) {
|
2253
|
-
auto*
|
2225
|
+
auto* elem = static_cast<grpc_call_element*>(arg);
|
2226
|
+
auto* chand = static_cast<ClientChannel*>(elem->channel_data);
|
2227
|
+
auto* calld = static_cast<CallData*>(elem->call_data);
|
2254
2228
|
auto* service_config_call_data =
|
2255
2229
|
static_cast<ClientChannelServiceConfigCallData*>(
|
2256
|
-
|
2230
|
+
calld->call_context_[GRPC_CONTEXT_SERVICE_CONFIG_CALL_DATA].value);
|
2231
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
2232
|
+
gpr_log(GPR_INFO,
|
2233
|
+
"chand=%p calld=%p: got recv_trailing_metadata_ready: error=%s "
|
2234
|
+
"service_config_call_data=%p",
|
2235
|
+
chand, calld, StatusToString(error).c_str(),
|
2236
|
+
service_config_call_data);
|
2237
|
+
}
|
2257
2238
|
if (service_config_call_data != nullptr) {
|
2258
2239
|
service_config_call_data->call_dispatch_controller()->Commit();
|
2259
2240
|
}
|
2260
2241
|
// Chain to original callback.
|
2261
|
-
Closure::Run(DEBUG_LOCATION,
|
2262
|
-
|
2263
|
-
}
|
2264
|
-
|
2265
|
-
void ClientChannel::CallData::
|
2266
|
-
InjectRecvTrailingMetadataReadyForConfigSelectorCommitCallback(
|
2267
|
-
grpc_transport_stream_op_batch* batch) {
|
2268
|
-
original_recv_trailing_metadata_ready_ =
|
2269
|
-
batch->payload->recv_trailing_metadata.recv_trailing_metadata_ready;
|
2270
|
-
GRPC_CLOSURE_INIT(&recv_trailing_metadata_ready_,
|
2271
|
-
RecvTrailingMetadataReadyForConfigSelectorCommitCallback,
|
2272
|
-
this, nullptr);
|
2273
|
-
batch->payload->recv_trailing_metadata.recv_trailing_metadata_ready =
|
2274
|
-
&recv_trailing_metadata_ready_;
|
2242
|
+
Closure::Run(DEBUG_LOCATION, calld->original_recv_trailing_metadata_ready_,
|
2243
|
+
error);
|
2275
2244
|
}
|
2276
2245
|
|
2277
2246
|
void ClientChannel::CallData::AsyncResolutionDone(grpc_call_element* elem,
|
@@ -2286,13 +2255,13 @@ void ClientChannel::CallData::ResolutionDone(void* arg,
|
|
2286
2255
|
grpc_call_element* elem = static_cast<grpc_call_element*>(arg);
|
2287
2256
|
ClientChannel* chand = static_cast<ClientChannel*>(elem->channel_data);
|
2288
2257
|
CallData* calld = static_cast<CallData*>(elem->call_data);
|
2289
|
-
if (error
|
2290
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
2258
|
+
if (!error.ok()) {
|
2259
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
2291
2260
|
gpr_log(GPR_INFO,
|
2292
2261
|
"chand=%p calld=%p: error applying config to call: error=%s",
|
2293
|
-
chand, calld,
|
2262
|
+
chand, calld, StatusToString(error).c_str());
|
2294
2263
|
}
|
2295
|
-
calld->PendingBatchesFail(elem,
|
2264
|
+
calld->PendingBatchesFail(elem, error, YieldCallCombiner);
|
2296
2265
|
return;
|
2297
2266
|
}
|
2298
2267
|
calld->CreateDynamicCall(elem);
|
@@ -2310,7 +2279,6 @@ void ClientChannel::CallData::CheckResolution(void* arg,
|
|
2310
2279
|
}
|
2311
2280
|
if (resolution_complete) {
|
2312
2281
|
ResolutionDone(elem, error);
|
2313
|
-
GRPC_ERROR_UNREF(error);
|
2314
2282
|
}
|
2315
2283
|
}
|
2316
2284
|
|
@@ -2319,6 +2287,9 @@ bool ClientChannel::CallData::CheckResolutionLocked(grpc_call_element* elem,
|
|
2319
2287
|
ClientChannel* chand = static_cast<ClientChannel*>(elem->channel_data);
|
2320
2288
|
// If we're still in IDLE, we need to start resolving.
|
2321
2289
|
if (GPR_UNLIKELY(chand->CheckConnectivityState(false) == GRPC_CHANNEL_IDLE)) {
|
2290
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
2291
|
+
gpr_log(GPR_INFO, "chand=%p calld=%p: triggering exit idle", chand, this);
|
2292
|
+
}
|
2322
2293
|
// Bounce into the control plane work serializer to start resolving,
|
2323
2294
|
// in case we are still in IDLE state. Since we are holding on to the
|
2324
2295
|
// resolution mutex here, we offload it on the ExecCtx so that we don't
|
@@ -2331,7 +2302,7 @@ bool ClientChannel::CallData::CheckResolutionLocked(grpc_call_element* elem,
|
|
2331
2302
|
auto* chand = static_cast<ClientChannel*>(arg);
|
2332
2303
|
chand->work_serializer_->Run(
|
2333
2304
|
[chand]()
|
2334
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand->work_serializer_) {
|
2305
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand->work_serializer_) {
|
2335
2306
|
chand->CheckConnectivityState(/*try_to_connect=*/true);
|
2336
2307
|
GRPC_CHANNEL_STACK_UNREF(chand->owning_stack_,
|
2337
2308
|
"CheckResolutionLocked");
|
@@ -2339,31 +2310,36 @@ bool ClientChannel::CallData::CheckResolutionLocked(grpc_call_element* elem,
|
|
2339
2310
|
DEBUG_LOCATION);
|
2340
2311
|
},
|
2341
2312
|
chand, nullptr),
|
2342
|
-
|
2313
|
+
absl::OkStatus());
|
2343
2314
|
}
|
2344
2315
|
// Get send_initial_metadata batch and flags.
|
2345
2316
|
auto& send_initial_metadata =
|
2346
2317
|
pending_batches_[0]->payload->send_initial_metadata;
|
2347
2318
|
grpc_metadata_batch* initial_metadata_batch =
|
2348
2319
|
send_initial_metadata.send_initial_metadata;
|
2349
|
-
const uint32_t send_initial_metadata_flags =
|
2350
|
-
send_initial_metadata.send_initial_metadata_flags;
|
2351
2320
|
// If we don't yet have a resolver result, we need to queue the call
|
2352
2321
|
// until we get one.
|
2353
2322
|
if (GPR_UNLIKELY(!chand->received_service_config_data_)) {
|
2354
2323
|
// If the resolver returned transient failure before returning the
|
2355
2324
|
// first service config, fail any non-wait_for_ready calls.
|
2356
|
-
|
2357
|
-
if (resolver_error
|
2358
|
-
(
|
2359
|
-
|
2325
|
+
absl::Status resolver_error = chand->resolver_transient_failure_error_;
|
2326
|
+
if (!resolver_error.ok() &&
|
2327
|
+
!initial_metadata_batch->GetOrCreatePointer(WaitForReady())->value) {
|
2328
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
2329
|
+
gpr_log(GPR_INFO, "chand=%p calld=%p: resolution failed, failing call",
|
2330
|
+
chand, this);
|
2331
|
+
}
|
2360
2332
|
MaybeRemoveCallFromResolverQueuedCallsLocked(elem);
|
2361
|
-
*error =
|
2333
|
+
*error = absl_status_to_grpc_error(resolver_error);
|
2362
2334
|
return true;
|
2363
2335
|
}
|
2364
2336
|
// Either the resolver has not yet returned a result, or it has
|
2365
2337
|
// returned transient failure but the call is wait_for_ready. In
|
2366
2338
|
// either case, queue the call.
|
2339
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
2340
|
+
gpr_log(GPR_INFO, "chand=%p calld=%p: queuing to wait for resolution",
|
2341
|
+
chand, this);
|
2342
|
+
}
|
2367
2343
|
MaybeAddCallToResolverQueuedCallsLocked(elem);
|
2368
2344
|
return false;
|
2369
2345
|
}
|
@@ -2383,23 +2359,23 @@ void ClientChannel::CallData::CreateDynamicCall(grpc_call_element* elem) {
|
|
2383
2359
|
path_,
|
2384
2360
|
call_start_time_,
|
2385
2361
|
deadline_,
|
2386
|
-
|
2362
|
+
arena(),
|
2387
2363
|
call_context_,
|
2388
|
-
|
2389
|
-
grpc_error_handle error
|
2364
|
+
call_combiner()};
|
2365
|
+
grpc_error_handle error;
|
2390
2366
|
DynamicFilters* channel_stack = args.channel_stack.get();
|
2391
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
2367
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
2392
2368
|
gpr_log(
|
2393
2369
|
GPR_INFO,
|
2394
2370
|
"chand=%p calld=%p: creating dynamic call stack on channel_stack=%p",
|
2395
2371
|
chand, this, channel_stack);
|
2396
2372
|
}
|
2397
2373
|
dynamic_call_ = channel_stack->CreateCall(std::move(args), &error);
|
2398
|
-
if (error
|
2399
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
2374
|
+
if (!error.ok()) {
|
2375
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
2400
2376
|
gpr_log(GPR_INFO,
|
2401
2377
|
"chand=%p calld=%p: failed to create dynamic call: error=%s",
|
2402
|
-
chand, this,
|
2378
|
+
chand, this, StatusToString(error).c_str());
|
2403
2379
|
}
|
2404
2380
|
PendingBatchesFail(elem, error, YieldCallCombiner);
|
2405
2381
|
return;
|
@@ -2414,20 +2390,31 @@ void ClientChannel::CallData::CreateDynamicCall(grpc_call_element* elem) {
|
|
2414
2390
|
class ClientChannel::LoadBalancedCall::Metadata
|
2415
2391
|
: public LoadBalancingPolicy::MetadataInterface {
|
2416
2392
|
public:
|
2417
|
-
Metadata(
|
2418
|
-
: lb_call_(lb_call), batch_(batch) {}
|
2393
|
+
explicit Metadata(grpc_metadata_batch* batch) : batch_(batch) {}
|
2419
2394
|
|
2420
2395
|
void Add(absl::string_view key, absl::string_view value) override {
|
2421
|
-
|
2422
|
-
|
2423
|
-
|
2424
|
-
|
2425
|
-
|
2426
|
-
|
2396
|
+
if (batch_ == nullptr) return;
|
2397
|
+
// Gross, egregious hack to support legacy grpclb behavior.
|
2398
|
+
// TODO(ctiller): Use a promise context for this once that plumbing is done.
|
2399
|
+
if (key == GrpcLbClientStatsMetadata::key()) {
|
2400
|
+
batch_->Set(
|
2401
|
+
GrpcLbClientStatsMetadata(),
|
2402
|
+
const_cast<GrpcLbClientStats*>(
|
2403
|
+
reinterpret_cast<const GrpcLbClientStats*>(value.data())));
|
2404
|
+
return;
|
2405
|
+
}
|
2406
|
+
batch_->Append(key, Slice::FromStaticString(value),
|
2407
|
+
[key](absl::string_view error, const Slice& value) {
|
2408
|
+
gpr_log(GPR_ERROR, "%s",
|
2409
|
+
absl::StrCat(error, " key:", key,
|
2410
|
+
" value:", value.as_string_view())
|
2411
|
+
.c_str());
|
2412
|
+
});
|
2427
2413
|
}
|
2428
2414
|
|
2429
2415
|
std::vector<std::pair<std::string, std::string>> TestOnlyCopyToVector()
|
2430
2416
|
override {
|
2417
|
+
if (batch_ == nullptr) return {};
|
2431
2418
|
Encoder encoder;
|
2432
2419
|
batch_->Encode(&encoder);
|
2433
2420
|
return encoder.Take();
|
@@ -2435,18 +2422,16 @@ class ClientChannel::LoadBalancedCall::Metadata
|
|
2435
2422
|
|
2436
2423
|
absl::optional<absl::string_view> Lookup(absl::string_view key,
|
2437
2424
|
std::string* buffer) const override {
|
2438
|
-
|
2425
|
+
if (batch_ == nullptr) return absl::nullopt;
|
2426
|
+
return batch_->GetStringValue(key, buffer);
|
2439
2427
|
}
|
2440
2428
|
|
2441
2429
|
private:
|
2442
2430
|
class Encoder {
|
2443
2431
|
public:
|
2444
|
-
void Encode(
|
2445
|
-
|
2446
|
-
|
2447
|
-
out_.emplace_back(std::string(key),
|
2448
|
-
std::string(StringViewFromSlice(GRPC_MDVALUE(md))));
|
2449
|
-
}
|
2432
|
+
void Encode(const Slice& key, const Slice& value) {
|
2433
|
+
out_.emplace_back(std::string(key.as_string_view()),
|
2434
|
+
std::string(value.as_string_view()));
|
2450
2435
|
}
|
2451
2436
|
|
2452
2437
|
template <class Which>
|
@@ -2456,7 +2441,11 @@ class ClientChannel::LoadBalancedCall::Metadata
|
|
2456
2441
|
std::string(value_slice.as_string_view()));
|
2457
2442
|
}
|
2458
2443
|
|
2459
|
-
void Encode(GrpcTimeoutMetadata,
|
2444
|
+
void Encode(GrpcTimeoutMetadata,
|
2445
|
+
const typename GrpcTimeoutMetadata::ValueType&) {}
|
2446
|
+
void Encode(HttpPathMetadata, const Slice&) {}
|
2447
|
+
void Encode(HttpMethodMetadata,
|
2448
|
+
const typename HttpMethodMetadata::ValueType&) {}
|
2460
2449
|
|
2461
2450
|
std::vector<std::pair<std::string, std::string>> Take() {
|
2462
2451
|
return std::move(out_);
|
@@ -2466,7 +2455,6 @@ class ClientChannel::LoadBalancedCall::Metadata
|
|
2466
2455
|
std::vector<std::pair<std::string, std::string>> out_;
|
2467
2456
|
};
|
2468
2457
|
|
2469
|
-
LoadBalancedCall* lb_call_;
|
2470
2458
|
grpc_metadata_batch* batch_;
|
2471
2459
|
};
|
2472
2460
|
|
@@ -2474,25 +2462,16 @@ class ClientChannel::LoadBalancedCall::Metadata
|
|
2474
2462
|
// ClientChannel::LoadBalancedCall::LbCallState
|
2475
2463
|
//
|
2476
2464
|
|
2477
|
-
|
2478
|
-
|
2479
|
-
|
2480
|
-
|
2481
|
-
|
2482
|
-
|
2483
|
-
|
2484
|
-
|
2485
|
-
|
2486
|
-
|
2487
|
-
auto& call_attributes = service_config_call_data->call_attributes();
|
2488
|
-
auto it = call_attributes.find(key);
|
2489
|
-
if (it == call_attributes.end()) return absl::string_view();
|
2490
|
-
return it->second;
|
2491
|
-
}
|
2492
|
-
|
2493
|
-
private:
|
2494
|
-
LoadBalancedCall* lb_call_;
|
2495
|
-
};
|
2465
|
+
absl::string_view
|
2466
|
+
ClientChannel::LoadBalancedCall::LbCallState::GetCallAttribute(
|
2467
|
+
UniqueTypeName type) {
|
2468
|
+
auto* service_config_call_data = static_cast<ServiceConfigCallData*>(
|
2469
|
+
lb_call_->call_context_[GRPC_CONTEXT_SERVICE_CONFIG_CALL_DATA].value);
|
2470
|
+
auto& call_attributes = service_config_call_data->call_attributes();
|
2471
|
+
auto it = call_attributes.find(type);
|
2472
|
+
if (it == call_attributes.end()) return absl::string_view();
|
2473
|
+
return it->second;
|
2474
|
+
}
|
2496
2475
|
|
2497
2476
|
//
|
2498
2477
|
// ClientChannel::LoadBalancedCall::BackendMetricAccessor
|
@@ -2505,17 +2484,35 @@ class ClientChannel::LoadBalancedCall::BackendMetricAccessor
|
|
2505
2484
|
: lb_call_(lb_call) {}
|
2506
2485
|
|
2507
2486
|
const BackendMetricData* GetBackendMetricData() override {
|
2508
|
-
if (lb_call_->backend_metric_data_ == nullptr
|
2487
|
+
if (lb_call_->backend_metric_data_ == nullptr &&
|
2488
|
+
lb_call_->recv_trailing_metadata_ != nullptr) {
|
2509
2489
|
if (const auto* md = lb_call_->recv_trailing_metadata_->get_pointer(
|
2510
|
-
|
2490
|
+
EndpointLoadMetricsBinMetadata())) {
|
2491
|
+
BackendMetricAllocator allocator(lb_call_->arena_);
|
2511
2492
|
lb_call_->backend_metric_data_ =
|
2512
|
-
ParseBackendMetricData(
|
2493
|
+
ParseBackendMetricData(md->as_string_view(), &allocator);
|
2513
2494
|
}
|
2514
2495
|
}
|
2515
2496
|
return lb_call_->backend_metric_data_;
|
2516
2497
|
}
|
2517
2498
|
|
2518
2499
|
private:
|
2500
|
+
class BackendMetricAllocator : public BackendMetricAllocatorInterface {
|
2501
|
+
public:
|
2502
|
+
explicit BackendMetricAllocator(Arena* arena) : arena_(arena) {}
|
2503
|
+
|
2504
|
+
BackendMetricData* AllocateBackendMetricData() override {
|
2505
|
+
return arena_->New<BackendMetricData>();
|
2506
|
+
}
|
2507
|
+
|
2508
|
+
char* AllocateString(size_t size) override {
|
2509
|
+
return static_cast<char*>(arena_->Alloc(size));
|
2510
|
+
}
|
2511
|
+
|
2512
|
+
private:
|
2513
|
+
Arena* arena_;
|
2514
|
+
};
|
2515
|
+
|
2519
2516
|
LoadBalancedCall* lb_call_;
|
2520
2517
|
};
|
2521
2518
|
|
@@ -2541,11 +2538,11 @@ ClientChannel::LoadBalancedCall::LoadBalancedCall(
|
|
2541
2538
|
ConfigSelector::CallDispatchController* call_dispatch_controller,
|
2542
2539
|
bool is_transparent_retry)
|
2543
2540
|
: InternallyRefCounted(
|
2544
|
-
GRPC_TRACE_FLAG_ENABLED(
|
2541
|
+
GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)
|
2545
2542
|
? "LoadBalancedCall"
|
2546
2543
|
: nullptr),
|
2547
2544
|
chand_(chand),
|
2548
|
-
path_(
|
2545
|
+
path_(CSliceRef(args.path)),
|
2549
2546
|
deadline_(args.deadline),
|
2550
2547
|
arena_(args.arena),
|
2551
2548
|
owning_call_(args.call_stack),
|
@@ -2555,15 +2552,15 @@ ClientChannel::LoadBalancedCall::LoadBalancedCall(
|
|
2555
2552
|
on_call_destruction_complete_(on_call_destruction_complete),
|
2556
2553
|
call_dispatch_controller_(call_dispatch_controller),
|
2557
2554
|
call_attempt_tracer_(
|
2558
|
-
GetCallAttemptTracer(args.context, is_transparent_retry)) {
|
2555
|
+
GetCallAttemptTracer(args.context, is_transparent_retry)) {
|
2556
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2557
|
+
gpr_log(GPR_INFO, "chand=%p lb_call=%p: created", chand_, this);
|
2558
|
+
}
|
2559
|
+
}
|
2559
2560
|
|
2560
2561
|
ClientChannel::LoadBalancedCall::~LoadBalancedCall() {
|
2561
|
-
grpc_slice_unref_internal(path_);
|
2562
|
-
GRPC_ERROR_UNREF(cancel_error_);
|
2563
|
-
GRPC_ERROR_UNREF(failure_error_);
|
2564
2562
|
if (backend_metric_data_ != nullptr) {
|
2565
|
-
backend_metric_data_->
|
2566
|
-
BackendMetricData::~BackendMetricData();
|
2563
|
+
backend_metric_data_->BackendMetricData::~BackendMetricData();
|
2567
2564
|
}
|
2568
2565
|
// Make sure there are no remaining pending batches.
|
2569
2566
|
for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) {
|
@@ -2571,11 +2568,17 @@ ClientChannel::LoadBalancedCall::~LoadBalancedCall() {
|
|
2571
2568
|
}
|
2572
2569
|
if (on_call_destruction_complete_ != nullptr) {
|
2573
2570
|
ExecCtx::Run(DEBUG_LOCATION, on_call_destruction_complete_,
|
2574
|
-
|
2571
|
+
absl::OkStatus());
|
2575
2572
|
}
|
2576
2573
|
}
|
2577
2574
|
|
2578
2575
|
void ClientChannel::LoadBalancedCall::Orphan() {
|
2576
|
+
// If the recv_trailing_metadata op was never started, then notify
|
2577
|
+
// about call completion here, as best we can. We assume status
|
2578
|
+
// CANCELLED in this case.
|
2579
|
+
if (recv_trailing_metadata_ == nullptr) {
|
2580
|
+
RecordCallCompletion(absl::CancelledError("call cancelled"));
|
2581
|
+
}
|
2579
2582
|
// Compute latency and report it to the tracer.
|
2580
2583
|
if (call_attempt_tracer_ != nullptr) {
|
2581
2584
|
gpr_timespec latency =
|
@@ -2602,7 +2605,7 @@ size_t ClientChannel::LoadBalancedCall::GetBatchIndex(
|
|
2602
2605
|
void ClientChannel::LoadBalancedCall::PendingBatchesAdd(
|
2603
2606
|
grpc_transport_stream_op_batch* batch) {
|
2604
2607
|
const size_t idx = GetBatchIndex(batch);
|
2605
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
2608
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2606
2609
|
gpr_log(GPR_INFO,
|
2607
2610
|
"chand=%p lb_call=%p: adding pending batch at index %" PRIuPTR,
|
2608
2611
|
chand_, this, idx);
|
@@ -2618,25 +2621,24 @@ void ClientChannel::LoadBalancedCall::FailPendingBatchInCallCombiner(
|
|
2618
2621
|
static_cast<grpc_transport_stream_op_batch*>(arg);
|
2619
2622
|
auto* self = static_cast<LoadBalancedCall*>(batch->handler_private.extra_arg);
|
2620
2623
|
// Note: This will release the call combiner.
|
2621
|
-
grpc_transport_stream_op_batch_finish_with_failure(
|
2622
|
-
|
2624
|
+
grpc_transport_stream_op_batch_finish_with_failure(batch, error,
|
2625
|
+
self->call_combiner_);
|
2623
2626
|
}
|
2624
2627
|
|
2625
2628
|
// This is called via the call combiner, so access to calld is synchronized.
|
2626
2629
|
void ClientChannel::LoadBalancedCall::PendingBatchesFail(
|
2627
2630
|
grpc_error_handle error,
|
2628
2631
|
YieldCallCombinerPredicate yield_call_combiner_predicate) {
|
2629
|
-
GPR_ASSERT(error
|
2630
|
-
GRPC_ERROR_UNREF(failure_error_);
|
2632
|
+
GPR_ASSERT(!error.ok());
|
2631
2633
|
failure_error_ = error;
|
2632
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
2634
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2633
2635
|
size_t num_batches = 0;
|
2634
2636
|
for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) {
|
2635
2637
|
if (pending_batches_[i] != nullptr) ++num_batches;
|
2636
2638
|
}
|
2637
2639
|
gpr_log(GPR_INFO,
|
2638
2640
|
"chand=%p lb_call=%p: failing %" PRIuPTR " pending batches: %s",
|
2639
|
-
chand_, this, num_batches,
|
2641
|
+
chand_, this, num_batches, StatusToString(error).c_str());
|
2640
2642
|
}
|
2641
2643
|
CallCombinerClosureList closures;
|
2642
2644
|
for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) {
|
@@ -2646,7 +2648,7 @@ void ClientChannel::LoadBalancedCall::PendingBatchesFail(
|
|
2646
2648
|
GRPC_CLOSURE_INIT(&batch->handler_private.closure,
|
2647
2649
|
FailPendingBatchInCallCombiner, batch,
|
2648
2650
|
grpc_schedule_on_exec_ctx);
|
2649
|
-
closures.Add(&batch->handler_private.closure,
|
2651
|
+
closures.Add(&batch->handler_private.closure, error,
|
2650
2652
|
"PendingBatchesFail");
|
2651
2653
|
batch = nullptr;
|
2652
2654
|
}
|
@@ -2671,7 +2673,7 @@ void ClientChannel::LoadBalancedCall::ResumePendingBatchInCallCombiner(
|
|
2671
2673
|
|
2672
2674
|
// This is called via the call combiner, so access to calld is synchronized.
|
2673
2675
|
void ClientChannel::LoadBalancedCall::PendingBatchesResume() {
|
2674
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
2676
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2675
2677
|
size_t num_batches = 0;
|
2676
2678
|
for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) {
|
2677
2679
|
if (pending_batches_[i] != nullptr) ++num_batches;
|
@@ -2689,7 +2691,7 @@ void ClientChannel::LoadBalancedCall::PendingBatchesResume() {
|
|
2689
2691
|
GRPC_CLOSURE_INIT(&batch->handler_private.closure,
|
2690
2692
|
ResumePendingBatchInCallCombiner, batch,
|
2691
2693
|
grpc_schedule_on_exec_ctx);
|
2692
|
-
closures.Add(&batch->handler_private.closure,
|
2694
|
+
closures.Add(&batch->handler_private.closure, absl::OkStatus(),
|
2693
2695
|
"resuming pending batch from LB call");
|
2694
2696
|
batch = nullptr;
|
2695
2697
|
}
|
@@ -2700,17 +2702,24 @@ void ClientChannel::LoadBalancedCall::PendingBatchesResume() {
|
|
2700
2702
|
|
2701
2703
|
void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
|
2702
2704
|
grpc_transport_stream_op_batch* batch) {
|
2705
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace) ||
|
2706
|
+
GRPC_TRACE_FLAG_ENABLED(grpc_trace_channel)) {
|
2707
|
+
gpr_log(GPR_INFO,
|
2708
|
+
"chand=%p lb_call=%p: batch started from above: %s, "
|
2709
|
+
"call_attempt_tracer_=%p",
|
2710
|
+
chand_, this, grpc_transport_stream_op_batch_string(batch).c_str(),
|
2711
|
+
call_attempt_tracer_);
|
2712
|
+
}
|
2703
2713
|
// Handle call tracing.
|
2704
2714
|
if (call_attempt_tracer_ != nullptr) {
|
2705
2715
|
// Record send ops in tracer.
|
2706
2716
|
if (batch->cancel_stream) {
|
2707
2717
|
call_attempt_tracer_->RecordCancel(
|
2708
|
-
|
2718
|
+
batch->payload->cancel_stream.cancel_error);
|
2709
2719
|
}
|
2710
2720
|
if (batch->send_initial_metadata) {
|
2711
2721
|
call_attempt_tracer_->RecordSendInitialMetadata(
|
2712
|
-
batch->payload->send_initial_metadata.send_initial_metadata
|
2713
|
-
batch->payload->send_initial_metadata.send_initial_metadata_flags);
|
2722
|
+
batch->payload->send_initial_metadata.send_initial_metadata);
|
2714
2723
|
peer_string_ = batch->payload->send_initial_metadata.peer_string;
|
2715
2724
|
original_send_initial_metadata_on_complete_ = batch->on_complete;
|
2716
2725
|
GRPC_CLOSURE_INIT(&send_initial_metadata_on_complete_,
|
@@ -2763,7 +2772,7 @@ void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
|
|
2763
2772
|
// the channel's data plane mutex, which is more efficient (especially for
|
2764
2773
|
// streaming calls).
|
2765
2774
|
if (subchannel_call_ != nullptr) {
|
2766
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
2775
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2767
2776
|
gpr_log(GPR_INFO,
|
2768
2777
|
"chand=%p lb_call=%p: starting batch on subchannel_call=%p",
|
2769
2778
|
chand_, this, subchannel_call_.get());
|
@@ -2774,14 +2783,14 @@ void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
|
|
2774
2783
|
// We do not yet have a subchannel call.
|
2775
2784
|
//
|
2776
2785
|
// If we've previously been cancelled, immediately fail any new batches.
|
2777
|
-
if (GPR_UNLIKELY(cancel_error_
|
2778
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
2786
|
+
if (GPR_UNLIKELY(!cancel_error_.ok())) {
|
2787
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2779
2788
|
gpr_log(GPR_INFO, "chand=%p lb_call=%p: failing batch with error: %s",
|
2780
|
-
chand_, this,
|
2789
|
+
chand_, this, StatusToString(cancel_error_).c_str());
|
2781
2790
|
}
|
2782
2791
|
// Note: This will release the call combiner.
|
2783
|
-
grpc_transport_stream_op_batch_finish_with_failure(
|
2784
|
-
|
2792
|
+
grpc_transport_stream_op_batch_finish_with_failure(batch, cancel_error_,
|
2793
|
+
call_combiner_);
|
2785
2794
|
return;
|
2786
2795
|
}
|
2787
2796
|
// Handle cancellation.
|
@@ -2791,17 +2800,16 @@ void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
|
|
2791
2800
|
// cancelled before any batches are passed down (e.g., if the deadline
|
2792
2801
|
// is in the past when the call starts), we can return the right
|
2793
2802
|
// error to the caller when the first batch does get passed down.
|
2794
|
-
|
2795
|
-
|
2796
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
2803
|
+
cancel_error_ = batch->payload->cancel_stream.cancel_error;
|
2804
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2797
2805
|
gpr_log(GPR_INFO, "chand=%p lb_call=%p: recording cancel_error=%s",
|
2798
|
-
chand_, this,
|
2806
|
+
chand_, this, StatusToString(cancel_error_).c_str());
|
2799
2807
|
}
|
2800
2808
|
// Fail all pending batches.
|
2801
|
-
PendingBatchesFail(
|
2809
|
+
PendingBatchesFail(cancel_error_, NoYieldCallCombiner);
|
2802
2810
|
// Note: This will release the call combiner.
|
2803
|
-
grpc_transport_stream_op_batch_finish_with_failure(
|
2804
|
-
|
2811
|
+
grpc_transport_stream_op_batch_finish_with_failure(batch, cancel_error_,
|
2812
|
+
call_combiner_);
|
2805
2813
|
return;
|
2806
2814
|
}
|
2807
2815
|
// Add the batch to the pending list.
|
@@ -2809,15 +2817,15 @@ void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
|
|
2809
2817
|
// For batches containing a send_initial_metadata op, acquire the
|
2810
2818
|
// channel's data plane mutex to pick a subchannel.
|
2811
2819
|
if (GPR_LIKELY(batch->send_initial_metadata)) {
|
2812
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
2820
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2813
2821
|
gpr_log(GPR_INFO,
|
2814
2822
|
"chand=%p lb_call=%p: grabbing data plane mutex to perform pick",
|
2815
2823
|
chand_, this);
|
2816
2824
|
}
|
2817
|
-
PickSubchannel(this,
|
2825
|
+
PickSubchannel(this, absl::OkStatus());
|
2818
2826
|
} else {
|
2819
2827
|
// For all other batches, release the call combiner.
|
2820
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
2828
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2821
2829
|
gpr_log(GPR_INFO,
|
2822
2830
|
"chand=%p lb_call=%p: saved batch, yielding call combiner",
|
2823
2831
|
chand_, this);
|
@@ -2830,44 +2838,66 @@ void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
|
|
2830
2838
|
void ClientChannel::LoadBalancedCall::SendInitialMetadataOnComplete(
|
2831
2839
|
void* arg, grpc_error_handle error) {
|
2832
2840
|
auto* self = static_cast<LoadBalancedCall*>(arg);
|
2841
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2842
|
+
gpr_log(GPR_INFO,
|
2843
|
+
"chand=%p lb_call=%p: got on_complete for send_initial_metadata: "
|
2844
|
+
"error=%s",
|
2845
|
+
self->chand_, self, StatusToString(error).c_str());
|
2846
|
+
}
|
2833
2847
|
self->call_attempt_tracer_->RecordOnDoneSendInitialMetadata(
|
2834
2848
|
self->peer_string_);
|
2835
2849
|
Closure::Run(DEBUG_LOCATION,
|
2836
|
-
self->original_send_initial_metadata_on_complete_,
|
2837
|
-
GRPC_ERROR_REF(error));
|
2850
|
+
self->original_send_initial_metadata_on_complete_, error);
|
2838
2851
|
}
|
2839
2852
|
|
2840
2853
|
void ClientChannel::LoadBalancedCall::RecvInitialMetadataReady(
|
2841
2854
|
void* arg, grpc_error_handle error) {
|
2842
2855
|
auto* self = static_cast<LoadBalancedCall*>(arg);
|
2843
|
-
if (
|
2856
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2857
|
+
gpr_log(GPR_INFO,
|
2858
|
+
"chand=%p lb_call=%p: got recv_initial_metadata_ready: error=%s",
|
2859
|
+
self->chand_, self, StatusToString(error).c_str());
|
2860
|
+
}
|
2861
|
+
if (error.ok()) {
|
2844
2862
|
// recv_initial_metadata_flags is not populated for clients
|
2845
2863
|
self->call_attempt_tracer_->RecordReceivedInitialMetadata(
|
2846
2864
|
self->recv_initial_metadata_, 0 /* recv_initial_metadata_flags */);
|
2847
2865
|
}
|
2848
2866
|
Closure::Run(DEBUG_LOCATION, self->original_recv_initial_metadata_ready_,
|
2849
|
-
|
2867
|
+
error);
|
2850
2868
|
}
|
2851
2869
|
|
2852
2870
|
void ClientChannel::LoadBalancedCall::RecvMessageReady(
|
2853
2871
|
void* arg, grpc_error_handle error) {
|
2854
2872
|
auto* self = static_cast<LoadBalancedCall*>(arg);
|
2855
|
-
if (
|
2873
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2874
|
+
gpr_log(GPR_INFO, "chand=%p lb_call=%p: got recv_message_ready: error=%s",
|
2875
|
+
self->chand_, self, StatusToString(error).c_str());
|
2876
|
+
}
|
2877
|
+
if (self->recv_message_->has_value()) {
|
2856
2878
|
self->call_attempt_tracer_->RecordReceivedMessage(**self->recv_message_);
|
2857
2879
|
}
|
2858
|
-
Closure::Run(DEBUG_LOCATION, self->original_recv_message_ready_,
|
2859
|
-
GRPC_ERROR_REF(error));
|
2880
|
+
Closure::Run(DEBUG_LOCATION, self->original_recv_message_ready_, error);
|
2860
2881
|
}
|
2861
2882
|
|
2862
2883
|
void ClientChannel::LoadBalancedCall::RecvTrailingMetadataReady(
|
2863
2884
|
void* arg, grpc_error_handle error) {
|
2864
2885
|
auto* self = static_cast<LoadBalancedCall*>(arg);
|
2886
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2887
|
+
gpr_log(GPR_INFO,
|
2888
|
+
"chand=%p lb_call=%p: got recv_trailing_metadata_ready: error=%s "
|
2889
|
+
"call_attempt_tracer_=%p lb_subchannel_call_tracker_=%p "
|
2890
|
+
"failure_error_=%s",
|
2891
|
+
self->chand_, self, StatusToString(error).c_str(),
|
2892
|
+
self->call_attempt_tracer_, self->lb_subchannel_call_tracker_.get(),
|
2893
|
+
StatusToString(self->failure_error_).c_str());
|
2894
|
+
}
|
2865
2895
|
// Check if we have a tracer or an LB callback to invoke.
|
2866
2896
|
if (self->call_attempt_tracer_ != nullptr ||
|
2867
2897
|
self->lb_subchannel_call_tracker_ != nullptr) {
|
2868
2898
|
// Get the call's status.
|
2869
2899
|
absl::Status status;
|
2870
|
-
if (error
|
2900
|
+
if (!error.ok()) {
|
2871
2901
|
// Get status from error.
|
2872
2902
|
grpc_status_code code;
|
2873
2903
|
std::string message;
|
@@ -2877,10 +2907,8 @@ void ClientChannel::LoadBalancedCall::RecvTrailingMetadataReady(
|
|
2877
2907
|
} else {
|
2878
2908
|
// Get status from headers.
|
2879
2909
|
const auto& md = *self->recv_trailing_metadata_;
|
2880
|
-
const auto& fields = md.legacy_index()->named;
|
2881
|
-
GPR_ASSERT(fields.grpc_status != nullptr);
|
2882
2910
|
grpc_status_code code =
|
2883
|
-
|
2911
|
+
md.get(GrpcStatusMetadata()).value_or(GRPC_STATUS_UNKNOWN);
|
2884
2912
|
if (code != GRPC_STATUS_OK) {
|
2885
2913
|
absl::string_view message;
|
2886
2914
|
if (const auto* grpc_message = md.get_pointer(GrpcMessageMetadata())) {
|
@@ -2889,53 +2917,59 @@ void ClientChannel::LoadBalancedCall::RecvTrailingMetadataReady(
|
|
2889
2917
|
status = absl::Status(static_cast<absl::StatusCode>(code), message);
|
2890
2918
|
}
|
2891
2919
|
}
|
2892
|
-
|
2893
|
-
if (self->call_attempt_tracer_ != nullptr) {
|
2894
|
-
self->call_attempt_tracer_->RecordReceivedTrailingMetadata(
|
2895
|
-
status, self->recv_trailing_metadata_,
|
2896
|
-
*self->transport_stream_stats_);
|
2897
|
-
}
|
2898
|
-
// If the LB policy requested a callback for trailing metadata, invoke
|
2899
|
-
// the callback.
|
2900
|
-
if (self->lb_subchannel_call_tracker_ != nullptr) {
|
2901
|
-
Metadata trailing_metadata(self, self->recv_trailing_metadata_);
|
2902
|
-
BackendMetricAccessor backend_metric_accessor(self);
|
2903
|
-
LoadBalancingPolicy::SubchannelCallTrackerInterface::FinishArgs args = {
|
2904
|
-
status, &trailing_metadata, &backend_metric_accessor};
|
2905
|
-
self->lb_subchannel_call_tracker_->Finish(args);
|
2906
|
-
self->lb_subchannel_call_tracker_.reset();
|
2907
|
-
}
|
2920
|
+
self->RecordCallCompletion(status);
|
2908
2921
|
}
|
2909
2922
|
// Chain to original callback.
|
2910
|
-
if (self->failure_error_
|
2923
|
+
if (!self->failure_error_.ok()) {
|
2911
2924
|
error = self->failure_error_;
|
2912
|
-
self->failure_error_ =
|
2913
|
-
} else {
|
2914
|
-
error = GRPC_ERROR_REF(error);
|
2925
|
+
self->failure_error_ = absl::OkStatus();
|
2915
2926
|
}
|
2916
2927
|
Closure::Run(DEBUG_LOCATION, self->original_recv_trailing_metadata_ready_,
|
2917
2928
|
error);
|
2918
2929
|
}
|
2919
2930
|
|
2931
|
+
void ClientChannel::LoadBalancedCall::RecordCallCompletion(
|
2932
|
+
absl::Status status) {
|
2933
|
+
// If we have a tracer, notify it.
|
2934
|
+
if (call_attempt_tracer_ != nullptr) {
|
2935
|
+
call_attempt_tracer_->RecordReceivedTrailingMetadata(
|
2936
|
+
status, recv_trailing_metadata_, transport_stream_stats_);
|
2937
|
+
}
|
2938
|
+
// If the LB policy requested a callback for trailing metadata, invoke
|
2939
|
+
// the callback.
|
2940
|
+
if (lb_subchannel_call_tracker_ != nullptr) {
|
2941
|
+
Metadata trailing_metadata(recv_trailing_metadata_);
|
2942
|
+
BackendMetricAccessor backend_metric_accessor(this);
|
2943
|
+
const char* peer_string =
|
2944
|
+
peer_string_ != nullptr
|
2945
|
+
? reinterpret_cast<char*>(gpr_atm_acq_load(peer_string_))
|
2946
|
+
: "";
|
2947
|
+
LoadBalancingPolicy::SubchannelCallTrackerInterface::FinishArgs args = {
|
2948
|
+
peer_string, status, &trailing_metadata, &backend_metric_accessor};
|
2949
|
+
lb_subchannel_call_tracker_->Finish(args);
|
2950
|
+
lb_subchannel_call_tracker_.reset();
|
2951
|
+
}
|
2952
|
+
}
|
2953
|
+
|
2920
2954
|
void ClientChannel::LoadBalancedCall::CreateSubchannelCall() {
|
2921
2955
|
SubchannelCall::Args call_args = {
|
2922
|
-
std::move(connected_subchannel_), pollent_, path_, /*start_time=*/0,
|
2956
|
+
std::move(connected_subchannel_), pollent_, path_.Ref(), /*start_time=*/0,
|
2923
2957
|
deadline_, arena_,
|
2924
2958
|
// TODO(roth): When we implement hedging support, we will probably
|
2925
2959
|
// need to use a separate call context for each subchannel call.
|
2926
2960
|
call_context_, call_combiner_};
|
2927
|
-
grpc_error_handle error
|
2961
|
+
grpc_error_handle error;
|
2928
2962
|
subchannel_call_ = SubchannelCall::Create(std::move(call_args), &error);
|
2929
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
2963
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2930
2964
|
gpr_log(GPR_INFO,
|
2931
2965
|
"chand=%p lb_call=%p: create subchannel_call=%p: error=%s", chand_,
|
2932
|
-
this, subchannel_call_.get(),
|
2966
|
+
this, subchannel_call_.get(), StatusToString(error).c_str());
|
2933
2967
|
}
|
2934
2968
|
if (on_call_destruction_complete_ != nullptr) {
|
2935
2969
|
subchannel_call_->SetAfterCallStackDestroy(on_call_destruction_complete_);
|
2936
2970
|
on_call_destruction_complete_ = nullptr;
|
2937
2971
|
}
|
2938
|
-
if (GPR_UNLIKELY(error
|
2972
|
+
if (GPR_UNLIKELY(!error.ok())) {
|
2939
2973
|
PendingBatchesFail(error, YieldCallCombiner);
|
2940
2974
|
} else {
|
2941
2975
|
PendingBatchesResume();
|
@@ -2965,19 +2999,19 @@ class ClientChannel::LoadBalancedCall::LbQueuedCallCanceller {
|
|
2965
2999
|
auto* chand = lb_call->chand_;
|
2966
3000
|
{
|
2967
3001
|
MutexLock lock(&chand->data_plane_mu_);
|
2968
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
3002
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2969
3003
|
gpr_log(GPR_INFO,
|
2970
3004
|
"chand=%p lb_call=%p: cancelling queued pick: "
|
2971
3005
|
"error=%s self=%p calld->pick_canceller=%p",
|
2972
|
-
chand, lb_call,
|
3006
|
+
chand, lb_call, StatusToString(error).c_str(), self,
|
2973
3007
|
lb_call->lb_call_canceller_);
|
2974
3008
|
}
|
2975
|
-
if (lb_call->lb_call_canceller_ == self && error
|
3009
|
+
if (lb_call->lb_call_canceller_ == self && !error.ok()) {
|
2976
3010
|
lb_call->call_dispatch_controller_->Commit();
|
2977
3011
|
// Remove pick from list of queued picks.
|
2978
3012
|
lb_call->MaybeRemoveCallFromLbQueuedCallsLocked();
|
2979
3013
|
// Fail pending batches on the call.
|
2980
|
-
lb_call->PendingBatchesFail(
|
3014
|
+
lb_call->PendingBatchesFail(error,
|
2981
3015
|
YieldCallCombinerIfPendingBatchesFound);
|
2982
3016
|
}
|
2983
3017
|
}
|
@@ -2991,7 +3025,7 @@ class ClientChannel::LoadBalancedCall::LbQueuedCallCanceller {
|
|
2991
3025
|
|
2992
3026
|
void ClientChannel::LoadBalancedCall::MaybeRemoveCallFromLbQueuedCallsLocked() {
|
2993
3027
|
if (!queued_pending_lb_pick_) return;
|
2994
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
3028
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2995
3029
|
gpr_log(GPR_INFO, "chand=%p lb_call=%p: removing from queued picks list",
|
2996
3030
|
chand_, this);
|
2997
3031
|
}
|
@@ -2999,11 +3033,15 @@ void ClientChannel::LoadBalancedCall::MaybeRemoveCallFromLbQueuedCallsLocked() {
|
|
2999
3033
|
queued_pending_lb_pick_ = false;
|
3000
3034
|
// Lame the call combiner canceller.
|
3001
3035
|
lb_call_canceller_ = nullptr;
|
3036
|
+
// Add trace annotation
|
3037
|
+
if (call_attempt_tracer_ != nullptr) {
|
3038
|
+
call_attempt_tracer_->RecordAnnotation("Delayed LB pick complete.");
|
3039
|
+
}
|
3002
3040
|
}
|
3003
3041
|
|
3004
3042
|
void ClientChannel::LoadBalancedCall::MaybeAddCallToLbQueuedCallsLocked() {
|
3005
3043
|
if (queued_pending_lb_pick_) return;
|
3006
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
3044
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
3007
3045
|
gpr_log(GPR_INFO, "chand=%p lb_call=%p: adding to queued picks list",
|
3008
3046
|
chand_, this);
|
3009
3047
|
}
|
@@ -3023,13 +3061,13 @@ void ClientChannel::LoadBalancedCall::AsyncPickDone(grpc_error_handle error) {
|
|
3023
3061
|
void ClientChannel::LoadBalancedCall::PickDone(void* arg,
|
3024
3062
|
grpc_error_handle error) {
|
3025
3063
|
auto* self = static_cast<LoadBalancedCall*>(arg);
|
3026
|
-
if (error
|
3027
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
3064
|
+
if (!error.ok()) {
|
3065
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
3028
3066
|
gpr_log(GPR_INFO,
|
3029
3067
|
"chand=%p lb_call=%p: failed to pick subchannel: error=%s",
|
3030
|
-
self->chand_, self,
|
3068
|
+
self->chand_, self, StatusToString(error).c_str());
|
3031
3069
|
}
|
3032
|
-
self->PendingBatchesFail(
|
3070
|
+
self->PendingBatchesFail(error, YieldCallCombiner);
|
3033
3071
|
return;
|
3034
3072
|
}
|
3035
3073
|
self->call_dispatch_controller_->Commit();
|
@@ -3046,7 +3084,6 @@ void ClientChannel::LoadBalancedCall::PickSubchannel(void* arg,
|
|
3046
3084
|
}
|
3047
3085
|
if (pick_complete) {
|
3048
3086
|
PickDone(self, error);
|
3049
|
-
GRPC_ERROR_UNREF(error);
|
3050
3087
|
}
|
3051
3088
|
}
|
3052
3089
|
|
@@ -3059,14 +3096,12 @@ bool ClientChannel::LoadBalancedCall::PickSubchannelLocked(
|
|
3059
3096
|
pending_batches_[0]->payload->send_initial_metadata;
|
3060
3097
|
grpc_metadata_batch* initial_metadata_batch =
|
3061
3098
|
send_initial_metadata.send_initial_metadata;
|
3062
|
-
const uint32_t send_initial_metadata_flags =
|
3063
|
-
send_initial_metadata.send_initial_metadata_flags;
|
3064
3099
|
// Perform LB pick.
|
3065
3100
|
LoadBalancingPolicy::PickArgs pick_args;
|
3066
|
-
pick_args.path =
|
3101
|
+
pick_args.path = path_.as_string_view();
|
3067
3102
|
LbCallState lb_call_state(this);
|
3068
3103
|
pick_args.call_state = &lb_call_state;
|
3069
|
-
Metadata initial_metadata(
|
3104
|
+
Metadata initial_metadata(initial_metadata_batch);
|
3070
3105
|
pick_args.initial_metadata = &initial_metadata;
|
3071
3106
|
auto result = chand_->picker_->Pick(pick_args);
|
3072
3107
|
return HandlePickResult<bool>(
|
@@ -3074,7 +3109,7 @@ bool ClientChannel::LoadBalancedCall::PickSubchannelLocked(
|
|
3074
3109
|
// CompletePick
|
3075
3110
|
[this](LoadBalancingPolicy::PickResult::Complete* complete_pick)
|
3076
3111
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::data_plane_mu_) {
|
3077
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
3112
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
3078
3113
|
gpr_log(GPR_INFO,
|
3079
3114
|
"chand=%p lb_call=%p: LB pick succeeded: subchannel=%p",
|
3080
3115
|
chand_, this, complete_pick->subchannel.get());
|
@@ -3090,7 +3125,7 @@ bool ClientChannel::LoadBalancedCall::PickSubchannelLocked(
|
|
3090
3125
|
// yet seen that change and given us a new picker), then just
|
3091
3126
|
// queue the pick. We'll try again as soon as we get a new picker.
|
3092
3127
|
if (connected_subchannel_ == nullptr) {
|
3093
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
3128
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
3094
3129
|
gpr_log(GPR_INFO,
|
3095
3130
|
"chand=%p lb_call=%p: subchannel returned by LB picker "
|
3096
3131
|
"has no connected subchannel; queueing pick",
|
@@ -3110,7 +3145,7 @@ bool ClientChannel::LoadBalancedCall::PickSubchannelLocked(
|
|
3110
3145
|
// QueuePick
|
3111
3146
|
[this](LoadBalancingPolicy::PickResult::Queue* /*queue_pick*/)
|
3112
3147
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::data_plane_mu_) {
|
3113
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
3148
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
3114
3149
|
gpr_log(GPR_INFO, "chand=%p lb_call=%p: LB pick queued", chand_,
|
3115
3150
|
this);
|
3116
3151
|
}
|
@@ -3118,22 +3153,19 @@ bool ClientChannel::LoadBalancedCall::PickSubchannelLocked(
|
|
3118
3153
|
return false;
|
3119
3154
|
},
|
3120
3155
|
// FailPick
|
3121
|
-
[this,
|
3156
|
+
[this, initial_metadata_batch,
|
3122
3157
|
&error](LoadBalancingPolicy::PickResult::Fail* fail_pick)
|
3123
3158
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::data_plane_mu_) {
|
3124
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
3159
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
3125
3160
|
gpr_log(GPR_INFO, "chand=%p lb_call=%p: LB pick failed: %s",
|
3126
3161
|
chand_, this, fail_pick->status.ToString().c_str());
|
3127
3162
|
}
|
3128
3163
|
// If wait_for_ready is false, then the error indicates the RPC
|
3129
3164
|
// attempt's final status.
|
3130
|
-
if ((
|
3131
|
-
|
3132
|
-
|
3133
|
-
|
3134
|
-
*error = GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
|
3135
|
-
"Failed to pick subchannel", &lb_error, 1);
|
3136
|
-
GRPC_ERROR_UNREF(lb_error);
|
3165
|
+
if (!initial_metadata_batch->GetOrCreatePointer(WaitForReady())
|
3166
|
+
->value) {
|
3167
|
+
*error = absl_status_to_grpc_error(MaybeRewriteIllegalStatusCode(
|
3168
|
+
std::move(fail_pick->status), "LB pick"));
|
3137
3169
|
MaybeRemoveCallFromLbQueuedCallsLocked();
|
3138
3170
|
return true;
|
3139
3171
|
}
|
@@ -3145,13 +3177,14 @@ bool ClientChannel::LoadBalancedCall::PickSubchannelLocked(
|
|
3145
3177
|
// DropPick
|
3146
3178
|
[this, &error](LoadBalancingPolicy::PickResult::Drop* drop_pick)
|
3147
3179
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::data_plane_mu_) {
|
3148
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
3180
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
3149
3181
|
gpr_log(GPR_INFO, "chand=%p lb_call=%p: LB pick dropped: %s",
|
3150
3182
|
chand_, this, drop_pick->status.ToString().c_str());
|
3151
3183
|
}
|
3152
|
-
*error =
|
3153
|
-
|
3154
|
-
|
3184
|
+
*error = grpc_error_set_int(
|
3185
|
+
absl_status_to_grpc_error(MaybeRewriteIllegalStatusCode(
|
3186
|
+
std::move(drop_pick->status), "LB drop")),
|
3187
|
+
StatusIntProperty::kLbPolicyDrop, 1);
|
3155
3188
|
MaybeRemoveCallFromLbQueuedCallsLocked();
|
3156
3189
|
return true;
|
3157
3190
|
});
|