grpc 1.42.0 → 1.46.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +425 -234
- data/include/grpc/event_engine/event_engine.h +37 -13
- data/include/grpc/event_engine/internal/memory_allocator_impl.h +1 -31
- data/include/grpc/event_engine/memory_allocator.h +27 -11
- data/include/grpc/event_engine/memory_request.h +57 -0
- data/include/grpc/grpc.h +40 -14
- data/include/grpc/grpc_posix.h +20 -19
- data/include/grpc/grpc_security.h +312 -195
- data/include/grpc/grpc_security_constants.h +1 -14
- data/include/grpc/impl/codegen/compression_types.h +0 -2
- data/include/grpc/impl/codegen/grpc_types.h +24 -21
- data/include/grpc/impl/codegen/port_platform.h +7 -3
- data/include/grpc/impl/codegen/slice.h +4 -1
- data/include/grpc/slice.h +0 -11
- data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +309 -0
- data/src/core/ext/filters/channel_idle/channel_idle_filter.h +122 -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 +5 -5
- data/src/core/ext/filters/client_channel/backend_metric.cc +9 -10
- data/src/core/ext/filters/client_channel/backend_metric.h +4 -3
- data/src/core/ext/filters/client_channel/backup_poller.cc +12 -8
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +5 -5
- data/src/core/ext/filters/client_channel/client_channel.cc +367 -243
- data/src/core/ext/filters/client_channel/client_channel.h +45 -41
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +6 -13
- data/src/core/ext/filters/client_channel/config_selector.h +4 -4
- data/src/core/ext/filters/client_channel/connector.h +1 -1
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +5 -6
- data/src/core/ext/filters/client_channel/dynamic_filters.h +2 -2
- data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +2 -22
- data/src/core/ext/filters/client_channel/global_subchannel_pool.h +3 -15
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +126 -582
- data/src/core/ext/filters/client_channel/health/health_check_client.h +24 -160
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +22 -27
- data/src/core/ext/filters/client_channel/http_proxy.cc +88 -110
- data/src/core/ext/filters/client_channel/http_proxy.h +17 -0
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +4 -3
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +6 -5
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +4 -7
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +100 -81
- 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.h +1 -1
- 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 +2 -2
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +15 -15
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +4 -4
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +50 -32
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +199 -150
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +123 -76
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +162 -122
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +62 -61
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +16 -11
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +98 -63
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +104 -145
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +147 -70
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +19 -10
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +323 -470
- data/src/core/ext/filters/client_channel/lb_policy.cc +15 -14
- data/src/core/ext/filters/client_channel/lb_policy.h +94 -62
- data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +10 -16
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +287 -313
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +22 -12
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +19 -15
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +31 -50
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +136 -226
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +25 -32
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +92 -255
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +18 -17
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +2 -1
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +84 -68
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +201 -0
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +106 -0
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +40 -39
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +476 -412
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +8 -11
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +13 -7
- data/src/core/ext/filters/client_channel/retry_filter.cc +253 -171
- data/src/core/ext/filters/client_channel/retry_service_config.cc +16 -18
- data/src/core/ext/filters/client_channel/retry_service_config.h +18 -12
- data/src/core/ext/filters/client_channel/retry_throttle.cc +9 -23
- data/src/core/ext/filters/client_channel/retry_throttle.h +11 -5
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +8 -7
- data/src/core/ext/filters/client_channel/subchannel.cc +52 -59
- data/src/core/ext/filters/client_channel/subchannel.h +7 -7
- data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +544 -0
- data/src/core/ext/filters/client_channel/subchannel_stream_client.h +214 -0
- data/src/core/ext/filters/deadline/deadline_filter.cc +15 -14
- data/src/core/ext/filters/deadline/deadline_filter.h +3 -2
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +155 -400
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +24 -1
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +11 -13
- data/src/core/ext/filters/fault_injection/service_config_parser.h +10 -4
- data/src/core/ext/filters/http/client/http_client_filter.cc +81 -544
- data/src/core/ext/filters/http/client/http_client_filter.h +21 -4
- data/src/core/ext/filters/http/client_authority_filter.cc +31 -95
- data/src/core/ext/filters/http/client_authority_filter.h +24 -5
- data/src/core/ext/filters/http/http_filters_plugin.cc +22 -22
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +43 -140
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +15 -27
- data/src/core/ext/filters/http/server/http_server_filter.cc +36 -251
- data/src/core/ext/filters/message_size/message_size_filter.cc +27 -35
- data/src/core/ext/filters/message_size/message_size_filter.h +10 -3
- data/src/core/ext/filters/rbac/rbac_filter.cc +162 -0
- data/src/core/ext/filters/rbac/rbac_filter.h +76 -0
- data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +606 -0
- data/src/core/ext/filters/rbac/rbac_service_config_parser.h +75 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector.cc +61 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector.h +71 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +143 -0
- data/src/core/ext/{transport/chttp2/transport/hpack_utils.h → filters/server_config_selector/server_config_selector_filter.h} +9 -7
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +239 -20
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +0 -2
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +286 -108
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +327 -303
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +9 -4
- data/src/core/ext/transport/chttp2/transport/context_list.cc +2 -3
- data/src/core/ext/transport/chttp2/transport/context_list.h +2 -3
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +10 -10
- data/src/core/ext/transport/chttp2/transport/flow_control.h +5 -5
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +0 -1
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +4 -4
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +5 -0
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +2 -0
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +361 -240
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +87 -145
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +2 -0
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +74 -149
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +0 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +94 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +2 -24
- data/src/core/ext/transport/chttp2/transport/internal.h +16 -43
- data/src/core/ext/transport/chttp2/transport/parsing.cc +11 -9
- data/src/core/ext/transport/chttp2/transport/writing.cc +81 -136
- data/src/core/ext/transport/inproc/inproc_plugin.cc +0 -4
- data/src/core/ext/transport/inproc/inproc_transport.cc +42 -81
- data/src/core/ext/transport/inproc/inproc_transport.h +1 -4
- 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 +482 -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 +553 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +247 -209
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +1249 -684
- 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 +151 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.c +62 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.h +160 -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 +124 -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 +102 -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 +97 -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 +605 -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 +103 -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 +50 -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 +670 -385
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +239 -199
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +1270 -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 +201 -90
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +320 -271
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +1671 -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 +43 -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 +273 -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 +1381 -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 +355 -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 +46 -24
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +213 -176
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +1069 -581
- 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 +526 -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 +39 -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 +42 -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 +151 -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 +769 -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 +737 -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 +58 -30
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +203 -125
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +993 -396
- 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 +29 -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 +84 -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 +76 -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 +94 -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 +47 -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 +195 -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 +350 -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 +358 -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 +35 -20
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +98 -71
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +504 -258
- 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 +561 -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 +105 -48
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +24 -10
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +66 -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 +136 -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 +414 -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 +407 -236
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +127 -103
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +563 -293
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +53 -34
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +272 -141
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +663 -572
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +3643 -1900
- 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 +149 -71
- data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.c +222 -0
- data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.h +1052 -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 +88 -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 +103 -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 +78 -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 +134 -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 +250 -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 +94 -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 +213 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.c +32 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.h +42 -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 +218 -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 +146 -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 +35 -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 +188 -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 +261 -131
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c +64 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +183 -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 +87 -42
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +283 -223
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +1554 -733
- 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 +105 -60
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +555 -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 +157 -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 +623 -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 +160 -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 +22 -14
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +91 -72
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +475 -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 +108 -61
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +73 -56
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +348 -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 +112 -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 +124 -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 +214 -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 +100 -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 +51 -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 +49 -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 +39 -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 +118 -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 +124 -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 +86 -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 +151 -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 +230 -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 +236 -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 +201 -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 +139 -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 +63 -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 +99 -51
- 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 +41 -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 +127 -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 +721 -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 +796 -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 +217 -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 +111 -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 +39 -21
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +373 -282
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +2077 -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 +37 -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 +22 -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 +178 -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 +37 -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 +241 -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 +53 -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 +319 -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 +104 -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 +686 -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 +77 -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 +57 -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 +399 -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 +116 -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 +764 -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 +194 -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 +55 -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 +57 -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 +50 -17
- data/src/core/ext/upb-generated/validate/validate.upb.c +406 -310
- data/src/core/ext/upb-generated/validate/validate.upb.h +2730 -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 +278 -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 +108 -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 +175 -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 +99 -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 +31 -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 +99 -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 +54 -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 +103 -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 +56 -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 +131 -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 +59 -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 +102 -45
- 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 +878 -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 +143 -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 +218 -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 +43 -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 +16 -61
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.h +67 -67
- 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 +53 -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 +22 -52
- 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 +250 -281
- 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 -426
- 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 +87 -133
- 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 +252 -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 +20 -22
- 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 +54 -62
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +19 -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 +17 -21
- 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 +190 -0
- data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.h +70 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +38 -38
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +10 -10
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +828 -914
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +160 -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 +188 -0
- data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.h +85 -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/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 +57 -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 +59 -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 +199 -215
- 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 +171 -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 +19 -33
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +22 -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 +22 -32
- 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 +17 -23
- 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_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 +5 -62
- 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_registry.cc +1 -1
- data/src/core/ext/xds/certificate_provider_store.cc +8 -0
- data/src/core/ext/xds/certificate_provider_store.h +10 -1
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +4 -4
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +2 -2
- data/src/core/ext/xds/upb_utils.h +67 -0
- data/src/core/ext/xds/xds_api.cc +182 -3417
- data/src/core/ext/xds/xds_api.h +60 -613
- data/src/core/ext/xds/xds_bootstrap.cc +222 -123
- data/src/core/ext/xds/xds_bootstrap.h +33 -15
- data/src/core/ext/xds/xds_certificate_provider.cc +2 -0
- data/src/core/ext/xds/xds_certificate_provider.h +10 -2
- data/src/core/ext/xds/xds_channel_stack_modifier.cc +16 -20
- data/src/core/ext/xds/xds_channel_stack_modifier.h +4 -3
- data/src/core/ext/xds/xds_client.cc +805 -1084
- data/src/core/ext/xds/xds_client.h +118 -150
- data/src/core/ext/xds/xds_client_stats.cc +15 -15
- data/src/core/ext/xds/xds_client_stats.h +5 -4
- data/src/core/ext/xds/xds_cluster.cc +453 -0
- data/src/core/ext/xds/xds_cluster.h +108 -0
- data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +142 -0
- data/src/core/ext/xds/xds_cluster_specifier_plugin.h +79 -0
- data/src/core/ext/xds/xds_common_types.cc +388 -0
- data/src/core/ext/xds/xds_common_types.h +95 -0
- data/src/core/ext/xds/xds_endpoint.cc +371 -0
- data/src/core/ext/xds/xds_endpoint.h +135 -0
- data/src/core/ext/xds/xds_http_fault_filter.cc +7 -7
- data/src/core/ext/xds/xds_http_fault_filter.h +3 -3
- data/src/core/ext/xds/xds_http_filters.cc +11 -5
- data/src/core/ext/xds/xds_http_filters.h +4 -4
- data/src/core/ext/xds/xds_http_rbac_filter.cc +563 -0
- data/src/core/ext/xds/xds_http_rbac_filter.h +54 -0
- data/src/core/ext/xds/xds_listener.cc +1039 -0
- data/src/core/ext/xds/xds_listener.h +220 -0
- data/src/core/ext/xds/xds_resource_type.cc +33 -0
- data/src/core/ext/xds/xds_resource_type.h +98 -0
- data/src/core/ext/xds/xds_resource_type_impl.h +87 -0
- data/src/core/ext/xds/xds_route_config.cc +1122 -0
- data/src/core/ext/xds/xds_route_config.h +218 -0
- data/src/core/ext/xds/xds_routing.cc +250 -0
- data/src/core/ext/xds/xds_routing.h +101 -0
- data/src/core/ext/xds/xds_server_config_fetcher.cc +1056 -286
- data/src/core/lib/address_utils/parse_address.cc +20 -0
- data/src/core/lib/address_utils/parse_address.h +5 -0
- data/src/core/lib/address_utils/sockaddr_utils.cc +33 -36
- data/src/core/lib/address_utils/sockaddr_utils.h +1 -16
- data/src/core/lib/avl/avl.h +452 -88
- data/src/core/lib/backoff/backoff.cc +9 -38
- data/src/core/lib/backoff/backoff.h +11 -11
- data/src/core/lib/channel/call_finalization.h +86 -0
- data/src/core/lib/channel/call_tracer.h +4 -1
- data/src/core/lib/channel/channel_args.cc +166 -28
- data/src/core/lib/channel/channel_args.h +214 -10
- data/src/core/lib/channel/channel_args_preconditioning.cc +42 -0
- data/src/core/lib/channel/channel_args_preconditioning.h +61 -0
- data/src/core/lib/channel/channel_stack.cc +10 -3
- data/src/core/lib/channel/channel_stack.h +39 -6
- data/src/core/lib/channel/channel_stack_builder.cc +23 -272
- data/src/core/lib/channel/channel_stack_builder.h +118 -149
- data/src/core/lib/channel/channel_stack_builder_impl.cc +102 -0
- data/src/core/lib/channel/channel_stack_builder_impl.h +48 -0
- data/src/core/lib/channel/channel_trace.cc +3 -6
- data/src/core/lib/channel/channelz.cc +2 -1
- data/src/core/lib/channel/connected_channel.cc +9 -4
- data/src/core/lib/channel/connected_channel.h +2 -1
- data/src/core/lib/channel/context.h +11 -0
- data/src/core/lib/channel/handshaker.cc +1 -1
- data/src/core/lib/channel/handshaker.h +1 -1
- data/src/core/lib/channel/promise_based_filter.cc +1002 -0
- data/src/core/lib/channel/promise_based_filter.h +437 -0
- data/src/core/lib/compression/compression.cc +20 -112
- data/src/core/lib/compression/compression_internal.cc +137 -203
- data/src/core/lib/compression/compression_internal.h +64 -69
- data/src/core/lib/compression/message_compress.cc +11 -11
- data/src/core/lib/compression/message_compress.h +2 -2
- data/src/core/lib/config/core_configuration.cc +11 -3
- data/src/core/lib/config/core_configuration.h +50 -0
- data/src/core/lib/debug/stats_data.cc +2 -6
- data/src/core/lib/debug/stats_data.h +18 -21
- data/src/core/lib/debug/trace.h +2 -2
- data/src/core/lib/event_engine/{endpoint_config.cc → channel_args_endpoint_config.cc} +2 -1
- data/src/core/lib/event_engine/{endpoint_config_internal.h → channel_args_endpoint_config.h} +3 -3
- data/src/core/lib/event_engine/default_event_engine_factory.cc +27 -0
- data/src/core/lib/event_engine/event_engine.cc +21 -19
- data/src/core/lib/event_engine/event_engine_factory.h +36 -0
- data/src/core/lib/event_engine/memory_allocator.cc +66 -0
- data/src/core/lib/event_engine/resolved_address.cc +39 -0
- data/src/core/lib/gpr/sync_posix.cc +1 -0
- data/src/core/lib/gpr/time.cc +2 -1
- data/src/core/lib/gpr/tls.h +7 -0
- data/src/core/lib/gpr/useful.h +18 -0
- data/src/core/lib/gprpp/bitset.h +19 -0
- data/src/core/lib/gprpp/capture.h +76 -0
- data/src/core/lib/gprpp/chunked_vector.h +45 -3
- data/src/core/lib/gprpp/cpp_impl_of.h +49 -0
- data/src/core/lib/gprpp/debug_location.h +2 -0
- data/src/core/lib/gprpp/global_config_env.cc +7 -7
- data/src/core/lib/gprpp/global_config_env.h +2 -2
- data/src/core/lib/gprpp/manual_constructor.h +2 -3
- data/src/core/lib/gprpp/orphanable.h +1 -1
- data/src/core/lib/gprpp/ref_counted.h +3 -1
- data/src/core/lib/gprpp/ref_counted_ptr.h +2 -4
- data/src/core/lib/gprpp/single_set_ptr.h +87 -0
- data/src/core/lib/gprpp/status_helper.cc +48 -40
- data/src/core/lib/gprpp/status_helper.h +6 -19
- data/src/core/lib/gprpp/table.h +24 -1
- data/src/core/lib/gprpp/time.cc +198 -0
- data/src/core/lib/gprpp/time.h +292 -0
- data/src/core/lib/http/format_request.cc +28 -25
- data/src/core/lib/http/format_request.h +7 -6
- data/src/core/lib/http/httpcli.cc +310 -238
- data/src/core/lib/http/httpcli.h +183 -88
- data/src/core/lib/http/httpcli_security_connector.cc +64 -75
- data/src/core/lib/http/httpcli_ssl_credentials.h +37 -0
- data/src/core/lib/http/parser.cc +80 -9
- data/src/core/lib/http/parser.h +15 -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 +17 -7
- data/src/core/lib/iomgr/closure.h +29 -9
- data/src/core/lib/iomgr/combiner.cc +25 -3
- data/src/core/lib/iomgr/endpoint.h +0 -1
- data/src/core/lib/iomgr/endpoint_cfstream.cc +7 -24
- data/src/core/lib/iomgr/endpoint_cfstream.h +4 -4
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +9 -11
- data/src/core/lib/iomgr/endpoint_pair_windows.cc +5 -14
- data/src/core/lib/iomgr/error.cc +13 -10
- data/src/core/lib/iomgr/error.h +0 -2
- data/src/core/lib/iomgr/ev_apple.cc +6 -5
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +8 -7
- data/src/core/lib/iomgr/ev_poll_posix.cc +7 -7
- data/src/core/lib/iomgr/ev_posix.cc +9 -10
- data/src/core/lib/iomgr/ev_posix.h +1 -1
- data/src/core/lib/iomgr/event_engine/endpoint.cc +2 -3
- data/src/core/lib/iomgr/event_engine/iomgr.cc +8 -27
- data/src/core/lib/iomgr/event_engine/pollset.cc +2 -3
- data/src/core/lib/iomgr/event_engine/resolved_address_internal.cc +6 -0
- data/src/core/lib/iomgr/event_engine/resolved_address_internal.h +2 -0
- data/src/core/lib/iomgr/event_engine/resolver.cc +68 -49
- data/src/core/lib/iomgr/event_engine/resolver.h +56 -0
- data/src/core/lib/iomgr/event_engine/tcp.cc +11 -8
- data/src/core/lib/iomgr/event_engine/timer.cc +7 -7
- data/src/core/lib/iomgr/exec_ctx.cc +25 -97
- data/src/core/lib/iomgr/exec_ctx.h +18 -34
- data/src/core/lib/iomgr/executor.cc +22 -16
- data/src/core/lib/iomgr/executor.h +1 -1
- data/src/core/lib/iomgr/fork_posix.cc +2 -1
- 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_posix.cc +2 -2
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +2 -2
- data/src/core/lib/iomgr/iomgr_windows.cc +2 -2
- 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_windows.cc +2 -2
- data/src/core/lib/iomgr/port.h +6 -11
- data/src/core/lib/iomgr/resolve_address.cc +5 -24
- data/src/core/lib/iomgr/resolve_address.h +47 -44
- data/src/core/lib/iomgr/resolve_address_impl.h +59 -0
- data/src/core/lib/iomgr/resolve_address_posix.cc +83 -67
- data/src/core/lib/iomgr/resolve_address_posix.h +47 -0
- data/src/core/lib/iomgr/resolve_address_windows.cc +93 -74
- data/src/core/lib/iomgr/resolve_address_windows.h +47 -0
- data/src/core/lib/iomgr/resolved_address.h +39 -0
- data/src/core/lib/iomgr/sockaddr_utils_posix.cc +62 -0
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +0 -17
- data/src/core/lib/iomgr/tcp_client.cc +3 -5
- data/src/core/lib/iomgr/tcp_client.h +4 -5
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +2 -10
- data/src/core/lib/iomgr/tcp_client_posix.cc +10 -26
- data/src/core/lib/iomgr/tcp_client_posix.h +3 -4
- data/src/core/lib/iomgr/tcp_client_windows.cc +2 -11
- data/src/core/lib/iomgr/tcp_posix.cc +120 -66
- 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 +43 -38
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +19 -18
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +1 -0
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +1 -0
- data/src/core/lib/iomgr/tcp_server_windows.cc +5 -12
- data/src/core/lib/iomgr/tcp_windows.cc +19 -17
- 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 +96 -77
- 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/work_serializer.cc +120 -44
- data/src/core/lib/iomgr/work_serializer.h +16 -4
- data/src/core/lib/json/json_reader.cc +83 -35
- data/src/core/lib/json/json_util.cc +5 -5
- data/src/core/lib/json/json_util.h +5 -5
- data/src/core/lib/matchers/matchers.cc +1 -1
- data/src/core/lib/promise/activity.cc +121 -0
- data/src/core/lib/promise/activity.h +540 -0
- data/src/core/lib/promise/arena_promise.h +188 -0
- data/src/core/lib/promise/call_push_pull.h +144 -0
- data/src/core/lib/promise/context.h +86 -0
- data/src/core/lib/promise/detail/basic_seq.h +496 -0
- data/src/core/lib/promise/detail/promise_factory.h +189 -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/detail/switch.h +1455 -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 +104 -0
- data/src/core/lib/promise/loop.h +134 -0
- data/src/core/lib/promise/map.h +88 -0
- data/src/core/lib/promise/poll.h +66 -0
- data/src/core/lib/promise/promise.h +95 -0
- data/src/core/lib/promise/race.h +84 -0
- data/src/core/lib/promise/seq.h +89 -0
- data/src/core/lib/promise/sleep.cc +74 -0
- data/src/core/lib/promise/sleep.h +66 -0
- data/src/core/lib/promise/try_seq.h +157 -0
- data/src/core/{ext/filters/client_channel → lib/resolver}/resolver.cc +17 -25
- data/src/core/{ext/filters/client_channel → lib/resolver}/resolver.h +43 -44
- data/src/core/{ext/filters/client_channel → lib/resolver}/resolver_factory.h +32 -31
- data/src/core/lib/resolver/resolver_registry.cc +156 -0
- data/src/core/lib/resolver/resolver_registry.h +113 -0
- data/src/core/{ext/filters/client_channel → lib/resolver}/server_address.cc +1 -1
- data/src/core/{ext/filters/client_channel → lib/resolver}/server_address.h +4 -4
- data/src/core/lib/resource_quota/api.cc +83 -0
- data/src/core/lib/resource_quota/api.h +40 -0
- data/src/core/lib/{gprpp → resource_quota}/arena.cc +16 -13
- data/src/core/lib/{gprpp → resource_quota}/arena.h +24 -13
- data/src/core/lib/resource_quota/memory_quota.cc +478 -0
- data/src/core/lib/resource_quota/memory_quota.h +457 -0
- data/src/core/lib/resource_quota/resource_quota.cc +33 -0
- data/src/core/lib/resource_quota/resource_quota.h +66 -0
- data/src/core/lib/resource_quota/thread_quota.cc +43 -0
- data/src/core/lib/resource_quota/thread_quota.h +57 -0
- data/src/core/lib/resource_quota/trace.cc +19 -0
- 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 +7 -0
- data/src/core/lib/security/authorization/evaluate_args.cc +37 -38
- data/src/core/lib/security/authorization/evaluate_args.h +3 -2
- data/src/core/lib/security/authorization/grpc_authorization_engine.cc +60 -0
- data/src/core/lib/security/authorization/grpc_authorization_engine.h +62 -0
- data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +106 -0
- data/src/core/lib/security/authorization/grpc_server_authz_filter.h +50 -0
- data/src/core/lib/security/authorization/matchers.cc +227 -0
- data/src/core/lib/security/authorization/matchers.h +211 -0
- data/src/core/lib/security/authorization/rbac_policy.cc +442 -0
- data/src/core/lib/security/authorization/rbac_policy.h +171 -0
- data/src/core/lib/security/context/security_context.cc +4 -2
- data/src/core/lib/security/context/security_context.h +9 -2
- data/src/core/lib/security/credentials/alts/alts_credentials.cc +6 -5
- data/src/core/lib/security/credentials/alts/alts_credentials.h +10 -0
- data/src/core/lib/security/credentials/call_creds_util.cc +87 -0
- data/src/core/lib/security/credentials/call_creds_util.h +42 -0
- data/src/core/lib/security/credentials/channel_creds_registry.h +97 -0
- data/src/core/lib/security/credentials/channel_creds_registry_init.cc +70 -0
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +24 -83
- data/src/core/lib/security/credentials/composite/composite_credentials.h +23 -10
- data/src/core/lib/security/credentials/credentials.cc +2 -3
- data/src/core/lib/security/credentials/credentials.h +74 -80
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +48 -33
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +1 -0
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +52 -35
- data/src/core/lib/security/credentials/external/external_account_credentials.h +5 -9
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +0 -1
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +33 -14
- data/src/core/lib/security/credentials/external/url_external_account_credentials.h +1 -0
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +23 -27
- data/src/core/lib/security/credentials/fake/fake_credentials.h +22 -21
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +21 -16
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +9 -3
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +21 -28
- data/src/core/lib/security/credentials/iam/iam_credentials.h +15 -9
- data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +25 -26
- data/src/core/lib/security/credentials/insecure/insecure_credentials.h +57 -0
- data/src/core/lib/security/credentials/jwt/json_token.cc +4 -6
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +33 -45
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +16 -12
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +54 -43
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +1 -1
- data/src/core/lib/security/credentials/local/local_credentials.cc +6 -6
- data/src/core/lib/security/credentials/local/local_credentials.h +10 -0
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +157 -174
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +60 -33
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +96 -152
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +56 -27
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +7 -14
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +14 -3
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +11 -12
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +56 -8
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +209 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +145 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +33 -87
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +73 -149
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +30 -16
- data/src/core/lib/security/credentials/tls/tls_credentials.h +6 -0
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +51 -58
- data/src/core/lib/security/credentials/xds/xds_credentials.h +37 -6
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +11 -17
- data/src/core/lib/security/security_connector/alts/alts_security_connector.h +3 -3
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +7 -16
- data/src/core/lib/security/security_connector/fake/fake_security_connector.h +0 -2
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +8 -18
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +11 -16
- data/src/core/lib/security/security_connector/load_system_roots_linux.cc +1 -2
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +14 -19
- data/src/core/lib/security/security_connector/security_connector.cc +3 -15
- data/src/core/lib/security/security_connector/security_connector.h +25 -21
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +10 -13
- data/src/core/lib/security/security_connector/ssl_utils.cc +38 -32
- data/src/core/lib/security/security_connector/ssl_utils.h +14 -18
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +365 -206
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +70 -47
- data/src/core/lib/security/transport/auth_filters.h +38 -5
- data/src/core/lib/security/transport/client_auth_filter.cc +97 -360
- data/src/core/lib/security/transport/secure_endpoint.cc +198 -129
- data/src/core/lib/security/transport/secure_endpoint.h +1 -1
- data/src/core/lib/security/transport/security_handshaker.cc +22 -12
- data/src/core/lib/security/transport/server_auth_filter.cc +41 -35
- data/src/core/lib/service_config/service_config.h +82 -0
- data/src/core/{ext → lib}/service_config/service_config_call_data.h +5 -5
- data/src/core/{ext/service_config/service_config.cc → lib/service_config/service_config_impl.cc} +20 -17
- data/src/core/{ext/service_config/service_config.h → lib/service_config/service_config_impl.h} +16 -18
- data/src/core/{ext → lib}/service_config/service_config_parser.cc +31 -27
- data/src/core/{ext → lib}/service_config/service_config_parser.h +39 -30
- data/src/core/lib/slice/percent_encoding.cc +30 -86
- data/src/core/lib/slice/percent_encoding.h +5 -11
- data/src/core/lib/slice/slice.cc +78 -181
- data/src/core/lib/slice/slice.h +384 -0
- data/src/core/lib/slice/slice_buffer.cc +4 -0
- data/src/core/lib/slice/slice_internal.h +12 -31
- data/src/core/lib/slice/slice_refcount.cc +18 -0
- data/src/core/lib/slice/slice_refcount.h +8 -83
- data/src/core/lib/slice/slice_refcount_base.h +21 -133
- data/src/core/lib/surface/builtins.cc +6 -6
- data/src/core/lib/surface/call.cc +1132 -1221
- data/src/core/lib/surface/call.h +5 -19
- data/src/core/lib/surface/channel.cc +68 -99
- data/src/core/lib/surface/channel.h +12 -23
- data/src/core/lib/surface/channel_init.cc +2 -3
- data/src/core/lib/surface/channel_init.h +3 -7
- data/src/core/lib/surface/completion_queue.cc +12 -11
- data/src/core/lib/surface/init.cc +78 -10
- data/src/core/lib/surface/init.h +0 -2
- data/src/core/lib/surface/lame_client.cc +26 -19
- data/src/core/lib/surface/server.cc +46 -85
- data/src/core/lib/surface/server.h +14 -16
- data/src/core/lib/surface/validate_metadata.cc +2 -2
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/bdp_estimator.cc +10 -11
- data/src/core/lib/transport/bdp_estimator.h +2 -2
- data/src/core/lib/transport/byte_stream.cc +6 -0
- data/src/core/lib/transport/error_utils.cc +5 -3
- data/src/core/lib/transport/error_utils.h +2 -1
- data/src/core/lib/transport/metadata_batch.h +1131 -792
- data/src/core/lib/transport/parsed_metadata.cc +37 -0
- data/src/core/lib/transport/parsed_metadata.h +228 -90
- data/src/core/lib/transport/pid_controller.cc +4 -4
- data/src/core/lib/transport/status_conversion.cc +2 -2
- data/src/core/lib/transport/status_conversion.h +1 -1
- data/src/core/lib/transport/timeout_encoding.cc +204 -67
- data/src/core/lib/transport/timeout_encoding.h +40 -10
- data/src/core/lib/transport/transport.cc +7 -27
- data/src/core/lib/transport/transport.h +103 -4
- data/src/core/lib/transport/transport_impl.h +14 -0
- data/src/core/lib/transport/transport_op_string.cc +5 -47
- data/src/core/lib/uri/uri_parser.cc +237 -63
- data/src/core/lib/uri/uri_parser.h +39 -23
- data/src/core/plugin_registry/grpc_plugin_registry.cc +24 -92
- data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +85 -0
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +28 -23
- data/src/core/tsi/alts/handshaker/alts_shared_resource.cc +9 -1
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +21 -13
- 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/local_transport_security.cc +16 -24
- 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 +2 -4
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +3 -5
- data/src/core/tsi/ssl_transport_security.cc +210 -53
- data/src/core/tsi/ssl_transport_security.h +47 -8
- data/src/core/tsi/transport_security_interface.h +2 -0
- data/src/ruby/ext/grpc/extconf.rb +10 -3
- 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 +39 -51
- data/src/ruby/ext/grpc/rb_server.c +7 -4
- 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/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/third_party/abseil-cpp/absl/algorithm/container.h +101 -91
- data/third_party/abseil-cpp/absl/base/attributes.h +64 -31
- data/third_party/abseil-cpp/absl/base/config.h +67 -37
- data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +1 -26
- data/third_party/abseil-cpp/absl/base/internal/fast_type_id.h +48 -0
- data/third_party/abseil-cpp/absl/base/internal/spinlock.h +3 -1
- data/third_party/abseil-cpp/absl/base/internal/spinlock_wait.h +2 -0
- data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +69 -0
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +4 -4
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +16 -0
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +4 -4
- data/third_party/abseil-cpp/absl/base/options.h +1 -1
- data/third_party/abseil-cpp/absl/container/fixed_array.h +0 -5
- data/third_party/abseil-cpp/absl/container/inlined_vector.h +105 -97
- 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 +18 -102
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +37 -78
- data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +388 -423
- 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 +14 -8
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +251 -120
- data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +11 -1
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +12 -11
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +6 -2
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +12 -5
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_emscripten-inl.inc +110 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +234 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +25 -7
- data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +8 -2
- data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +21 -3
- data/third_party/abseil-cpp/absl/debugging/stacktrace.cc +2 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize.cc +2 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +14 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize_emscripten.inc +72 -0
- data/third_party/abseil-cpp/absl/functional/function_ref.h +4 -1
- data/third_party/abseil-cpp/absl/hash/hash.h +22 -0
- data/third_party/abseil-cpp/absl/hash/internal/hash.cc +15 -16
- data/third_party/abseil-cpp/absl/hash/internal/hash.h +88 -37
- 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/int128.cc +3 -10
- data/third_party/abseil-cpp/absl/numeric/int128.h +146 -73
- 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 +230 -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 +92 -0
- data/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +268 -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 +150 -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 +102 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +221 -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 +239 -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 +167 -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 +101 -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 +111 -0
- data/third_party/abseil-cpp/absl/random/log_uniform_int_distribution.h +257 -0
- data/third_party/abseil-cpp/absl/random/poisson_distribution.h +258 -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 +110 -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 +271 -0
- data/third_party/abseil-cpp/absl/status/internal/status_internal.h +5 -5
- data/third_party/abseil-cpp/absl/status/status.cc +9 -17
- data/third_party/abseil-cpp/absl/status/status.h +19 -15
- data/third_party/abseil-cpp/absl/status/statusor.cc +34 -2
- data/third_party/abseil-cpp/absl/status/statusor.h +31 -21
- 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 +453 -359
- data/third_party/abseil-cpp/absl/strings/cord.h +197 -70
- data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +6 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +140 -63
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +1128 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.h +939 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.cc +185 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.h +265 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.cc +68 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.h +211 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.cc +129 -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_flat.h +7 -7
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +55 -181
- 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 +445 -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 +87 -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 +121 -0
- data/third_party/abseil-cpp/absl/strings/internal/resize_uninitialized.h +48 -2
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +8 -0
- 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 +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +6 -6
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +36 -18
- 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 +24 -16
- data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +35 -35
- data/third_party/abseil-cpp/absl/strings/numbers.cc +1 -1
- data/third_party/abseil-cpp/absl/strings/numbers.h +34 -0
- data/third_party/abseil-cpp/absl/strings/str_cat.cc +4 -4
- data/third_party/abseil-cpp/absl/strings/str_format.h +1 -2
- data/third_party/abseil-cpp/absl/strings/string_view.cc +16 -21
- data/third_party/abseil-cpp/absl/strings/string_view.h +120 -39
- data/third_party/abseil-cpp/absl/strings/substitute.cc +2 -1
- data/third_party/abseil-cpp/absl/strings/substitute.h +99 -74
- 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/waiter.cc +1 -1
- data/third_party/abseil-cpp/absl/synchronization/mutex.h +3 -3
- data/third_party/abseil-cpp/absl/time/civil_time.cc +1 -3
- 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 +67 -36
- 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/span.h +3 -3
- 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/decode.c +732 -378
- data/third_party/upb/upb/decode.h +43 -17
- data/third_party/upb/upb/decode_fast.c +303 -301
- data/third_party/upb/upb/decode_fast.h +18 -18
- data/third_party/upb/upb/decode_internal.h +73 -55
- data/third_party/upb/upb/def.c +2074 -981
- data/third_party/upb/upb/def.h +332 -260
- data/third_party/upb/upb/def.hpp +139 -169
- data/third_party/upb/upb/encode.c +267 -174
- data/third_party/upb/upb/encode.h +15 -17
- data/third_party/upb/upb/json_encode.c +776 -0
- data/third_party/upb/upb/json_encode.h +62 -0
- data/third_party/upb/upb/msg.c +152 -121
- data/third_party/upb/upb/msg.h +39 -33
- data/third_party/upb/upb/msg_internal.h +395 -251
- data/third_party/upb/upb/port_def.inc +8 -0
- data/third_party/upb/upb/port_undef.inc +1 -0
- data/third_party/upb/upb/reflection.c +292 -212
- data/third_party/upb/upb/reflection.h +91 -67
- data/third_party/upb/upb/reflection.hpp +6 -6
- data/third_party/upb/upb/table.c +231 -147
- data/third_party/upb/upb/table_internal.h +129 -95
- data/third_party/upb/upb/text_encode.c +114 -91
- data/third_party/upb/upb/text_encode.h +10 -10
- data/third_party/upb/upb/upb.c +118 -71
- data/third_party/upb/upb/upb.h +157 -151
- data/third_party/upb/upb/upb.hpp +31 -28
- data/third_party/upb/upb/upb_internal.h +21 -11
- 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 +505 -221
- 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/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/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/iomgr/ev_epollex_linux.cc +0 -1654
- data/src/core/lib/iomgr/ev_epollex_linux.h +0 -30
- data/src/core/lib/iomgr/event_engine/iomgr.h +0 -42
- data/src/core/lib/iomgr/iomgr_custom.cc +0 -79
- data/src/core/lib/iomgr/iomgr_custom.h +0 -49
- data/src/core/lib/iomgr/is_epollexclusive_available.cc +0 -119
- data/src/core/lib/iomgr/is_epollexclusive_available.h +0 -36
- data/src/core/lib/iomgr/pollset_custom.cc +0 -105
- data/src/core/lib/iomgr/pollset_custom.h +0 -37
- data/src/core/lib/iomgr/pollset_set_custom.cc +0 -47
- data/src/core/lib/iomgr/pollset_set_custom.h +0 -26
- data/src/core/lib/iomgr/resolve_address_custom.cc +0 -169
- data/src/core/lib/iomgr/resolve_address_custom.h +0 -44
- data/src/core/lib/iomgr/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/timer_custom.cc +0 -96
- data/src/core/lib/iomgr/timer_custom.h +0 -43
- 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_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/metadata.cc +0 -714
- data/src/core/lib/transport/metadata.h +0 -449
- data/src/core/lib/transport/metadata_batch.cc +0 -94
- 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/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
@@ -48,15 +48,13 @@
|
|
48
48
|
#include "src/core/ext/filters/client_channel/lb_policy_registry.h"
|
49
49
|
#include "src/core/ext/filters/client_channel/local_subchannel_pool.h"
|
50
50
|
#include "src/core/ext/filters/client_channel/proxy_mapper_registry.h"
|
51
|
-
#include "src/core/ext/filters/client_channel/resolver_registry.h"
|
52
51
|
#include "src/core/ext/filters/client_channel/resolver_result_parsing.h"
|
53
52
|
#include "src/core/ext/filters/client_channel/retry_filter.h"
|
54
53
|
#include "src/core/ext/filters/client_channel/subchannel.h"
|
55
54
|
#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
55
|
#include "src/core/lib/backoff/backoff.h"
|
59
56
|
#include "src/core/lib/channel/channel_args.h"
|
57
|
+
#include "src/core/lib/channel/channel_stack.h"
|
60
58
|
#include "src/core/lib/channel/connected_channel.h"
|
61
59
|
#include "src/core/lib/channel/status_util.h"
|
62
60
|
#include "src/core/lib/gpr/string.h"
|
@@ -65,15 +63,15 @@
|
|
65
63
|
#include "src/core/lib/iomgr/polling_entity.h"
|
66
64
|
#include "src/core/lib/iomgr/work_serializer.h"
|
67
65
|
#include "src/core/lib/profiling/timers.h"
|
66
|
+
#include "src/core/lib/resolver/resolver_registry.h"
|
67
|
+
#include "src/core/lib/service_config/service_config_call_data.h"
|
68
|
+
#include "src/core/lib/service_config/service_config_impl.h"
|
68
69
|
#include "src/core/lib/slice/slice_internal.h"
|
69
70
|
#include "src/core/lib/slice/slice_string_helpers.h"
|
70
71
|
#include "src/core/lib/surface/channel.h"
|
71
72
|
#include "src/core/lib/transport/connectivity_state.h"
|
72
73
|
#include "src/core/lib/transport/error_utils.h"
|
73
|
-
#include "src/core/lib/transport/metadata.h"
|
74
74
|
#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
75
|
|
78
76
|
//
|
79
77
|
// Client channel filter
|
@@ -88,8 +86,9 @@ using internal::ClientChannelGlobalParsedConfig;
|
|
88
86
|
using internal::ClientChannelMethodParsedConfig;
|
89
87
|
using internal::ClientChannelServiceConfigParser;
|
90
88
|
|
89
|
+
TraceFlag grpc_client_channel_trace(false, "client_channel");
|
91
90
|
TraceFlag grpc_client_channel_call_trace(false, "client_channel_call");
|
92
|
-
TraceFlag
|
91
|
+
TraceFlag grpc_client_channel_lb_call_trace(false, "client_channel_lb_call");
|
93
92
|
|
94
93
|
//
|
95
94
|
// ClientChannel::CallData definition
|
@@ -178,8 +177,6 @@ class ClientChannel::CallData {
|
|
178
177
|
|
179
178
|
static void RecvTrailingMetadataReadyForConfigSelectorCommitCallback(
|
180
179
|
void* arg, grpc_error_handle error);
|
181
|
-
void InjectRecvTrailingMetadataReadyForConfigSelectorCommitCallback(
|
182
|
-
grpc_transport_stream_op_batch* batch);
|
183
180
|
|
184
181
|
void CreateDynamicCall(grpc_call_element* elem);
|
185
182
|
|
@@ -193,7 +190,7 @@ class ClientChannel::CallData {
|
|
193
190
|
|
194
191
|
grpc_slice path_; // Request path.
|
195
192
|
gpr_cycle_counter call_start_time_;
|
196
|
-
|
193
|
+
Timestamp deadline_;
|
197
194
|
Arena* arena_;
|
198
195
|
grpc_call_stack* owning_call_;
|
199
196
|
CallCombiner* call_combiner_;
|
@@ -236,6 +233,7 @@ class ClientChannel::CallData {
|
|
236
233
|
|
237
234
|
const grpc_channel_filter ClientChannel::kFilterVtable = {
|
238
235
|
ClientChannel::CallData::StartTransportStreamOpBatch,
|
236
|
+
nullptr,
|
239
237
|
ClientChannel::StartTransportOp,
|
240
238
|
sizeof(ClientChannel::CallData),
|
241
239
|
ClientChannel::CallData::Init,
|
@@ -356,7 +354,7 @@ class DynamicTerminationFilter::CallData {
|
|
356
354
|
args, pollent, nullptr,
|
357
355
|
service_config_call_data->call_dispatch_controller(),
|
358
356
|
/*is_transparent_retry=*/false);
|
359
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
357
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
360
358
|
gpr_log(GPR_INFO,
|
361
359
|
"chand=%p dynamic_termination_calld=%p: create lb_call=%p", chand,
|
362
360
|
client_channel, calld->lb_call_.get());
|
@@ -375,7 +373,7 @@ class DynamicTerminationFilter::CallData {
|
|
375
373
|
~CallData() { grpc_slice_unref_internal(path_); }
|
376
374
|
|
377
375
|
grpc_slice path_; // Request path.
|
378
|
-
|
376
|
+
Timestamp deadline_;
|
379
377
|
Arena* arena_;
|
380
378
|
grpc_call_stack* owning_call_;
|
381
379
|
CallCombiner* call_combiner_;
|
@@ -386,6 +384,7 @@ class DynamicTerminationFilter::CallData {
|
|
386
384
|
|
387
385
|
const grpc_channel_filter DynamicTerminationFilter::kFilterVtable = {
|
388
386
|
DynamicTerminationFilter::CallData::StartTransportStreamOpBatch,
|
387
|
+
nullptr,
|
389
388
|
DynamicTerminationFilter::StartTransportOp,
|
390
389
|
sizeof(DynamicTerminationFilter::CallData),
|
391
390
|
DynamicTerminationFilter::CallData::Init,
|
@@ -411,22 +410,17 @@ class ClientChannel::ResolverResultHandler : public Resolver::ResultHandler {
|
|
411
410
|
}
|
412
411
|
|
413
412
|
~ResolverResultHandler() override {
|
414
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
413
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
415
414
|
gpr_log(GPR_INFO, "chand=%p: resolver shutdown complete", chand_);
|
416
415
|
}
|
417
416
|
GRPC_CHANNEL_STACK_UNREF(chand_->owning_stack_, "ResolverResultHandler");
|
418
417
|
}
|
419
418
|
|
420
|
-
void
|
421
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
|
419
|
+
void ReportResult(Resolver::Result result) override
|
420
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
|
422
421
|
chand_->OnResolverResultChangedLocked(std::move(result));
|
423
422
|
}
|
424
423
|
|
425
|
-
void ReturnError(grpc_error_handle error) override
|
426
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
|
427
|
-
chand_->OnResolverErrorLocked(error);
|
428
|
-
}
|
429
|
-
|
430
424
|
private:
|
431
425
|
ClientChannel* chand_;
|
432
426
|
};
|
@@ -447,14 +441,13 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
|
|
447
441
|
public:
|
448
442
|
SubchannelWrapper(ClientChannel* chand, RefCountedPtr<Subchannel> subchannel,
|
449
443
|
absl::optional<std::string> health_check_service_name)
|
450
|
-
: SubchannelInterface(
|
451
|
-
|
452
|
-
|
453
|
-
: nullptr),
|
444
|
+
: SubchannelInterface(GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)
|
445
|
+
? "SubchannelWrapper"
|
446
|
+
: nullptr),
|
454
447
|
chand_(chand),
|
455
448
|
subchannel_(std::move(subchannel)),
|
456
449
|
health_check_service_name_(std::move(health_check_service_name)) {
|
457
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
450
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
458
451
|
gpr_log(GPR_INFO,
|
459
452
|
"chand=%p: creating subchannel wrapper %p for subchannel %p",
|
460
453
|
chand, this, subchannel_.get());
|
@@ -476,7 +469,7 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
|
|
476
469
|
}
|
477
470
|
|
478
471
|
~SubchannelWrapper() override {
|
479
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
472
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
480
473
|
gpr_log(GPR_INFO,
|
481
474
|
"chand=%p: destroying subchannel wrapper %p for subchannel %p",
|
482
475
|
chand_, this, subchannel_.get());
|
@@ -505,7 +498,7 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
|
|
505
498
|
void WatchConnectivityState(
|
506
499
|
grpc_connectivity_state initial_state,
|
507
500
|
std::unique_ptr<ConnectivityStateWatcherInterface> watcher) override
|
508
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
|
501
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
|
509
502
|
auto& watcher_wrapper = watcher_map_[watcher.get()];
|
510
503
|
GPR_ASSERT(watcher_wrapper == nullptr);
|
511
504
|
watcher_wrapper = new WatcherWrapper(std::move(watcher),
|
@@ -518,7 +511,7 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
|
|
518
511
|
}
|
519
512
|
|
520
513
|
void CancelConnectivityStateWatch(ConnectivityStateWatcherInterface* watcher)
|
521
|
-
override ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
|
514
|
+
override ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
|
522
515
|
auto it = watcher_map_.find(watcher);
|
523
516
|
GPR_ASSERT(it != watcher_map_.end());
|
524
517
|
subchannel_->CancelConnectivityStateWatch(health_check_service_name_,
|
@@ -571,15 +564,15 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
|
|
571
564
|
~WatcherWrapper() override {
|
572
565
|
auto* parent = parent_.release(); // ref owned by lambda
|
573
566
|
parent->chand_->work_serializer_->Run(
|
574
|
-
[parent]()
|
575
|
-
|
576
|
-
|
577
|
-
|
567
|
+
[parent]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(
|
568
|
+
*parent_->chand_->work_serializer_) {
|
569
|
+
parent->Unref(DEBUG_LOCATION, "WatcherWrapper");
|
570
|
+
},
|
578
571
|
DEBUG_LOCATION);
|
579
572
|
}
|
580
573
|
|
581
574
|
void OnConnectivityStateChange() override {
|
582
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
575
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
583
576
|
gpr_log(GPR_INFO,
|
584
577
|
"chand=%p: connectivity change for subchannel wrapper %p "
|
585
578
|
"subchannel %p; hopping into work_serializer",
|
@@ -587,11 +580,11 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
|
|
587
580
|
}
|
588
581
|
Ref().release(); // ref owned by lambda
|
589
582
|
parent_->chand_->work_serializer_->Run(
|
590
|
-
[this]()
|
591
|
-
|
592
|
-
|
593
|
-
|
594
|
-
|
583
|
+
[this]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(
|
584
|
+
*parent_->chand_->work_serializer_) {
|
585
|
+
ApplyUpdateInControlPlaneWorkSerializer();
|
586
|
+
Unref();
|
587
|
+
},
|
595
588
|
DEBUG_LOCATION);
|
596
589
|
}
|
597
590
|
|
@@ -613,8 +606,8 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
|
|
613
606
|
|
614
607
|
private:
|
615
608
|
void ApplyUpdateInControlPlaneWorkSerializer()
|
616
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(parent_->chand_->work_serializer_) {
|
617
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
609
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(*parent_->chand_->work_serializer_) {
|
610
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
618
611
|
gpr_log(GPR_INFO,
|
619
612
|
"chand=%p: processing connectivity change in work serializer "
|
620
613
|
"for subchannel wrapper %p subchannel %p "
|
@@ -631,7 +624,7 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
|
|
631
624
|
&new_keepalive_time)) {
|
632
625
|
if (new_keepalive_time > parent_->chand_->keepalive_time_) {
|
633
626
|
parent_->chand_->keepalive_time_ = new_keepalive_time;
|
634
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
627
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
635
628
|
gpr_log(GPR_INFO, "chand=%p: throttling keepalive time to %d",
|
636
629
|
parent_->chand_, parent_->chand_->keepalive_time_);
|
637
630
|
}
|
@@ -673,7 +666,7 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
|
|
673
666
|
// CancelConnectivityStateWatch() with its watcher, we know the
|
674
667
|
// corresponding WrapperWatcher to cancel on the underlying subchannel.
|
675
668
|
std::map<ConnectivityStateWatcherInterface*, WatcherWrapper*> watcher_map_
|
676
|
-
ABSL_GUARDED_BY(
|
669
|
+
ABSL_GUARDED_BY(*chand_->work_serializer_);
|
677
670
|
};
|
678
671
|
|
679
672
|
//
|
@@ -703,7 +696,7 @@ ClientChannel::ExternalConnectivityWatcher::ExternalConnectivityWatcher(
|
|
703
696
|
}
|
704
697
|
// Pass the ref from creating the object to Start().
|
705
698
|
chand_->work_serializer_->Run(
|
706
|
-
[this]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
|
699
|
+
[this]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
|
707
700
|
// The ref is passed to AddWatcherLocked().
|
708
701
|
AddWatcherLocked();
|
709
702
|
},
|
@@ -753,7 +746,7 @@ void ClientChannel::ExternalConnectivityWatcher::Notify(
|
|
753
746
|
// automatically remove all watchers in that case.
|
754
747
|
if (state != GRPC_CHANNEL_SHUTDOWN) {
|
755
748
|
chand_->work_serializer_->Run(
|
756
|
-
[this]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
|
749
|
+
[this]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
|
757
750
|
RemoveWatcherLocked();
|
758
751
|
},
|
759
752
|
DEBUG_LOCATION);
|
@@ -769,7 +762,7 @@ void ClientChannel::ExternalConnectivityWatcher::Cancel() {
|
|
769
762
|
ExecCtx::Run(DEBUG_LOCATION, on_complete_, GRPC_ERROR_CANCELLED);
|
770
763
|
// Hop back into the work_serializer to clean up.
|
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();
|
774
767
|
},
|
775
768
|
DEBUG_LOCATION);
|
@@ -800,7 +793,7 @@ class ClientChannel::ConnectivityWatcherAdder {
|
|
800
793
|
watcher_(std::move(watcher)) {
|
801
794
|
GRPC_CHANNEL_STACK_REF(chand_->owning_stack_, "ConnectivityWatcherAdder");
|
802
795
|
chand_->work_serializer_->Run(
|
803
|
-
[this]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
|
796
|
+
[this]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
|
804
797
|
AddWatcherLocked();
|
805
798
|
},
|
806
799
|
DEBUG_LOCATION);
|
@@ -808,7 +801,7 @@ class ClientChannel::ConnectivityWatcherAdder {
|
|
808
801
|
|
809
802
|
private:
|
810
803
|
void AddWatcherLocked()
|
811
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
|
804
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
|
812
805
|
chand_->state_tracker_.AddWatcher(initial_state_, std::move(watcher_));
|
813
806
|
GRPC_CHANNEL_STACK_UNREF(chand_->owning_stack_, "ConnectivityWatcherAdder");
|
814
807
|
delete this;
|
@@ -830,7 +823,7 @@ class ClientChannel::ConnectivityWatcherRemover {
|
|
830
823
|
: chand_(chand), watcher_(watcher) {
|
831
824
|
GRPC_CHANNEL_STACK_REF(chand_->owning_stack_, "ConnectivityWatcherRemover");
|
832
825
|
chand_->work_serializer_->Run(
|
833
|
-
[this]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
|
826
|
+
[this]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
|
834
827
|
RemoveWatcherLocked();
|
835
828
|
},
|
836
829
|
DEBUG_LOCATION);
|
@@ -838,7 +831,7 @@ class ClientChannel::ConnectivityWatcherRemover {
|
|
838
831
|
|
839
832
|
private:
|
840
833
|
void RemoveWatcherLocked()
|
841
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
|
834
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
|
842
835
|
chand_->state_tracker_.RemoveWatcher(watcher_);
|
843
836
|
GRPC_CHANNEL_STACK_UNREF(chand_->owning_stack_,
|
844
837
|
"ConnectivityWatcherRemover");
|
@@ -867,7 +860,7 @@ class ClientChannel::ClientChannelControlHelper
|
|
867
860
|
|
868
861
|
RefCountedPtr<SubchannelInterface> CreateSubchannel(
|
869
862
|
ServerAddress address, const grpc_channel_args& args) override
|
870
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
|
863
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
|
871
864
|
if (chand_->resolver_ == nullptr) return nullptr; // Shutting down.
|
872
865
|
// Determine health check service name.
|
873
866
|
absl::optional<std::string> health_check_service_name;
|
@@ -938,9 +931,9 @@ class ClientChannel::ClientChannelControlHelper
|
|
938
931
|
void UpdateState(
|
939
932
|
grpc_connectivity_state state, const absl::Status& status,
|
940
933
|
std::unique_ptr<LoadBalancingPolicy::SubchannelPicker> picker) override
|
941
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
|
934
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
|
942
935
|
if (chand_->resolver_ == nullptr) return; // Shutting down.
|
943
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
936
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
944
937
|
const char* extra = chand_->disconnect_error_ == GRPC_ERROR_NONE
|
945
938
|
? ""
|
946
939
|
: " (ignoring -- channel shutting down)";
|
@@ -956,9 +949,9 @@ class ClientChannel::ClientChannelControlHelper
|
|
956
949
|
}
|
957
950
|
|
958
951
|
void RequestReresolution() override
|
959
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
|
952
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
|
960
953
|
if (chand_->resolver_ == nullptr) return; // Shutting down.
|
961
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
954
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
962
955
|
gpr_log(GPR_INFO, "chand=%p: started name re-resolving", chand_);
|
963
956
|
}
|
964
957
|
chand_->resolver_->RequestReresolutionLocked();
|
@@ -969,7 +962,7 @@ class ClientChannel::ClientChannelControlHelper
|
|
969
962
|
}
|
970
963
|
|
971
964
|
void AddTraceEvent(TraceSeverity severity, absl::string_view message) override
|
972
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
|
965
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
|
973
966
|
if (chand_->resolver_ == nullptr) return; // Shutting down.
|
974
967
|
if (chand_->channelz_node_ != nullptr) {
|
975
968
|
chand_->channelz_node_->AddTraceEvent(
|
@@ -1042,10 +1035,12 @@ ClientChannel::ClientChannel(grpc_channel_element_args* args,
|
|
1042
1035
|
ClientChannelFactory::GetFromChannelArgs(args->channel_args)),
|
1043
1036
|
channelz_node_(GetChannelzNode(args->channel_args)),
|
1044
1037
|
interested_parties_(grpc_pollset_set_create()),
|
1038
|
+
service_config_parser_index_(
|
1039
|
+
internal::ClientChannelServiceConfigParser::ParserIndex()),
|
1045
1040
|
work_serializer_(std::make_shared<WorkSerializer>()),
|
1046
1041
|
state_tracker_("client_channel", GRPC_CHANNEL_IDLE),
|
1047
1042
|
subchannel_pool_(GetSubchannelPool(args->channel_args)) {
|
1048
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1043
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1049
1044
|
gpr_log(GPR_INFO, "chand=%p: creating client_channel for channel stack %p",
|
1050
1045
|
this, owning_stack_);
|
1051
1046
|
}
|
@@ -1064,7 +1059,7 @@ ClientChannel::ClientChannel(grpc_channel_element_args* args,
|
|
1064
1059
|
if (service_config_json == nullptr) service_config_json = "{}";
|
1065
1060
|
*error = GRPC_ERROR_NONE;
|
1066
1061
|
default_service_config_ =
|
1067
|
-
|
1062
|
+
ServiceConfigImpl::Create(args->channel_args, service_config_json, error);
|
1068
1063
|
if (*error != GRPC_ERROR_NONE) {
|
1069
1064
|
default_service_config_.reset();
|
1070
1065
|
return;
|
@@ -1089,9 +1084,10 @@ ClientChannel::ClientChannel(grpc_channel_element_args* args,
|
|
1089
1084
|
}
|
1090
1085
|
// Make sure the URI to resolve is valid, so that we know that
|
1091
1086
|
// resolver creation will succeed later.
|
1092
|
-
if (!
|
1087
|
+
if (!CoreConfiguration::Get().resolver_registry().IsValidTarget(
|
1088
|
+
uri_to_resolve_)) {
|
1093
1089
|
*error = GRPC_ERROR_CREATE_FROM_CPP_STRING(
|
1094
|
-
absl::StrCat("the target uri is not valid: ", uri_to_resolve_
|
1090
|
+
absl::StrCat("the target uri is not valid: ", uri_to_resolve_));
|
1095
1091
|
return;
|
1096
1092
|
}
|
1097
1093
|
// Strip out service config channel arg, so that it doesn't affect
|
@@ -1108,7 +1104,9 @@ ClientChannel::ClientChannel(grpc_channel_element_args* args,
|
|
1108
1104
|
const char* default_authority =
|
1109
1105
|
grpc_channel_args_find_string(channel_args_, GRPC_ARG_DEFAULT_AUTHORITY);
|
1110
1106
|
if (default_authority == nullptr) {
|
1111
|
-
default_authority_ =
|
1107
|
+
default_authority_ =
|
1108
|
+
CoreConfiguration::Get().resolver_registry().GetDefaultAuthority(
|
1109
|
+
server_uri);
|
1112
1110
|
} else {
|
1113
1111
|
default_authority_ = default_authority;
|
1114
1112
|
}
|
@@ -1117,12 +1115,11 @@ ClientChannel::ClientChannel(grpc_channel_element_args* args,
|
|
1117
1115
|
}
|
1118
1116
|
|
1119
1117
|
ClientChannel::~ClientChannel() {
|
1120
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1118
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1121
1119
|
gpr_log(GPR_INFO, "chand=%p: destroying channel", this);
|
1122
1120
|
}
|
1123
1121
|
DestroyResolverAndLbPolicyLocked();
|
1124
1122
|
grpc_channel_args_destroy(channel_args_);
|
1125
|
-
GRPC_ERROR_UNREF(resolver_transient_failure_error_);
|
1126
1123
|
// Stop backup polling.
|
1127
1124
|
grpc_client_channel_stop_backup_polling(interested_parties_);
|
1128
1125
|
grpc_pollset_set_destroy(interested_parties_);
|
@@ -1157,6 +1154,24 @@ RefCountedPtr<LoadBalancingPolicy::Config> ChooseLbPolicy(
|
|
1157
1154
|
} else {
|
1158
1155
|
policy_name = grpc_channel_args_find_string(resolver_result.args,
|
1159
1156
|
GRPC_ARG_LB_POLICY_NAME);
|
1157
|
+
bool requires_config = false;
|
1158
|
+
if (policy_name != nullptr &&
|
1159
|
+
(!LoadBalancingPolicyRegistry::LoadBalancingPolicyExists(
|
1160
|
+
policy_name, &requires_config) ||
|
1161
|
+
requires_config)) {
|
1162
|
+
if (requires_config) {
|
1163
|
+
gpr_log(GPR_ERROR,
|
1164
|
+
"LB policy: %s passed through channel_args must not "
|
1165
|
+
"require a config. Using pick_first instead.",
|
1166
|
+
policy_name);
|
1167
|
+
} else {
|
1168
|
+
gpr_log(GPR_ERROR,
|
1169
|
+
"LB policy: %s passed through channel_args does not exist. "
|
1170
|
+
"Using pick_first instead.",
|
1171
|
+
policy_name);
|
1172
|
+
}
|
1173
|
+
policy_name = "pick_first";
|
1174
|
+
}
|
1160
1175
|
}
|
1161
1176
|
// Use pick_first if nothing was specified and we didn't select grpclb
|
1162
1177
|
// above.
|
@@ -1174,12 +1189,9 @@ RefCountedPtr<LoadBalancingPolicy::Config> ChooseLbPolicy(
|
|
1174
1189
|
// already verified that the policy does not require a config.
|
1175
1190
|
// - One of the hard-coded values here, all of which are known to not
|
1176
1191
|
// require a config.
|
1177
|
-
// - A channel arg, in which case the
|
1178
|
-
//
|
1179
|
-
//
|
1180
|
-
// the last case, this is probably fine for now.
|
1181
|
-
// TODO(roth): If the last case becomes a problem, add better error
|
1182
|
-
// handling here.
|
1192
|
+
// - A channel arg, in which case we check that the specified policy exists
|
1193
|
+
// and accepts an empty config. If not, we revert to using pick_first
|
1194
|
+
// lb_policy
|
1183
1195
|
GPR_ASSERT(lb_policy_config != nullptr);
|
1184
1196
|
GPR_ASSERT(parse_error == GRPC_ERROR_NONE);
|
1185
1197
|
return lb_policy_config;
|
@@ -1190,7 +1202,7 @@ RefCountedPtr<LoadBalancingPolicy::Config> ChooseLbPolicy(
|
|
1190
1202
|
void ClientChannel::OnResolverResultChangedLocked(Resolver::Result result) {
|
1191
1203
|
// Handle race conditions.
|
1192
1204
|
if (resolver_ == nullptr) return;
|
1193
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1205
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1194
1206
|
gpr_log(GPR_INFO, "chand=%p: got resolver result", this);
|
1195
1207
|
}
|
1196
1208
|
// We only want to trace the address resolution in the follow cases:
|
@@ -1203,31 +1215,34 @@ void ClientChannel::OnResolverResultChangedLocked(Resolver::Result result) {
|
|
1203
1215
|
//
|
1204
1216
|
// We track a list of strings to eventually be concatenated and traced.
|
1205
1217
|
absl::InlinedVector<const char*, 3> trace_strings;
|
1206
|
-
|
1218
|
+
const bool resolution_contains_addresses =
|
1219
|
+
result.addresses.ok() && !result.addresses->empty();
|
1220
|
+
if (!resolution_contains_addresses &&
|
1221
|
+
previous_resolution_contained_addresses_) {
|
1207
1222
|
trace_strings.push_back("Address list became empty");
|
1208
|
-
} else if (
|
1223
|
+
} else if (resolution_contains_addresses &&
|
1209
1224
|
!previous_resolution_contained_addresses_) {
|
1210
1225
|
trace_strings.push_back("Address list became non-empty");
|
1211
1226
|
}
|
1212
|
-
previous_resolution_contained_addresses_ =
|
1227
|
+
previous_resolution_contained_addresses_ = resolution_contains_addresses;
|
1213
1228
|
std::string service_config_error_string_storage;
|
1214
|
-
if (result.
|
1229
|
+
if (!result.service_config.ok()) {
|
1215
1230
|
service_config_error_string_storage =
|
1216
|
-
|
1231
|
+
result.service_config.status().ToString();
|
1217
1232
|
trace_strings.push_back(service_config_error_string_storage.c_str());
|
1218
1233
|
}
|
1219
1234
|
// Choose the service config.
|
1220
1235
|
RefCountedPtr<ServiceConfig> service_config;
|
1221
1236
|
RefCountedPtr<ConfigSelector> config_selector;
|
1222
|
-
if (result.
|
1223
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1237
|
+
if (!result.service_config.ok()) {
|
1238
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1224
1239
|
gpr_log(GPR_INFO, "chand=%p: resolver returned service config error: %s",
|
1225
|
-
this,
|
1240
|
+
this, result.service_config.status().ToString().c_str());
|
1226
1241
|
}
|
1227
1242
|
// If the service config was invalid, then fallback to the
|
1228
1243
|
// previously returned service config.
|
1229
1244
|
if (saved_service_config_ != nullptr) {
|
1230
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1245
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1231
1246
|
gpr_log(GPR_INFO,
|
1232
1247
|
"chand=%p: resolver returned invalid service config. "
|
1233
1248
|
"Continuing to use previous service config.",
|
@@ -1236,15 +1251,15 @@ void ClientChannel::OnResolverResultChangedLocked(Resolver::Result result) {
|
|
1236
1251
|
service_config = saved_service_config_;
|
1237
1252
|
config_selector = saved_config_selector_;
|
1238
1253
|
} else {
|
1239
|
-
// We received
|
1254
|
+
// We received a service config error and we don't have a
|
1240
1255
|
// previous service config to fall back to. Put the channel into
|
1241
1256
|
// TRANSIENT_FAILURE.
|
1242
|
-
OnResolverErrorLocked(
|
1257
|
+
OnResolverErrorLocked(result.service_config.status());
|
1243
1258
|
trace_strings.push_back("no valid service config");
|
1244
1259
|
}
|
1245
|
-
} else if (result.service_config == nullptr) {
|
1260
|
+
} else if (*result.service_config == nullptr) {
|
1246
1261
|
// Resolver did not return any service config.
|
1247
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1262
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1248
1263
|
gpr_log(GPR_INFO,
|
1249
1264
|
"chand=%p: resolver returned no service config. Using default "
|
1250
1265
|
"service config for channel.",
|
@@ -1253,15 +1268,18 @@ void ClientChannel::OnResolverResultChangedLocked(Resolver::Result result) {
|
|
1253
1268
|
service_config = default_service_config_;
|
1254
1269
|
} else {
|
1255
1270
|
// Use ServiceConfig and ConfigSelector returned by resolver.
|
1256
|
-
service_config = result.service_config;
|
1271
|
+
service_config = std::move(*result.service_config);
|
1257
1272
|
config_selector = ConfigSelector::GetFromChannelArgs(*result.args);
|
1258
1273
|
}
|
1274
|
+
// Note: The only case in which service_config is null here is if the resolver
|
1275
|
+
// returned a service config error and we don't have a previous service
|
1276
|
+
// config to fall back to.
|
1259
1277
|
if (service_config != nullptr) {
|
1260
1278
|
// Extract global config for client channel.
|
1261
1279
|
const internal::ClientChannelGlobalParsedConfig* parsed_service_config =
|
1262
1280
|
static_cast<const internal::ClientChannelGlobalParsedConfig*>(
|
1263
1281
|
service_config->GetGlobalParsedConfig(
|
1264
|
-
|
1282
|
+
service_config_parser_index_));
|
1265
1283
|
// Choose LB policy config.
|
1266
1284
|
RefCountedPtr<LoadBalancingPolicy::Config> lb_policy_config =
|
1267
1285
|
ChooseLbPolicy(result, parsed_service_config);
|
@@ -1278,7 +1296,7 @@ void ClientChannel::OnResolverResultChangedLocked(Resolver::Result result) {
|
|
1278
1296
|
UpdateServiceConfigInControlPlaneLocked(std::move(service_config),
|
1279
1297
|
std::move(config_selector),
|
1280
1298
|
lb_policy_config->name());
|
1281
|
-
} else if (GRPC_TRACE_FLAG_ENABLED(
|
1299
|
+
} else if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1282
1300
|
gpr_log(GPR_INFO, "chand=%p: service config not changed", this);
|
1283
1301
|
}
|
1284
1302
|
// Create or update LB policy, as needed.
|
@@ -1307,28 +1325,21 @@ void ClientChannel::OnResolverResultChangedLocked(Resolver::Result result) {
|
|
1307
1325
|
}
|
1308
1326
|
}
|
1309
1327
|
|
1310
|
-
void ClientChannel::OnResolverErrorLocked(
|
1311
|
-
if (resolver_ == nullptr)
|
1312
|
-
|
1313
|
-
return;
|
1314
|
-
}
|
1315
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
|
1328
|
+
void ClientChannel::OnResolverErrorLocked(absl::Status status) {
|
1329
|
+
if (resolver_ == nullptr) return;
|
1330
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1316
1331
|
gpr_log(GPR_INFO, "chand=%p: resolver transient failure: %s", this,
|
1317
|
-
|
1332
|
+
status.ToString().c_str());
|
1318
1333
|
}
|
1319
1334
|
// If we already have an LB policy from a previous resolution
|
1320
1335
|
// result, then we continue to let it set the connectivity state.
|
1321
1336
|
// Otherwise, we go into TRANSIENT_FAILURE.
|
1322
1337
|
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);
|
1338
|
+
grpc_error_handle error = absl_status_to_grpc_error(status);
|
1327
1339
|
{
|
1328
1340
|
MutexLock lock(&resolution_mu_);
|
1329
1341
|
// Update resolver transient failure.
|
1330
|
-
|
1331
|
-
resolver_transient_failure_error_ = state_error;
|
1342
|
+
resolver_transient_failure_error_ = status;
|
1332
1343
|
// Process calls that were queued waiting for the resolver result.
|
1333
1344
|
for (ResolverQueuedCall* call = resolver_queued_calls_; call != nullptr;
|
1334
1345
|
call = call->next) {
|
@@ -1340,12 +1351,12 @@ void ClientChannel::OnResolverErrorLocked(grpc_error_handle error) {
|
|
1340
1351
|
}
|
1341
1352
|
}
|
1342
1353
|
}
|
1354
|
+
GRPC_ERROR_UNREF(error);
|
1343
1355
|
// Update connectivity state.
|
1344
1356
|
UpdateStateAndPickerLocked(
|
1345
1357
|
GRPC_CHANNEL_TRANSIENT_FAILURE, status, "resolver failure",
|
1346
1358
|
absl::make_unique<LoadBalancingPolicy::TransientFailurePicker>(status));
|
1347
1359
|
}
|
1348
|
-
GRPC_ERROR_UNREF(error);
|
1349
1360
|
}
|
1350
1361
|
|
1351
1362
|
void ClientChannel::CreateOrUpdateLbPolicyLocked(
|
@@ -1356,6 +1367,7 @@ void ClientChannel::CreateOrUpdateLbPolicyLocked(
|
|
1356
1367
|
LoadBalancingPolicy::UpdateArgs update_args;
|
1357
1368
|
update_args.addresses = std::move(result.addresses);
|
1358
1369
|
update_args.config = std::move(lb_policy_config);
|
1370
|
+
update_args.resolution_note = std::move(result.resolution_note);
|
1359
1371
|
// Add health check service name to channel args.
|
1360
1372
|
absl::InlinedVector<grpc_arg, 1> args_to_add;
|
1361
1373
|
if (health_check_service_name.has_value()) {
|
@@ -1374,7 +1386,7 @@ void ClientChannel::CreateOrUpdateLbPolicyLocked(
|
|
1374
1386
|
lb_policy_ = CreateLbPolicyLocked(*update_args.args);
|
1375
1387
|
}
|
1376
1388
|
// Update the policy.
|
1377
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1389
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1378
1390
|
gpr_log(GPR_INFO, "chand=%p: Updating child policy %p", this,
|
1379
1391
|
lb_policy_.get());
|
1380
1392
|
}
|
@@ -1391,8 +1403,8 @@ OrphanablePtr<LoadBalancingPolicy> ClientChannel::CreateLbPolicyLocked(
|
|
1391
1403
|
lb_policy_args.args = &args;
|
1392
1404
|
OrphanablePtr<LoadBalancingPolicy> lb_policy =
|
1393
1405
|
MakeOrphanable<ChildPolicyHandler>(std::move(lb_policy_args),
|
1394
|
-
&
|
1395
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1406
|
+
&grpc_client_channel_trace);
|
1407
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1396
1408
|
gpr_log(GPR_INFO, "chand=%p: created new LB policy %p", this,
|
1397
1409
|
lb_policy.get());
|
1398
1410
|
}
|
@@ -1427,26 +1439,24 @@ void ClientChannel::RemoveResolverQueuedCall(ResolverQueuedCall* to_remove,
|
|
1427
1439
|
|
1428
1440
|
void ClientChannel::UpdateServiceConfigInControlPlaneLocked(
|
1429
1441
|
RefCountedPtr<ServiceConfig> service_config,
|
1430
|
-
RefCountedPtr<ConfigSelector> config_selector,
|
1431
|
-
|
1432
|
-
|
1433
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
|
1442
|
+
RefCountedPtr<ConfigSelector> config_selector, std::string lb_policy_name) {
|
1443
|
+
std::string service_config_json(service_config->json_string());
|
1444
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1434
1445
|
gpr_log(GPR_INFO,
|
1435
1446
|
"chand=%p: resolver returned updated service config: \"%s\"", this,
|
1436
|
-
service_config_json.
|
1447
|
+
service_config_json.c_str());
|
1437
1448
|
}
|
1438
1449
|
// Save service config.
|
1439
1450
|
saved_service_config_ = std::move(service_config);
|
1440
1451
|
// Swap out the data used by GetChannelInfo().
|
1441
|
-
UniquePtr<char> lb_policy_name_owned(gpr_strdup(lb_policy_name));
|
1442
1452
|
{
|
1443
1453
|
MutexLock lock(&info_mu_);
|
1444
|
-
info_lb_policy_name_ = std::move(
|
1454
|
+
info_lb_policy_name_ = std::move(lb_policy_name);
|
1445
1455
|
info_service_config_json_ = std::move(service_config_json);
|
1446
1456
|
}
|
1447
1457
|
// Save config selector.
|
1448
1458
|
saved_config_selector_ = std::move(config_selector);
|
1449
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1459
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1450
1460
|
gpr_log(GPR_INFO, "chand=%p: using ConfigSelector %p", this,
|
1451
1461
|
saved_config_selector_.get());
|
1452
1462
|
}
|
@@ -1457,7 +1467,7 @@ void ClientChannel::UpdateServiceConfigInDataPlaneLocked() {
|
|
1457
1467
|
RefCountedPtr<ServiceConfig> service_config = saved_service_config_;
|
1458
1468
|
// Grab ref to config selector. Use default if resolver didn't supply one.
|
1459
1469
|
RefCountedPtr<ConfigSelector> config_selector = saved_config_selector_;
|
1460
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1470
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1461
1471
|
gpr_log(GPR_INFO, "chand=%p: switching to ConfigSelector %p", this,
|
1462
1472
|
saved_config_selector_.get());
|
1463
1473
|
}
|
@@ -1496,8 +1506,7 @@ void ClientChannel::UpdateServiceConfigInDataPlaneLocked() {
|
|
1496
1506
|
// after releasing the lock to keep the critical section small.
|
1497
1507
|
{
|
1498
1508
|
MutexLock lock(&resolution_mu_);
|
1499
|
-
|
1500
|
-
resolver_transient_failure_error_ = GRPC_ERROR_NONE;
|
1509
|
+
resolver_transient_failure_error_ = absl::OkStatus();
|
1501
1510
|
// Update service config.
|
1502
1511
|
received_service_config_data_ = true;
|
1503
1512
|
// Old values will be unreffed after lock is released.
|
@@ -1529,10 +1538,10 @@ void ClientChannel::UpdateServiceConfigInDataPlaneLocked() {
|
|
1529
1538
|
}
|
1530
1539
|
|
1531
1540
|
void ClientChannel::CreateResolverLocked() {
|
1532
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1541
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1533
1542
|
gpr_log(GPR_INFO, "chand=%p: starting name resolution", this);
|
1534
1543
|
}
|
1535
|
-
resolver_ =
|
1544
|
+
resolver_ = CoreConfiguration::Get().resolver_registry().CreateResolver(
|
1536
1545
|
uri_to_resolve_.c_str(), channel_args_, interested_parties_,
|
1537
1546
|
work_serializer_, absl::make_unique<ResolverResultHandler>(this));
|
1538
1547
|
// Since the validity of the args was checked when the channel was created,
|
@@ -1542,20 +1551,20 @@ void ClientChannel::CreateResolverLocked() {
|
|
1542
1551
|
GRPC_CHANNEL_CONNECTING, absl::Status(), "started resolving",
|
1543
1552
|
absl::make_unique<LoadBalancingPolicy::QueuePicker>(nullptr));
|
1544
1553
|
resolver_->StartLocked();
|
1545
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1554
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1546
1555
|
gpr_log(GPR_INFO, "chand=%p: created resolver=%p", this, resolver_.get());
|
1547
1556
|
}
|
1548
1557
|
}
|
1549
1558
|
|
1550
1559
|
void ClientChannel::DestroyResolverAndLbPolicyLocked() {
|
1551
1560
|
if (resolver_ != nullptr) {
|
1552
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1561
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1553
1562
|
gpr_log(GPR_INFO, "chand=%p: shutting down resolver=%p", this,
|
1554
1563
|
resolver_.get());
|
1555
1564
|
}
|
1556
1565
|
resolver_.reset();
|
1557
1566
|
if (lb_policy_ != nullptr) {
|
1558
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1567
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1559
1568
|
gpr_log(GPR_INFO, "chand=%p: shutting down lb_policy=%p", this,
|
1560
1569
|
lb_policy_.get());
|
1561
1570
|
}
|
@@ -1671,7 +1680,7 @@ grpc_error_handle ClientChannel::DoPingLocked(grpc_transport_op* op) {
|
|
1671
1680
|
&result,
|
1672
1681
|
// Complete pick.
|
1673
1682
|
[op](LoadBalancingPolicy::PickResult::Complete* complete_pick)
|
1674
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(
|
1683
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(*ClientChannel::work_serializer_) {
|
1675
1684
|
SubchannelWrapper* subchannel = static_cast<SubchannelWrapper*>(
|
1676
1685
|
complete_pick->subchannel.get());
|
1677
1686
|
RefCountedPtr<ConnectedSubchannel> connected_subchannel =
|
@@ -1723,7 +1732,7 @@ void ClientChannel::StartTransportOpLocked(grpc_transport_op* op) {
|
|
1723
1732
|
}
|
1724
1733
|
// Disconnect or enter IDLE.
|
1725
1734
|
if (op->disconnect_with_error != GRPC_ERROR_NONE) {
|
1726
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1735
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1727
1736
|
gpr_log(GPR_INFO, "chand=%p: disconnect_with_error: %s", this,
|
1728
1737
|
grpc_error_std_string(op->disconnect_with_error).c_str());
|
1729
1738
|
}
|
@@ -1763,7 +1772,7 @@ void ClientChannel::StartTransportOp(grpc_channel_element* elem,
|
|
1763
1772
|
// Pop into control plane work_serializer for remaining ops.
|
1764
1773
|
GRPC_CHANNEL_STACK_REF(chand->owning_stack_, "start_transport_op");
|
1765
1774
|
chand->work_serializer_->Run(
|
1766
|
-
[chand, op]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand->work_serializer_) {
|
1775
|
+
[chand, op]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand->work_serializer_) {
|
1767
1776
|
chand->StartTransportOpLocked(op);
|
1768
1777
|
},
|
1769
1778
|
DEBUG_LOCATION);
|
@@ -1774,11 +1783,11 @@ void ClientChannel::GetChannelInfo(grpc_channel_element* elem,
|
|
1774
1783
|
ClientChannel* chand = static_cast<ClientChannel*>(elem->channel_data);
|
1775
1784
|
MutexLock lock(&chand->info_mu_);
|
1776
1785
|
if (info->lb_policy_name != nullptr) {
|
1777
|
-
*info->lb_policy_name = gpr_strdup(chand->info_lb_policy_name_.
|
1786
|
+
*info->lb_policy_name = gpr_strdup(chand->info_lb_policy_name_.c_str());
|
1778
1787
|
}
|
1779
1788
|
if (info->service_config_json != nullptr) {
|
1780
1789
|
*info->service_config_json =
|
1781
|
-
gpr_strdup(chand->info_service_config_json_.
|
1790
|
+
gpr_strdup(chand->info_service_config_json_.c_str());
|
1782
1791
|
}
|
1783
1792
|
}
|
1784
1793
|
|
@@ -1825,7 +1834,7 @@ grpc_connectivity_state ClientChannel::CheckConnectivityState(
|
|
1825
1834
|
if (out == GRPC_CHANNEL_IDLE && try_to_connect) {
|
1826
1835
|
GRPC_CHANNEL_STACK_REF(owning_stack_, "TryToConnect");
|
1827
1836
|
work_serializer_->Run([this]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(
|
1828
|
-
work_serializer_) { TryToConnectLocked(); },
|
1837
|
+
*work_serializer_) { TryToConnectLocked(); },
|
1829
1838
|
DEBUG_LOCATION);
|
1830
1839
|
}
|
1831
1840
|
return out;
|
@@ -1852,7 +1861,7 @@ ClientChannel::CallData::CallData(grpc_call_element* elem,
|
|
1852
1861
|
: deadline_state_(elem, args,
|
1853
1862
|
GPR_LIKELY(chand.deadline_checking_enabled_)
|
1854
1863
|
? args.deadline
|
1855
|
-
:
|
1864
|
+
: Timestamp::InfFuture()),
|
1856
1865
|
path_(grpc_slice_ref_internal(args.path)),
|
1857
1866
|
call_start_time_(args.start_time),
|
1858
1867
|
deadline_(args.deadline),
|
@@ -1901,6 +1910,11 @@ void ClientChannel::CallData::StartTransportStreamOpBatch(
|
|
1901
1910
|
GPR_TIMER_SCOPE("cc_start_transport_stream_op_batch", 0);
|
1902
1911
|
CallData* calld = static_cast<CallData*>(elem->call_data);
|
1903
1912
|
ClientChannel* chand = static_cast<ClientChannel*>(elem->channel_data);
|
1913
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace) &&
|
1914
|
+
!GRPC_TRACE_FLAG_ENABLED(grpc_trace_channel)) {
|
1915
|
+
gpr_log(GPR_INFO, "chand=%p calld=%p: batch started from above: %s", chand,
|
1916
|
+
calld, grpc_transport_stream_op_batch_string(batch).c_str());
|
1917
|
+
}
|
1904
1918
|
if (GPR_LIKELY(chand->deadline_checking_enabled_)) {
|
1905
1919
|
grpc_deadline_state_client_start_transport_stream_op_batch(elem, batch);
|
1906
1920
|
}
|
@@ -1908,8 +1922,13 @@ void ClientChannel::CallData::StartTransportStreamOpBatch(
|
|
1908
1922
|
// in case we wind up failing the call before we get down to the retry
|
1909
1923
|
// or LB call layer.
|
1910
1924
|
if (batch->recv_trailing_metadata) {
|
1911
|
-
calld->
|
1912
|
-
batch
|
1925
|
+
calld->original_recv_trailing_metadata_ready_ =
|
1926
|
+
batch->payload->recv_trailing_metadata.recv_trailing_metadata_ready;
|
1927
|
+
GRPC_CLOSURE_INIT(&calld->recv_trailing_metadata_ready_,
|
1928
|
+
RecvTrailingMetadataReadyForConfigSelectorCommitCallback,
|
1929
|
+
elem, nullptr);
|
1930
|
+
batch->payload->recv_trailing_metadata.recv_trailing_metadata_ready =
|
1931
|
+
&calld->recv_trailing_metadata_ready_;
|
1913
1932
|
}
|
1914
1933
|
// If we already have a dynamic call, pass the batch down to it.
|
1915
1934
|
// Note that once we have done so, we do not need to acquire the channel's
|
@@ -2134,7 +2153,7 @@ class ClientChannel::CallData::ResolverQueuedCallCanceller {
|
|
2134
2153
|
auto* calld = static_cast<CallData*>(self->elem_->call_data);
|
2135
2154
|
{
|
2136
2155
|
MutexLock lock(&chand->resolution_mu_);
|
2137
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
2156
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
2138
2157
|
gpr_log(GPR_INFO,
|
2139
2158
|
"chand=%p calld=%p: cancelling resolver queued pick: "
|
2140
2159
|
"error=%s self=%p calld->resolver_pick_canceller=%p",
|
@@ -2161,7 +2180,7 @@ void ClientChannel::CallData::MaybeRemoveCallFromResolverQueuedCallsLocked(
|
|
2161
2180
|
grpc_call_element* elem) {
|
2162
2181
|
if (!queued_pending_resolver_result_) return;
|
2163
2182
|
auto* chand = static_cast<ClientChannel*>(elem->channel_data);
|
2164
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
2183
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
2165
2184
|
gpr_log(GPR_INFO,
|
2166
2185
|
"chand=%p calld=%p: removing from resolver queued picks list",
|
2167
2186
|
chand, this);
|
@@ -2176,7 +2195,7 @@ void ClientChannel::CallData::MaybeAddCallToResolverQueuedCallsLocked(
|
|
2176
2195
|
grpc_call_element* elem) {
|
2177
2196
|
if (queued_pending_resolver_result_) return;
|
2178
2197
|
auto* chand = static_cast<ClientChannel*>(elem->channel_data);
|
2179
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
2198
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
2180
2199
|
gpr_log(GPR_INFO, "chand=%p calld=%p: adding to resolver queued picks list",
|
2181
2200
|
chand, this);
|
2182
2201
|
}
|
@@ -2190,7 +2209,7 @@ void ClientChannel::CallData::MaybeAddCallToResolverQueuedCallsLocked(
|
|
2190
2209
|
grpc_error_handle ClientChannel::CallData::ApplyServiceConfigToCallLocked(
|
2191
2210
|
grpc_call_element* elem, grpc_metadata_batch* initial_metadata) {
|
2192
2211
|
ClientChannel* chand = static_cast<ClientChannel*>(elem->channel_data);
|
2193
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
2212
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
2194
2213
|
gpr_log(GPR_INFO, "chand=%p calld=%p: applying service config to call",
|
2195
2214
|
chand, this);
|
2196
2215
|
}
|
@@ -2213,13 +2232,14 @@ grpc_error_handle ClientChannel::CallData::ApplyServiceConfigToCallLocked(
|
|
2213
2232
|
// Apply our own method params to the call.
|
2214
2233
|
auto* method_params = static_cast<ClientChannelMethodParsedConfig*>(
|
2215
2234
|
service_config_call_data->GetMethodParsedConfig(
|
2216
|
-
|
2235
|
+
chand->service_config_parser_index_));
|
2217
2236
|
if (method_params != nullptr) {
|
2218
2237
|
// If the deadline from the service config is shorter than the one
|
2219
2238
|
// from the client API, reset the deadline timer.
|
2220
|
-
if (chand->deadline_checking_enabled_ &&
|
2221
|
-
|
2222
|
-
|
2239
|
+
if (chand->deadline_checking_enabled_ &&
|
2240
|
+
method_params->timeout() != Duration::Zero()) {
|
2241
|
+
const Timestamp per_method_deadline =
|
2242
|
+
Timestamp::FromCycleCounterRoundUp(call_start_time_) +
|
2223
2243
|
method_params->timeout();
|
2224
2244
|
if (per_method_deadline < deadline_) {
|
2225
2245
|
deadline_ = per_method_deadline;
|
@@ -2250,30 +2270,27 @@ grpc_error_handle ClientChannel::CallData::ApplyServiceConfigToCallLocked(
|
|
2250
2270
|
void ClientChannel::CallData::
|
2251
2271
|
RecvTrailingMetadataReadyForConfigSelectorCommitCallback(
|
2252
2272
|
void* arg, grpc_error_handle error) {
|
2253
|
-
auto*
|
2273
|
+
auto* elem = static_cast<grpc_call_element*>(arg);
|
2274
|
+
auto* chand = static_cast<ClientChannel*>(elem->channel_data);
|
2275
|
+
auto* calld = static_cast<CallData*>(elem->call_data);
|
2254
2276
|
auto* service_config_call_data =
|
2255
2277
|
static_cast<ClientChannelServiceConfigCallData*>(
|
2256
|
-
|
2278
|
+
calld->call_context_[GRPC_CONTEXT_SERVICE_CONFIG_CALL_DATA].value);
|
2279
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
2280
|
+
gpr_log(GPR_INFO,
|
2281
|
+
"chand=%p calld=%p: got recv_trailing_metadata_ready: error=%s "
|
2282
|
+
"service_config_call_data=%p",
|
2283
|
+
chand, calld, grpc_error_std_string(error).c_str(),
|
2284
|
+
service_config_call_data);
|
2285
|
+
}
|
2257
2286
|
if (service_config_call_data != nullptr) {
|
2258
2287
|
service_config_call_data->call_dispatch_controller()->Commit();
|
2259
2288
|
}
|
2260
2289
|
// Chain to original callback.
|
2261
|
-
Closure::Run(DEBUG_LOCATION,
|
2290
|
+
Closure::Run(DEBUG_LOCATION, calld->original_recv_trailing_metadata_ready_,
|
2262
2291
|
GRPC_ERROR_REF(error));
|
2263
2292
|
}
|
2264
2293
|
|
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
2294
|
void ClientChannel::CallData::AsyncResolutionDone(grpc_call_element* elem,
|
2278
2295
|
grpc_error_handle error) {
|
2279
2296
|
// TODO(roth): Does this callback need to hold a ref to the call stack?
|
@@ -2287,7 +2304,7 @@ void ClientChannel::CallData::ResolutionDone(void* arg,
|
|
2287
2304
|
ClientChannel* chand = static_cast<ClientChannel*>(elem->channel_data);
|
2288
2305
|
CallData* calld = static_cast<CallData*>(elem->call_data);
|
2289
2306
|
if (error != GRPC_ERROR_NONE) {
|
2290
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
2307
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
2291
2308
|
gpr_log(GPR_INFO,
|
2292
2309
|
"chand=%p calld=%p: error applying config to call: error=%s",
|
2293
2310
|
chand, calld, grpc_error_std_string(error).c_str());
|
@@ -2319,6 +2336,9 @@ bool ClientChannel::CallData::CheckResolutionLocked(grpc_call_element* elem,
|
|
2319
2336
|
ClientChannel* chand = static_cast<ClientChannel*>(elem->channel_data);
|
2320
2337
|
// If we're still in IDLE, we need to start resolving.
|
2321
2338
|
if (GPR_UNLIKELY(chand->CheckConnectivityState(false) == GRPC_CHANNEL_IDLE)) {
|
2339
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
2340
|
+
gpr_log(GPR_INFO, "chand=%p calld=%p: triggering exit idle", chand, this);
|
2341
|
+
}
|
2322
2342
|
// Bounce into the control plane work serializer to start resolving,
|
2323
2343
|
// in case we are still in IDLE state. Since we are holding on to the
|
2324
2344
|
// resolution mutex here, we offload it on the ExecCtx so that we don't
|
@@ -2331,7 +2351,7 @@ bool ClientChannel::CallData::CheckResolutionLocked(grpc_call_element* elem,
|
|
2331
2351
|
auto* chand = static_cast<ClientChannel*>(arg);
|
2332
2352
|
chand->work_serializer_->Run(
|
2333
2353
|
[chand]()
|
2334
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand->work_serializer_) {
|
2354
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand->work_serializer_) {
|
2335
2355
|
chand->CheckConnectivityState(/*try_to_connect=*/true);
|
2336
2356
|
GRPC_CHANNEL_STACK_UNREF(chand->owning_stack_,
|
2337
2357
|
"CheckResolutionLocked");
|
@@ -2353,17 +2373,24 @@ bool ClientChannel::CallData::CheckResolutionLocked(grpc_call_element* elem,
|
|
2353
2373
|
if (GPR_UNLIKELY(!chand->received_service_config_data_)) {
|
2354
2374
|
// If the resolver returned transient failure before returning the
|
2355
2375
|
// first service config, fail any non-wait_for_ready calls.
|
2356
|
-
|
2357
|
-
if (resolver_error
|
2358
|
-
|
2359
|
-
|
2376
|
+
absl::Status resolver_error = chand->resolver_transient_failure_error_;
|
2377
|
+
if (!resolver_error.ok() && (send_initial_metadata_flags &
|
2378
|
+
GRPC_INITIAL_METADATA_WAIT_FOR_READY) == 0) {
|
2379
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
2380
|
+
gpr_log(GPR_INFO, "chand=%p calld=%p: resolution failed, failing call",
|
2381
|
+
chand, this);
|
2382
|
+
}
|
2360
2383
|
MaybeRemoveCallFromResolverQueuedCallsLocked(elem);
|
2361
|
-
*error =
|
2384
|
+
*error = absl_status_to_grpc_error(resolver_error);
|
2362
2385
|
return true;
|
2363
2386
|
}
|
2364
2387
|
// Either the resolver has not yet returned a result, or it has
|
2365
2388
|
// returned transient failure but the call is wait_for_ready. In
|
2366
2389
|
// either case, queue the call.
|
2390
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
2391
|
+
gpr_log(GPR_INFO, "chand=%p calld=%p: queuing to wait for resolution",
|
2392
|
+
chand, this);
|
2393
|
+
}
|
2367
2394
|
MaybeAddCallToResolverQueuedCallsLocked(elem);
|
2368
2395
|
return false;
|
2369
2396
|
}
|
@@ -2388,7 +2415,7 @@ void ClientChannel::CallData::CreateDynamicCall(grpc_call_element* elem) {
|
|
2388
2415
|
call_combiner_};
|
2389
2416
|
grpc_error_handle error = GRPC_ERROR_NONE;
|
2390
2417
|
DynamicFilters* channel_stack = args.channel_stack.get();
|
2391
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
2418
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
2392
2419
|
gpr_log(
|
2393
2420
|
GPR_INFO,
|
2394
2421
|
"chand=%p calld=%p: creating dynamic call stack on channel_stack=%p",
|
@@ -2396,7 +2423,7 @@ void ClientChannel::CallData::CreateDynamicCall(grpc_call_element* elem) {
|
|
2396
2423
|
}
|
2397
2424
|
dynamic_call_ = channel_stack->CreateCall(std::move(args), &error);
|
2398
2425
|
if (error != GRPC_ERROR_NONE) {
|
2399
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
2426
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
2400
2427
|
gpr_log(GPR_INFO,
|
2401
2428
|
"chand=%p calld=%p: failed to create dynamic call: error=%s",
|
2402
2429
|
chand, this, grpc_error_std_string(error).c_str());
|
@@ -2414,39 +2441,71 @@ void ClientChannel::CallData::CreateDynamicCall(grpc_call_element* elem) {
|
|
2414
2441
|
class ClientChannel::LoadBalancedCall::Metadata
|
2415
2442
|
: public LoadBalancingPolicy::MetadataInterface {
|
2416
2443
|
public:
|
2417
|
-
Metadata(
|
2418
|
-
: lb_call_(lb_call), batch_(batch) {}
|
2444
|
+
explicit Metadata(grpc_metadata_batch* batch) : batch_(batch) {}
|
2419
2445
|
|
2420
2446
|
void Add(absl::string_view key, absl::string_view value) override {
|
2421
|
-
|
2422
|
-
|
2423
|
-
|
2424
|
-
|
2425
|
-
|
2426
|
-
|
2447
|
+
if (batch_ == nullptr) return;
|
2448
|
+
// Gross, egregious hack to support legacy grpclb behavior.
|
2449
|
+
// TODO(ctiller): Use a promise context for this once that plumbing is done.
|
2450
|
+
if (key == GrpcLbClientStatsMetadata::key()) {
|
2451
|
+
batch_->Set(
|
2452
|
+
GrpcLbClientStatsMetadata(),
|
2453
|
+
const_cast<GrpcLbClientStats*>(
|
2454
|
+
reinterpret_cast<const GrpcLbClientStats*>(value.data())));
|
2455
|
+
return;
|
2456
|
+
}
|
2457
|
+
batch_->Append(key, Slice::FromStaticString(value),
|
2458
|
+
[key](absl::string_view error, const Slice& value) {
|
2459
|
+
gpr_log(GPR_ERROR, "%s",
|
2460
|
+
absl::StrCat(error, " key:", key,
|
2461
|
+
" value:", value.as_string_view())
|
2462
|
+
.c_str());
|
2463
|
+
});
|
2427
2464
|
}
|
2428
2465
|
|
2429
2466
|
std::vector<std::pair<std::string, std::string>> TestOnlyCopyToVector()
|
2430
2467
|
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;
|
2468
|
+
if (batch_ == nullptr) return {};
|
2469
|
+
Encoder encoder;
|
2470
|
+
batch_->Encode(&encoder);
|
2471
|
+
return encoder.Take();
|
2441
2472
|
}
|
2442
2473
|
|
2443
2474
|
absl::optional<absl::string_view> Lookup(absl::string_view key,
|
2444
2475
|
std::string* buffer) const override {
|
2445
|
-
|
2476
|
+
if (batch_ == nullptr) return absl::nullopt;
|
2477
|
+
return batch_->GetStringValue(key, buffer);
|
2446
2478
|
}
|
2447
2479
|
|
2448
2480
|
private:
|
2449
|
-
|
2481
|
+
class Encoder {
|
2482
|
+
public:
|
2483
|
+
void Encode(const Slice& key, const Slice& value) {
|
2484
|
+
out_.emplace_back(std::string(key.as_string_view()),
|
2485
|
+
std::string(value.as_string_view()));
|
2486
|
+
}
|
2487
|
+
|
2488
|
+
template <class Which>
|
2489
|
+
void Encode(Which, const typename Which::ValueType& value) {
|
2490
|
+
auto value_slice = Which::Encode(value);
|
2491
|
+
out_.emplace_back(std::string(Which::key()),
|
2492
|
+
std::string(value_slice.as_string_view()));
|
2493
|
+
}
|
2494
|
+
|
2495
|
+
void Encode(GrpcTimeoutMetadata,
|
2496
|
+
const typename GrpcTimeoutMetadata::ValueType&) {}
|
2497
|
+
void Encode(HttpPathMetadata, const Slice&) {}
|
2498
|
+
void Encode(HttpMethodMetadata,
|
2499
|
+
const typename HttpMethodMetadata::ValueType&) {}
|
2500
|
+
|
2501
|
+
std::vector<std::pair<std::string, std::string>> Take() {
|
2502
|
+
return std::move(out_);
|
2503
|
+
}
|
2504
|
+
|
2505
|
+
private:
|
2506
|
+
std::vector<std::pair<std::string, std::string>> out_;
|
2507
|
+
};
|
2508
|
+
|
2450
2509
|
grpc_metadata_batch* batch_;
|
2451
2510
|
};
|
2452
2511
|
|
@@ -2461,19 +2520,6 @@ class ClientChannel::LoadBalancedCall::LbCallState
|
|
2461
2520
|
|
2462
2521
|
void* Alloc(size_t size) override { return lb_call_->arena_->Alloc(size); }
|
2463
2522
|
|
2464
|
-
const LoadBalancingPolicy::BackendMetricData* GetBackendMetricData()
|
2465
|
-
override {
|
2466
|
-
if (lb_call_->backend_metric_data_ == nullptr) {
|
2467
|
-
grpc_linked_mdelem* md = lb_call_->recv_trailing_metadata_->legacy_index()
|
2468
|
-
->named.x_endpoint_load_metrics_bin;
|
2469
|
-
if (md != nullptr) {
|
2470
|
-
lb_call_->backend_metric_data_ =
|
2471
|
-
ParseBackendMetricData(GRPC_MDVALUE(md->md), lb_call_->arena_);
|
2472
|
-
}
|
2473
|
-
}
|
2474
|
-
return lb_call_->backend_metric_data_;
|
2475
|
-
}
|
2476
|
-
|
2477
2523
|
absl::string_view ExperimentalGetCallAttribute(const char* key) override {
|
2478
2524
|
auto* service_config_call_data = static_cast<ServiceConfigCallData*>(
|
2479
2525
|
lb_call_->call_context_[GRPC_CONTEXT_SERVICE_CONFIG_CALL_DATA].value);
|
@@ -2488,7 +2534,33 @@ class ClientChannel::LoadBalancedCall::LbCallState
|
|
2488
2534
|
};
|
2489
2535
|
|
2490
2536
|
//
|
2491
|
-
// LoadBalancedCall
|
2537
|
+
// ClientChannel::LoadBalancedCall::BackendMetricAccessor
|
2538
|
+
//
|
2539
|
+
|
2540
|
+
class ClientChannel::LoadBalancedCall::BackendMetricAccessor
|
2541
|
+
: public LoadBalancingPolicy::BackendMetricAccessor {
|
2542
|
+
public:
|
2543
|
+
explicit BackendMetricAccessor(LoadBalancedCall* lb_call)
|
2544
|
+
: lb_call_(lb_call) {}
|
2545
|
+
|
2546
|
+
const BackendMetricData* GetBackendMetricData() override {
|
2547
|
+
if (lb_call_->backend_metric_data_ == nullptr &&
|
2548
|
+
lb_call_->recv_trailing_metadata_ != nullptr) {
|
2549
|
+
if (const auto* md = lb_call_->recv_trailing_metadata_->get_pointer(
|
2550
|
+
XEndpointLoadMetricsBinMetadata())) {
|
2551
|
+
lb_call_->backend_metric_data_ =
|
2552
|
+
ParseBackendMetricData(*md, lb_call_->arena_);
|
2553
|
+
}
|
2554
|
+
}
|
2555
|
+
return lb_call_->backend_metric_data_;
|
2556
|
+
}
|
2557
|
+
|
2558
|
+
private:
|
2559
|
+
LoadBalancedCall* lb_call_;
|
2560
|
+
};
|
2561
|
+
|
2562
|
+
//
|
2563
|
+
// ClientChannel::LoadBalancedCall
|
2492
2564
|
//
|
2493
2565
|
|
2494
2566
|
namespace {
|
@@ -2509,7 +2581,7 @@ ClientChannel::LoadBalancedCall::LoadBalancedCall(
|
|
2509
2581
|
ConfigSelector::CallDispatchController* call_dispatch_controller,
|
2510
2582
|
bool is_transparent_retry)
|
2511
2583
|
: InternallyRefCounted(
|
2512
|
-
GRPC_TRACE_FLAG_ENABLED(
|
2584
|
+
GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)
|
2513
2585
|
? "LoadBalancedCall"
|
2514
2586
|
: nullptr),
|
2515
2587
|
chand_(chand),
|
@@ -2523,15 +2595,18 @@ ClientChannel::LoadBalancedCall::LoadBalancedCall(
|
|
2523
2595
|
on_call_destruction_complete_(on_call_destruction_complete),
|
2524
2596
|
call_dispatch_controller_(call_dispatch_controller),
|
2525
2597
|
call_attempt_tracer_(
|
2526
|
-
GetCallAttemptTracer(args.context, is_transparent_retry)) {
|
2598
|
+
GetCallAttemptTracer(args.context, is_transparent_retry)) {
|
2599
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2600
|
+
gpr_log(GPR_INFO, "chand=%p lb_call=%p: created", chand_, this);
|
2601
|
+
}
|
2602
|
+
}
|
2527
2603
|
|
2528
2604
|
ClientChannel::LoadBalancedCall::~LoadBalancedCall() {
|
2529
|
-
grpc_slice_unref_internal(path_);
|
2530
2605
|
GRPC_ERROR_UNREF(cancel_error_);
|
2531
2606
|
GRPC_ERROR_UNREF(failure_error_);
|
2532
2607
|
if (backend_metric_data_ != nullptr) {
|
2533
|
-
backend_metric_data_
|
2534
|
-
|
2608
|
+
backend_metric_data_->LoadBalancingPolicy::BackendMetricAccessor::
|
2609
|
+
BackendMetricData::~BackendMetricData();
|
2535
2610
|
}
|
2536
2611
|
// Make sure there are no remaining pending batches.
|
2537
2612
|
for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) {
|
@@ -2544,6 +2619,12 @@ ClientChannel::LoadBalancedCall::~LoadBalancedCall() {
|
|
2544
2619
|
}
|
2545
2620
|
|
2546
2621
|
void ClientChannel::LoadBalancedCall::Orphan() {
|
2622
|
+
// If the recv_trailing_metadata op was never started, then notify
|
2623
|
+
// about call completion here, as best we can. We assume status
|
2624
|
+
// CANCELLED in this case.
|
2625
|
+
if (recv_trailing_metadata_ == nullptr) {
|
2626
|
+
RecordCallCompletion(absl::CancelledError("call cancelled"));
|
2627
|
+
}
|
2547
2628
|
// Compute latency and report it to the tracer.
|
2548
2629
|
if (call_attempt_tracer_ != nullptr) {
|
2549
2630
|
gpr_timespec latency =
|
@@ -2570,7 +2651,7 @@ size_t ClientChannel::LoadBalancedCall::GetBatchIndex(
|
|
2570
2651
|
void ClientChannel::LoadBalancedCall::PendingBatchesAdd(
|
2571
2652
|
grpc_transport_stream_op_batch* batch) {
|
2572
2653
|
const size_t idx = GetBatchIndex(batch);
|
2573
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
2654
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2574
2655
|
gpr_log(GPR_INFO,
|
2575
2656
|
"chand=%p lb_call=%p: adding pending batch at index %" PRIuPTR,
|
2576
2657
|
chand_, this, idx);
|
@@ -2597,7 +2678,7 @@ void ClientChannel::LoadBalancedCall::PendingBatchesFail(
|
|
2597
2678
|
GPR_ASSERT(error != GRPC_ERROR_NONE);
|
2598
2679
|
GRPC_ERROR_UNREF(failure_error_);
|
2599
2680
|
failure_error_ = error;
|
2600
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
2681
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2601
2682
|
size_t num_batches = 0;
|
2602
2683
|
for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) {
|
2603
2684
|
if (pending_batches_[i] != nullptr) ++num_batches;
|
@@ -2639,7 +2720,7 @@ void ClientChannel::LoadBalancedCall::ResumePendingBatchInCallCombiner(
|
|
2639
2720
|
|
2640
2721
|
// This is called via the call combiner, so access to calld is synchronized.
|
2641
2722
|
void ClientChannel::LoadBalancedCall::PendingBatchesResume() {
|
2642
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
2723
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2643
2724
|
size_t num_batches = 0;
|
2644
2725
|
for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) {
|
2645
2726
|
if (pending_batches_[i] != nullptr) ++num_batches;
|
@@ -2668,6 +2749,14 @@ void ClientChannel::LoadBalancedCall::PendingBatchesResume() {
|
|
2668
2749
|
|
2669
2750
|
void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
|
2670
2751
|
grpc_transport_stream_op_batch* batch) {
|
2752
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace) ||
|
2753
|
+
GRPC_TRACE_FLAG_ENABLED(grpc_trace_channel)) {
|
2754
|
+
gpr_log(GPR_INFO,
|
2755
|
+
"chand=%p lb_call=%p: batch started from above: %s, "
|
2756
|
+
"call_attempt_tracer_=%p",
|
2757
|
+
chand_, this, grpc_transport_stream_op_batch_string(batch).c_str(),
|
2758
|
+
call_attempt_tracer_);
|
2759
|
+
}
|
2671
2760
|
// Handle call tracing.
|
2672
2761
|
if (call_attempt_tracer_ != nullptr) {
|
2673
2762
|
// Record send ops in tracer.
|
@@ -2731,7 +2820,7 @@ void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
|
|
2731
2820
|
// the channel's data plane mutex, which is more efficient (especially for
|
2732
2821
|
// streaming calls).
|
2733
2822
|
if (subchannel_call_ != nullptr) {
|
2734
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
2823
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2735
2824
|
gpr_log(GPR_INFO,
|
2736
2825
|
"chand=%p lb_call=%p: starting batch on subchannel_call=%p",
|
2737
2826
|
chand_, this, subchannel_call_.get());
|
@@ -2743,7 +2832,7 @@ void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
|
|
2743
2832
|
//
|
2744
2833
|
// If we've previously been cancelled, immediately fail any new batches.
|
2745
2834
|
if (GPR_UNLIKELY(cancel_error_ != GRPC_ERROR_NONE)) {
|
2746
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
2835
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2747
2836
|
gpr_log(GPR_INFO, "chand=%p lb_call=%p: failing batch with error: %s",
|
2748
2837
|
chand_, this, grpc_error_std_string(cancel_error_).c_str());
|
2749
2838
|
}
|
@@ -2761,7 +2850,7 @@ void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
|
|
2761
2850
|
// error to the caller when the first batch does get passed down.
|
2762
2851
|
GRPC_ERROR_UNREF(cancel_error_);
|
2763
2852
|
cancel_error_ = GRPC_ERROR_REF(batch->payload->cancel_stream.cancel_error);
|
2764
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
2853
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2765
2854
|
gpr_log(GPR_INFO, "chand=%p lb_call=%p: recording cancel_error=%s",
|
2766
2855
|
chand_, this, grpc_error_std_string(cancel_error_).c_str());
|
2767
2856
|
}
|
@@ -2777,7 +2866,7 @@ void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
|
|
2777
2866
|
// For batches containing a send_initial_metadata op, acquire the
|
2778
2867
|
// channel's data plane mutex to pick a subchannel.
|
2779
2868
|
if (GPR_LIKELY(batch->send_initial_metadata)) {
|
2780
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
2869
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2781
2870
|
gpr_log(GPR_INFO,
|
2782
2871
|
"chand=%p lb_call=%p: grabbing data plane mutex to perform pick",
|
2783
2872
|
chand_, this);
|
@@ -2785,7 +2874,7 @@ void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
|
|
2785
2874
|
PickSubchannel(this, GRPC_ERROR_NONE);
|
2786
2875
|
} else {
|
2787
2876
|
// For all other batches, release the call combiner.
|
2788
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
2877
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2789
2878
|
gpr_log(GPR_INFO,
|
2790
2879
|
"chand=%p lb_call=%p: saved batch, yielding call combiner",
|
2791
2880
|
chand_, this);
|
@@ -2798,6 +2887,12 @@ void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
|
|
2798
2887
|
void ClientChannel::LoadBalancedCall::SendInitialMetadataOnComplete(
|
2799
2888
|
void* arg, grpc_error_handle error) {
|
2800
2889
|
auto* self = static_cast<LoadBalancedCall*>(arg);
|
2890
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2891
|
+
gpr_log(GPR_INFO,
|
2892
|
+
"chand=%p lb_call=%p: got on_complete for send_initial_metadata: "
|
2893
|
+
"error=%s",
|
2894
|
+
self->chand_, self, grpc_error_std_string(error).c_str());
|
2895
|
+
}
|
2801
2896
|
self->call_attempt_tracer_->RecordOnDoneSendInitialMetadata(
|
2802
2897
|
self->peer_string_);
|
2803
2898
|
Closure::Run(DEBUG_LOCATION,
|
@@ -2808,6 +2903,11 @@ void ClientChannel::LoadBalancedCall::SendInitialMetadataOnComplete(
|
|
2808
2903
|
void ClientChannel::LoadBalancedCall::RecvInitialMetadataReady(
|
2809
2904
|
void* arg, grpc_error_handle error) {
|
2810
2905
|
auto* self = static_cast<LoadBalancedCall*>(arg);
|
2906
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2907
|
+
gpr_log(GPR_INFO,
|
2908
|
+
"chand=%p lb_call=%p: got recv_initial_metadata_ready: error=%s",
|
2909
|
+
self->chand_, self, grpc_error_std_string(error).c_str());
|
2910
|
+
}
|
2811
2911
|
if (error == GRPC_ERROR_NONE) {
|
2812
2912
|
// recv_initial_metadata_flags is not populated for clients
|
2813
2913
|
self->call_attempt_tracer_->RecordReceivedInitialMetadata(
|
@@ -2820,6 +2920,10 @@ void ClientChannel::LoadBalancedCall::RecvInitialMetadataReady(
|
|
2820
2920
|
void ClientChannel::LoadBalancedCall::RecvMessageReady(
|
2821
2921
|
void* arg, grpc_error_handle error) {
|
2822
2922
|
auto* self = static_cast<LoadBalancedCall*>(arg);
|
2923
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2924
|
+
gpr_log(GPR_INFO, "chand=%p lb_call=%p: got recv_message_ready: error=%s",
|
2925
|
+
self->chand_, self, grpc_error_std_string(error).c_str());
|
2926
|
+
}
|
2823
2927
|
if (*self->recv_message_ != nullptr) {
|
2824
2928
|
self->call_attempt_tracer_->RecordReceivedMessage(**self->recv_message_);
|
2825
2929
|
}
|
@@ -2830,9 +2934,18 @@ void ClientChannel::LoadBalancedCall::RecvMessageReady(
|
|
2830
2934
|
void ClientChannel::LoadBalancedCall::RecvTrailingMetadataReady(
|
2831
2935
|
void* arg, grpc_error_handle error) {
|
2832
2936
|
auto* self = static_cast<LoadBalancedCall*>(arg);
|
2937
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2938
|
+
gpr_log(GPR_INFO,
|
2939
|
+
"chand=%p lb_call=%p: got recv_trailing_metadata_ready: error=%s "
|
2940
|
+
"call_attempt_tracer_=%p lb_subchannel_call_tracker_=%p "
|
2941
|
+
"failure_error_=%s",
|
2942
|
+
self->chand_, self, grpc_error_std_string(error).c_str(),
|
2943
|
+
self->call_attempt_tracer_, self->lb_subchannel_call_tracker_.get(),
|
2944
|
+
grpc_error_std_string(self->failure_error_).c_str());
|
2945
|
+
}
|
2833
2946
|
// Check if we have a tracer or an LB callback to invoke.
|
2834
2947
|
if (self->call_attempt_tracer_ != nullptr ||
|
2835
|
-
self->
|
2948
|
+
self->lb_subchannel_call_tracker_ != nullptr) {
|
2836
2949
|
// Get the call's status.
|
2837
2950
|
absl::Status status;
|
2838
2951
|
if (error != GRPC_ERROR_NONE) {
|
@@ -2844,32 +2957,18 @@ void ClientChannel::LoadBalancedCall::RecvTrailingMetadataReady(
|
|
2844
2957
|
status = absl::Status(static_cast<absl::StatusCode>(code), message);
|
2845
2958
|
} else {
|
2846
2959
|
// Get status from headers.
|
2847
|
-
const auto&
|
2848
|
-
GPR_ASSERT(fields.grpc_status != nullptr);
|
2960
|
+
const auto& md = *self->recv_trailing_metadata_;
|
2849
2961
|
grpc_status_code code =
|
2850
|
-
|
2962
|
+
md.get(GrpcStatusMetadata()).value_or(GRPC_STATUS_UNKNOWN);
|
2851
2963
|
if (code != GRPC_STATUS_OK) {
|
2852
2964
|
absl::string_view message;
|
2853
|
-
if (
|
2854
|
-
message =
|
2965
|
+
if (const auto* grpc_message = md.get_pointer(GrpcMessageMetadata())) {
|
2966
|
+
message = grpc_message->as_string_view();
|
2855
2967
|
}
|
2856
2968
|
status = absl::Status(static_cast<absl::StatusCode>(code), message);
|
2857
2969
|
}
|
2858
2970
|
}
|
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
|
-
}
|
2971
|
+
self->RecordCallCompletion(status);
|
2873
2972
|
}
|
2874
2973
|
// Chain to original callback.
|
2875
2974
|
if (self->failure_error_ != GRPC_ERROR_NONE) {
|
@@ -2882,16 +2981,35 @@ void ClientChannel::LoadBalancedCall::RecvTrailingMetadataReady(
|
|
2882
2981
|
error);
|
2883
2982
|
}
|
2884
2983
|
|
2984
|
+
void ClientChannel::LoadBalancedCall::RecordCallCompletion(
|
2985
|
+
absl::Status status) {
|
2986
|
+
// If we have a tracer, notify it.
|
2987
|
+
if (call_attempt_tracer_ != nullptr) {
|
2988
|
+
call_attempt_tracer_->RecordReceivedTrailingMetadata(
|
2989
|
+
status, recv_trailing_metadata_, transport_stream_stats_);
|
2990
|
+
}
|
2991
|
+
// If the LB policy requested a callback for trailing metadata, invoke
|
2992
|
+
// the callback.
|
2993
|
+
if (lb_subchannel_call_tracker_ != nullptr) {
|
2994
|
+
Metadata trailing_metadata(recv_trailing_metadata_);
|
2995
|
+
BackendMetricAccessor backend_metric_accessor(this);
|
2996
|
+
LoadBalancingPolicy::SubchannelCallTrackerInterface::FinishArgs args = {
|
2997
|
+
status, &trailing_metadata, &backend_metric_accessor};
|
2998
|
+
lb_subchannel_call_tracker_->Finish(args);
|
2999
|
+
lb_subchannel_call_tracker_.reset();
|
3000
|
+
}
|
3001
|
+
}
|
3002
|
+
|
2885
3003
|
void ClientChannel::LoadBalancedCall::CreateSubchannelCall() {
|
2886
3004
|
SubchannelCall::Args call_args = {
|
2887
|
-
std::move(connected_subchannel_), pollent_, path_, /*start_time=*/0,
|
3005
|
+
std::move(connected_subchannel_), pollent_, path_.Ref(), /*start_time=*/0,
|
2888
3006
|
deadline_, arena_,
|
2889
3007
|
// TODO(roth): When we implement hedging support, we will probably
|
2890
3008
|
// need to use a separate call context for each subchannel call.
|
2891
3009
|
call_context_, call_combiner_};
|
2892
3010
|
grpc_error_handle error = GRPC_ERROR_NONE;
|
2893
3011
|
subchannel_call_ = SubchannelCall::Create(std::move(call_args), &error);
|
2894
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
3012
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2895
3013
|
gpr_log(GPR_INFO,
|
2896
3014
|
"chand=%p lb_call=%p: create subchannel_call=%p: error=%s", chand_,
|
2897
3015
|
this, subchannel_call_.get(), grpc_error_std_string(error).c_str());
|
@@ -2930,7 +3048,7 @@ class ClientChannel::LoadBalancedCall::LbQueuedCallCanceller {
|
|
2930
3048
|
auto* chand = lb_call->chand_;
|
2931
3049
|
{
|
2932
3050
|
MutexLock lock(&chand->data_plane_mu_);
|
2933
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
3051
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2934
3052
|
gpr_log(GPR_INFO,
|
2935
3053
|
"chand=%p lb_call=%p: cancelling queued pick: "
|
2936
3054
|
"error=%s self=%p calld->pick_canceller=%p",
|
@@ -2956,7 +3074,7 @@ class ClientChannel::LoadBalancedCall::LbQueuedCallCanceller {
|
|
2956
3074
|
|
2957
3075
|
void ClientChannel::LoadBalancedCall::MaybeRemoveCallFromLbQueuedCallsLocked() {
|
2958
3076
|
if (!queued_pending_lb_pick_) return;
|
2959
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
3077
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2960
3078
|
gpr_log(GPR_INFO, "chand=%p lb_call=%p: removing from queued picks list",
|
2961
3079
|
chand_, this);
|
2962
3080
|
}
|
@@ -2968,7 +3086,7 @@ void ClientChannel::LoadBalancedCall::MaybeRemoveCallFromLbQueuedCallsLocked() {
|
|
2968
3086
|
|
2969
3087
|
void ClientChannel::LoadBalancedCall::MaybeAddCallToLbQueuedCallsLocked() {
|
2970
3088
|
if (queued_pending_lb_pick_) return;
|
2971
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
3089
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2972
3090
|
gpr_log(GPR_INFO, "chand=%p lb_call=%p: adding to queued picks list",
|
2973
3091
|
chand_, this);
|
2974
3092
|
}
|
@@ -2989,7 +3107,7 @@ void ClientChannel::LoadBalancedCall::PickDone(void* arg,
|
|
2989
3107
|
grpc_error_handle error) {
|
2990
3108
|
auto* self = static_cast<LoadBalancedCall*>(arg);
|
2991
3109
|
if (error != GRPC_ERROR_NONE) {
|
2992
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
3110
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2993
3111
|
gpr_log(GPR_INFO,
|
2994
3112
|
"chand=%p lb_call=%p: failed to pick subchannel: error=%s",
|
2995
3113
|
self->chand_, self, grpc_error_std_string(error).c_str());
|
@@ -3028,10 +3146,10 @@ bool ClientChannel::LoadBalancedCall::PickSubchannelLocked(
|
|
3028
3146
|
send_initial_metadata.send_initial_metadata_flags;
|
3029
3147
|
// Perform LB pick.
|
3030
3148
|
LoadBalancingPolicy::PickArgs pick_args;
|
3031
|
-
pick_args.path =
|
3149
|
+
pick_args.path = path_.as_string_view();
|
3032
3150
|
LbCallState lb_call_state(this);
|
3033
3151
|
pick_args.call_state = &lb_call_state;
|
3034
|
-
Metadata initial_metadata(
|
3152
|
+
Metadata initial_metadata(initial_metadata_batch);
|
3035
3153
|
pick_args.initial_metadata = &initial_metadata;
|
3036
3154
|
auto result = chand_->picker_->Pick(pick_args);
|
3037
3155
|
return HandlePickResult<bool>(
|
@@ -3039,7 +3157,7 @@ bool ClientChannel::LoadBalancedCall::PickSubchannelLocked(
|
|
3039
3157
|
// CompletePick
|
3040
3158
|
[this](LoadBalancingPolicy::PickResult::Complete* complete_pick)
|
3041
3159
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::data_plane_mu_) {
|
3042
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
3160
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
3043
3161
|
gpr_log(GPR_INFO,
|
3044
3162
|
"chand=%p lb_call=%p: LB pick succeeded: subchannel=%p",
|
3045
3163
|
chand_, this, complete_pick->subchannel.get());
|
@@ -3054,22 +3172,28 @@ bool ClientChannel::LoadBalancedCall::PickSubchannelLocked(
|
|
3054
3172
|
// subchannel has moved out of state READY but the LB policy hasn't
|
3055
3173
|
// yet seen that change and given us a new picker), then just
|
3056
3174
|
// 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
3175
|
if (connected_subchannel_ == nullptr) {
|
3176
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
3177
|
+
gpr_log(GPR_INFO,
|
3178
|
+
"chand=%p lb_call=%p: subchannel returned by LB picker "
|
3179
|
+
"has no connected subchannel; queueing pick",
|
3180
|
+
chand_, this);
|
3181
|
+
}
|
3061
3182
|
MaybeAddCallToLbQueuedCallsLocked();
|
3062
3183
|
return false;
|
3063
3184
|
}
|
3064
|
-
|
3065
|
-
std::move(complete_pick->
|
3185
|
+
lb_subchannel_call_tracker_ =
|
3186
|
+
std::move(complete_pick->subchannel_call_tracker);
|
3187
|
+
if (lb_subchannel_call_tracker_ != nullptr) {
|
3188
|
+
lb_subchannel_call_tracker_->Start();
|
3189
|
+
}
|
3066
3190
|
MaybeRemoveCallFromLbQueuedCallsLocked();
|
3067
3191
|
return true;
|
3068
3192
|
},
|
3069
3193
|
// QueuePick
|
3070
3194
|
[this](LoadBalancingPolicy::PickResult::Queue* /*queue_pick*/)
|
3071
3195
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::data_plane_mu_) {
|
3072
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
3196
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
3073
3197
|
gpr_log(GPR_INFO, "chand=%p lb_call=%p: LB pick queued", chand_,
|
3074
3198
|
this);
|
3075
3199
|
}
|
@@ -3080,7 +3204,7 @@ bool ClientChannel::LoadBalancedCall::PickSubchannelLocked(
|
|
3080
3204
|
[this, send_initial_metadata_flags,
|
3081
3205
|
&error](LoadBalancingPolicy::PickResult::Fail* fail_pick)
|
3082
3206
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::data_plane_mu_) {
|
3083
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
3207
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
3084
3208
|
gpr_log(GPR_INFO, "chand=%p lb_call=%p: LB pick failed: %s",
|
3085
3209
|
chand_, this, fail_pick->status.ToString().c_str());
|
3086
3210
|
}
|
@@ -3104,7 +3228,7 @@ bool ClientChannel::LoadBalancedCall::PickSubchannelLocked(
|
|
3104
3228
|
// DropPick
|
3105
3229
|
[this, &error](LoadBalancingPolicy::PickResult::Drop* drop_pick)
|
3106
3230
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::data_plane_mu_) {
|
3107
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
3231
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
3108
3232
|
gpr_log(GPR_INFO, "chand=%p lb_call=%p: LB pick dropped: %s",
|
3109
3233
|
chand_, this, drop_pick->status.ToString().c_str());
|
3110
3234
|
}
|