grpc 1.42.0 → 1.49.1
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 +622 -358
- data/include/grpc/compression.h +1 -1
- data/include/grpc/event_engine/event_engine.h +114 -43
- data/include/grpc/event_engine/internal/memory_allocator_impl.h +1 -31
- data/include/grpc/event_engine/memory_allocator.h +27 -26
- data/include/grpc/event_engine/memory_request.h +57 -0
- data/include/grpc/event_engine/port.h +1 -1
- data/include/grpc/event_engine/slice.h +286 -0
- data/include/grpc/event_engine/slice_buffer.h +118 -0
- data/include/grpc/grpc.h +43 -17
- data/include/grpc/grpc_posix.h +20 -19
- data/include/grpc/grpc_security.h +323 -195
- data/include/grpc/grpc_security_constants.h +1 -14
- data/include/grpc/impl/codegen/compression_types.h +2 -3
- data/include/grpc/impl/codegen/connectivity_state.h +2 -1
- data/include/grpc/impl/codegen/gpr_types.h +2 -1
- data/include/grpc/impl/codegen/grpc_types.h +24 -25
- data/include/grpc/impl/codegen/port_platform.h +107 -44
- data/include/grpc/impl/codegen/slice.h +5 -2
- data/include/grpc/slice.h +0 -11
- data/src/core/ext/filters/census/grpc_context.cc +3 -0
- data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +309 -0
- data/src/core/ext/filters/channel_idle/channel_idle_filter.h +141 -0
- data/src/core/ext/filters/{client_idle → channel_idle}/idle_filter_state.cc +1 -1
- data/src/core/ext/filters/{client_idle → channel_idle}/idle_filter_state.h +7 -5
- data/src/core/ext/filters/client_channel/backend_metric.cc +20 -16
- data/src/core/ext/filters/client_channel/backend_metric.h +19 -8
- data/src/core/ext/filters/client_channel/backup_poller.cc +20 -14
- data/src/core/ext/filters/client_channel/backup_poller.h +2 -4
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +48 -26
- data/src/core/ext/filters/client_channel/client_channel.cc +574 -496
- data/src/core/ext/filters/client_channel/client_channel.h +100 -54
- data/src/core/ext/filters/client_channel/client_channel_channelz.cc +3 -5
- data/src/core/ext/filters/client_channel/client_channel_channelz.h +12 -2
- data/src/core/ext/filters/client_channel/client_channel_factory.cc +2 -26
- data/src/core/ext/filters/client_channel/client_channel_factory.h +8 -8
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +9 -25
- data/src/core/ext/filters/client_channel/config_selector.cc +1 -0
- data/src/core/ext/filters/client_channel/config_selector.h +21 -11
- data/src/core/ext/filters/client_channel/connector.h +12 -7
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +24 -12
- data/src/core/ext/filters/client_channel/dynamic_filters.h +14 -4
- data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +4 -22
- data/src/core/ext/filters/client_channel/global_subchannel_pool.h +6 -15
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +140 -583
- data/src/core/ext/filters/client_channel/health/health_check_client.h +26 -160
- data/src/core/ext/filters/client_channel/http_proxy.cc +100 -126
- data/src/core/ext/filters/client_channel/http_proxy.h +23 -0
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +10 -5
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +7 -5
- 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 +25 -11
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +10 -5
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +15 -12
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h +1 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +285 -225
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +0 -7
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +16 -3
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +6 -2
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +1 -2
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +8 -2
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +26 -16
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +10 -8
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +407 -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/outlier_detection/outlier_detection.cc +1142 -0
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +78 -0
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +206 -190
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +420 -292
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +419 -272
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +11 -5
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +302 -236
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +269 -241
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +142 -124
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +210 -164
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +231 -205
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +7 -1
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +252 -167
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +103 -86
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +534 -548
- data/src/core/ext/filters/client_channel/local_subchannel_pool.cc +4 -0
- data/src/core/ext/filters/client_channel/local_subchannel_pool.h +1 -0
- data/src/core/ext/filters/client_channel/proxy_mapper.h +14 -15
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +20 -16
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.h +12 -6
- data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +38 -28
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +676 -325
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +30 -13
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +29 -23
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +37 -56
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +332 -329
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +55 -40
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +3 -2
- 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 +2 -1
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +126 -255
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +39 -49
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +18 -3
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +167 -85
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +212 -0
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +112 -0
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +58 -61
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +598 -472
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +3 -1
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +52 -54
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +26 -17
- data/src/core/ext/filters/client_channel/retry_filter.cc +322 -208
- data/src/core/ext/filters/client_channel/retry_filter.h +1 -0
- data/src/core/ext/filters/client_channel/retry_service_config.cc +52 -44
- data/src/core/ext/filters/client_channel/retry_service_config.h +31 -19
- data/src/core/ext/filters/client_channel/retry_throttle.cc +10 -31
- data/src/core/ext/filters/client_channel/retry_throttle.h +18 -6
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +35 -17
- data/src/core/ext/filters/client_channel/subchannel.cc +250 -298
- data/src/core/ext/filters/client_channel/subchannel.h +91 -47
- 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 +20 -26
- data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +472 -0
- data/src/core/ext/filters/client_channel/subchannel_stream_client.h +222 -0
- data/src/core/ext/filters/deadline/deadline_filter.cc +35 -25
- data/src/core/ext/filters/deadline/deadline_filter.h +11 -4
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +171 -402
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +31 -3
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +30 -24
- data/src/core/ext/filters/fault_injection/service_config_parser.h +29 -10
- data/src/core/ext/filters/http/client/http_client_filter.cc +107 -551
- data/src/core/ext/filters/http/client/http_client_filter.h +35 -5
- data/src/core/ext/filters/http/client_authority_filter.cc +43 -112
- data/src/core/ext/filters/http/client_authority_filter.h +28 -6
- data/src/core/ext/filters/http/http_filters_plugin.cc +35 -28
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +101 -320
- data/src/core/ext/filters/http/message_compress/message_compress_filter.h +1 -2
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +59 -133
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.h +1 -0
- data/src/core/ext/filters/http/server/http_server_filter.cc +100 -476
- data/src/core/ext/filters/http/server/http_server_filter.h +37 -3
- data/src/core/ext/filters/message_size/message_size_filter.cc +78 -76
- data/src/core/ext/filters/message_size/message_size_filter.h +25 -8
- data/src/core/ext/filters/rbac/rbac_filter.cc +174 -0
- data/src/core/ext/filters/rbac/rbac_filter.h +84 -0
- data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +621 -0
- data/src/core/ext/filters/rbac/rbac_service_config_parser.h +85 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector.cc +62 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector.h +85 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +161 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.h +33 -0
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +256 -98
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +9 -9
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +346 -166
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +5 -5
- data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +3 -3
- data/src/core/ext/transport/chttp2/transport/bin_decoder.h +2 -1
- data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +1 -0
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +646 -888
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +16 -5
- data/src/core/ext/transport/chttp2/transport/context_list.cc +6 -3
- data/src/core/ext/transport/chttp2/transport/context_list.h +6 -4
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +215 -266
- data/src/core/ext/transport/chttp2/transport/flow_control.h +183 -291
- data/src/core/ext/transport/chttp2/transport/frame.h +0 -4
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +59 -212
- data/src/core/ext/transport/chttp2/transport/frame_data.h +13 -36
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +3 -0
- data/src/core/ext/transport/chttp2/transport/frame_goaway.h +3 -1
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +9 -4
- data/src/core/ext/transport/chttp2/transport/frame_ping.h +3 -0
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +11 -2
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +3 -0
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +12 -42
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +4 -0
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +10 -12
- data/src/core/ext/transport/chttp2/transport/frame_window_update.h +3 -0
- data/src/core/ext/transport/chttp2/transport/hpack_constants.h +7 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +389 -249
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +106 -147
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +3 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +12 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +106 -170
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +8 -2
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +146 -37
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +41 -46
- data/src/core/ext/transport/chttp2/transport/http2_settings.h +0 -1
- data/src/core/ext/transport/chttp2/transport/internal.h +48 -155
- data/src/core/ext/transport/chttp2/transport/parsing.cc +87 -51
- data/src/core/ext/transport/chttp2/transport/stream_lists.cc +11 -11
- data/src/core/ext/transport/chttp2/transport/stream_map.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/stream_map.h +1 -0
- data/src/core/ext/transport/chttp2/transport/varint.h +2 -0
- data/src/core/ext/transport/chttp2/transport/writing.cc +135 -157
- data/src/core/ext/transport/inproc/inproc_plugin.cc +0 -5
- data/src/core/ext/transport/inproc/inproc_transport.cc +161 -227
- data/src/core/ext/transport/inproc/inproc_transport.h +4 -5
- 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 +121 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.h +569 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +60 -341
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +280 -1355
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.c +352 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.h +1768 -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 +43 -0
- data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +51 -0
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +30 -4
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +54 -17
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +143 -116
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +730 -385
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +241 -199
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +1360 -663
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +49 -28
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +213 -90
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +321 -271
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +1776 -826
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +20 -7
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +47 -23
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +60 -27
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +277 -98
- 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 +74 -53
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +383 -189
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +21 -7
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +50 -24
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +215 -176
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +1179 -583
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +105 -45
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +554 -166
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +19 -6
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +43 -23
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +16 -22
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +46 -100
- 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 +145 -117
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +821 -409
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +141 -92
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +773 -348
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +21 -8
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +62 -30
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +204 -125
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +1068 -398
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +17 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +33 -16
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +27 -13
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +92 -48
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c +22 -9
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +80 -33
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +26 -13
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +98 -48
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +21 -8
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +51 -25
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +51 -35
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +207 -108
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +74 -55
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +374 -189
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +70 -53
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +378 -187
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +19 -6
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +39 -20
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +122 -71
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +660 -259
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +104 -79
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +589 -300
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +31 -16
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +109 -48
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +27 -10
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +98 -39
- 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 +82 -61
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +446 -234
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +86 -65
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +443 -236
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +139 -103
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +649 -293
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +45 -41
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +255 -165
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +706 -570
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +4125 -1898
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +38 -19
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +161 -71
- 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 +44 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.h +92 -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 +27 -13
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +86 -45
- 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 +46 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.h +98 -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 +54 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.h +150 -0
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +17 -4
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +39 -23
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +45 -28
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +208 -111
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +51 -36
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +273 -131
- 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 +26 -13
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +91 -42
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +292 -224
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +1679 -733
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.c +52 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +168 -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 +9 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +6 -3
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +107 -60
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +607 -234
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +41 -26
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +169 -86
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +126 -83
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +651 -262
- 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 +15 -2
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +26 -14
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +206 -72
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +1095 -255
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +31 -17
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +116 -61
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +74 -57
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +368 -185
- 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 +34 -18
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +140 -80
- 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 +28 -14
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +108 -56
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +21 -8
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +55 -30
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +20 -7
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +53 -26
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +19 -6
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +43 -23
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +35 -20
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +130 -68
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +31 -17
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +132 -64
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +26 -12
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +94 -52
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +37 -22
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +163 -82
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +50 -31
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +258 -144
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +53 -36
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +256 -130
- 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 +9 -0
- data/src/core/ext/upb-generated/envoy/type/v3/http.upb.h +3 -0
- 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 +23 -9
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +71 -35
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +30 -15
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +111 -51
- 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 +41 -0
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +19 -6
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +45 -18
- 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 +22 -0
- data/src/core/ext/upb-generated/google/api/annotations.upb.h +23 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +154 -125
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +765 -381
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +158 -126
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +844 -401
- data/src/core/ext/upb-generated/google/api/http.upb.c +43 -28
- data/src/core/ext/upb-generated/google/api/http.upb.h +229 -114
- 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 +18 -5
- data/src/core/ext/upb-generated/google/protobuf/any.upb.h +43 -21
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +374 -282
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +2199 -1029
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +18 -5
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +41 -19
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +15 -2
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +26 -14
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +47 -31
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +190 -92
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +18 -5
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +41 -19
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +57 -36
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +277 -148
- data/src/core/ext/upb-generated/google/rpc/status.upb.c +21 -8
- data/src/core/ext/upb-generated/google/rpc/status.upb.h +57 -29
- 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 +32 -18
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +108 -47
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +135 -107
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +726 -358
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +27 -12
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +85 -40
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +22 -8
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +65 -34
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +81 -61
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +435 -237
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +34 -19
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +124 -62
- 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 +75 -13
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +206 -56
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +31 -5
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +59 -17
- data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c +21 -0
- data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +16 -0
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +31 -5
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +61 -19
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +30 -4
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +54 -17
- data/src/core/ext/upb-generated/validate/validate.upb.c +406 -310
- data/src/core/ext/upb-generated/validate/validate.upb.h +2822 -1164
- 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 +64 -17
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +191 -67
- 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 +17 -4
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +35 -18
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +30 -16
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +107 -54
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +25 -11
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +58 -29
- 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 +22 -9
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +60 -29
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +33 -19
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +139 -69
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +22 -9
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +63 -29
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +36 -21
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +106 -45
- data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.c +47 -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/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/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/typed_struct.upb.c +20 -7
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +47 -23
- 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 +127 -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 +75 -327
- 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 +256 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.h +115 -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 +10 -8
- data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.h +1 -1
- data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.c +10 -13
- 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 +120 -150
- 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 +253 -280
- 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 +60 -62
- 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 +387 -424
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +76 -76
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.c +16 -18
- 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 +25 -23
- 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 +17 -32
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.h +22 -22
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.c +17 -19
- 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 -246
- 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 +140 -116
- 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 +16 -19
- 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 +24 -43
- 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 +23 -51
- 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 +179 -187
- 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 +16 -19
- 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 +254 -254
- 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 +14 -16
- 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 +16 -20
- 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 +16 -18
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +26 -28
- 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 +15 -18
- 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 +20 -28
- 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 +21 -33
- 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 +20 -30
- 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 +16 -18
- 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 -165
- 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 +155 -166
- 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 +21 -23
- 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 +46 -42
- 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 +19 -35
- 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 +19 -37
- 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 +194 -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 +82 -85
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +7 -12
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +874 -917
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +170 -160
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c +54 -48
- 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 +54 -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 +17 -21
- 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 +47 -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 +77 -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 +17 -18
- 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 +19 -29
- 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 +20 -26
- 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 +19 -20
- 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/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +405 -410
- 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/transport_sockets/tls/v3/cert.upbdefs.c +17 -13
- 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 +174 -157
- 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 +21 -27
- 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 +219 -216
- 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 +16 -18
- 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 +162 -107
- 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 +18 -22
- 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 +125 -135
- 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 +15 -23
- 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/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 +17 -21
- 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 +17 -19
- 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 +17 -19
- 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 +17 -19
- 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 +38 -43
- 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/string.upbdefs.c +17 -21
- 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 +16 -21
- 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 +18 -24
- 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 +15 -29
- 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 +16 -26
- 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 +12 -10
- 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 +14 -19
- 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 +13 -19
- 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 +38 -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 +13 -16
- 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 +7 -7
- 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 +5 -14
- 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 +5 -10
- data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +96 -151
- data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.h +82 -82
- data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c +5 -10
- data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c +5 -10
- data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c +5 -16
- data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.h +13 -13
- data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c +5 -10
- data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c +5 -26
- data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.h +28 -28
- data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c +6 -11
- 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 +6 -15
- data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.h +10 -10
- data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c +7 -12
- data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c +6 -6
- data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.h +1 -1
- data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c +6 -11
- data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c +6 -11
- data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +8 -57
- 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 +6 -17
- 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 +7 -12
- data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.h +4 -4
- data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c +9 -16
- 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 +6 -13
- 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 +8 -13
- 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 +8 -15
- 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 +8 -13
- 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/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/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/typed_struct.upbdefs.c +7 -12
- data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.h +4 -4
- data/src/core/ext/xds/certificate_provider_factory.h +6 -1
- data/src/core/ext/xds/certificate_provider_registry.cc +9 -9
- data/src/core/ext/xds/certificate_provider_registry.h +3 -1
- data/src/core/ext/xds/certificate_provider_store.cc +12 -0
- data/src/core/ext/xds/certificate_provider_store.h +19 -1
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +13 -4
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +10 -2
- data/src/core/ext/xds/upb_utils.h +45 -0
- data/src/core/ext/xds/xds_api.cc +331 -3601
- data/src/core/ext/xds/xds_api.h +75 -630
- data/src/core/ext/xds/xds_bootstrap.cc +279 -180
- data/src/core/ext/xds/xds_bootstrap.h +64 -28
- data/src/core/ext/xds/xds_certificate_provider.cc +17 -3
- data/src/core/ext/xds/xds_certificate_provider.h +35 -3
- data/src/core/ext/xds/xds_channel_stack_modifier.cc +27 -20
- data/src/core/ext/xds/xds_channel_stack_modifier.h +17 -4
- data/src/core/ext/xds/xds_client.cc +1185 -2050
- data/src/core/ext/xds/xds_client.h +143 -189
- data/src/core/ext/xds/xds_client_grpc.cc +291 -0
- data/src/core/ext/xds/xds_client_grpc.h +102 -0
- data/src/core/ext/xds/xds_client_stats.cc +18 -19
- data/src/core/ext/xds/xds_client_stats.h +9 -7
- data/src/core/ext/xds/xds_cluster.cc +543 -0
- data/src/core/ext/xds/xds_cluster.h +120 -0
- data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +147 -0
- data/src/core/ext/xds/xds_cluster_specifier_plugin.h +73 -0
- data/src/core/ext/xds/xds_common_types.cc +426 -0
- data/src/core/ext/xds/xds_common_types.h +102 -0
- data/src/core/ext/xds/xds_endpoint.cc +381 -0
- data/src/core/ext/xds/xds_endpoint.h +143 -0
- data/src/core/ext/xds/xds_http_fault_filter.cc +21 -26
- data/src/core/ext/xds/xds_http_fault_filter.h +8 -6
- data/src/core/ext/xds/xds_http_filters.cc +18 -5
- data/src/core/ext/xds/xds_http_filters.h +9 -9
- data/src/core/ext/xds/xds_http_rbac_filter.cc +560 -0
- data/src/core/ext/xds/xds_http_rbac_filter.h +61 -0
- data/src/core/ext/xds/xds_lb_policy_registry.cc +288 -0
- data/src/core/ext/xds/xds_lb_policy_registry.h +72 -0
- data/src/core/ext/xds/xds_listener.cc +1097 -0
- data/src/core/ext/xds/xds_listener.h +229 -0
- data/src/core/ext/{transport/chttp2/transport/hpack_utils.h → xds/xds_resource_type.cc} +12 -9
- data/src/core/ext/xds/xds_resource_type.h +109 -0
- data/src/core/ext/xds/xds_resource_type_impl.h +91 -0
- data/src/core/ext/xds/xds_route_config.cc +1153 -0
- data/src/core/ext/xds/xds_route_config.h +241 -0
- data/src/core/ext/xds/xds_routing.cc +263 -0
- data/src/core/ext/xds/xds_routing.h +104 -0
- data/src/core/ext/xds/xds_server_config_fetcher.cc +1138 -324
- data/src/core/ext/xds/xds_transport.h +86 -0
- data/src/core/ext/xds/xds_transport_grpc.cc +349 -0
- data/src/core/ext/xds/xds_transport_grpc.h +135 -0
- data/src/core/lib/address_utils/parse_address.cc +27 -8
- data/src/core/lib/address_utils/parse_address.h +11 -2
- data/src/core/lib/address_utils/sockaddr_utils.cc +82 -51
- data/src/core/lib/address_utils/sockaddr_utils.h +9 -19
- data/src/core/lib/avl/avl.h +476 -88
- data/src/core/lib/backoff/backoff.cc +10 -39
- data/src/core/lib/backoff/backoff.h +12 -12
- data/src/core/lib/channel/call_finalization.h +90 -0
- data/src/core/lib/channel/call_tracer.h +16 -7
- data/src/core/lib/channel/channel_args.cc +274 -48
- data/src/core/lib/channel/channel_args.h +298 -12
- data/src/core/lib/channel/channel_args_preconditioning.cc +43 -0
- data/src/core/lib/channel/channel_args_preconditioning.h +62 -0
- data/src/core/lib/channel/channel_fwd.h +26 -0
- data/src/core/lib/channel/channel_stack.cc +54 -10
- data/src/core/lib/channel/channel_stack.h +83 -14
- data/src/core/lib/channel/channel_stack_builder.cc +19 -278
- data/src/core/lib/channel/channel_stack_builder.h +104 -150
- data/src/core/lib/channel/channel_stack_builder_impl.cc +95 -0
- data/src/core/lib/channel/channel_stack_builder_impl.h +46 -0
- data/src/core/lib/channel/channel_trace.cc +11 -19
- data/src/core/lib/channel/channel_trace.h +6 -3
- data/src/core/lib/channel/channelz.cc +36 -49
- data/src/core/lib/channel/channelz.h +24 -7
- data/src/core/lib/channel/channelz_registry.cc +11 -19
- data/src/core/lib/channel/channelz_registry.h +10 -9
- data/src/core/lib/channel/connected_channel.cc +26 -30
- data/src/core/lib/channel/connected_channel.h +4 -1
- data/src/core/lib/channel/context.h +11 -0
- data/src/core/lib/channel/promise_based_filter.cc +1263 -0
- data/src/core/lib/channel/promise_based_filter.h +571 -0
- data/src/core/lib/channel/status_util.cc +2 -0
- data/src/core/lib/channel/status_util.h +0 -3
- data/src/core/lib/compression/compression.cc +26 -113
- data/src/core/lib/compression/compression_internal.cc +170 -204
- data/src/core/lib/compression/compression_internal.h +68 -72
- data/src/core/lib/compression/message_compress.cc +14 -12
- data/src/core/lib/compression/message_compress.h +4 -5
- data/src/core/lib/config/core_configuration.cc +14 -3
- data/src/core/lib/config/core_configuration.h +100 -36
- data/src/core/lib/debug/stats.cc +15 -18
- data/src/core/lib/debug/stats.h +13 -4
- data/src/core/lib/debug/stats_data.cc +4 -7
- data/src/core/lib/debug/stats_data.h +18 -25
- data/src/core/lib/debug/trace.h +15 -14
- data/src/core/lib/event_engine/{endpoint_config.cc → channel_args_endpoint_config.cc} +6 -3
- data/src/core/lib/event_engine/{endpoint_config_internal.h → channel_args_endpoint_config.h} +6 -5
- data/src/core/lib/event_engine/default_event_engine.cc +71 -0
- data/src/core/lib/{iomgr/event_engine/resolved_address_internal.cc → event_engine/default_event_engine.h} +13 -17
- data/src/core/lib/event_engine/default_event_engine_factory.cc +50 -0
- data/src/core/lib/{iomgr/event_engine/resolved_address_internal.h → event_engine/default_event_engine_factory.h} +8 -10
- data/src/core/lib/event_engine/executor/executor.h +38 -0
- data/src/core/lib/event_engine/executor/threaded_executor.cc +36 -0
- data/src/core/lib/{iomgr/event_engine/promise.h → event_engine/executor/threaded_executor.h} +18 -25
- data/src/core/lib/event_engine/forkable.cc +101 -0
- data/src/core/lib/event_engine/forkable.h +61 -0
- data/src/core/lib/event_engine/handle_containers.h +67 -0
- data/src/core/lib/event_engine/memory_allocator.cc +74 -0
- data/src/core/lib/event_engine/poller.h +54 -0
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +142 -0
- data/src/core/lib/event_engine/posix_engine/posix_engine.h +121 -0
- data/src/core/lib/event_engine/posix_engine/timer.cc +311 -0
- data/src/core/lib/event_engine/posix_engine/timer.h +193 -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 +290 -0
- data/src/core/lib/event_engine/posix_engine/timer_manager.h +120 -0
- data/src/core/lib/event_engine/promise.h +78 -0
- data/src/core/lib/event_engine/{event_engine.cc → resolved_address.cc} +3 -12
- data/src/core/lib/event_engine/slice.cc +102 -0
- data/src/core/lib/event_engine/slice_buffer.cc +50 -0
- data/src/core/lib/event_engine/socket_notifier.h +55 -0
- data/src/core/lib/event_engine/thread_pool.cc +158 -0
- data/src/core/lib/event_engine/thread_pool.h +81 -0
- data/src/core/lib/event_engine/trace.cc +18 -0
- data/src/core/lib/{iomgr/endpoint_pair_event_engine.cc → event_engine/trace.h} +12 -14
- data/src/core/lib/event_engine/utils.cc +49 -0
- data/src/core/lib/event_engine/utils.h +40 -0
- data/src/core/lib/event_engine/windows/iocp.cc +149 -0
- data/src/core/lib/event_engine/windows/iocp.h +68 -0
- data/src/core/lib/event_engine/windows/win_socket.cc +196 -0
- data/src/core/lib/event_engine/windows/win_socket.h +120 -0
- data/src/core/lib/event_engine/windows/windows_engine.cc +159 -0
- data/src/core/lib/event_engine/windows/windows_engine.h +120 -0
- data/src/core/lib/gpr/log.cc +5 -0
- data/src/core/lib/gpr/sync_posix.cc +1 -0
- data/src/core/lib/gpr/time.cc +13 -10
- data/src/core/lib/gpr/time_posix.cc +6 -9
- data/src/core/lib/gpr/time_windows.cc +10 -7
- data/src/core/lib/gpr/tls.h +10 -5
- data/src/core/lib/gpr/useful.h +47 -0
- data/src/core/lib/gprpp/bitset.h +27 -14
- data/src/core/lib/gprpp/chunked_vector.h +49 -3
- data/src/core/lib/gprpp/construct_destruct.h +1 -0
- data/src/core/lib/gprpp/cpp_impl_of.h +49 -0
- data/src/core/lib/gprpp/debug_location.h +41 -7
- data/src/core/lib/gprpp/dual_ref_counted.h +1 -4
- data/src/core/lib/gprpp/examine_stack.h +0 -1
- data/src/core/lib/gprpp/fork.cc +3 -6
- data/src/core/lib/gprpp/global_config.h +2 -4
- data/src/core/lib/gprpp/global_config_env.cc +10 -9
- data/src/core/lib/gprpp/global_config_env.h +5 -3
- data/src/core/lib/gprpp/global_config_generic.h +0 -4
- data/src/core/lib/gprpp/host_port.cc +2 -0
- data/src/core/lib/gprpp/manual_constructor.h +0 -70
- data/src/core/lib/gprpp/match.h +2 -0
- data/src/core/lib/gprpp/memory.h +1 -5
- data/src/core/lib/gprpp/no_destruct.h +94 -0
- data/src/core/lib/gprpp/orphanable.h +2 -5
- data/src/core/lib/gprpp/ref_counted.h +4 -4
- data/src/core/lib/gprpp/ref_counted_ptr.h +3 -6
- data/src/core/lib/gprpp/single_set_ptr.h +87 -0
- data/src/core/lib/gprpp/stat.h +0 -2
- data/src/core/lib/gprpp/stat_posix.cc +7 -2
- data/src/core/lib/gprpp/status_helper.cc +75 -48
- data/src/core/lib/gprpp/status_helper.h +10 -19
- data/src/core/lib/gprpp/sync.h +3 -1
- data/src/core/lib/gprpp/table.h +33 -1
- data/src/core/lib/gprpp/thd.h +2 -5
- data/src/core/lib/gprpp/thd_posix.cc +4 -2
- data/src/core/lib/gprpp/thd_windows.cc +2 -0
- data/src/core/lib/gprpp/time.cc +214 -0
- data/src/core/lib/gprpp/time.h +301 -0
- data/src/core/lib/gprpp/time_averaged_stats.cc +60 -0
- data/src/core/lib/{iomgr → gprpp}/time_averaged_stats.h +29 -22
- data/src/core/lib/gprpp/time_util.cc +4 -0
- data/src/core/lib/gprpp/time_util.h +1 -1
- data/src/core/lib/gprpp/unique_type_name.h +104 -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/http/format_request.cc +62 -29
- data/src/core/lib/http/format_request.h +10 -7
- data/src/core/lib/http/httpcli.cc +316 -243
- data/src/core/lib/http/httpcli.h +233 -90
- data/src/core/lib/http/httpcli_security_connector.cc +80 -80
- data/src/core/lib/http/httpcli_ssl_credentials.h +39 -0
- data/src/core/lib/http/parser.cc +85 -15
- data/src/core/lib/http/parser.h +18 -2
- data/src/core/lib/iomgr/buffer_list.cc +9 -9
- data/src/core/lib/iomgr/buffer_list.h +18 -18
- data/src/core/lib/iomgr/call_combiner.cc +10 -26
- data/src/core/lib/iomgr/closure.h +20 -9
- data/src/core/lib/iomgr/combiner.cc +9 -7
- data/src/core/lib/iomgr/endpoint.cc +4 -4
- data/src/core/lib/iomgr/endpoint.h +7 -6
- data/src/core/lib/iomgr/endpoint_cfstream.cc +16 -30
- data/src/core/lib/iomgr/endpoint_cfstream.h +4 -4
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +11 -11
- data/src/core/lib/iomgr/endpoint_pair_windows.cc +5 -14
- data/src/core/lib/iomgr/error.cc +7 -775
- data/src/core/lib/iomgr/error.h +6 -149
- data/src/core/lib/iomgr/error_cfstream.cc +0 -5
- data/src/core/lib/iomgr/ev_apple.cc +6 -5
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +65 -25
- data/src/core/lib/iomgr/ev_epoll1_linux.h +1 -1
- data/src/core/lib/iomgr/ev_poll_posix.cc +101 -68
- data/src/core/lib/iomgr/ev_poll_posix.h +2 -2
- data/src/core/lib/iomgr/ev_posix.cc +58 -100
- data/src/core/lib/iomgr/ev_posix.h +6 -4
- data/src/core/lib/iomgr/exec_ctx.cc +14 -98
- data/src/core/lib/iomgr/exec_ctx.h +19 -36
- data/src/core/lib/iomgr/executor.cc +16 -20
- data/src/core/lib/iomgr/executor.h +1 -4
- data/src/core/lib/iomgr/fork_posix.cc +1 -0
- data/src/core/lib/iomgr/internal_errqueue.cc +38 -47
- data/src/core/lib/iomgr/internal_errqueue.h +1 -6
- data/src/core/lib/iomgr/iocp_windows.cc +9 -9
- data/src/core/lib/iomgr/iocp_windows.h +1 -1
- data/src/core/lib/iomgr/iomgr.cc +7 -1
- data/src/core/lib/iomgr/iomgr_fwd.h +25 -0
- data/src/core/lib/iomgr/iomgr_posix.cc +3 -2
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +3 -2
- data/src/core/lib/iomgr/iomgr_windows.cc +2 -2
- data/src/core/lib/iomgr/load_file.cc +1 -1
- data/src/core/lib/iomgr/lockfree_event.cc +0 -17
- data/src/core/lib/iomgr/polling_entity.h +6 -0
- data/src/core/lib/iomgr/pollset.cc +1 -1
- data/src/core/lib/iomgr/pollset.h +4 -4
- data/src/core/lib/iomgr/pollset_set.h +1 -2
- data/src/core/lib/iomgr/pollset_windows.cc +2 -2
- data/src/core/lib/iomgr/port.h +29 -12
- data/src/core/lib/iomgr/resolve_address.cc +12 -23
- data/src/core/lib/iomgr/resolve_address.h +79 -46
- data/src/core/lib/iomgr/resolve_address_impl.h +58 -0
- data/src/core/lib/iomgr/resolve_address_posix.cc +109 -65
- data/src/core/lib/iomgr/resolve_address_posix.h +64 -0
- data/src/core/lib/iomgr/resolve_address_windows.cc +122 -76
- data/src/core/lib/iomgr/resolve_address_windows.h +64 -0
- data/src/core/{ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_event_engine.cc → lib/iomgr/resolved_address.h} +21 -10
- data/src/core/lib/iomgr/sockaddr.h +2 -3
- data/src/core/lib/iomgr/sockaddr_posix.h +2 -0
- data/src/core/lib/iomgr/sockaddr_utils_posix.cc +62 -0
- data/src/core/lib/iomgr/sockaddr_windows.h +2 -0
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +3 -19
- data/src/core/lib/iomgr/socket_windows.h +0 -2
- data/src/core/lib/iomgr/tcp_client.cc +12 -9
- data/src/core/lib/iomgr/tcp_client.h +25 -15
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +25 -19
- data/src/core/lib/iomgr/tcp_client_posix.cc +161 -52
- data/src/core/lib/iomgr/tcp_client_posix.h +4 -5
- data/src/core/lib/iomgr/tcp_client_windows.cc +28 -26
- data/src/core/lib/iomgr/tcp_posix.cc +307 -97
- data/src/core/lib/iomgr/tcp_posix.h +1 -3
- data/src/core/lib/iomgr/tcp_server.cc +4 -6
- data/src/core/lib/iomgr/tcp_server.h +6 -8
- data/src/core/lib/iomgr/tcp_server_posix.cc +72 -53
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +19 -18
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +42 -38
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +10 -6
- data/src/core/lib/iomgr/tcp_server_windows.cc +25 -24
- data/src/core/lib/iomgr/tcp_windows.cc +31 -26
- data/src/core/lib/iomgr/tcp_windows.h +1 -2
- data/src/core/lib/iomgr/timer.cc +2 -2
- data/src/core/lib/iomgr/timer.h +11 -6
- data/src/core/lib/iomgr/timer_generic.cc +100 -83
- data/src/core/lib/iomgr/timer_manager.cc +15 -14
- data/src/core/lib/iomgr/unix_sockets_posix.cc +22 -34
- data/src/core/lib/iomgr/unix_sockets_posix.h +4 -7
- data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +6 -15
- data/src/core/lib/iomgr/wakeup_fd_pipe.cc +2 -2
- data/src/core/lib/iomgr/wakeup_fd_posix.cc +15 -12
- data/src/core/lib/iomgr/wakeup_fd_posix.h +0 -2
- data/src/core/lib/json/json.h +20 -24
- data/src/core/lib/json/json_args.h +34 -0
- data/src/core/lib/json/json_object_loader.cc +233 -0
- data/src/core/lib/json/json_object_loader.h +618 -0
- data/src/core/lib/json/json_reader.cc +155 -75
- data/src/core/lib/json/json_util.cc +11 -32
- data/src/core/lib/json/json_util.h +15 -6
- data/src/core/lib/json/json_writer.cc +6 -1
- data/src/core/{ext/filters/client_channel → lib/load_balancing}/lb_policy.cc +7 -45
- data/src/core/{ext/filters/client_channel → lib/load_balancing}/lb_policy.h +105 -95
- data/src/core/lib/load_balancing/lb_policy_factory.h +49 -0
- data/src/core/lib/load_balancing/lb_policy_registry.cc +167 -0
- data/src/core/{ext/filters/client_channel → lib/load_balancing}/lb_policy_registry.h +31 -26
- data/src/core/{ext/filters/client_channel → lib/load_balancing}/subchannel_interface.h +57 -47
- data/src/core/lib/matchers/matchers.cc +7 -4
- data/src/core/lib/matchers/matchers.h +2 -0
- data/src/core/lib/promise/activity.cc +120 -0
- data/src/core/lib/promise/activity.h +582 -0
- data/src/core/lib/promise/arena_promise.h +201 -0
- data/src/core/lib/promise/call_push_pull.h +148 -0
- data/src/core/lib/promise/context.h +85 -0
- data/src/core/lib/promise/detail/basic_seq.h +516 -0
- data/src/core/lib/promise/detail/promise_factory.h +187 -0
- data/src/core/lib/promise/detail/promise_like.h +85 -0
- data/src/core/lib/promise/detail/status.h +50 -0
- data/src/core/lib/promise/exec_ctx_wakeup_scheduler.h +48 -0
- data/src/core/lib/promise/intra_activity_waiter.h +49 -0
- data/src/core/lib/promise/latch.h +103 -0
- data/src/core/lib/promise/loop.h +136 -0
- data/src/core/lib/promise/map.h +87 -0
- data/src/core/lib/promise/poll.h +66 -0
- data/src/core/lib/promise/promise.h +96 -0
- data/src/core/lib/promise/race.h +83 -0
- data/src/core/lib/promise/seq.h +108 -0
- data/src/core/lib/promise/sleep.cc +77 -0
- data/src/core/lib/promise/sleep.h +79 -0
- data/src/core/lib/promise/try_seq.h +177 -0
- data/src/core/lib/{iomgr/ev_epollex_linux.h → resolver/resolver.cc} +15 -8
- data/src/core/{ext/filters/client_channel → lib/resolver}/resolver.h +45 -53
- data/src/core/{ext/filters/client_channel → lib/resolver}/resolver_factory.h +36 -34
- data/src/core/lib/resolver/resolver_registry.cc +149 -0
- data/src/core/lib/resolver/resolver_registry.h +123 -0
- data/src/core/{ext/filters/client_channel → lib/resolver}/server_address.cc +28 -18
- data/src/core/{ext/filters/client_channel → lib/resolver}/server_address.h +19 -16
- data/src/core/lib/resource_quota/api.cc +96 -0
- data/src/core/lib/resource_quota/api.h +43 -0
- data/src/core/lib/{gprpp → resource_quota}/arena.cc +37 -20
- data/src/core/lib/{gprpp → resource_quota}/arena.h +49 -17
- data/src/core/lib/resource_quota/memory_quota.cc +618 -0
- data/src/core/lib/resource_quota/memory_quota.h +543 -0
- data/src/core/lib/resource_quota/periodic_update.cc +79 -0
- data/src/core/lib/resource_quota/periodic_update.h +71 -0
- data/src/core/{ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_event_engine.cc → lib/resource_quota/resource_quota.cc} +13 -11
- data/src/core/lib/resource_quota/resource_quota.h +74 -0
- data/src/core/lib/resource_quota/thread_quota.cc +45 -0
- data/src/core/lib/resource_quota/thread_quota.h +61 -0
- data/src/core/lib/{iomgr/event_engine/pollset.h → resource_quota/trace.cc} +3 -9
- data/src/core/{ext/filters/max_age/max_age_filter.h → lib/resource_quota/trace.h} +6 -8
- data/src/core/lib/security/authorization/authorization_policy_provider.h +14 -0
- data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +4 -0
- data/src/core/lib/security/authorization/evaluate_args.cc +53 -45
- data/src/core/lib/security/authorization/evaluate_args.h +9 -5
- data/src/core/lib/security/authorization/grpc_authorization_engine.cc +66 -0
- data/src/core/lib/security/authorization/grpc_authorization_engine.h +69 -0
- data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +120 -0
- data/src/core/lib/security/authorization/grpc_server_authz_filter.h +61 -0
- data/src/core/lib/security/authorization/matchers.cc +238 -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/context/security_context.cc +9 -4
- data/src/core/lib/security/context/security_context.h +23 -4
- data/src/core/lib/security/credentials/alts/alts_credentials.cc +18 -10
- data/src/core/lib/security/credentials/alts/alts_credentials.h +18 -4
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc +1 -3
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc +1 -4
- 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 +32 -91
- data/src/core/lib/security/credentials/composite/composite_credentials.h +42 -16
- data/src/core/lib/security/credentials/credentials.cc +6 -11
- data/src/core/lib/security/credentials/credentials.h +106 -99
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +173 -52
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +19 -0
- data/src/core/lib/security/credentials/external/aws_request_signer.cc +9 -0
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +108 -64
- data/src/core/lib/security/credentials/external/external_account_credentials.h +16 -9
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +15 -9
- data/src/core/lib/security/credentials/external/file_external_account_credentials.h +6 -0
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +58 -23
- data/src/core/lib/security/credentials/external/url_external_account_credentials.h +11 -0
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +42 -43
- data/src/core/lib/security/credentials/fake/fake_credentials.h +35 -26
- data/src/core/lib/security/credentials/google_default/credentials_generic.cc +1 -0
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +91 -56
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +20 -7
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +31 -30
- data/src/core/lib/security/credentials/iam/iam_credentials.h +25 -9
- 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 +21 -11
- data/src/core/lib/security/credentials/jwt/json_token.h +2 -2
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +46 -55
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +30 -12
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +90 -56
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +5 -3
- data/src/core/lib/security/credentials/local/local_credentials.cc +19 -13
- data/src/core/lib/security/credentials/local/local_credentials.h +19 -3
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +201 -202
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +81 -34
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +103 -156
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +80 -27
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +31 -35
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +29 -6
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +6 -6
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +9 -3
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +50 -22
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +69 -12
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +241 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +168 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +37 -92
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +73 -149
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +59 -42
- data/src/core/lib/security/credentials/tls/tls_credentials.h +13 -4
- data/src/core/lib/security/credentials/tls/tls_utils.cc +2 -0
- data/src/core/lib/security/credentials/tls/tls_utils.h +1 -1
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +81 -89
- data/src/core/lib/security/credentials/xds/xds_credentials.h +53 -8
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +41 -35
- data/src/core/lib/security/security_connector/alts/alts_security_connector.h +9 -6
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +50 -55
- data/src/core/lib/security/security_connector/fake/fake_security_connector.h +3 -5
- 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 +32 -21
- data/src/core/lib/security/security_connector/load_system_roots_fallback.cc +5 -3
- data/src/core/lib/security/security_connector/{load_system_roots_linux.cc → load_system_roots_supported.cc} +28 -21
- data/src/core/lib/security/security_connector/{load_system_roots_linux.h → load_system_roots_supported.h} +5 -5
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +45 -29
- data/src/core/lib/security/security_connector/local/local_security_connector.h +7 -3
- data/src/core/lib/security/security_connector/security_connector.cc +22 -32
- data/src/core/lib/security/security_connector/security_connector.h +49 -31
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +32 -22
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +4 -2
- data/src/core/lib/security/security_connector/ssl_utils.cc +50 -34
- data/src/core/lib/security/security_connector/ssl_utils.h +23 -24
- data/src/core/lib/security/security_connector/ssl_utils_config.h +1 -1
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +387 -220
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +97 -54
- data/src/core/lib/security/transport/auth_filters.h +45 -5
- data/src/core/lib/security/transport/client_auth_filter.cc +111 -368
- data/src/core/lib/security/transport/secure_endpoint.cc +267 -137
- data/src/core/lib/security/transport/secure_endpoint.h +5 -4
- data/src/core/lib/security/transport/security_handshaker.cc +81 -50
- data/src/core/lib/security/transport/security_handshaker.h +7 -2
- data/src/core/lib/security/transport/server_auth_filter.cc +70 -41
- data/src/core/lib/security/util/json_util.cc +3 -2
- data/src/core/lib/security/util/json_util.h +0 -2
- data/src/core/lib/service_config/service_config.h +89 -0
- data/src/core/{ext → lib}/service_config/service_config_call_data.h +11 -7
- data/src/core/lib/service_config/service_config_impl.cc +238 -0
- data/src/core/{ext/service_config/service_config.h → lib/service_config/service_config_impl.h} +33 -32
- data/src/core/lib/service_config/service_config_parser.cc +98 -0
- data/src/core/lib/service_config/service_config_parser.h +101 -0
- data/src/core/lib/slice/b64.cc +1 -1
- data/src/core/lib/slice/b64.h +2 -0
- data/src/core/lib/slice/percent_encoding.cc +35 -97
- data/src/core/lib/slice/percent_encoding.h +4 -16
- data/src/core/lib/slice/slice.cc +88 -184
- data/src/core/lib/slice/slice.h +389 -0
- data/src/core/lib/slice/slice_api.cc +1 -1
- data/src/core/lib/slice/slice_buffer.cc +83 -23
- data/src/core/lib/slice/slice_buffer.h +137 -0
- data/src/core/lib/{iomgr/is_epollexclusive_available.h → slice/slice_buffer_api.cc} +11 -12
- data/src/core/lib/slice/slice_internal.h +16 -34
- data/src/core/lib/slice/slice_refcount.cc +18 -0
- data/src/core/lib/slice/slice_refcount.h +7 -83
- data/src/core/lib/slice/slice_refcount_base.h +20 -133
- data/src/core/lib/slice/slice_string_helpers.cc +0 -16
- data/src/core/lib/slice/slice_string_helpers.h +1 -8
- data/src/core/lib/surface/builtins.cc +11 -6
- data/src/core/lib/surface/byte_buffer.cc +7 -1
- data/src/core/lib/surface/byte_buffer_reader.cc +4 -4
- data/src/core/lib/surface/call.cc +1159 -1289
- data/src/core/lib/surface/call.h +26 -22
- data/src/core/lib/surface/call_details.cc +4 -4
- data/src/core/lib/surface/call_log_batch.cc +7 -1
- data/src/core/lib/surface/call_test_only.h +4 -1
- data/src/core/lib/surface/channel.cc +218 -312
- data/src/core/lib/surface/channel.h +102 -74
- data/src/core/lib/surface/channel_init.cc +2 -3
- data/src/core/lib/surface/channel_init.h +4 -6
- data/src/core/lib/surface/channel_ping.cc +8 -2
- data/src/core/lib/surface/channel_stack_type.cc +0 -2
- data/src/core/lib/surface/channel_stack_type.h +0 -2
- data/src/core/lib/surface/completion_queue.cc +41 -33
- data/src/core/lib/surface/completion_queue.h +7 -5
- data/src/core/lib/surface/completion_queue_factory.cc +1 -0
- data/src/core/lib/surface/completion_queue_factory.h +1 -3
- data/src/core/lib/surface/event_string.cc +1 -7
- data/src/core/lib/surface/event_string.h +1 -1
- data/src/core/lib/surface/init.cc +68 -33
- data/src/core/lib/surface/init.h +0 -10
- data/src/core/lib/surface/lame_client.cc +63 -103
- data/src/core/lib/surface/lame_client.h +41 -3
- data/src/core/lib/surface/metadata_array.cc +2 -0
- data/src/core/lib/surface/server.cc +121 -146
- data/src/core/lib/surface/server.h +60 -29
- data/src/core/lib/surface/validate_metadata.cc +7 -20
- data/src/core/lib/surface/validate_metadata.h +3 -0
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/bdp_estimator.cc +13 -12
- data/src/core/lib/transport/bdp_estimator.h +4 -5
- data/src/core/lib/transport/connectivity_state.cc +5 -4
- data/src/core/lib/transport/connectivity_state.h +3 -4
- data/src/core/lib/transport/error_utils.cc +17 -43
- data/src/core/lib/transport/error_utils.h +7 -2
- data/src/core/lib/{channel → transport}/handshaker.cc +20 -17
- data/src/core/lib/{channel → transport}/handshaker.h +16 -10
- data/src/core/lib/{channel → transport}/handshaker_factory.h +10 -12
- data/src/core/lib/{channel → transport}/handshaker_registry.cc +7 -2
- data/src/core/lib/{channel → transport}/handshaker_registry.h +7 -8
- data/src/core/{ext/filters/client_channel → lib/transport}/http_connect_handshaker.cc +62 -53
- data/src/core/{ext/filters/client_channel → lib/transport}/http_connect_handshaker.h +3 -3
- data/src/core/lib/transport/metadata_batch.cc +267 -69
- data/src/core/lib/transport/metadata_batch.h +1088 -835
- data/src/core/lib/transport/parsed_metadata.cc +39 -0
- data/src/core/lib/transport/parsed_metadata.h +237 -93
- data/src/core/lib/transport/pid_controller.cc +4 -4
- data/src/core/lib/transport/status_conversion.cc +4 -2
- data/src/core/lib/transport/status_conversion.h +3 -3
- data/src/core/lib/transport/tcp_connect_handshaker.cc +247 -0
- data/src/core/lib/transport/tcp_connect_handshaker.h +39 -0
- data/src/core/lib/transport/timeout_encoding.cc +203 -70
- data/src/core/lib/transport/timeout_encoding.h +44 -10
- data/src/core/lib/transport/transport.cc +25 -47
- data/src/core/lib/transport/transport.h +151 -27
- data/src/core/lib/transport/transport_fwd.h +20 -0
- data/src/core/lib/transport/transport_impl.h +25 -0
- data/src/core/lib/transport/transport_op_string.cc +21 -64
- data/src/core/lib/uri/uri_parser.cc +248 -66
- data/src/core/lib/uri/uri_parser.h +39 -25
- data/src/core/plugin_registry/grpc_plugin_registry.cc +35 -92
- data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +85 -0
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +67 -43
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +1 -1
- data/src/core/tsi/alts/handshaker/alts_shared_resource.cc +9 -1
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +36 -21
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +1 -1
- data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +2 -2
- data/src/core/tsi/alts/handshaker/alts_tsi_utils.h +1 -1
- data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +2 -2
- data/src/core/tsi/alts/handshaker/transport_security_common_api.h +2 -2
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +9 -1
- data/src/core/tsi/fake_transport_security.cc +66 -31
- data/src/core/tsi/fake_transport_security.h +6 -0
- data/src/core/tsi/local_transport_security.cc +24 -28
- data/src/core/tsi/local_transport_security.h +1 -4
- data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +141 -0
- data/src/core/tsi/ssl/key_logging/ssl_key_logging.h +81 -0
- data/src/core/tsi/ssl/session_cache/ssl_session.h +3 -3
- data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +2 -0
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +13 -6
- data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +2 -0
- data/src/core/tsi/ssl_transport_security.cc +249 -68
- data/src/core/tsi/ssl_transport_security.h +47 -8
- data/src/core/tsi/transport_security.cc +18 -6
- data/src/core/tsi/transport_security.h +2 -1
- data/src/core/tsi/transport_security_grpc.cc +3 -2
- data/src/core/tsi/transport_security_grpc.h +5 -2
- data/src/core/tsi/transport_security_interface.h +19 -5
- data/src/ruby/ext/grpc/ext-export-truffleruby.clang +2 -0
- data/src/ruby/ext/grpc/ext-export-truffleruby.gcc +7 -0
- data/src/ruby/ext/grpc/ext-export.clang +1 -0
- data/src/ruby/ext/grpc/ext-export.gcc +1 -0
- data/src/ruby/ext/grpc/extconf.rb +61 -21
- data/src/ruby/ext/grpc/rb_channel.c +5 -2
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +26 -34
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +40 -52
- 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/grpc.rb +1 -1
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/generate_proto_ruby.sh +1 -0
- 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/generic/client_stub_spec.rb +23 -23
- data/third_party/abseil-cpp/absl/algorithm/container.h +102 -92
- data/third_party/abseil-cpp/absl/base/attributes.h +112 -52
- data/third_party/abseil-cpp/absl/base/casts.h +61 -68
- data/third_party/abseil-cpp/absl/base/config.h +245 -74
- data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +1 -26
- data/third_party/abseil-cpp/absl/base/internal/cycleclock.cc +12 -42
- data/third_party/abseil-cpp/absl/base/internal/cycleclock.h +67 -2
- data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +3 -3
- 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/invoke.h +54 -0
- data/third_party/abseil-cpp/absl/base/internal/prefetch.h +138 -0
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +29 -22
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +13 -12
- data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +3 -0
- data/third_party/abseil-cpp/absl/base/internal/spinlock.h +11 -1
- data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +2 -5
- data/third_party/abseil-cpp/absl/base/internal/spinlock_wait.h +2 -0
- 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 +68 -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 -4
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +22 -7
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +15 -6
- 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/optimization.h +19 -11
- data/third_party/abseil-cpp/absl/base/options.h +1 -1
- data/third_party/abseil-cpp/absl/base/thread_annotations.h +2 -2
- data/third_party/abseil-cpp/absl/container/fixed_array.h +2 -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 +510 -0
- data/third_party/abseil-cpp/absl/container/inlined_vector.h +118 -99
- data/third_party/abseil-cpp/absl/container/internal/common.h +6 -5
- data/third_party/abseil-cpp/absl/container/internal/container_memory.h +10 -28
- data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +17 -15
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +77 -113
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +62 -85
- data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +417 -431
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +3 -2
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +18 -8
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +724 -262
- data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc +45 -88
- data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +11 -1
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +16 -11
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +7 -2
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +8 -3
- 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 +13 -5
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_emscripten-inl.inc +110 -0
- 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 +236 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +33 -10
- data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +8 -2
- data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +35 -4
- data/third_party/abseil-cpp/absl/debugging/stacktrace.cc +2 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize.cc +7 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +60 -7
- data/third_party/abseil-cpp/absl/debugging/symbolize_emscripten.inc +72 -0
- data/third_party/abseil-cpp/absl/functional/any_invocable.h +313 -0
- data/third_party/abseil-cpp/absl/functional/bind_front.h +10 -1
- data/third_party/abseil-cpp/absl/functional/function_ref.h +6 -2
- data/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +857 -0
- data/third_party/abseil-cpp/absl/hash/hash.h +104 -8
- data/third_party/abseil-cpp/absl/hash/internal/hash.cc +15 -16
- data/third_party/abseil-cpp/absl/hash/internal/hash.h +297 -51
- data/third_party/abseil-cpp/absl/hash/internal/{wyhash.cc → low_level_hash.cc} +23 -11
- data/third_party/abseil-cpp/absl/hash/internal/{wyhash.h → low_level_hash.h} +14 -12
- data/third_party/abseil-cpp/absl/memory/memory.h +1 -1
- data/third_party/abseil-cpp/absl/meta/type_traits.h +32 -2
- data/third_party/abseil-cpp/absl/numeric/bits.h +2 -1
- data/third_party/abseil-cpp/absl/numeric/int128.cc +7 -12
- data/third_party/abseil-cpp/absl/numeric/int128.h +148 -75
- data/third_party/abseil-cpp/absl/numeric/int128_have_intrinsic.inc +19 -25
- data/third_party/abseil-cpp/absl/numeric/int128_no_intrinsic.inc +73 -70
- data/third_party/abseil-cpp/absl/{base → profiling}/internal/exponential_biased.cc +4 -4
- data/third_party/abseil-cpp/absl/{base → profiling}/internal/exponential_biased.h +6 -6
- data/third_party/abseil-cpp/absl/profiling/internal/sample_recorder.h +245 -0
- 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 +269 -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 +308 -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 +22 -5
- data/third_party/abseil-cpp/absl/status/status.cc +183 -19
- data/third_party/abseil-cpp/absl/status/status.h +41 -27
- data/third_party/abseil-cpp/absl/status/statusor.cc +34 -2
- data/third_party/abseil-cpp/absl/status/statusor.h +40 -24
- data/third_party/abseil-cpp/absl/strings/ascii.h +4 -4
- data/third_party/abseil-cpp/absl/strings/charconv.cc +3 -3
- data/third_party/abseil-cpp/absl/strings/charconv.h +3 -2
- data/third_party/abseil-cpp/absl/strings/cord.cc +469 -1094
- data/third_party/abseil-cpp/absl/strings/cord.h +392 -144
- 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 +572 -0
- data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +1 -1
- 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 +23 -29
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +208 -96
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +1228 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.h +924 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.cc +187 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.h +267 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.cc +69 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.h +212 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.cc +62 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.h +50 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.cc +54 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.h +102 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +60 -19
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +48 -172
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.h +42 -24
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring_reader.h +4 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_functions.cc +96 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_functions.h +85 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.cc +139 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.h +131 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +418 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_info.h +298 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_statistics.h +88 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_update_scope.h +71 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_update_tracker.h +123 -0
- data/third_party/abseil-cpp/absl/strings/internal/escaping.cc +6 -5
- data/third_party/abseil-cpp/absl/strings/internal/ostringstream.cc +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/resize_uninitialized.h +48 -2
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +9 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +3 -4
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +39 -8
- data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +7 -2
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +10 -11
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +41 -20
- 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 +62 -73
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +28 -18
- 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 +35 -35
- data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +10 -2
- data/third_party/abseil-cpp/absl/strings/internal/utf8.cc +9 -9
- data/third_party/abseil-cpp/absl/strings/numbers.cc +9 -9
- data/third_party/abseil-cpp/absl/strings/numbers.h +60 -23
- data/third_party/abseil-cpp/absl/strings/str_cat.cc +4 -4
- data/third_party/abseil-cpp/absl/strings/str_cat.h +20 -13
- data/third_party/abseil-cpp/absl/strings/str_format.h +1 -2
- 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 +18 -34
- data/third_party/abseil-cpp/absl/strings/string_view.h +123 -41
- data/third_party/abseil-cpp/absl/strings/strip.h +8 -6
- data/third_party/abseil-cpp/absl/strings/substitute.cc +2 -1
- data/third_party/abseil-cpp/absl/strings/substitute.h +109 -76
- data/third_party/abseil-cpp/absl/synchronization/blocking_counter.cc +25 -15
- data/third_party/abseil-cpp/absl/synchronization/blocking_counter.h +5 -3
- 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/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 +1 -26
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +10 -4
- data/third_party/abseil-cpp/absl/synchronization/mutex.cc +75 -40
- data/third_party/abseil-cpp/absl/synchronization/mutex.h +20 -12
- data/third_party/abseil-cpp/absl/synchronization/notification.h +3 -2
- data/third_party/abseil-cpp/absl/time/civil_time.cc +1 -3
- data/third_party/abseil-cpp/absl/time/duration.cc +5 -4
- 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/include/cctz/time_zone.h +93 -20
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.cc +1 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.h +2 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +83 -21
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +49 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +1 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +2 -3
- data/third_party/abseil-cpp/absl/time/time.h +82 -47
- data/third_party/abseil-cpp/absl/types/bad_optional_access.h +1 -1
- data/third_party/abseil-cpp/absl/types/bad_variant_access.h +2 -2
- data/third_party/abseil-cpp/absl/types/internal/optional.h +8 -0
- data/third_party/abseil-cpp/absl/types/internal/variant.h +3 -3
- data/third_party/abseil-cpp/absl/types/optional.h +17 -14
- data/third_party/abseil-cpp/absl/types/span.h +5 -4
- data/third_party/boringssl-with-bazel/err_data.c +681 -677
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +19 -11
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +41 -30
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +59 -47
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.c +24 -28
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.c +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +28 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +48 -272
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.c +8 -6
- data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +13 -0
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.c +3 -1
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +21 -0
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +2 -2
- 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/fipsmodule/self_check/self_check.c +7 -7
- data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/mem.c +18 -0
- 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/pool/internal.h +5 -1
- data/third_party/boringssl-with-bazel/src/crypto/pool/pool.c +59 -23
- data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +2 -18
- data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +8 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +216 -11
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_cache.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_data.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_lib.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_map.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_node.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_tree.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +21 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +971 -253
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +3 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +0 -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/dh.h +4 -12
- data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +27 -41
- data/third_party/boringssl-with-bazel/src/include/openssl/ec_key.h +12 -27
- data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +8 -10
- data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +29 -55
- data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +12 -13
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +6 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/pool.h +7 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +24 -28
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +29 -11
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +12 -43
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +4 -3
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +3 -3
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +4 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +4 -0
- data/third_party/cares/cares/{ares.h → include/ares.h} +73 -1
- data/third_party/cares/cares/{ares_dns.h → include/ares_dns.h} +9 -0
- data/third_party/cares/cares/{ares_rules.h → include/ares_rules.h} +0 -0
- data/third_party/cares/cares/{ares_version.h → include/ares_version.h} +3 -3
- data/third_party/cares/cares/{ares__close_sockets.c → src/lib/ares__close_sockets.c} +2 -2
- data/third_party/cares/cares/{ares__get_hostent.c → src/lib/ares__get_hostent.c} +1 -2
- data/third_party/cares/cares/src/lib/ares__parse_into_addrinfo.c +260 -0
- data/third_party/cares/cares/{ares__read_line.c → src/lib/ares__read_line.c} +0 -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/{ares__timeval.c → src/lib/ares__timeval.c} +0 -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/{ares_cancel.c → src/lib/ares_cancel.c} +0 -0
- data/third_party/cares/cares/{ares_create_query.c → src/lib/ares_create_query.c} +8 -17
- data/third_party/cares/cares/{ares_data.c → src/lib/ares_data.c} +18 -0
- data/third_party/cares/cares/{ares_data.h → src/lib/ares_data.h} +2 -0
- data/third_party/cares/cares/{ares_destroy.c → src/lib/ares_destroy.c} +0 -0
- data/third_party/cares/cares/{ares_expand_name.c → src/lib/ares_expand_name.c} +114 -23
- data/third_party/cares/cares/{ares_expand_string.c → src/lib/ares_expand_string.c} +2 -5
- data/third_party/cares/cares/{ares_fds.c → src/lib/ares_fds.c} +0 -0
- data/third_party/cares/cares/{ares_free_hostent.c → src/lib/ares_free_hostent.c} +6 -4
- data/third_party/cares/cares/{ares_free_string.c → src/lib/ares_free_string.c} +0 -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/{ares_getenv.c → src/lib/ares_getenv.c} +0 -2
- data/third_party/cares/cares/{ares_getenv.h → src/lib/ares_getenv.h} +0 -0
- data/third_party/cares/cares/{ares_gethostbyaddr.c → src/lib/ares_gethostbyaddr.c} +2 -9
- data/third_party/cares/cares/{ares_gethostbyname.c → src/lib/ares_gethostbyname.c} +25 -20
- data/third_party/cares/cares/{ares_getnameinfo.c → src/lib/ares_getnameinfo.c} +4 -10
- 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_init.c → src/lib/ares_init.c} +79 -40
- data/third_party/cares/cares/{ares_iphlpapi.h → src/lib/ares_iphlpapi.h} +0 -0
- data/third_party/cares/cares/{ares_ipv6.h → src/lib/ares_ipv6.h} +7 -0
- data/third_party/cares/cares/{ares_library_init.c → src/lib/ares_library_init.c} +7 -2
- data/third_party/cares/cares/{ares_library_init.h → src/lib/ares_library_init.h} +1 -1
- 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/src/lib/ares_nameser.h +482 -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/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/{ares_parse_mx_reply.c → src/lib/ares_parse_mx_reply.c} +2 -8
- data/third_party/cares/cares/{ares_parse_naptr_reply.c → src/lib/ares_parse_naptr_reply.c} +2 -13
- data/third_party/cares/cares/{ares_parse_ns_reply.c → src/lib/ares_parse_ns_reply.c} +5 -11
- data/third_party/cares/cares/{ares_parse_ptr_reply.c → src/lib/ares_parse_ptr_reply.c} +53 -46
- data/third_party/cares/cares/src/lib/ares_parse_soa_reply.c +179 -0
- data/third_party/cares/cares/{ares_parse_srv_reply.c → src/lib/ares_parse_srv_reply.c} +2 -13
- data/third_party/cares/cares/{ares_parse_txt_reply.c → src/lib/ares_parse_txt_reply.c} +3 -9
- 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_private.h → src/lib/ares_private.h} +52 -11
- data/third_party/cares/cares/{ares_process.c → src/lib/ares_process.c} +127 -52
- data/third_party/cares/cares/{ares_query.c → src/lib/ares_query.c} +3 -9
- data/third_party/cares/cares/{ares_search.c → src/lib/ares_search.c} +5 -7
- data/third_party/cares/cares/{ares_send.c → src/lib/ares_send.c} +2 -8
- data/third_party/cares/cares/{ares_setup.h → src/lib/ares_setup.h} +4 -1
- 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.c → src/lib/ares_strsplit.c} +4 -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/src/lib/ares_writev.h +36 -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/src/lib/config-dos.h +115 -0
- data/third_party/cares/cares/{config-win32.h → src/lib/config-win32.h} +0 -0
- data/third_party/cares/cares/{inet_net_pton.c → src/lib/inet_net_pton.c} +2 -8
- data/third_party/cares/cares/{inet_ntop.c → src/lib/inet_ntop.c} +2 -8
- 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
- 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 +832 -382
- 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 +2083 -982
- data/third_party/upb/upb/def.h +339 -260
- data/third_party/upb/upb/def.hpp +144 -171
- data/third_party/upb/upb/encode.c +287 -185
- 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/{decode_internal.h → internal/decode.h} +76 -58
- data/third_party/upb/upb/internal/table.h +385 -0
- data/third_party/upb/upb/{upb_internal.h → internal/upb.h} +23 -13
- 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 +132 -161
- data/third_party/upb/upb/msg.h +18 -55
- data/third_party/upb/upb/msg_internal.h +404 -254
- 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 +203 -280
- data/third_party/upb/upb/reflection.h +40 -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 +116 -92
- data/third_party/upb/upb/text_encode.h +10 -10
- data/third_party/upb/upb/upb.c +34 -273
- 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/crc32.c +966 -292
- data/third_party/zlib/crc32.h +9441 -436
- data/third_party/zlib/deflate.c +78 -30
- data/third_party/zlib/deflate.h +12 -15
- data/third_party/zlib/gzguts.h +3 -2
- data/third_party/zlib/gzlib.c +5 -3
- data/third_party/zlib/gzread.c +5 -7
- data/third_party/zlib/gzwrite.c +25 -13
- data/third_party/zlib/infback.c +2 -1
- data/third_party/zlib/inffast.c +14 -14
- data/third_party/zlib/inflate.c +39 -8
- data/third_party/zlib/inflate.h +3 -2
- data/third_party/zlib/inftrees.c +3 -3
- data/third_party/zlib/trees.c +27 -48
- data/third_party/zlib/zlib.h +123 -100
- data/third_party/zlib/zutil.c +2 -2
- data/third_party/zlib/zutil.h +12 -9
- metadata +637 -270
- 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_factory.h +0 -48
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +0 -185
- data/src/core/ext/filters/client_channel/resolver.cc +0 -87
- data/src/core/ext/filters/client_channel/resolver_registry.cc +0 -195
- data/src/core/ext/filters/client_channel/resolver_registry.h +0 -89
- data/src/core/ext/filters/client_idle/client_idle_filter.cc +0 -264
- data/src/core/ext/filters/max_age/max_age_filter.cc +0 -560
- data/src/core/ext/service_config/service_config.cc +0 -227
- 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 -119
- data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +0 -95
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +0 -189
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +0 -53
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +0 -83
- 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/popularity_count.h +0 -60
- data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.c +0 -27
- data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.h +0 -62
- data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.c +0 -27
- data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.h +0 -62
- data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.c +0 -27
- data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.h +0 -62
- data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.c +0 -27
- data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.h +0 -62
- data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.c +0 -27
- data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.h +0 -62
- data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.c +0 -72
- 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 -73
- 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 -72
- 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 -80
- 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 -74
- data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.h +0 -35
- data/src/core/lib/avl/avl.cc +0 -306
- data/src/core/lib/compression/algorithm_metadata.h +0 -62
- data/src/core/lib/compression/compression_args.cc +0 -138
- data/src/core/lib/compression/compression_args.h +0 -56
- 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/sockaddr.cc +0 -40
- data/src/core/lib/event_engine/sockaddr.h +0 -44
- 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/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 -173
- data/src/core/lib/iomgr/event_engine/endpoint.h +0 -52
- data/src/core/lib/iomgr/event_engine/iomgr.cc +0 -104
- data/src/core/lib/iomgr/event_engine/iomgr.h +0 -42
- data/src/core/lib/iomgr/event_engine/pollset.cc +0 -88
- data/src/core/lib/iomgr/event_engine/resolver.cc +0 -114
- data/src/core/lib/iomgr/event_engine/tcp.cc +0 -293
- data/src/core/lib/iomgr/event_engine/timer.cc +0 -62
- 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/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/resource_quota.cc +0 -1106
- data/src/core/lib/iomgr/resource_quota.h +0 -226
- data/src/core/lib/iomgr/sys_epoll_wrapper.h +0 -30
- data/src/core/lib/iomgr/tcp_client_custom.cc +0 -152
- data/src/core/lib/iomgr/tcp_custom.cc +0 -377
- data/src/core/lib/iomgr/tcp_custom.h +0 -86
- data/src/core/lib/iomgr/tcp_server_custom.cc +0 -467
- data/src/core/lib/iomgr/time_averaged_stats.cc +0 -64
- 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 -155
- data/src/core/lib/iomgr/work_serializer.h +0 -81
- data/src/core/lib/security/authorization/sdk_server_authz_filter.cc +0 -171
- 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/slice/slice_intern.cc +0 -367
- 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 -529
- data/src/core/lib/slice/static_slice.h +0 -331
- data/src/core/lib/surface/init_secure.cc +0 -103
- data/src/core/lib/transport/byte_stream.cc +0 -158
- 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 -1117
- data/src/core/lib/transport/static_metadata.h +0 -340
- 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/boringssl-with-bazel/src/crypto/asn1/f_enum.c +0 -93
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_int.h +0 -217
- 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_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_soa_reply.c +0 -133
@@ -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/memory/memory.h"
|
31
|
+
#include "absl/status/status.h"
|
32
|
+
#include "absl/status/statusor.h"
|
33
|
+
#include "absl/strings/cord.h"
|
30
34
|
#include "absl/strings/numbers.h"
|
31
35
|
#include "absl/strings/str_cat.h"
|
32
36
|
#include "absl/strings/str_join.h"
|
33
37
|
#include "absl/strings/string_view.h"
|
34
38
|
#include "absl/types/optional.h"
|
39
|
+
#include "absl/types/variant.h"
|
35
40
|
|
36
|
-
#include <grpc/
|
41
|
+
#include <grpc/impl/codegen/gpr_types.h>
|
42
|
+
#include <grpc/slice.h>
|
43
|
+
#include <grpc/status.h>
|
37
44
|
#include <grpc/support/log.h>
|
38
45
|
#include <grpc/support/string_util.h>
|
39
|
-
#include <grpc/support/sync.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"
|
43
50
|
#include "src/core/ext/filters/client_channel/config_selector.h"
|
44
51
|
#include "src/core/ext/filters/client_channel/dynamic_filters.h"
|
45
52
|
#include "src/core/ext/filters/client_channel/global_subchannel_pool.h"
|
46
|
-
#include "src/core/ext/filters/client_channel/http_connect_handshaker.h"
|
47
53
|
#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
54
|
#include "src/core/ext/filters/client_channel/local_subchannel_pool.h"
|
50
55
|
#include "src/core/ext/filters/client_channel/proxy_mapper_registry.h"
|
51
|
-
#include "src/core/ext/filters/client_channel/resolver_registry.h"
|
52
56
|
#include "src/core/ext/filters/client_channel/resolver_result_parsing.h"
|
53
57
|
#include "src/core/ext/filters/client_channel/retry_filter.h"
|
54
58
|
#include "src/core/ext/filters/client_channel/subchannel.h"
|
59
|
+
#include "src/core/ext/filters/client_channel/subchannel_interface_internal.h"
|
55
60
|
#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
61
|
#include "src/core/lib/channel/channel_args.h"
|
60
|
-
#include "src/core/lib/channel/
|
61
|
-
#include "src/core/lib/channel/
|
62
|
-
#include "src/core/lib/
|
62
|
+
#include "src/core/lib/channel/channel_stack.h"
|
63
|
+
#include "src/core/lib/channel/channel_trace.h"
|
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"
|
63
68
|
#include "src/core/lib/gprpp/sync.h"
|
64
|
-
#include "src/core/lib/
|
69
|
+
#include "src/core/lib/gprpp/work_serializer.h"
|
70
|
+
#include "src/core/lib/iomgr/exec_ctx.h"
|
65
71
|
#include "src/core/lib/iomgr/polling_entity.h"
|
66
|
-
#include "src/core/lib/iomgr/
|
72
|
+
#include "src/core/lib/iomgr/pollset_set.h"
|
73
|
+
#include "src/core/lib/json/json.h"
|
74
|
+
#include "src/core/lib/load_balancing/lb_policy_registry.h"
|
75
|
+
#include "src/core/lib/load_balancing/subchannel_interface.h"
|
67
76
|
#include "src/core/lib/profiling/timers.h"
|
77
|
+
#include "src/core/lib/resolver/resolver_registry.h"
|
78
|
+
#include "src/core/lib/resolver/server_address.h"
|
79
|
+
#include "src/core/lib/service_config/service_config_call_data.h"
|
80
|
+
#include "src/core/lib/service_config/service_config_impl.h"
|
68
81
|
#include "src/core/lib/slice/slice_internal.h"
|
69
|
-
#include "src/core/lib/slice/
|
82
|
+
#include "src/core/lib/slice/slice_refcount.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,8 +187,6 @@ 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,7 +200,7 @@ class ClientChannel::CallData {
|
|
193
200
|
|
194
201
|
grpc_slice path_; // Request path.
|
195
202
|
gpr_cycle_counter call_start_time_;
|
196
|
-
|
203
|
+
Timestamp deadline_;
|
197
204
|
Arena* arena_;
|
198
205
|
grpc_call_stack* owning_call_;
|
199
206
|
CallCombiner* call_combiner_;
|
@@ -236,6 +243,7 @@ class ClientChannel::CallData {
|
|
236
243
|
|
237
244
|
const grpc_channel_filter ClientChannel::kFilterVtable = {
|
238
245
|
ClientChannel::CallData::StartTransportStreamOpBatch,
|
246
|
+
nullptr,
|
239
247
|
ClientChannel::StartTransportOp,
|
240
248
|
sizeof(ClientChannel::CallData),
|
241
249
|
ClientChannel::CallData::Init,
|
@@ -243,6 +251,7 @@ const grpc_channel_filter ClientChannel::kFilterVtable = {
|
|
243
251
|
ClientChannel::CallData::Destroy,
|
244
252
|
sizeof(ClientChannel),
|
245
253
|
ClientChannel::Init,
|
254
|
+
grpc_channel_stack_no_post_init,
|
246
255
|
ClientChannel::Destroy,
|
247
256
|
ClientChannel::GetChannelInfo,
|
248
257
|
"client-channel",
|
@@ -254,28 +263,6 @@ const grpc_channel_filter ClientChannel::kFilterVtable = {
|
|
254
263
|
|
255
264
|
namespace {
|
256
265
|
|
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
266
|
class DynamicTerminationFilter {
|
280
267
|
public:
|
281
268
|
class CallData;
|
@@ -356,7 +343,7 @@ class DynamicTerminationFilter::CallData {
|
|
356
343
|
args, pollent, nullptr,
|
357
344
|
service_config_call_data->call_dispatch_controller(),
|
358
345
|
/*is_transparent_retry=*/false);
|
359
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
346
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
360
347
|
gpr_log(GPR_INFO,
|
361
348
|
"chand=%p dynamic_termination_calld=%p: create lb_call=%p", chand,
|
362
349
|
client_channel, calld->lb_call_.get());
|
@@ -375,7 +362,7 @@ class DynamicTerminationFilter::CallData {
|
|
375
362
|
~CallData() { grpc_slice_unref_internal(path_); }
|
376
363
|
|
377
364
|
grpc_slice path_; // Request path.
|
378
|
-
|
365
|
+
Timestamp deadline_;
|
379
366
|
Arena* arena_;
|
380
367
|
grpc_call_stack* owning_call_;
|
381
368
|
CallCombiner* call_combiner_;
|
@@ -386,6 +373,7 @@ class DynamicTerminationFilter::CallData {
|
|
386
373
|
|
387
374
|
const grpc_channel_filter DynamicTerminationFilter::kFilterVtable = {
|
388
375
|
DynamicTerminationFilter::CallData::StartTransportStreamOpBatch,
|
376
|
+
nullptr,
|
389
377
|
DynamicTerminationFilter::StartTransportOp,
|
390
378
|
sizeof(DynamicTerminationFilter::CallData),
|
391
379
|
DynamicTerminationFilter::CallData::Init,
|
@@ -393,6 +381,7 @@ const grpc_channel_filter DynamicTerminationFilter::kFilterVtable = {
|
|
393
381
|
DynamicTerminationFilter::CallData::Destroy,
|
394
382
|
sizeof(DynamicTerminationFilter),
|
395
383
|
DynamicTerminationFilter::Init,
|
384
|
+
grpc_channel_stack_no_post_init,
|
396
385
|
DynamicTerminationFilter::Destroy,
|
397
386
|
DynamicTerminationFilter::GetChannelInfo,
|
398
387
|
"dynamic_filter_termination",
|
@@ -411,22 +400,17 @@ class ClientChannel::ResolverResultHandler : public Resolver::ResultHandler {
|
|
411
400
|
}
|
412
401
|
|
413
402
|
~ResolverResultHandler() override {
|
414
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
403
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
415
404
|
gpr_log(GPR_INFO, "chand=%p: resolver shutdown complete", chand_);
|
416
405
|
}
|
417
406
|
GRPC_CHANNEL_STACK_UNREF(chand_->owning_stack_, "ResolverResultHandler");
|
418
407
|
}
|
419
408
|
|
420
|
-
void
|
421
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
|
409
|
+
void ReportResult(Resolver::Result result) override
|
410
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
|
422
411
|
chand_->OnResolverResultChangedLocked(std::move(result));
|
423
412
|
}
|
424
413
|
|
425
|
-
void ReturnError(grpc_error_handle error) override
|
426
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
|
427
|
-
chand_->OnResolverErrorLocked(error);
|
428
|
-
}
|
429
|
-
|
430
414
|
private:
|
431
415
|
ClientChannel* chand_;
|
432
416
|
};
|
@@ -447,14 +431,13 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
|
|
447
431
|
public:
|
448
432
|
SubchannelWrapper(ClientChannel* chand, RefCountedPtr<Subchannel> subchannel,
|
449
433
|
absl::optional<std::string> health_check_service_name)
|
450
|
-
: SubchannelInterface(
|
451
|
-
|
452
|
-
|
453
|
-
: nullptr),
|
434
|
+
: SubchannelInterface(GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)
|
435
|
+
? "SubchannelWrapper"
|
436
|
+
: nullptr),
|
454
437
|
chand_(chand),
|
455
438
|
subchannel_(std::move(subchannel)),
|
456
439
|
health_check_service_name_(std::move(health_check_service_name)) {
|
457
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
440
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
458
441
|
gpr_log(GPR_INFO,
|
459
442
|
"chand=%p: creating subchannel wrapper %p for subchannel %p",
|
460
443
|
chand, this, subchannel_.get());
|
@@ -476,7 +459,7 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
|
|
476
459
|
}
|
477
460
|
|
478
461
|
~SubchannelWrapper() override {
|
479
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
462
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
480
463
|
gpr_log(GPR_INFO,
|
481
464
|
"chand=%p: destroying subchannel wrapper %p for subchannel %p",
|
482
465
|
chand_, this, subchannel_.get());
|
@@ -498,27 +481,21 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
|
|
498
481
|
GRPC_CHANNEL_STACK_UNREF(chand_->owning_stack_, "SubchannelWrapper");
|
499
482
|
}
|
500
483
|
|
501
|
-
grpc_connectivity_state CheckConnectivityState() override {
|
502
|
-
return subchannel_->CheckConnectivityState(health_check_service_name_);
|
503
|
-
}
|
504
|
-
|
505
484
|
void WatchConnectivityState(
|
506
|
-
grpc_connectivity_state initial_state,
|
507
485
|
std::unique_ptr<ConnectivityStateWatcherInterface> watcher) override
|
508
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
|
486
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
|
509
487
|
auto& watcher_wrapper = watcher_map_[watcher.get()];
|
510
488
|
GPR_ASSERT(watcher_wrapper == nullptr);
|
511
489
|
watcher_wrapper = new WatcherWrapper(std::move(watcher),
|
512
|
-
Ref(DEBUG_LOCATION, "WatcherWrapper")
|
513
|
-
initial_state);
|
490
|
+
Ref(DEBUG_LOCATION, "WatcherWrapper"));
|
514
491
|
subchannel_->WatchConnectivityState(
|
515
|
-
|
492
|
+
health_check_service_name_,
|
516
493
|
RefCountedPtr<Subchannel::ConnectivityStateWatcherInterface>(
|
517
494
|
watcher_wrapper));
|
518
495
|
}
|
519
496
|
|
520
497
|
void CancelConnectivityStateWatch(ConnectivityStateWatcherInterface* watcher)
|
521
|
-
override ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
|
498
|
+
override ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
|
522
499
|
auto it = watcher_map_.find(watcher);
|
523
500
|
GPR_ASSERT(it != watcher_map_.end());
|
524
501
|
subchannel_->CancelConnectivityStateWatch(health_check_service_name_,
|
@@ -530,14 +507,21 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
|
|
530
507
|
return subchannel_->connected_subchannel();
|
531
508
|
}
|
532
509
|
|
533
|
-
void
|
510
|
+
void RequestConnection() override { subchannel_->RequestConnection(); }
|
534
511
|
|
535
512
|
void ResetBackoff() override { subchannel_->ResetBackoff(); }
|
536
513
|
|
537
|
-
|
538
|
-
|
514
|
+
void AddDataWatcher(std::unique_ptr<DataWatcherInterface> watcher) override
|
515
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
|
516
|
+
std::unique_ptr<InternalSubchannelDataWatcherInterface> internal_watcher(
|
517
|
+
static_cast<InternalSubchannelDataWatcherInterface*>(
|
518
|
+
watcher.release()));
|
519
|
+
internal_watcher->SetSubchannel(subchannel_.get());
|
520
|
+
data_watchers_.push_back(std::move(internal_watcher));
|
539
521
|
}
|
540
522
|
|
523
|
+
ChannelArgs channel_args() override { return subchannel_->channel_args(); }
|
524
|
+
|
541
525
|
void ThrottleKeepaliveTime(int new_keepalive_time) {
|
542
526
|
subchannel_->ThrottleKeepaliveTime(new_keepalive_time);
|
543
527
|
}
|
@@ -562,24 +546,21 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
|
|
562
546
|
WatcherWrapper(
|
563
547
|
std::unique_ptr<SubchannelInterface::ConnectivityStateWatcherInterface>
|
564
548
|
watcher,
|
565
|
-
RefCountedPtr<SubchannelWrapper> parent
|
566
|
-
|
567
|
-
: watcher_(std::move(watcher)),
|
568
|
-
parent_(std::move(parent)),
|
569
|
-
last_seen_state_(initial_state) {}
|
549
|
+
RefCountedPtr<SubchannelWrapper> parent)
|
550
|
+
: watcher_(std::move(watcher)), parent_(std::move(parent)) {}
|
570
551
|
|
571
552
|
~WatcherWrapper() override {
|
572
553
|
auto* parent = parent_.release(); // ref owned by lambda
|
573
554
|
parent->chand_->work_serializer_->Run(
|
574
|
-
[parent]()
|
575
|
-
|
576
|
-
|
577
|
-
|
555
|
+
[parent]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(
|
556
|
+
*parent_->chand_->work_serializer_) {
|
557
|
+
parent->Unref(DEBUG_LOCATION, "WatcherWrapper");
|
558
|
+
},
|
578
559
|
DEBUG_LOCATION);
|
579
560
|
}
|
580
561
|
|
581
562
|
void OnConnectivityStateChange() override {
|
582
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
563
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
583
564
|
gpr_log(GPR_INFO,
|
584
565
|
"chand=%p: connectivity change for subchannel wrapper %p "
|
585
566
|
"subchannel %p; hopping into work_serializer",
|
@@ -587,11 +568,11 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
|
|
587
568
|
}
|
588
569
|
Ref().release(); // ref owned by lambda
|
589
570
|
parent_->chand_->work_serializer_->Run(
|
590
|
-
[this]()
|
591
|
-
|
592
|
-
|
593
|
-
|
594
|
-
|
571
|
+
[this]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(
|
572
|
+
*parent_->chand_->work_serializer_) {
|
573
|
+
ApplyUpdateInControlPlaneWorkSerializer();
|
574
|
+
Unref();
|
575
|
+
},
|
595
576
|
DEBUG_LOCATION);
|
596
577
|
}
|
597
578
|
|
@@ -603,18 +584,15 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
|
|
603
584
|
}
|
604
585
|
|
605
586
|
WatcherWrapper* MakeReplacement() {
|
606
|
-
auto* replacement =
|
607
|
-
new WatcherWrapper(std::move(watcher_), parent_, last_seen_state_);
|
587
|
+
auto* replacement = new WatcherWrapper(std::move(watcher_), parent_);
|
608
588
|
replacement_ = replacement;
|
609
589
|
return replacement;
|
610
590
|
}
|
611
591
|
|
612
|
-
grpc_connectivity_state last_seen_state() const { return last_seen_state_; }
|
613
|
-
|
614
592
|
private:
|
615
593
|
void ApplyUpdateInControlPlaneWorkSerializer()
|
616
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(parent_->chand_->work_serializer_) {
|
617
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
594
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(*parent_->chand_->work_serializer_) {
|
595
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
618
596
|
gpr_log(GPR_INFO,
|
619
597
|
"chand=%p: processing connectivity change in work serializer "
|
620
598
|
"for subchannel wrapper %p subchannel %p "
|
@@ -631,7 +609,7 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
|
|
631
609
|
&new_keepalive_time)) {
|
632
610
|
if (new_keepalive_time > parent_->chand_->keepalive_time_) {
|
633
611
|
parent_->chand_->keepalive_time_ = new_keepalive_time;
|
634
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
612
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
635
613
|
gpr_log(GPR_INFO, "chand=%p: throttling keepalive time to %d",
|
636
614
|
parent_->chand_, parent_->chand_->keepalive_time_);
|
637
615
|
}
|
@@ -652,15 +630,21 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
|
|
652
630
|
// Ignore update if the parent WatcherWrapper has been replaced
|
653
631
|
// since this callback was scheduled.
|
654
632
|
if (watcher_ != nullptr) {
|
655
|
-
|
656
|
-
|
633
|
+
// Propagate status only in state TF.
|
634
|
+
// We specifically want to avoid propagating the status for
|
635
|
+
// state IDLE that the real subchannel gave us only for the
|
636
|
+
// purpose of keepalive propagation.
|
637
|
+
if (state_change.state != GRPC_CHANNEL_TRANSIENT_FAILURE) {
|
638
|
+
state_change.status = absl::OkStatus();
|
639
|
+
}
|
640
|
+
watcher_->OnConnectivityStateChange(state_change.state,
|
641
|
+
state_change.status);
|
657
642
|
}
|
658
643
|
}
|
659
644
|
|
660
645
|
std::unique_ptr<SubchannelInterface::ConnectivityStateWatcherInterface>
|
661
646
|
watcher_;
|
662
647
|
RefCountedPtr<SubchannelWrapper> parent_;
|
663
|
-
grpc_connectivity_state last_seen_state_;
|
664
648
|
WatcherWrapper* replacement_ = nullptr;
|
665
649
|
};
|
666
650
|
|
@@ -673,7 +657,9 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
|
|
673
657
|
// CancelConnectivityStateWatch() with its watcher, we know the
|
674
658
|
// corresponding WrapperWatcher to cancel on the underlying subchannel.
|
675
659
|
std::map<ConnectivityStateWatcherInterface*, WatcherWrapper*> watcher_map_
|
676
|
-
ABSL_GUARDED_BY(
|
660
|
+
ABSL_GUARDED_BY(*chand_->work_serializer_);
|
661
|
+
std::vector<std::unique_ptr<InternalSubchannelDataWatcherInterface>>
|
662
|
+
data_watchers_ ABSL_GUARDED_BY(*chand_->work_serializer_);
|
677
663
|
};
|
678
664
|
|
679
665
|
//
|
@@ -703,7 +689,7 @@ ClientChannel::ExternalConnectivityWatcher::ExternalConnectivityWatcher(
|
|
703
689
|
}
|
704
690
|
// Pass the ref from creating the object to Start().
|
705
691
|
chand_->work_serializer_->Run(
|
706
|
-
[this]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
|
692
|
+
[this]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
|
707
693
|
// The ref is passed to AddWatcherLocked().
|
708
694
|
AddWatcherLocked();
|
709
695
|
},
|
@@ -751,10 +737,14 @@ void ClientChannel::ExternalConnectivityWatcher::Notify(
|
|
751
737
|
// Hop back into the work_serializer to clean up.
|
752
738
|
// Not needed in state SHUTDOWN, because the tracker will
|
753
739
|
// automatically remove all watchers in that case.
|
740
|
+
// Note: The callback takes a ref in case the ref inside the state tracker
|
741
|
+
// gets removed before the callback runs via a SHUTDOWN notification.
|
754
742
|
if (state != GRPC_CHANNEL_SHUTDOWN) {
|
743
|
+
Ref(DEBUG_LOCATION, "RemoveWatcherLocked()").release();
|
755
744
|
chand_->work_serializer_->Run(
|
756
|
-
[this]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
|
745
|
+
[this]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
|
757
746
|
RemoveWatcherLocked();
|
747
|
+
Unref(DEBUG_LOCATION, "RemoveWatcherLocked()");
|
758
748
|
},
|
759
749
|
DEBUG_LOCATION);
|
760
750
|
}
|
@@ -768,9 +758,13 @@ void ClientChannel::ExternalConnectivityWatcher::Cancel() {
|
|
768
758
|
}
|
769
759
|
ExecCtx::Run(DEBUG_LOCATION, on_complete_, GRPC_ERROR_CANCELLED);
|
770
760
|
// Hop back into the work_serializer to clean up.
|
761
|
+
// Note: The callback takes a ref in case the ref inside the state tracker
|
762
|
+
// gets removed before the callback runs via a SHUTDOWN notification.
|
763
|
+
Ref(DEBUG_LOCATION, "RemoveWatcherLocked()").release();
|
771
764
|
chand_->work_serializer_->Run(
|
772
|
-
[this]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
|
765
|
+
[this]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
|
773
766
|
RemoveWatcherLocked();
|
767
|
+
Unref(DEBUG_LOCATION, "RemoveWatcherLocked()");
|
774
768
|
},
|
775
769
|
DEBUG_LOCATION);
|
776
770
|
}
|
@@ -800,7 +794,7 @@ class ClientChannel::ConnectivityWatcherAdder {
|
|
800
794
|
watcher_(std::move(watcher)) {
|
801
795
|
GRPC_CHANNEL_STACK_REF(chand_->owning_stack_, "ConnectivityWatcherAdder");
|
802
796
|
chand_->work_serializer_->Run(
|
803
|
-
[this]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
|
797
|
+
[this]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
|
804
798
|
AddWatcherLocked();
|
805
799
|
},
|
806
800
|
DEBUG_LOCATION);
|
@@ -808,7 +802,7 @@ class ClientChannel::ConnectivityWatcherAdder {
|
|
808
802
|
|
809
803
|
private:
|
810
804
|
void AddWatcherLocked()
|
811
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
|
805
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
|
812
806
|
chand_->state_tracker_.AddWatcher(initial_state_, std::move(watcher_));
|
813
807
|
GRPC_CHANNEL_STACK_UNREF(chand_->owning_stack_, "ConnectivityWatcherAdder");
|
814
808
|
delete this;
|
@@ -830,7 +824,7 @@ class ClientChannel::ConnectivityWatcherRemover {
|
|
830
824
|
: chand_(chand), watcher_(watcher) {
|
831
825
|
GRPC_CHANNEL_STACK_REF(chand_->owning_stack_, "ConnectivityWatcherRemover");
|
832
826
|
chand_->work_serializer_->Run(
|
833
|
-
[this]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
|
827
|
+
[this]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
|
834
828
|
RemoveWatcherLocked();
|
835
829
|
},
|
836
830
|
DEBUG_LOCATION);
|
@@ -838,7 +832,7 @@ class ClientChannel::ConnectivityWatcherRemover {
|
|
838
832
|
|
839
833
|
private:
|
840
834
|
void RemoveWatcherLocked()
|
841
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
|
835
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
|
842
836
|
chand_->state_tracker_.RemoveWatcher(watcher_);
|
843
837
|
GRPC_CHANNEL_STACK_UNREF(chand_->owning_stack_,
|
844
838
|
"ConnectivityWatcherRemover");
|
@@ -866,67 +860,23 @@ class ClientChannel::ClientChannelControlHelper
|
|
866
860
|
}
|
867
861
|
|
868
862
|
RefCountedPtr<SubchannelInterface> CreateSubchannel(
|
869
|
-
ServerAddress address, const
|
870
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
|
863
|
+
ServerAddress address, const ChannelArgs& args) override
|
864
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
|
871
865
|
if (chand_->resolver_ == nullptr) return nullptr; // Shutting down.
|
872
866
|
// Determine health check service name.
|
873
867
|
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
|
-
}
|
868
|
+
if (!args.GetBool(GRPC_ARG_INHIBIT_HEALTH_CHECKING).value_or(false)) {
|
869
|
+
health_check_service_name =
|
870
|
+
args.GetOwnedString(GRPC_ARG_HEALTH_CHECK_SERVICE_NAME);
|
882
871
|
}
|
883
872
|
// 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());
|
873
|
+
ChannelArgs subchannel_args = ClientChannel::MakeSubchannelArgs(
|
874
|
+
args, address.args(), chand_->subchannel_pool_,
|
875
|
+
chand_->default_authority_);
|
925
876
|
// Create subchannel.
|
926
877
|
RefCountedPtr<Subchannel> subchannel =
|
927
878
|
chand_->client_channel_factory_->CreateSubchannel(address.address(),
|
928
|
-
|
929
|
-
grpc_channel_args_destroy(new_args);
|
879
|
+
subchannel_args);
|
930
880
|
if (subchannel == nullptr) return nullptr;
|
931
881
|
// Make sure the subchannel has updated keepalive time.
|
932
882
|
subchannel->ThrottleKeepaliveTime(chand_->keepalive_time_);
|
@@ -938,10 +888,10 @@ class ClientChannel::ClientChannelControlHelper
|
|
938
888
|
void UpdateState(
|
939
889
|
grpc_connectivity_state state, const absl::Status& status,
|
940
890
|
std::unique_ptr<LoadBalancingPolicy::SubchannelPicker> picker) override
|
941
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
|
891
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
|
942
892
|
if (chand_->resolver_ == nullptr) return; // Shutting down.
|
943
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
944
|
-
const char* extra = chand_->disconnect_error_
|
893
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
894
|
+
const char* extra = GRPC_ERROR_IS_NONE(chand_->disconnect_error_)
|
945
895
|
? ""
|
946
896
|
: " (ignoring -- channel shutting down)";
|
947
897
|
gpr_log(GPR_INFO, "chand=%p: update: state=%s status=(%s) picker=%p%s",
|
@@ -949,16 +899,16 @@ class ClientChannel::ClientChannelControlHelper
|
|
949
899
|
picker.get(), extra);
|
950
900
|
}
|
951
901
|
// Do update only if not shutting down.
|
952
|
-
if (chand_->disconnect_error_
|
902
|
+
if (GRPC_ERROR_IS_NONE(chand_->disconnect_error_)) {
|
953
903
|
chand_->UpdateStateAndPickerLocked(state, status, "helper",
|
954
904
|
std::move(picker));
|
955
905
|
}
|
956
906
|
}
|
957
907
|
|
958
908
|
void RequestReresolution() override
|
959
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
|
909
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
|
960
910
|
if (chand_->resolver_ == nullptr) return; // Shutting down.
|
961
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
911
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
962
912
|
gpr_log(GPR_INFO, "chand=%p: started name re-resolving", chand_);
|
963
913
|
}
|
964
914
|
chand_->resolver_->RequestReresolutionLocked();
|
@@ -969,7 +919,7 @@ class ClientChannel::ClientChannelControlHelper
|
|
969
919
|
}
|
970
920
|
|
971
921
|
void AddTraceEvent(TraceSeverity severity, absl::string_view message) override
|
972
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
|
922
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
|
973
923
|
if (chand_->resolver_ == nullptr) return; // Shutting down.
|
974
924
|
if (chand_->channelz_node_ != nullptr) {
|
975
925
|
chand_->channelz_node_->AddTraceEvent(
|
@@ -993,9 +943,9 @@ class ClientChannel::ClientChannelControlHelper
|
|
993
943
|
// ClientChannel implementation
|
994
944
|
//
|
995
945
|
|
996
|
-
ClientChannel* ClientChannel::GetFromChannel(
|
946
|
+
ClientChannel* ClientChannel::GetFromChannel(Channel* channel) {
|
997
947
|
grpc_channel_element* elem =
|
998
|
-
grpc_channel_stack_last_element(
|
948
|
+
grpc_channel_stack_last_element(channel->channel_stack());
|
999
949
|
if (elem->filter != &kFilterVtable) return nullptr;
|
1000
950
|
return static_cast<ClientChannel*>(elem->channel_data);
|
1001
951
|
}
|
@@ -1017,35 +967,29 @@ void ClientChannel::Destroy(grpc_channel_element* elem) {
|
|
1017
967
|
namespace {
|
1018
968
|
|
1019
969
|
RefCountedPtr<SubchannelPoolInterface> GetSubchannelPool(
|
1020
|
-
const
|
1021
|
-
|
1022
|
-
args, GRPC_ARG_USE_LOCAL_SUBCHANNEL_POOL, false);
|
1023
|
-
if (use_local_subchannel_pool) {
|
970
|
+
const ChannelArgs& args) {
|
971
|
+
if (args.GetBool(GRPC_ARG_USE_LOCAL_SUBCHANNEL_POOL).value_or(false)) {
|
1024
972
|
return MakeRefCounted<LocalSubchannelPool>();
|
1025
973
|
}
|
1026
974
|
return GlobalSubchannelPool::instance();
|
1027
975
|
}
|
1028
976
|
|
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
977
|
} // namespace
|
1035
978
|
|
1036
979
|
ClientChannel::ClientChannel(grpc_channel_element_args* args,
|
1037
980
|
grpc_error_handle* error)
|
1038
|
-
:
|
1039
|
-
|
981
|
+
: channel_args_(ChannelArgs::FromC(args->channel_args)),
|
982
|
+
deadline_checking_enabled_(grpc_deadline_checking_enabled(channel_args_)),
|
1040
983
|
owning_stack_(args->channel_stack),
|
1041
|
-
client_channel_factory_(
|
1042
|
-
|
1043
|
-
channelz_node_(GetChannelzNode(args->channel_args)),
|
984
|
+
client_channel_factory_(channel_args_.GetObject<ClientChannelFactory>()),
|
985
|
+
channelz_node_(channel_args_.GetObject<channelz::ChannelNode>()),
|
1044
986
|
interested_parties_(grpc_pollset_set_create()),
|
987
|
+
service_config_parser_index_(
|
988
|
+
internal::ClientChannelServiceConfigParser::ParserIndex()),
|
1045
989
|
work_serializer_(std::make_shared<WorkSerializer>()),
|
1046
990
|
state_tracker_("client_channel", GRPC_CHANNEL_IDLE),
|
1047
|
-
subchannel_pool_(GetSubchannelPool(
|
1048
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
991
|
+
subchannel_pool_(GetSubchannelPool(channel_args_)) {
|
992
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1049
993
|
gpr_log(GPR_INFO, "chand=%p: creating client_channel for channel stack %p",
|
1050
994
|
this, owning_stack_);
|
1051
995
|
}
|
@@ -1059,70 +1003,65 @@ ClientChannel::ClientChannel(grpc_channel_element_args* args,
|
|
1059
1003
|
}
|
1060
1004
|
// Get default service config. If none is specified via the client API,
|
1061
1005
|
// we use an empty config.
|
1062
|
-
|
1063
|
-
|
1064
|
-
if (service_config_json
|
1006
|
+
absl::optional<absl::string_view> service_config_json =
|
1007
|
+
channel_args_.GetString(GRPC_ARG_SERVICE_CONFIG);
|
1008
|
+
if (!service_config_json.has_value()) service_config_json = "{}";
|
1065
1009
|
*error = GRPC_ERROR_NONE;
|
1066
|
-
|
1067
|
-
|
1068
|
-
if (
|
1069
|
-
|
1010
|
+
auto service_config =
|
1011
|
+
ServiceConfigImpl::Create(channel_args_, *service_config_json);
|
1012
|
+
if (!service_config.ok()) {
|
1013
|
+
*error = absl_status_to_grpc_error(service_config.status());
|
1070
1014
|
return;
|
1071
1015
|
}
|
1016
|
+
default_service_config_ = std::move(*service_config);
|
1072
1017
|
// Get URI to resolve, using proxy mapper if needed.
|
1073
|
-
|
1074
|
-
|
1075
|
-
if (server_uri
|
1018
|
+
absl::optional<std::string> server_uri =
|
1019
|
+
channel_args_.GetOwnedString(GRPC_ARG_SERVER_URI);
|
1020
|
+
if (!server_uri.has_value()) {
|
1076
1021
|
*error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
1077
1022
|
"target URI channel arg missing or wrong type in client channel "
|
1078
1023
|
"filter");
|
1079
1024
|
return;
|
1080
1025
|
}
|
1081
|
-
uri_to_resolve_ = server_uri
|
1082
|
-
|
1083
|
-
grpc_channel_args* new_args = nullptr;
|
1084
|
-
ProxyMapperRegistry::MapName(server_uri, args->channel_args, &proxy_name,
|
1085
|
-
&new_args);
|
1086
|
-
if (proxy_name != nullptr) {
|
1087
|
-
uri_to_resolve_ = proxy_name;
|
1088
|
-
gpr_free(proxy_name);
|
1089
|
-
}
|
1026
|
+
uri_to_resolve_ = ProxyMapperRegistry::MapName(*server_uri, &channel_args_)
|
1027
|
+
.value_or(*server_uri);
|
1090
1028
|
// Make sure the URI to resolve is valid, so that we know that
|
1091
1029
|
// resolver creation will succeed later.
|
1092
|
-
if (!
|
1030
|
+
if (!CoreConfiguration::Get().resolver_registry().IsValidTarget(
|
1031
|
+
uri_to_resolve_)) {
|
1093
1032
|
*error = GRPC_ERROR_CREATE_FROM_CPP_STRING(
|
1094
|
-
absl::StrCat("the target uri is not valid: ", uri_to_resolve_
|
1033
|
+
absl::StrCat("the target uri is not valid: ", uri_to_resolve_));
|
1095
1034
|
return;
|
1096
1035
|
}
|
1097
1036
|
// Strip out service config channel arg, so that it doesn't affect
|
1098
1037
|
// 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);
|
1038
|
+
channel_args_ = channel_args_.Remove(GRPC_ARG_SERVICE_CONFIG);
|
1103
1039
|
// Set initial keepalive time.
|
1104
|
-
|
1105
|
-
|
1106
|
-
|
1040
|
+
auto keepalive_arg = channel_args_.GetInt(GRPC_ARG_KEEPALIVE_TIME_MS);
|
1041
|
+
if (keepalive_arg.has_value()) {
|
1042
|
+
keepalive_time_ = Clamp(*keepalive_arg, 1, INT_MAX);
|
1043
|
+
} else {
|
1044
|
+
keepalive_time_ = -1; // unset
|
1045
|
+
}
|
1107
1046
|
// Set default authority.
|
1108
|
-
|
1109
|
-
|
1110
|
-
if (default_authority
|
1111
|
-
default_authority_ =
|
1047
|
+
absl::optional<std::string> default_authority =
|
1048
|
+
channel_args_.GetOwnedString(GRPC_ARG_DEFAULT_AUTHORITY);
|
1049
|
+
if (!default_authority.has_value()) {
|
1050
|
+
default_authority_ =
|
1051
|
+
CoreConfiguration::Get().resolver_registry().GetDefaultAuthority(
|
1052
|
+
*server_uri);
|
1112
1053
|
} else {
|
1113
|
-
default_authority_ = default_authority;
|
1054
|
+
default_authority_ = std::move(*default_authority);
|
1114
1055
|
}
|
1115
1056
|
// Success.
|
1116
1057
|
*error = GRPC_ERROR_NONE;
|
1117
1058
|
}
|
1118
1059
|
|
1119
1060
|
ClientChannel::~ClientChannel() {
|
1120
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1061
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1121
1062
|
gpr_log(GPR_INFO, "chand=%p: destroying channel", this);
|
1122
1063
|
}
|
1123
1064
|
DestroyResolverAndLbPolicyLocked();
|
1124
|
-
grpc_channel_args_destroy(channel_args_);
|
1125
|
-
GRPC_ERROR_UNREF(resolver_transient_failure_error_);
|
1126
1065
|
// Stop backup polling.
|
1127
1066
|
grpc_client_channel_stop_backup_polling(interested_parties_);
|
1128
1067
|
grpc_pollset_set_destroy(interested_parties_);
|
@@ -1140,6 +1079,29 @@ ClientChannel::CreateLoadBalancedCall(
|
|
1140
1079
|
call_dispatch_controller, is_transparent_retry));
|
1141
1080
|
}
|
1142
1081
|
|
1082
|
+
ChannelArgs ClientChannel::MakeSubchannelArgs(
|
1083
|
+
const ChannelArgs& channel_args, const ChannelArgs& address_args,
|
1084
|
+
const RefCountedPtr<SubchannelPoolInterface>& subchannel_pool,
|
1085
|
+
const std::string& channel_default_authority) {
|
1086
|
+
// Note that we start with the channel-level args and then apply the
|
1087
|
+
// per-address args, so that if a value is present in both, the one
|
1088
|
+
// in the channel-level args is used. This is particularly important
|
1089
|
+
// for the GRPC_ARG_DEFAULT_AUTHORITY arg, which we want to allow
|
1090
|
+
// resolvers to set on a per-address basis only if the application
|
1091
|
+
// did not explicitly set it at the channel level.
|
1092
|
+
return channel_args.UnionWith(address_args)
|
1093
|
+
.SetObject(subchannel_pool)
|
1094
|
+
// If we haven't already set the default authority arg (i.e., it
|
1095
|
+
// was not explicitly set by the application nor overridden by
|
1096
|
+
// the resolver), add it from the channel's default.
|
1097
|
+
.SetIfUnset(GRPC_ARG_DEFAULT_AUTHORITY, channel_default_authority)
|
1098
|
+
// Remove channel args that should not affect subchannel
|
1099
|
+
// uniqueness.
|
1100
|
+
.Remove(GRPC_ARG_HEALTH_CHECK_SERVICE_NAME)
|
1101
|
+
.Remove(GRPC_ARG_INHIBIT_HEALTH_CHECKING)
|
1102
|
+
.Remove(GRPC_ARG_CHANNELZ_CHANNEL_NODE);
|
1103
|
+
}
|
1104
|
+
|
1143
1105
|
namespace {
|
1144
1106
|
|
1145
1107
|
RefCountedPtr<LoadBalancingPolicy::Config> ChooseLbPolicy(
|
@@ -1151,38 +1113,50 @@ RefCountedPtr<LoadBalancingPolicy::Config> ChooseLbPolicy(
|
|
1151
1113
|
}
|
1152
1114
|
// Try the deprecated LB policy name from the service config.
|
1153
1115
|
// If not, try the setting from channel args.
|
1154
|
-
|
1116
|
+
absl::optional<absl::string_view> policy_name;
|
1155
1117
|
if (!parsed_service_config->parsed_deprecated_lb_policy().empty()) {
|
1156
|
-
policy_name = parsed_service_config->parsed_deprecated_lb_policy()
|
1118
|
+
policy_name = parsed_service_config->parsed_deprecated_lb_policy();
|
1157
1119
|
} else {
|
1158
|
-
policy_name =
|
1159
|
-
|
1120
|
+
policy_name = resolver_result.args.GetString(GRPC_ARG_LB_POLICY_NAME);
|
1121
|
+
bool requires_config = false;
|
1122
|
+
if (policy_name.has_value() &&
|
1123
|
+
(!LoadBalancingPolicyRegistry::LoadBalancingPolicyExists(
|
1124
|
+
*policy_name, &requires_config) ||
|
1125
|
+
requires_config)) {
|
1126
|
+
if (requires_config) {
|
1127
|
+
gpr_log(GPR_ERROR,
|
1128
|
+
"LB policy: %s passed through channel_args must not "
|
1129
|
+
"require a config. Using pick_first instead.",
|
1130
|
+
std::string(*policy_name).c_str());
|
1131
|
+
} else {
|
1132
|
+
gpr_log(GPR_ERROR,
|
1133
|
+
"LB policy: %s passed through channel_args does not exist. "
|
1134
|
+
"Using pick_first instead.",
|
1135
|
+
std::string(*policy_name).c_str());
|
1136
|
+
}
|
1137
|
+
policy_name = "pick_first";
|
1138
|
+
}
|
1160
1139
|
}
|
1161
1140
|
// Use pick_first if nothing was specified and we didn't select grpclb
|
1162
1141
|
// above.
|
1163
|
-
if (policy_name
|
1142
|
+
if (!policy_name.has_value()) policy_name = "pick_first";
|
1164
1143
|
// Now that we have the policy name, construct an empty config for it.
|
1165
1144
|
Json config_json = Json::Array{Json::Object{
|
1166
|
-
{policy_name, Json::Object{}},
|
1145
|
+
{std::string(*policy_name), Json::Object{}},
|
1167
1146
|
}};
|
1168
|
-
|
1169
|
-
|
1170
|
-
config_json, &parse_error);
|
1147
|
+
auto lb_policy_config =
|
1148
|
+
LoadBalancingPolicyRegistry::ParseLoadBalancingConfig(config_json);
|
1171
1149
|
// The policy name came from one of three places:
|
1172
1150
|
// - The deprecated loadBalancingPolicy field in the service config,
|
1173
1151
|
// in which case the code in ClientChannelServiceConfigParser
|
1174
1152
|
// already verified that the policy does not require a config.
|
1175
1153
|
// - One of the hard-coded values here, all of which are known to not
|
1176
1154
|
// 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;
|
1155
|
+
// - A channel arg, in which case we check that the specified policy exists
|
1156
|
+
// and accepts an empty config. If not, we revert to using pick_first
|
1157
|
+
// lb_policy
|
1158
|
+
GPR_ASSERT(lb_policy_config.ok());
|
1159
|
+
return std::move(*lb_policy_config);
|
1186
1160
|
}
|
1187
1161
|
|
1188
1162
|
} // namespace
|
@@ -1190,7 +1164,7 @@ RefCountedPtr<LoadBalancingPolicy::Config> ChooseLbPolicy(
|
|
1190
1164
|
void ClientChannel::OnResolverResultChangedLocked(Resolver::Result result) {
|
1191
1165
|
// Handle race conditions.
|
1192
1166
|
if (resolver_ == nullptr) return;
|
1193
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1167
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1194
1168
|
gpr_log(GPR_INFO, "chand=%p: got resolver result", this);
|
1195
1169
|
}
|
1196
1170
|
// We only want to trace the address resolution in the follow cases:
|
@@ -1202,32 +1176,35 @@ void ClientChannel::OnResolverResultChangedLocked(Resolver::Result result) {
|
|
1202
1176
|
// (d) Address resolution that causes a new LB policy to be created.
|
1203
1177
|
//
|
1204
1178
|
// We track a list of strings to eventually be concatenated and traced.
|
1205
|
-
|
1206
|
-
|
1179
|
+
std::vector<const char*> trace_strings;
|
1180
|
+
const bool resolution_contains_addresses =
|
1181
|
+
result.addresses.ok() && !result.addresses->empty();
|
1182
|
+
if (!resolution_contains_addresses &&
|
1183
|
+
previous_resolution_contained_addresses_) {
|
1207
1184
|
trace_strings.push_back("Address list became empty");
|
1208
|
-
} else if (
|
1185
|
+
} else if (resolution_contains_addresses &&
|
1209
1186
|
!previous_resolution_contained_addresses_) {
|
1210
1187
|
trace_strings.push_back("Address list became non-empty");
|
1211
1188
|
}
|
1212
|
-
previous_resolution_contained_addresses_ =
|
1189
|
+
previous_resolution_contained_addresses_ = resolution_contains_addresses;
|
1213
1190
|
std::string service_config_error_string_storage;
|
1214
|
-
if (result.
|
1191
|
+
if (!result.service_config.ok()) {
|
1215
1192
|
service_config_error_string_storage =
|
1216
|
-
|
1193
|
+
result.service_config.status().ToString();
|
1217
1194
|
trace_strings.push_back(service_config_error_string_storage.c_str());
|
1218
1195
|
}
|
1219
1196
|
// Choose the service config.
|
1220
1197
|
RefCountedPtr<ServiceConfig> service_config;
|
1221
1198
|
RefCountedPtr<ConfigSelector> config_selector;
|
1222
|
-
if (result.
|
1223
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1199
|
+
if (!result.service_config.ok()) {
|
1200
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1224
1201
|
gpr_log(GPR_INFO, "chand=%p: resolver returned service config error: %s",
|
1225
|
-
this,
|
1202
|
+
this, result.service_config.status().ToString().c_str());
|
1226
1203
|
}
|
1227
1204
|
// If the service config was invalid, then fallback to the
|
1228
1205
|
// previously returned service config.
|
1229
1206
|
if (saved_service_config_ != nullptr) {
|
1230
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1207
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1231
1208
|
gpr_log(GPR_INFO,
|
1232
1209
|
"chand=%p: resolver returned invalid service config. "
|
1233
1210
|
"Continuing to use previous service config.",
|
@@ -1236,15 +1213,15 @@ void ClientChannel::OnResolverResultChangedLocked(Resolver::Result result) {
|
|
1236
1213
|
service_config = saved_service_config_;
|
1237
1214
|
config_selector = saved_config_selector_;
|
1238
1215
|
} else {
|
1239
|
-
// We received
|
1216
|
+
// We received a service config error and we don't have a
|
1240
1217
|
// previous service config to fall back to. Put the channel into
|
1241
1218
|
// TRANSIENT_FAILURE.
|
1242
|
-
OnResolverErrorLocked(
|
1219
|
+
OnResolverErrorLocked(result.service_config.status());
|
1243
1220
|
trace_strings.push_back("no valid service config");
|
1244
1221
|
}
|
1245
|
-
} else if (result.service_config == nullptr) {
|
1222
|
+
} else if (*result.service_config == nullptr) {
|
1246
1223
|
// Resolver did not return any service config.
|
1247
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1224
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1248
1225
|
gpr_log(GPR_INFO,
|
1249
1226
|
"chand=%p: resolver returned no service config. Using default "
|
1250
1227
|
"service config for channel.",
|
@@ -1253,15 +1230,18 @@ void ClientChannel::OnResolverResultChangedLocked(Resolver::Result result) {
|
|
1253
1230
|
service_config = default_service_config_;
|
1254
1231
|
} else {
|
1255
1232
|
// Use ServiceConfig and ConfigSelector returned by resolver.
|
1256
|
-
service_config = result.service_config;
|
1257
|
-
config_selector =
|
1233
|
+
service_config = std::move(*result.service_config);
|
1234
|
+
config_selector = result.args.GetObjectRef<ConfigSelector>();
|
1258
1235
|
}
|
1236
|
+
// Note: The only case in which service_config is null here is if the resolver
|
1237
|
+
// returned a service config error and we don't have a previous service
|
1238
|
+
// config to fall back to.
|
1259
1239
|
if (service_config != nullptr) {
|
1260
1240
|
// Extract global config for client channel.
|
1261
1241
|
const internal::ClientChannelGlobalParsedConfig* parsed_service_config =
|
1262
1242
|
static_cast<const internal::ClientChannelGlobalParsedConfig*>(
|
1263
1243
|
service_config->GetGlobalParsedConfig(
|
1264
|
-
|
1244
|
+
service_config_parser_index_));
|
1265
1245
|
// Choose LB policy config.
|
1266
1246
|
RefCountedPtr<LoadBalancingPolicy::Config> lb_policy_config =
|
1267
1247
|
ChooseLbPolicy(result, parsed_service_config);
|
@@ -1275,10 +1255,10 @@ void ClientChannel::OnResolverResultChangedLocked(Resolver::Result result) {
|
|
1275
1255
|
// If either has changed, apply the global parameters now.
|
1276
1256
|
if (service_config_changed || config_selector_changed) {
|
1277
1257
|
// Update service config in control plane.
|
1278
|
-
UpdateServiceConfigInControlPlaneLocked(
|
1279
|
-
|
1280
|
-
|
1281
|
-
} else if (GRPC_TRACE_FLAG_ENABLED(
|
1258
|
+
UpdateServiceConfigInControlPlaneLocked(
|
1259
|
+
std::move(service_config), std::move(config_selector),
|
1260
|
+
std::string(lb_policy_config->name()));
|
1261
|
+
} else if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1282
1262
|
gpr_log(GPR_INFO, "chand=%p: service config not changed", this);
|
1283
1263
|
}
|
1284
1264
|
// Create or update LB policy, as needed.
|
@@ -1307,28 +1287,21 @@ void ClientChannel::OnResolverResultChangedLocked(Resolver::Result result) {
|
|
1307
1287
|
}
|
1308
1288
|
}
|
1309
1289
|
|
1310
|
-
void ClientChannel::OnResolverErrorLocked(
|
1311
|
-
if (resolver_ == nullptr)
|
1312
|
-
|
1313
|
-
return;
|
1314
|
-
}
|
1315
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
|
1290
|
+
void ClientChannel::OnResolverErrorLocked(absl::Status status) {
|
1291
|
+
if (resolver_ == nullptr) return;
|
1292
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1316
1293
|
gpr_log(GPR_INFO, "chand=%p: resolver transient failure: %s", this,
|
1317
|
-
|
1294
|
+
status.ToString().c_str());
|
1318
1295
|
}
|
1319
1296
|
// If we already have an LB policy from a previous resolution
|
1320
1297
|
// result, then we continue to let it set the connectivity state.
|
1321
1298
|
// Otherwise, we go into TRANSIENT_FAILURE.
|
1322
1299
|
if (lb_policy_ == nullptr) {
|
1323
|
-
grpc_error_handle
|
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);
|
1300
|
+
grpc_error_handle error = absl_status_to_grpc_error(status);
|
1327
1301
|
{
|
1328
1302
|
MutexLock lock(&resolution_mu_);
|
1329
1303
|
// Update resolver transient failure.
|
1330
|
-
|
1331
|
-
resolver_transient_failure_error_ = state_error;
|
1304
|
+
resolver_transient_failure_error_ = status;
|
1332
1305
|
// Process calls that were queued waiting for the resolver result.
|
1333
1306
|
for (ResolverQueuedCall* call = resolver_queued_calls_; call != nullptr;
|
1334
1307
|
call = call->next) {
|
@@ -1340,12 +1313,12 @@ void ClientChannel::OnResolverErrorLocked(grpc_error_handle error) {
|
|
1340
1313
|
}
|
1341
1314
|
}
|
1342
1315
|
}
|
1316
|
+
GRPC_ERROR_UNREF(error);
|
1343
1317
|
// Update connectivity state.
|
1344
1318
|
UpdateStateAndPickerLocked(
|
1345
1319
|
GRPC_CHANNEL_TRANSIENT_FAILURE, status, "resolver failure",
|
1346
1320
|
absl::make_unique<LoadBalancingPolicy::TransientFailurePicker>(status));
|
1347
1321
|
}
|
1348
|
-
GRPC_ERROR_UNREF(error);
|
1349
1322
|
}
|
1350
1323
|
|
1351
1324
|
void ClientChannel::CreateOrUpdateLbPolicyLocked(
|
@@ -1356,25 +1329,22 @@ void ClientChannel::CreateOrUpdateLbPolicyLocked(
|
|
1356
1329
|
LoadBalancingPolicy::UpdateArgs update_args;
|
1357
1330
|
update_args.addresses = std::move(result.addresses);
|
1358
1331
|
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
|
-
}
|
1332
|
+
update_args.resolution_note = std::move(result.resolution_note);
|
1366
1333
|
// Remove the config selector from channel args so that we're not holding
|
1367
1334
|
// unnecessary refs that cause it to be destroyed somewhere other than in the
|
1368
1335
|
// WorkSerializer.
|
1369
|
-
|
1370
|
-
|
1371
|
-
|
1336
|
+
update_args.args = result.args.Remove(GRPC_ARG_CONFIG_SELECTOR);
|
1337
|
+
// Add health check service name to channel args.
|
1338
|
+
if (health_check_service_name.has_value()) {
|
1339
|
+
update_args.args = update_args.args.Set(GRPC_ARG_HEALTH_CHECK_SERVICE_NAME,
|
1340
|
+
*health_check_service_name);
|
1341
|
+
}
|
1372
1342
|
// Create policy if needed.
|
1373
1343
|
if (lb_policy_ == nullptr) {
|
1374
|
-
lb_policy_ = CreateLbPolicyLocked(
|
1344
|
+
lb_policy_ = CreateLbPolicyLocked(update_args.args);
|
1375
1345
|
}
|
1376
1346
|
// Update the policy.
|
1377
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1347
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1378
1348
|
gpr_log(GPR_INFO, "chand=%p: Updating child policy %p", this,
|
1379
1349
|
lb_policy_.get());
|
1380
1350
|
}
|
@@ -1383,16 +1353,16 @@ void ClientChannel::CreateOrUpdateLbPolicyLocked(
|
|
1383
1353
|
|
1384
1354
|
// Creates a new LB policy.
|
1385
1355
|
OrphanablePtr<LoadBalancingPolicy> ClientChannel::CreateLbPolicyLocked(
|
1386
|
-
const
|
1356
|
+
const ChannelArgs& args) {
|
1387
1357
|
LoadBalancingPolicy::Args lb_policy_args;
|
1388
1358
|
lb_policy_args.work_serializer = work_serializer_;
|
1389
1359
|
lb_policy_args.channel_control_helper =
|
1390
1360
|
absl::make_unique<ClientChannelControlHelper>(this);
|
1391
|
-
lb_policy_args.args =
|
1361
|
+
lb_policy_args.args = args;
|
1392
1362
|
OrphanablePtr<LoadBalancingPolicy> lb_policy =
|
1393
1363
|
MakeOrphanable<ChildPolicyHandler>(std::move(lb_policy_args),
|
1394
|
-
&
|
1395
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1364
|
+
&grpc_client_channel_trace);
|
1365
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1396
1366
|
gpr_log(GPR_INFO, "chand=%p: created new LB policy %p", this,
|
1397
1367
|
lb_policy.get());
|
1398
1368
|
}
|
@@ -1427,26 +1397,24 @@ void ClientChannel::RemoveResolverQueuedCall(ResolverQueuedCall* to_remove,
|
|
1427
1397
|
|
1428
1398
|
void ClientChannel::UpdateServiceConfigInControlPlaneLocked(
|
1429
1399
|
RefCountedPtr<ServiceConfig> service_config,
|
1430
|
-
RefCountedPtr<ConfigSelector> config_selector,
|
1431
|
-
|
1432
|
-
|
1433
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
|
1400
|
+
RefCountedPtr<ConfigSelector> config_selector, std::string lb_policy_name) {
|
1401
|
+
std::string service_config_json(service_config->json_string());
|
1402
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1434
1403
|
gpr_log(GPR_INFO,
|
1435
1404
|
"chand=%p: resolver returned updated service config: \"%s\"", this,
|
1436
|
-
service_config_json.
|
1405
|
+
service_config_json.c_str());
|
1437
1406
|
}
|
1438
1407
|
// Save service config.
|
1439
1408
|
saved_service_config_ = std::move(service_config);
|
1440
1409
|
// Swap out the data used by GetChannelInfo().
|
1441
|
-
UniquePtr<char> lb_policy_name_owned(gpr_strdup(lb_policy_name));
|
1442
1410
|
{
|
1443
1411
|
MutexLock lock(&info_mu_);
|
1444
|
-
info_lb_policy_name_ = std::move(
|
1412
|
+
info_lb_policy_name_ = std::move(lb_policy_name);
|
1445
1413
|
info_service_config_json_ = std::move(service_config_json);
|
1446
1414
|
}
|
1447
1415
|
// Save config selector.
|
1448
1416
|
saved_config_selector_ = std::move(config_selector);
|
1449
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1417
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1450
1418
|
gpr_log(GPR_INFO, "chand=%p: using ConfigSelector %p", this,
|
1451
1419
|
saved_config_selector_.get());
|
1452
1420
|
}
|
@@ -1457,7 +1425,7 @@ void ClientChannel::UpdateServiceConfigInDataPlaneLocked() {
|
|
1457
1425
|
RefCountedPtr<ServiceConfig> service_config = saved_service_config_;
|
1458
1426
|
// Grab ref to config selector. Use default if resolver didn't supply one.
|
1459
1427
|
RefCountedPtr<ConfigSelector> config_selector = saved_config_selector_;
|
1460
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1428
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1461
1429
|
gpr_log(GPR_INFO, "chand=%p: switching to ConfigSelector %p", this,
|
1462
1430
|
saved_config_selector_.get());
|
1463
1431
|
}
|
@@ -1465,19 +1433,11 @@ void ClientChannel::UpdateServiceConfigInDataPlaneLocked() {
|
|
1465
1433
|
config_selector =
|
1466
1434
|
MakeRefCounted<DefaultConfigSelector>(saved_service_config_);
|
1467
1435
|
}
|
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);
|
1436
|
+
ChannelArgs new_args = config_selector->ModifyChannelArgs(
|
1437
|
+
channel_args_.SetObject(this).SetObject(service_config));
|
1479
1438
|
bool enable_retries =
|
1480
|
-
|
1439
|
+
!new_args.WantMinimalStack() &&
|
1440
|
+
new_args.GetBool(GRPC_ARG_ENABLE_RETRIES).value_or(true);
|
1481
1441
|
// Construct dynamic filter stack.
|
1482
1442
|
std::vector<const grpc_channel_filter*> filters =
|
1483
1443
|
config_selector->GetFilters();
|
@@ -1487,17 +1447,15 @@ void ClientChannel::UpdateServiceConfigInDataPlaneLocked() {
|
|
1487
1447
|
filters.push_back(&DynamicTerminationFilter::kFilterVtable);
|
1488
1448
|
}
|
1489
1449
|
RefCountedPtr<DynamicFilters> dynamic_filters =
|
1490
|
-
DynamicFilters::Create(new_args, std::move(filters));
|
1450
|
+
DynamicFilters::Create(new_args.ToC().get(), std::move(filters));
|
1491
1451
|
GPR_ASSERT(dynamic_filters != nullptr);
|
1492
|
-
grpc_channel_args_destroy(new_args);
|
1493
1452
|
// Grab data plane lock to update service config.
|
1494
1453
|
//
|
1495
1454
|
// We defer unreffing the old values (and deallocating memory) until
|
1496
1455
|
// after releasing the lock to keep the critical section small.
|
1497
1456
|
{
|
1498
1457
|
MutexLock lock(&resolution_mu_);
|
1499
|
-
|
1500
|
-
resolver_transient_failure_error_ = GRPC_ERROR_NONE;
|
1458
|
+
resolver_transient_failure_error_ = absl::OkStatus();
|
1501
1459
|
// Update service config.
|
1502
1460
|
received_service_config_data_ = true;
|
1503
1461
|
// Old values will be unreffed after lock is released.
|
@@ -1529,10 +1487,10 @@ void ClientChannel::UpdateServiceConfigInDataPlaneLocked() {
|
|
1529
1487
|
}
|
1530
1488
|
|
1531
1489
|
void ClientChannel::CreateResolverLocked() {
|
1532
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1490
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1533
1491
|
gpr_log(GPR_INFO, "chand=%p: starting name resolution", this);
|
1534
1492
|
}
|
1535
|
-
resolver_ =
|
1493
|
+
resolver_ = CoreConfiguration::Get().resolver_registry().CreateResolver(
|
1536
1494
|
uri_to_resolve_.c_str(), channel_args_, interested_parties_,
|
1537
1495
|
work_serializer_, absl::make_unique<ResolverResultHandler>(this));
|
1538
1496
|
// Since the validity of the args was checked when the channel was created,
|
@@ -1542,20 +1500,20 @@ void ClientChannel::CreateResolverLocked() {
|
|
1542
1500
|
GRPC_CHANNEL_CONNECTING, absl::Status(), "started resolving",
|
1543
1501
|
absl::make_unique<LoadBalancingPolicy::QueuePicker>(nullptr));
|
1544
1502
|
resolver_->StartLocked();
|
1545
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1503
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1546
1504
|
gpr_log(GPR_INFO, "chand=%p: created resolver=%p", this, resolver_.get());
|
1547
1505
|
}
|
1548
1506
|
}
|
1549
1507
|
|
1550
1508
|
void ClientChannel::DestroyResolverAndLbPolicyLocked() {
|
1551
1509
|
if (resolver_ != nullptr) {
|
1552
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1510
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1553
1511
|
gpr_log(GPR_INFO, "chand=%p: shutting down resolver=%p", this,
|
1554
1512
|
resolver_.get());
|
1555
1513
|
}
|
1556
1514
|
resolver_.reset();
|
1557
1515
|
if (lb_policy_ != nullptr) {
|
1558
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1516
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1559
1517
|
gpr_log(GPR_INFO, "chand=%p: shutting down lb_policy=%p", this,
|
1560
1518
|
lb_policy_.get());
|
1561
1519
|
}
|
@@ -1671,11 +1629,15 @@ grpc_error_handle ClientChannel::DoPingLocked(grpc_transport_op* op) {
|
|
1671
1629
|
&result,
|
1672
1630
|
// Complete pick.
|
1673
1631
|
[op](LoadBalancingPolicy::PickResult::Complete* complete_pick)
|
1674
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(
|
1632
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(*ClientChannel::work_serializer_) {
|
1675
1633
|
SubchannelWrapper* subchannel = static_cast<SubchannelWrapper*>(
|
1676
1634
|
complete_pick->subchannel.get());
|
1677
1635
|
RefCountedPtr<ConnectedSubchannel> connected_subchannel =
|
1678
1636
|
subchannel->connected_subchannel();
|
1637
|
+
if (connected_subchannel == nullptr) {
|
1638
|
+
return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
1639
|
+
"LB pick for ping not connected");
|
1640
|
+
}
|
1679
1641
|
connected_subchannel->Ping(op->send_ping.on_initiate,
|
1680
1642
|
op->send_ping.on_ack);
|
1681
1643
|
return GRPC_ERROR_NONE;
|
@@ -1706,7 +1668,7 @@ void ClientChannel::StartTransportOpLocked(grpc_transport_op* op) {
|
|
1706
1668
|
// Ping.
|
1707
1669
|
if (op->send_ping.on_initiate != nullptr || op->send_ping.on_ack != nullptr) {
|
1708
1670
|
grpc_error_handle error = DoPingLocked(op);
|
1709
|
-
if (error
|
1671
|
+
if (!GRPC_ERROR_IS_NONE(error)) {
|
1710
1672
|
ExecCtx::Run(DEBUG_LOCATION, op->send_ping.on_initiate,
|
1711
1673
|
GRPC_ERROR_REF(error));
|
1712
1674
|
ExecCtx::Run(DEBUG_LOCATION, op->send_ping.on_ack, error);
|
@@ -1722,8 +1684,8 @@ void ClientChannel::StartTransportOpLocked(grpc_transport_op* op) {
|
|
1722
1684
|
}
|
1723
1685
|
}
|
1724
1686
|
// Disconnect or enter IDLE.
|
1725
|
-
if (op->disconnect_with_error
|
1726
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1687
|
+
if (!GRPC_ERROR_IS_NONE(op->disconnect_with_error)) {
|
1688
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1727
1689
|
gpr_log(GPR_INFO, "chand=%p: disconnect_with_error: %s", this,
|
1728
1690
|
grpc_error_std_string(op->disconnect_with_error).c_str());
|
1729
1691
|
}
|
@@ -1732,7 +1694,7 @@ void ClientChannel::StartTransportOpLocked(grpc_transport_op* op) {
|
|
1732
1694
|
if (grpc_error_get_int(op->disconnect_with_error,
|
1733
1695
|
GRPC_ERROR_INT_CHANNEL_CONNECTIVITY_STATE, &value) &&
|
1734
1696
|
static_cast<grpc_connectivity_state>(value) == GRPC_CHANNEL_IDLE) {
|
1735
|
-
if (disconnect_error_
|
1697
|
+
if (GRPC_ERROR_IS_NONE(disconnect_error_)) {
|
1736
1698
|
// Enter IDLE state.
|
1737
1699
|
UpdateStateAndPickerLocked(GRPC_CHANNEL_IDLE, absl::Status(),
|
1738
1700
|
"channel entering IDLE", nullptr);
|
@@ -1740,7 +1702,7 @@ void ClientChannel::StartTransportOpLocked(grpc_transport_op* op) {
|
|
1740
1702
|
GRPC_ERROR_UNREF(op->disconnect_with_error);
|
1741
1703
|
} else {
|
1742
1704
|
// Disconnect.
|
1743
|
-
GPR_ASSERT(disconnect_error_
|
1705
|
+
GPR_ASSERT(GRPC_ERROR_IS_NONE(disconnect_error_));
|
1744
1706
|
disconnect_error_ = op->disconnect_with_error;
|
1745
1707
|
UpdateStateAndPickerLocked(
|
1746
1708
|
GRPC_CHANNEL_SHUTDOWN, absl::Status(), "shutdown from API",
|
@@ -1763,7 +1725,7 @@ void ClientChannel::StartTransportOp(grpc_channel_element* elem,
|
|
1763
1725
|
// Pop into control plane work_serializer for remaining ops.
|
1764
1726
|
GRPC_CHANNEL_STACK_REF(chand->owning_stack_, "start_transport_op");
|
1765
1727
|
chand->work_serializer_->Run(
|
1766
|
-
[chand, op]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand->work_serializer_) {
|
1728
|
+
[chand, op]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand->work_serializer_) {
|
1767
1729
|
chand->StartTransportOpLocked(op);
|
1768
1730
|
},
|
1769
1731
|
DEBUG_LOCATION);
|
@@ -1774,11 +1736,11 @@ void ClientChannel::GetChannelInfo(grpc_channel_element* elem,
|
|
1774
1736
|
ClientChannel* chand = static_cast<ClientChannel*>(elem->channel_data);
|
1775
1737
|
MutexLock lock(&chand->info_mu_);
|
1776
1738
|
if (info->lb_policy_name != nullptr) {
|
1777
|
-
*info->lb_policy_name = gpr_strdup(chand->info_lb_policy_name_.
|
1739
|
+
*info->lb_policy_name = gpr_strdup(chand->info_lb_policy_name_.c_str());
|
1778
1740
|
}
|
1779
1741
|
if (info->service_config_json != nullptr) {
|
1780
1742
|
*info->service_config_json =
|
1781
|
-
gpr_strdup(chand->info_service_config_json_.
|
1743
|
+
gpr_strdup(chand->info_service_config_json_.c_str());
|
1782
1744
|
}
|
1783
1745
|
}
|
1784
1746
|
|
@@ -1825,7 +1787,7 @@ grpc_connectivity_state ClientChannel::CheckConnectivityState(
|
|
1825
1787
|
if (out == GRPC_CHANNEL_IDLE && try_to_connect) {
|
1826
1788
|
GRPC_CHANNEL_STACK_REF(owning_stack_, "TryToConnect");
|
1827
1789
|
work_serializer_->Run([this]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(
|
1828
|
-
work_serializer_) { TryToConnectLocked(); },
|
1790
|
+
*work_serializer_) { TryToConnectLocked(); },
|
1829
1791
|
DEBUG_LOCATION);
|
1830
1792
|
}
|
1831
1793
|
return out;
|
@@ -1852,7 +1814,7 @@ ClientChannel::CallData::CallData(grpc_call_element* elem,
|
|
1852
1814
|
: deadline_state_(elem, args,
|
1853
1815
|
GPR_LIKELY(chand.deadline_checking_enabled_)
|
1854
1816
|
? args.deadline
|
1855
|
-
:
|
1817
|
+
: Timestamp::InfFuture()),
|
1856
1818
|
path_(grpc_slice_ref_internal(args.path)),
|
1857
1819
|
call_start_time_(args.start_time),
|
1858
1820
|
deadline_(args.deadline),
|
@@ -1901,6 +1863,11 @@ void ClientChannel::CallData::StartTransportStreamOpBatch(
|
|
1901
1863
|
GPR_TIMER_SCOPE("cc_start_transport_stream_op_batch", 0);
|
1902
1864
|
CallData* calld = static_cast<CallData*>(elem->call_data);
|
1903
1865
|
ClientChannel* chand = static_cast<ClientChannel*>(elem->channel_data);
|
1866
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace) &&
|
1867
|
+
!GRPC_TRACE_FLAG_ENABLED(grpc_trace_channel)) {
|
1868
|
+
gpr_log(GPR_INFO, "chand=%p calld=%p: batch started from above: %s", chand,
|
1869
|
+
calld, grpc_transport_stream_op_batch_string(batch).c_str());
|
1870
|
+
}
|
1904
1871
|
if (GPR_LIKELY(chand->deadline_checking_enabled_)) {
|
1905
1872
|
grpc_deadline_state_client_start_transport_stream_op_batch(elem, batch);
|
1906
1873
|
}
|
@@ -1908,8 +1875,13 @@ void ClientChannel::CallData::StartTransportStreamOpBatch(
|
|
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,7 +1897,7 @@ 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(!GRPC_ERROR_IS_NONE(calld->cancel_error_))) {
|
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
1903
|
chand, calld,
|
@@ -2037,7 +2009,7 @@ void ClientChannel::CallData::FailPendingBatchInCallCombiner(
|
|
2037
2009
|
void ClientChannel::CallData::PendingBatchesFail(
|
2038
2010
|
grpc_call_element* elem, grpc_error_handle error,
|
2039
2011
|
YieldCallCombinerPredicate yield_call_combiner_predicate) {
|
2040
|
-
GPR_ASSERT(error
|
2012
|
+
GPR_ASSERT(!GRPC_ERROR_IS_NONE(error));
|
2041
2013
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
2042
2014
|
size_t num_batches = 0;
|
2043
2015
|
for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) {
|
@@ -2134,14 +2106,15 @@ class ClientChannel::CallData::ResolverQueuedCallCanceller {
|
|
2134
2106
|
auto* calld = static_cast<CallData*>(self->elem_->call_data);
|
2135
2107
|
{
|
2136
2108
|
MutexLock lock(&chand->resolution_mu_);
|
2137
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
2109
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
2138
2110
|
gpr_log(GPR_INFO,
|
2139
2111
|
"chand=%p calld=%p: cancelling resolver queued pick: "
|
2140
2112
|
"error=%s self=%p calld->resolver_pick_canceller=%p",
|
2141
2113
|
chand, calld, grpc_error_std_string(error).c_str(), self,
|
2142
2114
|
calld->resolver_call_canceller_);
|
2143
2115
|
}
|
2144
|
-
if (calld->resolver_call_canceller_ == self &&
|
2116
|
+
if (calld->resolver_call_canceller_ == self &&
|
2117
|
+
!GRPC_ERROR_IS_NONE(error)) {
|
2145
2118
|
// Remove pick from list of queued picks.
|
2146
2119
|
calld->MaybeRemoveCallFromResolverQueuedCallsLocked(self->elem_);
|
2147
2120
|
// Fail pending batches on the call.
|
@@ -2161,7 +2134,7 @@ void ClientChannel::CallData::MaybeRemoveCallFromResolverQueuedCallsLocked(
|
|
2161
2134
|
grpc_call_element* elem) {
|
2162
2135
|
if (!queued_pending_resolver_result_) return;
|
2163
2136
|
auto* chand = static_cast<ClientChannel*>(elem->channel_data);
|
2164
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
2137
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
2165
2138
|
gpr_log(GPR_INFO,
|
2166
2139
|
"chand=%p calld=%p: removing from resolver queued picks list",
|
2167
2140
|
chand, this);
|
@@ -2176,7 +2149,7 @@ void ClientChannel::CallData::MaybeAddCallToResolverQueuedCallsLocked(
|
|
2176
2149
|
grpc_call_element* elem) {
|
2177
2150
|
if (queued_pending_resolver_result_) return;
|
2178
2151
|
auto* chand = static_cast<ClientChannel*>(elem->channel_data);
|
2179
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
2152
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
2180
2153
|
gpr_log(GPR_INFO, "chand=%p calld=%p: adding to resolver queued picks list",
|
2181
2154
|
chand, this);
|
2182
2155
|
}
|
@@ -2190,7 +2163,7 @@ void ClientChannel::CallData::MaybeAddCallToResolverQueuedCallsLocked(
|
|
2190
2163
|
grpc_error_handle ClientChannel::CallData::ApplyServiceConfigToCallLocked(
|
2191
2164
|
grpc_call_element* elem, grpc_metadata_batch* initial_metadata) {
|
2192
2165
|
ClientChannel* chand = static_cast<ClientChannel*>(elem->channel_data);
|
2193
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
2166
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
2194
2167
|
gpr_log(GPR_INFO, "chand=%p calld=%p: applying service config to call",
|
2195
2168
|
chand, this);
|
2196
2169
|
}
|
@@ -2199,7 +2172,9 @@ grpc_error_handle ClientChannel::CallData::ApplyServiceConfigToCallLocked(
|
|
2199
2172
|
// Use the ConfigSelector to determine the config for the call.
|
2200
2173
|
ConfigSelector::CallConfig call_config =
|
2201
2174
|
config_selector->GetCallConfig({&path_, initial_metadata, arena_});
|
2202
|
-
if (call_config.
|
2175
|
+
if (!call_config.status.ok()) {
|
2176
|
+
return absl_status_to_grpc_error(call_config.status);
|
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
|
@@ -2213,13 +2188,14 @@ grpc_error_handle ClientChannel::CallData::ApplyServiceConfigToCallLocked(
|
|
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;
|
@@ -2228,17 +2204,13 @@ grpc_error_handle ClientChannel::CallData::ApplyServiceConfigToCallLocked(
|
|
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.
|
@@ -2250,30 +2222,27 @@ grpc_error_handle ClientChannel::CallData::ApplyServiceConfigToCallLocked(
|
|
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, grpc_error_std_string(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,
|
2242
|
+
Closure::Run(DEBUG_LOCATION, calld->original_recv_trailing_metadata_ready_,
|
2262
2243
|
GRPC_ERROR_REF(error));
|
2263
2244
|
}
|
2264
2245
|
|
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_;
|
2275
|
-
}
|
2276
|
-
|
2277
2246
|
void ClientChannel::CallData::AsyncResolutionDone(grpc_call_element* elem,
|
2278
2247
|
grpc_error_handle error) {
|
2279
2248
|
// TODO(roth): Does this callback need to hold a ref to the call stack?
|
@@ -2286,8 +2255,8 @@ 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 (!GRPC_ERROR_IS_NONE(error)) {
|
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
2262
|
chand, calld, grpc_error_std_string(error).c_str());
|
@@ -2319,6 +2288,9 @@ bool ClientChannel::CallData::CheckResolutionLocked(grpc_call_element* elem,
|
|
2319
2288
|
ClientChannel* chand = static_cast<ClientChannel*>(elem->channel_data);
|
2320
2289
|
// If we're still in IDLE, we need to start resolving.
|
2321
2290
|
if (GPR_UNLIKELY(chand->CheckConnectivityState(false) == GRPC_CHANNEL_IDLE)) {
|
2291
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
2292
|
+
gpr_log(GPR_INFO, "chand=%p calld=%p: triggering exit idle", chand, this);
|
2293
|
+
}
|
2322
2294
|
// Bounce into the control plane work serializer to start resolving,
|
2323
2295
|
// in case we are still in IDLE state. Since we are holding on to the
|
2324
2296
|
// resolution mutex here, we offload it on the ExecCtx so that we don't
|
@@ -2331,7 +2303,7 @@ bool ClientChannel::CallData::CheckResolutionLocked(grpc_call_element* elem,
|
|
2331
2303
|
auto* chand = static_cast<ClientChannel*>(arg);
|
2332
2304
|
chand->work_serializer_->Run(
|
2333
2305
|
[chand]()
|
2334
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand->work_serializer_) {
|
2306
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand->work_serializer_) {
|
2335
2307
|
chand->CheckConnectivityState(/*try_to_connect=*/true);
|
2336
2308
|
GRPC_CHANNEL_STACK_UNREF(chand->owning_stack_,
|
2337
2309
|
"CheckResolutionLocked");
|
@@ -2346,24 +2318,29 @@ bool ClientChannel::CallData::CheckResolutionLocked(grpc_call_element* elem,
|
|
2346
2318
|
pending_batches_[0]->payload->send_initial_metadata;
|
2347
2319
|
grpc_metadata_batch* initial_metadata_batch =
|
2348
2320
|
send_initial_metadata.send_initial_metadata;
|
2349
|
-
const uint32_t send_initial_metadata_flags =
|
2350
|
-
send_initial_metadata.send_initial_metadata_flags;
|
2351
2321
|
// If we don't yet have a resolver result, we need to queue the call
|
2352
2322
|
// until we get one.
|
2353
2323
|
if (GPR_UNLIKELY(!chand->received_service_config_data_)) {
|
2354
2324
|
// If the resolver returned transient failure before returning the
|
2355
2325
|
// first service config, fail any non-wait_for_ready calls.
|
2356
|
-
|
2357
|
-
if (resolver_error
|
2358
|
-
(
|
2359
|
-
|
2326
|
+
absl::Status resolver_error = chand->resolver_transient_failure_error_;
|
2327
|
+
if (!resolver_error.ok() &&
|
2328
|
+
!initial_metadata_batch->GetOrCreatePointer(WaitForReady())->value) {
|
2329
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
2330
|
+
gpr_log(GPR_INFO, "chand=%p calld=%p: resolution failed, failing call",
|
2331
|
+
chand, this);
|
2332
|
+
}
|
2360
2333
|
MaybeRemoveCallFromResolverQueuedCallsLocked(elem);
|
2361
|
-
*error =
|
2334
|
+
*error = absl_status_to_grpc_error(resolver_error);
|
2362
2335
|
return true;
|
2363
2336
|
}
|
2364
2337
|
// Either the resolver has not yet returned a result, or it has
|
2365
2338
|
// returned transient failure but the call is wait_for_ready. In
|
2366
2339
|
// either case, queue the call.
|
2340
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
2341
|
+
gpr_log(GPR_INFO, "chand=%p calld=%p: queuing to wait for resolution",
|
2342
|
+
chand, this);
|
2343
|
+
}
|
2367
2344
|
MaybeAddCallToResolverQueuedCallsLocked(elem);
|
2368
2345
|
return false;
|
2369
2346
|
}
|
@@ -2388,15 +2365,15 @@ void ClientChannel::CallData::CreateDynamicCall(grpc_call_element* elem) {
|
|
2388
2365
|
call_combiner_};
|
2389
2366
|
grpc_error_handle error = GRPC_ERROR_NONE;
|
2390
2367
|
DynamicFilters* channel_stack = args.channel_stack.get();
|
2391
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
2368
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
2392
2369
|
gpr_log(
|
2393
2370
|
GPR_INFO,
|
2394
2371
|
"chand=%p calld=%p: creating dynamic call stack on channel_stack=%p",
|
2395
2372
|
chand, this, channel_stack);
|
2396
2373
|
}
|
2397
2374
|
dynamic_call_ = channel_stack->CreateCall(std::move(args), &error);
|
2398
|
-
if (error
|
2399
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
2375
|
+
if (!GRPC_ERROR_IS_NONE(error)) {
|
2376
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
2400
2377
|
gpr_log(GPR_INFO,
|
2401
2378
|
"chand=%p calld=%p: failed to create dynamic call: error=%s",
|
2402
2379
|
chand, this, grpc_error_std_string(error).c_str());
|
@@ -2414,39 +2391,71 @@ void ClientChannel::CallData::CreateDynamicCall(grpc_call_element* elem) {
|
|
2414
2391
|
class ClientChannel::LoadBalancedCall::Metadata
|
2415
2392
|
: public LoadBalancingPolicy::MetadataInterface {
|
2416
2393
|
public:
|
2417
|
-
Metadata(
|
2418
|
-
: lb_call_(lb_call), batch_(batch) {}
|
2394
|
+
explicit Metadata(grpc_metadata_batch* batch) : batch_(batch) {}
|
2419
2395
|
|
2420
2396
|
void Add(absl::string_view key, absl::string_view value) override {
|
2421
|
-
|
2422
|
-
|
2423
|
-
|
2424
|
-
|
2425
|
-
|
2426
|
-
|
2397
|
+
if (batch_ == nullptr) return;
|
2398
|
+
// Gross, egregious hack to support legacy grpclb behavior.
|
2399
|
+
// TODO(ctiller): Use a promise context for this once that plumbing is done.
|
2400
|
+
if (key == GrpcLbClientStatsMetadata::key()) {
|
2401
|
+
batch_->Set(
|
2402
|
+
GrpcLbClientStatsMetadata(),
|
2403
|
+
const_cast<GrpcLbClientStats*>(
|
2404
|
+
reinterpret_cast<const GrpcLbClientStats*>(value.data())));
|
2405
|
+
return;
|
2406
|
+
}
|
2407
|
+
batch_->Append(key, Slice::FromStaticString(value),
|
2408
|
+
[key](absl::string_view error, const Slice& value) {
|
2409
|
+
gpr_log(GPR_ERROR, "%s",
|
2410
|
+
absl::StrCat(error, " key:", key,
|
2411
|
+
" value:", value.as_string_view())
|
2412
|
+
.c_str());
|
2413
|
+
});
|
2427
2414
|
}
|
2428
2415
|
|
2429
2416
|
std::vector<std::pair<std::string, std::string>> TestOnlyCopyToVector()
|
2430
2417
|
override {
|
2431
|
-
|
2432
|
-
|
2433
|
-
|
2434
|
-
|
2435
|
-
result.push_back(
|
2436
|
-
std::make_pair(std::move(key),
|
2437
|
-
std::string(StringViewFromSlice(GRPC_MDVALUE(md)))));
|
2438
|
-
}
|
2439
|
-
});
|
2440
|
-
return result;
|
2418
|
+
if (batch_ == nullptr) return {};
|
2419
|
+
Encoder encoder;
|
2420
|
+
batch_->Encode(&encoder);
|
2421
|
+
return encoder.Take();
|
2441
2422
|
}
|
2442
2423
|
|
2443
2424
|
absl::optional<absl::string_view> Lookup(absl::string_view key,
|
2444
2425
|
std::string* buffer) const override {
|
2445
|
-
|
2426
|
+
if (batch_ == nullptr) return absl::nullopt;
|
2427
|
+
return batch_->GetStringValue(key, buffer);
|
2446
2428
|
}
|
2447
2429
|
|
2448
2430
|
private:
|
2449
|
-
|
2431
|
+
class Encoder {
|
2432
|
+
public:
|
2433
|
+
void Encode(const Slice& key, const Slice& value) {
|
2434
|
+
out_.emplace_back(std::string(key.as_string_view()),
|
2435
|
+
std::string(value.as_string_view()));
|
2436
|
+
}
|
2437
|
+
|
2438
|
+
template <class Which>
|
2439
|
+
void Encode(Which, const typename Which::ValueType& value) {
|
2440
|
+
auto value_slice = Which::Encode(value);
|
2441
|
+
out_.emplace_back(std::string(Which::key()),
|
2442
|
+
std::string(value_slice.as_string_view()));
|
2443
|
+
}
|
2444
|
+
|
2445
|
+
void Encode(GrpcTimeoutMetadata,
|
2446
|
+
const typename GrpcTimeoutMetadata::ValueType&) {}
|
2447
|
+
void Encode(HttpPathMetadata, const Slice&) {}
|
2448
|
+
void Encode(HttpMethodMetadata,
|
2449
|
+
const typename HttpMethodMetadata::ValueType&) {}
|
2450
|
+
|
2451
|
+
std::vector<std::pair<std::string, std::string>> Take() {
|
2452
|
+
return std::move(out_);
|
2453
|
+
}
|
2454
|
+
|
2455
|
+
private:
|
2456
|
+
std::vector<std::pair<std::string, std::string>> out_;
|
2457
|
+
};
|
2458
|
+
|
2450
2459
|
grpc_metadata_batch* batch_;
|
2451
2460
|
};
|
2452
2461
|
|
@@ -2454,41 +2463,62 @@ class ClientChannel::LoadBalancedCall::Metadata
|
|
2454
2463
|
// ClientChannel::LoadBalancedCall::LbCallState
|
2455
2464
|
//
|
2456
2465
|
|
2457
|
-
|
2458
|
-
|
2459
|
-
|
2460
|
-
|
2466
|
+
absl::string_view
|
2467
|
+
ClientChannel::LoadBalancedCall::LbCallState::GetCallAttribute(
|
2468
|
+
UniqueTypeName type) {
|
2469
|
+
auto* service_config_call_data = static_cast<ServiceConfigCallData*>(
|
2470
|
+
lb_call_->call_context_[GRPC_CONTEXT_SERVICE_CONFIG_CALL_DATA].value);
|
2471
|
+
auto& call_attributes = service_config_call_data->call_attributes();
|
2472
|
+
auto it = call_attributes.find(type);
|
2473
|
+
if (it == call_attributes.end()) return absl::string_view();
|
2474
|
+
return it->second;
|
2475
|
+
}
|
2461
2476
|
|
2462
|
-
|
2477
|
+
//
|
2478
|
+
// ClientChannel::LoadBalancedCall::BackendMetricAccessor
|
2479
|
+
//
|
2463
2480
|
|
2464
|
-
|
2465
|
-
|
2466
|
-
|
2467
|
-
|
2468
|
-
|
2469
|
-
|
2481
|
+
class ClientChannel::LoadBalancedCall::BackendMetricAccessor
|
2482
|
+
: public LoadBalancingPolicy::BackendMetricAccessor {
|
2483
|
+
public:
|
2484
|
+
explicit BackendMetricAccessor(LoadBalancedCall* lb_call)
|
2485
|
+
: lb_call_(lb_call) {}
|
2486
|
+
|
2487
|
+
const BackendMetricData* GetBackendMetricData() override {
|
2488
|
+
if (lb_call_->backend_metric_data_ == nullptr &&
|
2489
|
+
lb_call_->recv_trailing_metadata_ != nullptr) {
|
2490
|
+
if (const auto* md = lb_call_->recv_trailing_metadata_->get_pointer(
|
2491
|
+
EndpointLoadMetricsBinMetadata())) {
|
2492
|
+
BackendMetricAllocator allocator(lb_call_->arena_);
|
2470
2493
|
lb_call_->backend_metric_data_ =
|
2471
|
-
ParseBackendMetricData(
|
2494
|
+
ParseBackendMetricData(md->as_string_view(), &allocator);
|
2472
2495
|
}
|
2473
2496
|
}
|
2474
2497
|
return lb_call_->backend_metric_data_;
|
2475
2498
|
}
|
2476
2499
|
|
2477
|
-
absl::string_view ExperimentalGetCallAttribute(const char* key) override {
|
2478
|
-
auto* service_config_call_data = static_cast<ServiceConfigCallData*>(
|
2479
|
-
lb_call_->call_context_[GRPC_CONTEXT_SERVICE_CONFIG_CALL_DATA].value);
|
2480
|
-
auto& call_attributes = service_config_call_data->call_attributes();
|
2481
|
-
auto it = call_attributes.find(key);
|
2482
|
-
if (it == call_attributes.end()) return absl::string_view();
|
2483
|
-
return it->second;
|
2484
|
-
}
|
2485
|
-
|
2486
2500
|
private:
|
2501
|
+
class BackendMetricAllocator : public BackendMetricAllocatorInterface {
|
2502
|
+
public:
|
2503
|
+
explicit BackendMetricAllocator(Arena* arena) : arena_(arena) {}
|
2504
|
+
|
2505
|
+
BackendMetricData* AllocateBackendMetricData() override {
|
2506
|
+
return arena_->New<BackendMetricData>();
|
2507
|
+
}
|
2508
|
+
|
2509
|
+
char* AllocateString(size_t size) override {
|
2510
|
+
return static_cast<char*>(arena_->Alloc(size));
|
2511
|
+
}
|
2512
|
+
|
2513
|
+
private:
|
2514
|
+
Arena* arena_;
|
2515
|
+
};
|
2516
|
+
|
2487
2517
|
LoadBalancedCall* lb_call_;
|
2488
2518
|
};
|
2489
2519
|
|
2490
2520
|
//
|
2491
|
-
// LoadBalancedCall
|
2521
|
+
// ClientChannel::LoadBalancedCall
|
2492
2522
|
//
|
2493
2523
|
|
2494
2524
|
namespace {
|
@@ -2509,7 +2539,7 @@ ClientChannel::LoadBalancedCall::LoadBalancedCall(
|
|
2509
2539
|
ConfigSelector::CallDispatchController* call_dispatch_controller,
|
2510
2540
|
bool is_transparent_retry)
|
2511
2541
|
: InternallyRefCounted(
|
2512
|
-
GRPC_TRACE_FLAG_ENABLED(
|
2542
|
+
GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)
|
2513
2543
|
? "LoadBalancedCall"
|
2514
2544
|
: nullptr),
|
2515
2545
|
chand_(chand),
|
@@ -2523,15 +2553,17 @@ ClientChannel::LoadBalancedCall::LoadBalancedCall(
|
|
2523
2553
|
on_call_destruction_complete_(on_call_destruction_complete),
|
2524
2554
|
call_dispatch_controller_(call_dispatch_controller),
|
2525
2555
|
call_attempt_tracer_(
|
2526
|
-
GetCallAttemptTracer(args.context, is_transparent_retry)) {
|
2556
|
+
GetCallAttemptTracer(args.context, is_transparent_retry)) {
|
2557
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2558
|
+
gpr_log(GPR_INFO, "chand=%p lb_call=%p: created", chand_, this);
|
2559
|
+
}
|
2560
|
+
}
|
2527
2561
|
|
2528
2562
|
ClientChannel::LoadBalancedCall::~LoadBalancedCall() {
|
2529
|
-
grpc_slice_unref_internal(path_);
|
2530
2563
|
GRPC_ERROR_UNREF(cancel_error_);
|
2531
2564
|
GRPC_ERROR_UNREF(failure_error_);
|
2532
2565
|
if (backend_metric_data_ != nullptr) {
|
2533
|
-
backend_metric_data_
|
2534
|
-
->LoadBalancingPolicy::BackendMetricData::~BackendMetricData();
|
2566
|
+
backend_metric_data_->BackendMetricData::~BackendMetricData();
|
2535
2567
|
}
|
2536
2568
|
// Make sure there are no remaining pending batches.
|
2537
2569
|
for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) {
|
@@ -2544,6 +2576,12 @@ ClientChannel::LoadBalancedCall::~LoadBalancedCall() {
|
|
2544
2576
|
}
|
2545
2577
|
|
2546
2578
|
void ClientChannel::LoadBalancedCall::Orphan() {
|
2579
|
+
// If the recv_trailing_metadata op was never started, then notify
|
2580
|
+
// about call completion here, as best we can. We assume status
|
2581
|
+
// CANCELLED in this case.
|
2582
|
+
if (recv_trailing_metadata_ == nullptr) {
|
2583
|
+
RecordCallCompletion(absl::CancelledError("call cancelled"));
|
2584
|
+
}
|
2547
2585
|
// Compute latency and report it to the tracer.
|
2548
2586
|
if (call_attempt_tracer_ != nullptr) {
|
2549
2587
|
gpr_timespec latency =
|
@@ -2570,7 +2608,7 @@ size_t ClientChannel::LoadBalancedCall::GetBatchIndex(
|
|
2570
2608
|
void ClientChannel::LoadBalancedCall::PendingBatchesAdd(
|
2571
2609
|
grpc_transport_stream_op_batch* batch) {
|
2572
2610
|
const size_t idx = GetBatchIndex(batch);
|
2573
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
2611
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2574
2612
|
gpr_log(GPR_INFO,
|
2575
2613
|
"chand=%p lb_call=%p: adding pending batch at index %" PRIuPTR,
|
2576
2614
|
chand_, this, idx);
|
@@ -2594,10 +2632,10 @@ void ClientChannel::LoadBalancedCall::FailPendingBatchInCallCombiner(
|
|
2594
2632
|
void ClientChannel::LoadBalancedCall::PendingBatchesFail(
|
2595
2633
|
grpc_error_handle error,
|
2596
2634
|
YieldCallCombinerPredicate yield_call_combiner_predicate) {
|
2597
|
-
GPR_ASSERT(error
|
2635
|
+
GPR_ASSERT(!GRPC_ERROR_IS_NONE(error));
|
2598
2636
|
GRPC_ERROR_UNREF(failure_error_);
|
2599
2637
|
failure_error_ = error;
|
2600
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
2638
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2601
2639
|
size_t num_batches = 0;
|
2602
2640
|
for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) {
|
2603
2641
|
if (pending_batches_[i] != nullptr) ++num_batches;
|
@@ -2639,7 +2677,7 @@ void ClientChannel::LoadBalancedCall::ResumePendingBatchInCallCombiner(
|
|
2639
2677
|
|
2640
2678
|
// This is called via the call combiner, so access to calld is synchronized.
|
2641
2679
|
void ClientChannel::LoadBalancedCall::PendingBatchesResume() {
|
2642
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
2680
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2643
2681
|
size_t num_batches = 0;
|
2644
2682
|
for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) {
|
2645
2683
|
if (pending_batches_[i] != nullptr) ++num_batches;
|
@@ -2668,6 +2706,14 @@ void ClientChannel::LoadBalancedCall::PendingBatchesResume() {
|
|
2668
2706
|
|
2669
2707
|
void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
|
2670
2708
|
grpc_transport_stream_op_batch* batch) {
|
2709
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace) ||
|
2710
|
+
GRPC_TRACE_FLAG_ENABLED(grpc_trace_channel)) {
|
2711
|
+
gpr_log(GPR_INFO,
|
2712
|
+
"chand=%p lb_call=%p: batch started from above: %s, "
|
2713
|
+
"call_attempt_tracer_=%p",
|
2714
|
+
chand_, this, grpc_transport_stream_op_batch_string(batch).c_str(),
|
2715
|
+
call_attempt_tracer_);
|
2716
|
+
}
|
2671
2717
|
// Handle call tracing.
|
2672
2718
|
if (call_attempt_tracer_ != nullptr) {
|
2673
2719
|
// Record send ops in tracer.
|
@@ -2677,8 +2723,7 @@ void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
|
|
2677
2723
|
}
|
2678
2724
|
if (batch->send_initial_metadata) {
|
2679
2725
|
call_attempt_tracer_->RecordSendInitialMetadata(
|
2680
|
-
batch->payload->send_initial_metadata.send_initial_metadata
|
2681
|
-
batch->payload->send_initial_metadata.send_initial_metadata_flags);
|
2726
|
+
batch->payload->send_initial_metadata.send_initial_metadata);
|
2682
2727
|
peer_string_ = batch->payload->send_initial_metadata.peer_string;
|
2683
2728
|
original_send_initial_metadata_on_complete_ = batch->on_complete;
|
2684
2729
|
GRPC_CLOSURE_INIT(&send_initial_metadata_on_complete_,
|
@@ -2731,7 +2776,7 @@ void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
|
|
2731
2776
|
// the channel's data plane mutex, which is more efficient (especially for
|
2732
2777
|
// streaming calls).
|
2733
2778
|
if (subchannel_call_ != nullptr) {
|
2734
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
2779
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2735
2780
|
gpr_log(GPR_INFO,
|
2736
2781
|
"chand=%p lb_call=%p: starting batch on subchannel_call=%p",
|
2737
2782
|
chand_, this, subchannel_call_.get());
|
@@ -2742,8 +2787,8 @@ void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
|
|
2742
2787
|
// We do not yet have a subchannel call.
|
2743
2788
|
//
|
2744
2789
|
// If we've previously been cancelled, immediately fail any new batches.
|
2745
|
-
if (GPR_UNLIKELY(cancel_error_
|
2746
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
2790
|
+
if (GPR_UNLIKELY(!GRPC_ERROR_IS_NONE(cancel_error_))) {
|
2791
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2747
2792
|
gpr_log(GPR_INFO, "chand=%p lb_call=%p: failing batch with error: %s",
|
2748
2793
|
chand_, this, grpc_error_std_string(cancel_error_).c_str());
|
2749
2794
|
}
|
@@ -2761,7 +2806,7 @@ void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
|
|
2761
2806
|
// error to the caller when the first batch does get passed down.
|
2762
2807
|
GRPC_ERROR_UNREF(cancel_error_);
|
2763
2808
|
cancel_error_ = GRPC_ERROR_REF(batch->payload->cancel_stream.cancel_error);
|
2764
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
2809
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2765
2810
|
gpr_log(GPR_INFO, "chand=%p lb_call=%p: recording cancel_error=%s",
|
2766
2811
|
chand_, this, grpc_error_std_string(cancel_error_).c_str());
|
2767
2812
|
}
|
@@ -2777,7 +2822,7 @@ void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
|
|
2777
2822
|
// For batches containing a send_initial_metadata op, acquire the
|
2778
2823
|
// channel's data plane mutex to pick a subchannel.
|
2779
2824
|
if (GPR_LIKELY(batch->send_initial_metadata)) {
|
2780
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
2825
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2781
2826
|
gpr_log(GPR_INFO,
|
2782
2827
|
"chand=%p lb_call=%p: grabbing data plane mutex to perform pick",
|
2783
2828
|
chand_, this);
|
@@ -2785,7 +2830,7 @@ void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
|
|
2785
2830
|
PickSubchannel(this, GRPC_ERROR_NONE);
|
2786
2831
|
} else {
|
2787
2832
|
// For all other batches, release the call combiner.
|
2788
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
2833
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2789
2834
|
gpr_log(GPR_INFO,
|
2790
2835
|
"chand=%p lb_call=%p: saved batch, yielding call combiner",
|
2791
2836
|
chand_, this);
|
@@ -2798,6 +2843,12 @@ void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
|
|
2798
2843
|
void ClientChannel::LoadBalancedCall::SendInitialMetadataOnComplete(
|
2799
2844
|
void* arg, grpc_error_handle error) {
|
2800
2845
|
auto* self = static_cast<LoadBalancedCall*>(arg);
|
2846
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2847
|
+
gpr_log(GPR_INFO,
|
2848
|
+
"chand=%p lb_call=%p: got on_complete for send_initial_metadata: "
|
2849
|
+
"error=%s",
|
2850
|
+
self->chand_, self, grpc_error_std_string(error).c_str());
|
2851
|
+
}
|
2801
2852
|
self->call_attempt_tracer_->RecordOnDoneSendInitialMetadata(
|
2802
2853
|
self->peer_string_);
|
2803
2854
|
Closure::Run(DEBUG_LOCATION,
|
@@ -2808,7 +2859,12 @@ void ClientChannel::LoadBalancedCall::SendInitialMetadataOnComplete(
|
|
2808
2859
|
void ClientChannel::LoadBalancedCall::RecvInitialMetadataReady(
|
2809
2860
|
void* arg, grpc_error_handle error) {
|
2810
2861
|
auto* self = static_cast<LoadBalancedCall*>(arg);
|
2811
|
-
if (
|
2862
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2863
|
+
gpr_log(GPR_INFO,
|
2864
|
+
"chand=%p lb_call=%p: got recv_initial_metadata_ready: error=%s",
|
2865
|
+
self->chand_, self, grpc_error_std_string(error).c_str());
|
2866
|
+
}
|
2867
|
+
if (GRPC_ERROR_IS_NONE(error)) {
|
2812
2868
|
// recv_initial_metadata_flags is not populated for clients
|
2813
2869
|
self->call_attempt_tracer_->RecordReceivedInitialMetadata(
|
2814
2870
|
self->recv_initial_metadata_, 0 /* recv_initial_metadata_flags */);
|
@@ -2820,7 +2876,11 @@ void ClientChannel::LoadBalancedCall::RecvInitialMetadataReady(
|
|
2820
2876
|
void ClientChannel::LoadBalancedCall::RecvMessageReady(
|
2821
2877
|
void* arg, grpc_error_handle error) {
|
2822
2878
|
auto* self = static_cast<LoadBalancedCall*>(arg);
|
2823
|
-
if (
|
2879
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2880
|
+
gpr_log(GPR_INFO, "chand=%p lb_call=%p: got recv_message_ready: error=%s",
|
2881
|
+
self->chand_, self, grpc_error_std_string(error).c_str());
|
2882
|
+
}
|
2883
|
+
if (self->recv_message_->has_value()) {
|
2824
2884
|
self->call_attempt_tracer_->RecordReceivedMessage(**self->recv_message_);
|
2825
2885
|
}
|
2826
2886
|
Closure::Run(DEBUG_LOCATION, self->original_recv_message_ready_,
|
@@ -2830,12 +2890,21 @@ void ClientChannel::LoadBalancedCall::RecvMessageReady(
|
|
2830
2890
|
void ClientChannel::LoadBalancedCall::RecvTrailingMetadataReady(
|
2831
2891
|
void* arg, grpc_error_handle error) {
|
2832
2892
|
auto* self = static_cast<LoadBalancedCall*>(arg);
|
2893
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2894
|
+
gpr_log(GPR_INFO,
|
2895
|
+
"chand=%p lb_call=%p: got recv_trailing_metadata_ready: error=%s "
|
2896
|
+
"call_attempt_tracer_=%p lb_subchannel_call_tracker_=%p "
|
2897
|
+
"failure_error_=%s",
|
2898
|
+
self->chand_, self, grpc_error_std_string(error).c_str(),
|
2899
|
+
self->call_attempt_tracer_, self->lb_subchannel_call_tracker_.get(),
|
2900
|
+
grpc_error_std_string(self->failure_error_).c_str());
|
2901
|
+
}
|
2833
2902
|
// Check if we have a tracer or an LB callback to invoke.
|
2834
2903
|
if (self->call_attempt_tracer_ != nullptr ||
|
2835
|
-
self->
|
2904
|
+
self->lb_subchannel_call_tracker_ != nullptr) {
|
2836
2905
|
// Get the call's status.
|
2837
2906
|
absl::Status status;
|
2838
|
-
if (error
|
2907
|
+
if (!GRPC_ERROR_IS_NONE(error)) {
|
2839
2908
|
// Get status from error.
|
2840
2909
|
grpc_status_code code;
|
2841
2910
|
std::string message;
|
@@ -2844,35 +2913,21 @@ void ClientChannel::LoadBalancedCall::RecvTrailingMetadataReady(
|
|
2844
2913
|
status = absl::Status(static_cast<absl::StatusCode>(code), message);
|
2845
2914
|
} else {
|
2846
2915
|
// Get status from headers.
|
2847
|
-
const auto&
|
2848
|
-
GPR_ASSERT(fields.grpc_status != nullptr);
|
2916
|
+
const auto& md = *self->recv_trailing_metadata_;
|
2849
2917
|
grpc_status_code code =
|
2850
|
-
|
2918
|
+
md.get(GrpcStatusMetadata()).value_or(GRPC_STATUS_UNKNOWN);
|
2851
2919
|
if (code != GRPC_STATUS_OK) {
|
2852
2920
|
absl::string_view message;
|
2853
|
-
if (
|
2854
|
-
message =
|
2921
|
+
if (const auto* grpc_message = md.get_pointer(GrpcMessageMetadata())) {
|
2922
|
+
message = grpc_message->as_string_view();
|
2855
2923
|
}
|
2856
2924
|
status = absl::Status(static_cast<absl::StatusCode>(code), message);
|
2857
2925
|
}
|
2858
2926
|
}
|
2859
|
-
|
2860
|
-
if (self->call_attempt_tracer_ != nullptr) {
|
2861
|
-
self->call_attempt_tracer_->RecordReceivedTrailingMetadata(
|
2862
|
-
status, self->recv_trailing_metadata_,
|
2863
|
-
*self->transport_stream_stats_);
|
2864
|
-
}
|
2865
|
-
// If the LB policy requested a callback for trailing metadata, invoke
|
2866
|
-
// the callback.
|
2867
|
-
if (self->lb_recv_trailing_metadata_ready_ != nullptr) {
|
2868
|
-
Metadata trailing_metadata(self, self->recv_trailing_metadata_);
|
2869
|
-
LbCallState lb_call_state(self);
|
2870
|
-
self->lb_recv_trailing_metadata_ready_(status, &trailing_metadata,
|
2871
|
-
&lb_call_state);
|
2872
|
-
}
|
2927
|
+
self->RecordCallCompletion(status);
|
2873
2928
|
}
|
2874
2929
|
// Chain to original callback.
|
2875
|
-
if (self->failure_error_
|
2930
|
+
if (!GRPC_ERROR_IS_NONE(self->failure_error_)) {
|
2876
2931
|
error = self->failure_error_;
|
2877
2932
|
self->failure_error_ = GRPC_ERROR_NONE;
|
2878
2933
|
} else {
|
@@ -2882,16 +2937,35 @@ void ClientChannel::LoadBalancedCall::RecvTrailingMetadataReady(
|
|
2882
2937
|
error);
|
2883
2938
|
}
|
2884
2939
|
|
2940
|
+
void ClientChannel::LoadBalancedCall::RecordCallCompletion(
|
2941
|
+
absl::Status status) {
|
2942
|
+
// If we have a tracer, notify it.
|
2943
|
+
if (call_attempt_tracer_ != nullptr) {
|
2944
|
+
call_attempt_tracer_->RecordReceivedTrailingMetadata(
|
2945
|
+
status, recv_trailing_metadata_, transport_stream_stats_);
|
2946
|
+
}
|
2947
|
+
// If the LB policy requested a callback for trailing metadata, invoke
|
2948
|
+
// the callback.
|
2949
|
+
if (lb_subchannel_call_tracker_ != nullptr) {
|
2950
|
+
Metadata trailing_metadata(recv_trailing_metadata_);
|
2951
|
+
BackendMetricAccessor backend_metric_accessor(this);
|
2952
|
+
LoadBalancingPolicy::SubchannelCallTrackerInterface::FinishArgs args = {
|
2953
|
+
status, &trailing_metadata, &backend_metric_accessor};
|
2954
|
+
lb_subchannel_call_tracker_->Finish(args);
|
2955
|
+
lb_subchannel_call_tracker_.reset();
|
2956
|
+
}
|
2957
|
+
}
|
2958
|
+
|
2885
2959
|
void ClientChannel::LoadBalancedCall::CreateSubchannelCall() {
|
2886
2960
|
SubchannelCall::Args call_args = {
|
2887
|
-
std::move(connected_subchannel_), pollent_, path_, /*start_time=*/0,
|
2961
|
+
std::move(connected_subchannel_), pollent_, path_.Ref(), /*start_time=*/0,
|
2888
2962
|
deadline_, arena_,
|
2889
2963
|
// TODO(roth): When we implement hedging support, we will probably
|
2890
2964
|
// need to use a separate call context for each subchannel call.
|
2891
2965
|
call_context_, call_combiner_};
|
2892
2966
|
grpc_error_handle error = GRPC_ERROR_NONE;
|
2893
2967
|
subchannel_call_ = SubchannelCall::Create(std::move(call_args), &error);
|
2894
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
2968
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2895
2969
|
gpr_log(GPR_INFO,
|
2896
2970
|
"chand=%p lb_call=%p: create subchannel_call=%p: error=%s", chand_,
|
2897
2971
|
this, subchannel_call_.get(), grpc_error_std_string(error).c_str());
|
@@ -2900,7 +2974,7 @@ void ClientChannel::LoadBalancedCall::CreateSubchannelCall() {
|
|
2900
2974
|
subchannel_call_->SetAfterCallStackDestroy(on_call_destruction_complete_);
|
2901
2975
|
on_call_destruction_complete_ = nullptr;
|
2902
2976
|
}
|
2903
|
-
if (GPR_UNLIKELY(error
|
2977
|
+
if (GPR_UNLIKELY(!GRPC_ERROR_IS_NONE(error))) {
|
2904
2978
|
PendingBatchesFail(error, YieldCallCombiner);
|
2905
2979
|
} else {
|
2906
2980
|
PendingBatchesResume();
|
@@ -2930,14 +3004,14 @@ class ClientChannel::LoadBalancedCall::LbQueuedCallCanceller {
|
|
2930
3004
|
auto* chand = lb_call->chand_;
|
2931
3005
|
{
|
2932
3006
|
MutexLock lock(&chand->data_plane_mu_);
|
2933
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
3007
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2934
3008
|
gpr_log(GPR_INFO,
|
2935
3009
|
"chand=%p lb_call=%p: cancelling queued pick: "
|
2936
3010
|
"error=%s self=%p calld->pick_canceller=%p",
|
2937
3011
|
chand, lb_call, grpc_error_std_string(error).c_str(), self,
|
2938
3012
|
lb_call->lb_call_canceller_);
|
2939
3013
|
}
|
2940
|
-
if (lb_call->lb_call_canceller_ == self && error
|
3014
|
+
if (lb_call->lb_call_canceller_ == self && !GRPC_ERROR_IS_NONE(error)) {
|
2941
3015
|
lb_call->call_dispatch_controller_->Commit();
|
2942
3016
|
// Remove pick from list of queued picks.
|
2943
3017
|
lb_call->MaybeRemoveCallFromLbQueuedCallsLocked();
|
@@ -2956,7 +3030,7 @@ class ClientChannel::LoadBalancedCall::LbQueuedCallCanceller {
|
|
2956
3030
|
|
2957
3031
|
void ClientChannel::LoadBalancedCall::MaybeRemoveCallFromLbQueuedCallsLocked() {
|
2958
3032
|
if (!queued_pending_lb_pick_) return;
|
2959
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
3033
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2960
3034
|
gpr_log(GPR_INFO, "chand=%p lb_call=%p: removing from queued picks list",
|
2961
3035
|
chand_, this);
|
2962
3036
|
}
|
@@ -2968,7 +3042,7 @@ void ClientChannel::LoadBalancedCall::MaybeRemoveCallFromLbQueuedCallsLocked() {
|
|
2968
3042
|
|
2969
3043
|
void ClientChannel::LoadBalancedCall::MaybeAddCallToLbQueuedCallsLocked() {
|
2970
3044
|
if (queued_pending_lb_pick_) return;
|
2971
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
3045
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2972
3046
|
gpr_log(GPR_INFO, "chand=%p lb_call=%p: adding to queued picks list",
|
2973
3047
|
chand_, this);
|
2974
3048
|
}
|
@@ -2988,8 +3062,8 @@ void ClientChannel::LoadBalancedCall::AsyncPickDone(grpc_error_handle error) {
|
|
2988
3062
|
void ClientChannel::LoadBalancedCall::PickDone(void* arg,
|
2989
3063
|
grpc_error_handle error) {
|
2990
3064
|
auto* self = static_cast<LoadBalancedCall*>(arg);
|
2991
|
-
if (error
|
2992
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
3065
|
+
if (!GRPC_ERROR_IS_NONE(error)) {
|
3066
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2993
3067
|
gpr_log(GPR_INFO,
|
2994
3068
|
"chand=%p lb_call=%p: failed to pick subchannel: error=%s",
|
2995
3069
|
self->chand_, self, grpc_error_std_string(error).c_str());
|
@@ -3024,14 +3098,12 @@ bool ClientChannel::LoadBalancedCall::PickSubchannelLocked(
|
|
3024
3098
|
pending_batches_[0]->payload->send_initial_metadata;
|
3025
3099
|
grpc_metadata_batch* initial_metadata_batch =
|
3026
3100
|
send_initial_metadata.send_initial_metadata;
|
3027
|
-
const uint32_t send_initial_metadata_flags =
|
3028
|
-
send_initial_metadata.send_initial_metadata_flags;
|
3029
3101
|
// Perform LB pick.
|
3030
3102
|
LoadBalancingPolicy::PickArgs pick_args;
|
3031
|
-
pick_args.path =
|
3103
|
+
pick_args.path = path_.as_string_view();
|
3032
3104
|
LbCallState lb_call_state(this);
|
3033
3105
|
pick_args.call_state = &lb_call_state;
|
3034
|
-
Metadata initial_metadata(
|
3106
|
+
Metadata initial_metadata(initial_metadata_batch);
|
3035
3107
|
pick_args.initial_metadata = &initial_metadata;
|
3036
3108
|
auto result = chand_->picker_->Pick(pick_args);
|
3037
3109
|
return HandlePickResult<bool>(
|
@@ -3039,7 +3111,7 @@ bool ClientChannel::LoadBalancedCall::PickSubchannelLocked(
|
|
3039
3111
|
// CompletePick
|
3040
3112
|
[this](LoadBalancingPolicy::PickResult::Complete* complete_pick)
|
3041
3113
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::data_plane_mu_) {
|
3042
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
3114
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
3043
3115
|
gpr_log(GPR_INFO,
|
3044
3116
|
"chand=%p lb_call=%p: LB pick succeeded: subchannel=%p",
|
3045
3117
|
chand_, this, complete_pick->subchannel.get());
|
@@ -3054,22 +3126,28 @@ bool ClientChannel::LoadBalancedCall::PickSubchannelLocked(
|
|
3054
3126
|
// subchannel has moved out of state READY but the LB policy hasn't
|
3055
3127
|
// yet seen that change and given us a new picker), then just
|
3056
3128
|
// queue the pick. We'll try again as soon as we get a new picker.
|
3057
|
-
// TODO(roth): In this case, we need to invoke the LB
|
3058
|
-
// policy's recv_trailing_metadata_ready callback to tell it
|
3059
|
-
// that the pick has been abandoned.
|
3060
3129
|
if (connected_subchannel_ == nullptr) {
|
3130
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
3131
|
+
gpr_log(GPR_INFO,
|
3132
|
+
"chand=%p lb_call=%p: subchannel returned by LB picker "
|
3133
|
+
"has no connected subchannel; queueing pick",
|
3134
|
+
chand_, this);
|
3135
|
+
}
|
3061
3136
|
MaybeAddCallToLbQueuedCallsLocked();
|
3062
3137
|
return false;
|
3063
3138
|
}
|
3064
|
-
|
3065
|
-
std::move(complete_pick->
|
3139
|
+
lb_subchannel_call_tracker_ =
|
3140
|
+
std::move(complete_pick->subchannel_call_tracker);
|
3141
|
+
if (lb_subchannel_call_tracker_ != nullptr) {
|
3142
|
+
lb_subchannel_call_tracker_->Start();
|
3143
|
+
}
|
3066
3144
|
MaybeRemoveCallFromLbQueuedCallsLocked();
|
3067
3145
|
return true;
|
3068
3146
|
},
|
3069
3147
|
// QueuePick
|
3070
3148
|
[this](LoadBalancingPolicy::PickResult::Queue* /*queue_pick*/)
|
3071
3149
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::data_plane_mu_) {
|
3072
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
3150
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
3073
3151
|
gpr_log(GPR_INFO, "chand=%p lb_call=%p: LB pick queued", chand_,
|
3074
3152
|
this);
|
3075
3153
|
}
|
@@ -3077,17 +3155,17 @@ bool ClientChannel::LoadBalancedCall::PickSubchannelLocked(
|
|
3077
3155
|
return false;
|
3078
3156
|
},
|
3079
3157
|
// FailPick
|
3080
|
-
[this,
|
3158
|
+
[this, initial_metadata_batch,
|
3081
3159
|
&error](LoadBalancingPolicy::PickResult::Fail* fail_pick)
|
3082
3160
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::data_plane_mu_) {
|
3083
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
3161
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
3084
3162
|
gpr_log(GPR_INFO, "chand=%p lb_call=%p: LB pick failed: %s",
|
3085
3163
|
chand_, this, fail_pick->status.ToString().c_str());
|
3086
3164
|
}
|
3087
3165
|
// If wait_for_ready is false, then the error indicates the RPC
|
3088
3166
|
// attempt's final status.
|
3089
|
-
if ((
|
3090
|
-
|
3167
|
+
if (!initial_metadata_batch->GetOrCreatePointer(WaitForReady())
|
3168
|
+
->value) {
|
3091
3169
|
grpc_error_handle lb_error =
|
3092
3170
|
absl_status_to_grpc_error(fail_pick->status);
|
3093
3171
|
*error = GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
|
@@ -3104,7 +3182,7 @@ bool ClientChannel::LoadBalancedCall::PickSubchannelLocked(
|
|
3104
3182
|
// DropPick
|
3105
3183
|
[this, &error](LoadBalancingPolicy::PickResult::Drop* drop_pick)
|
3106
3184
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::data_plane_mu_) {
|
3107
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
3185
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
3108
3186
|
gpr_log(GPR_INFO, "chand=%p lb_call=%p: LB pick dropped: %s",
|
3109
3187
|
chand_, this, drop_pick->status.ToString().c_str());
|
3110
3188
|
}
|