grpc 1.45.0 → 1.47.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +69 -110
- data/include/grpc/event_engine/event_engine.h +42 -7
- data/include/grpc/event_engine/memory_allocator.h +0 -15
- data/include/grpc/event_engine/port.h +1 -1
- data/include/grpc/event_engine/slice.h +286 -0
- data/include/grpc/event_engine/slice_buffer.h +112 -0
- data/include/grpc/grpc_security.h +11 -0
- data/include/grpc/impl/codegen/grpc_types.h +7 -13
- data/include/grpc/impl/codegen/port_platform.h +100 -36
- data/include/grpc/impl/codegen/slice.h +1 -1
- data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +297 -0
- data/src/core/ext/filters/channel_idle/channel_idle_filter.h +125 -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 +3 -3
- data/src/core/ext/filters/client_channel/backend_metric.cc +17 -12
- data/src/core/ext/filters/client_channel/backend_metric.h +19 -9
- data/src/core/ext/filters/client_channel/backup_poller.cc +5 -5
- data/src/core/ext/filters/client_channel/backup_poller.h +2 -4
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +42 -20
- data/src/core/ext/filters/client_channel/client_channel.cc +223 -113
- data/src/core/ext/filters/client_channel/client_channel.h +28 -6
- data/src/core/ext/filters/client_channel/client_channel_channelz.cc +3 -5
- data/src/core/ext/filters/client_channel/client_channel_channelz.h +12 -2
- data/src/core/ext/filters/client_channel/client_channel_factory.cc +5 -0
- data/src/core/ext/filters/client_channel/client_channel_factory.h +8 -0
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +4 -13
- data/src/core/ext/filters/client_channel/config_selector.cc +1 -0
- data/src/core/ext/filters/client_channel/config_selector.h +7 -5
- data/src/core/ext/filters/client_channel/connector.h +8 -2
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +13 -2
- data/src/core/ext/filters/client_channel/dynamic_filters.h +11 -1
- data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +2 -0
- data/src/core/ext/filters/client_channel/global_subchannel_pool.h +3 -0
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +138 -582
- data/src/core/ext/filters/client_channel/health/health_check_client.h +26 -160
- data/src/core/ext/filters/client_channel/http_proxy.cc +98 -112
- data/src/core/ext/filters/client_channel/http_proxy.h +20 -0
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +6 -2
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +1 -0
- data/src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h +49 -0
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +12 -0
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +5 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +9 -3
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +59 -19
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +4 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +6 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +10 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +6 -3
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +408 -0
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.h +57 -0
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +1038 -0
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +54 -0
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +60 -52
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +277 -195
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +158 -101
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +2 -0
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +46 -20
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +182 -171
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +39 -36
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +117 -63
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +142 -63
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +6 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +30 -4
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +37 -10
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +300 -291
- data/src/core/ext/filters/client_channel/lb_policy.cc +4 -2
- data/src/core/ext/filters/client_channel/lb_policy.h +18 -24
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +2 -0
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +8 -1
- data/src/core/ext/filters/client_channel/lb_policy_registry.h +6 -1
- data/src/core/ext/filters/client_channel/local_subchannel_pool.cc +4 -0
- data/src/core/ext/filters/client_channel/local_subchannel_pool.h +1 -0
- data/src/core/ext/filters/client_channel/proxy_mapper.h +1 -1
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +2 -0
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.h +5 -0
- data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +23 -5
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +226 -300
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +8 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +10 -8
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +26 -9
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +13 -4
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +2 -1
- data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.cc +2 -0
- data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.h +2 -1
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +73 -220
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +13 -14
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +5 -2
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +59 -13
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +213 -0
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +113 -0
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +15 -11
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +182 -79
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +5 -11
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +11 -5
- data/src/core/ext/filters/client_channel/retry_filter.cc +60 -5
- data/src/core/ext/filters/client_channel/retry_service_config.cc +8 -9
- data/src/core/ext/filters/client_channel/retry_service_config.h +10 -1
- data/src/core/ext/filters/client_channel/retry_throttle.cc +1 -8
- data/src/core/ext/filters/client_channel/retry_throttle.h +7 -1
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +22 -5
- data/src/core/ext/filters/client_channel/subchannel.cc +161 -165
- data/src/core/ext/filters/client_channel/subchannel.h +80 -20
- data/src/core/ext/filters/client_channel/subchannel_interface.h +41 -23
- data/src/core/ext/filters/client_channel/subchannel_interface_internal.h +38 -0
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +12 -2
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +6 -3
- data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +558 -0
- data/src/core/ext/filters/client_channel/subchannel_stream_client.h +226 -0
- data/src/core/ext/filters/deadline/deadline_filter.cc +6 -2
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +123 -366
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +24 -1
- data/src/core/ext/filters/http/client/http_client_filter.cc +87 -458
- data/src/core/ext/filters/http/client/http_client_filter.h +27 -4
- data/src/core/ext/filters/http/client_authority_filter.cc +21 -31
- data/src/core/ext/filters/http/client_authority_filter.h +6 -5
- data/src/core/ext/filters/http/http_filters_plugin.cc +16 -14
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +1 -0
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +3 -1
- data/src/core/ext/filters/http/server/http_server_filter.cc +80 -361
- data/src/core/ext/filters/http/server/http_server_filter.h +31 -2
- data/src/core/ext/filters/message_size/message_size_filter.cc +20 -26
- data/src/core/ext/filters/message_size/message_size_filter.h +2 -2
- data/src/core/ext/filters/rbac/rbac_filter.cc +1 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector.cc +2 -8
- data/src/core/ext/filters/server_config_selector/server_config_selector.h +2 -2
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +73 -201
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +102 -135
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +9 -7
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +49 -19
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +2 -0
- data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +3 -3
- data/src/core/ext/transport/chttp2/transport/bin_decoder.h +2 -1
- data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +1 -0
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +205 -45
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +5 -0
- data/src/core/ext/transport/chttp2/transport/context_list.cc +4 -0
- data/src/core/ext/transport/chttp2/transport/context_list.h +4 -1
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +6 -2
- data/src/core/ext/transport/chttp2/transport/flow_control.h +6 -2
- data/src/core/ext/transport/chttp2/transport/frame.h +0 -4
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +7 -1
- data/src/core/ext/transport/chttp2/transport/frame_data.h +4 -1
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +3 -0
- data/src/core/ext/transport/chttp2/transport/frame_goaway.h +3 -1
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +5 -0
- data/src/core/ext/transport/chttp2/transport/frame_ping.h +3 -0
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +6 -2
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +3 -0
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +14 -3
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +4 -0
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +4 -1
- data/src/core/ext/transport/chttp2/transport/frame_window_update.h +3 -0
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +13 -15
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +15 -2
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +3 -0
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +3 -0
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +25 -7
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +8 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +55 -37
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +38 -21
- data/src/core/ext/transport/chttp2/transport/http2_settings.h +0 -1
- data/src/core/ext/transport/chttp2/transport/internal.h +28 -5
- data/src/core/ext/transport/chttp2/transport/parsing.cc +35 -6
- data/src/core/ext/transport/chttp2/transport/stream_lists.cc +13 -9
- data/src/core/ext/transport/chttp2/transport/stream_map.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/stream_map.h +1 -0
- data/src/core/ext/transport/chttp2/transport/varint.h +2 -0
- data/src/core/ext/transport/chttp2/transport/writing.cc +62 -15
- data/src/core/ext/transport/inproc/inproc_transport.cc +8 -5
- data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.c +27 -24
- data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.h +143 -63
- data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.c +37 -35
- data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.h +177 -77
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +115 -111
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +547 -207
- data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.h +26 -13
- data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.h +23 -9
- data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.h +18 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.h +13 -4
- data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.h +9 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.c +49 -46
- data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.h +217 -78
- data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.h +10 -2
- data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c +12 -12
- data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +40 -8
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +20 -2
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +55 -55
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +289 -110
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +133 -125
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +656 -267
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +24 -18
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +96 -23
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +185 -173
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +860 -309
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +10 -2
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +44 -24
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +165 -40
- data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.c +72 -63
- data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.h +433 -174
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +33 -31
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +154 -52
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +5 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +14 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +89 -89
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +460 -166
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +76 -33
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +379 -69
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +14 -6
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +5 -25
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +10 -91
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.h +26 -13
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +70 -68
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +369 -131
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +94 -65
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +447 -161
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +27 -11
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +104 -85
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +378 -113
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +3 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +6 -6
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +30 -13
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +43 -16
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +58 -24
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +14 -4
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +18 -18
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +100 -43
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +31 -30
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +171 -71
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +32 -32
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +196 -95
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +7 -2
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +53 -46
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +284 -129
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +56 -50
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +337 -146
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +13 -11
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +49 -14
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +14 -4
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.h +20 -4
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +33 -32
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +205 -86
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +34 -34
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +175 -74
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +56 -52
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +370 -146
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +27 -23
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +173 -74
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +362 -341
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +2056 -845
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +11 -11
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +49 -16
- data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.c +56 -50
- data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.h +293 -111
- data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.h +6 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.h +10 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +26 -10
- data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.h +27 -12
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.c +17 -16
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.h +83 -36
- data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.h +7 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.h +46 -17
- data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.c +9 -9
- data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.h +38 -12
- data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.h +30 -10
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +10 -6
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +15 -15
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +71 -28
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +25 -25
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +149 -65
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c +8 -7
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +30 -12
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +9 -9
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +42 -15
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +173 -144
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +898 -323
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +51 -45
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +261 -116
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +13 -13
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +70 -25
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +80 -55
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +410 -124
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h +23 -9
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +44 -44
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +261 -122
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +47 -21
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +32 -32
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +175 -66
- data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.h +17 -6
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +38 -17
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h +12 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +43 -18
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +20 -9
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +24 -9
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +14 -6
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +40 -16
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +9 -9
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +70 -25
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +37 -18
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +12 -12
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +81 -30
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +16 -16
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +76 -30
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +20 -20
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +90 -30
- data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.h +28 -10
- data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.h +3 -0
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +13 -4
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +9 -9
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +18 -0
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +9 -0
- data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.h +17 -4
- data/src/core/ext/upb-generated/google/api/annotations.upb.c +3 -3
- data/src/core/ext/upb-generated/google/api/annotations.upb.h +17 -2
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +70 -66
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +410 -162
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +80 -74
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +440 -158
- data/src/core/ext/upb-generated/google/api/http.upb.c +17 -17
- data/src/core/ext/upb-generated/google/api/http.upb.h +116 -43
- data/src/core/ext/upb-generated/google/api/httpbody.upb.c +4 -4
- data/src/core/ext/upb-generated/google/api/httpbody.upb.h +19 -7
- data/src/core/ext/upb-generated/google/protobuf/any.upb.c +3 -3
- data/src/core/ext/upb-generated/google/protobuf/any.upb.h +6 -0
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +163 -162
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +1157 -435
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +3 -3
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +10 -4
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +15 -15
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +108 -40
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +3 -3
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +10 -4
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +18 -18
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +27 -0
- data/src/core/ext/upb-generated/google/rpc/status.upb.c +4 -4
- data/src/core/ext/upb-generated/google/rpc/status.upb.h +19 -7
- data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.c +15 -15
- data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.h +65 -22
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +12 -12
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +49 -12
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +69 -65
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +364 -149
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +8 -7
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +20 -4
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +4 -4
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +6 -0
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +31 -31
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +150 -58
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +11 -11
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +51 -18
- 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 +22 -22
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +97 -10
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +6 -6
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +23 -2
- data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c +3 -3
- data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +10 -2
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +6 -6
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +27 -6
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +5 -5
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +20 -2
- data/src/core/ext/upb-generated/validate/validate.upb.c +261 -250
- data/src/core/ext/upb-generated/validate/validate.upb.h +1836 -663
- data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.c +22 -22
- data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.h +97 -10
- data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.c +6 -6
- data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.h +23 -2
- data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.c +3 -3
- data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.h +10 -2
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +18 -18
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +70 -10
- data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.c +5 -5
- data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.h +20 -2
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +2 -2
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +3 -0
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +8 -8
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +38 -12
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +5 -5
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +27 -10
- data/src/core/ext/upb-generated/xds/core/v3/extension.upb.c +3 -3
- data/src/core/ext/upb-generated/xds/core/v3/extension.upb.h +10 -2
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +5 -5
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +21 -8
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +10 -10
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +71 -30
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +5 -5
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +16 -2
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +12 -12
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +69 -26
- data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.c +47 -0
- data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.h +109 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.c +43 -39
- data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.h +255 -103
- data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.c +4 -4
- data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.h +19 -8
- data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.c +9 -9
- data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.h +70 -25
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c +3 -3
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +10 -2
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +50 -46
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +195 -185
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +16 -12
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +129 -94
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.h +10 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c +18 -33
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.h +0 -5
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +163 -155
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +141 -138
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +26 -20
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +738 -730
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +271 -251
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +207 -193
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h +5 -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/xds/certificate_provider_store.cc +10 -0
- data/src/core/ext/xds/certificate_provider_store.h +9 -0
- data/src/core/ext/xds/xds_api.cc +20 -0
- data/src/core/ext/xds/xds_bootstrap.cc +2 -2
- data/src/core/ext/xds/xds_bootstrap.h +2 -0
- data/src/core/ext/xds/xds_certificate_provider.cc +5 -0
- data/src/core/ext/xds/xds_certificate_provider.h +8 -0
- data/src/core/ext/xds/xds_channel_stack_modifier.cc +5 -5
- data/src/core/ext/xds/xds_client.cc +125 -109
- data/src/core/ext/xds/xds_client.h +13 -5
- data/src/core/ext/xds/xds_cluster.cc +106 -16
- data/src/core/ext/xds/xds_cluster.h +3 -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 +9 -9
- data/src/core/ext/xds/xds_common_types.h +3 -3
- data/src/core/ext/xds/xds_endpoint.cc +12 -5
- data/src/core/ext/xds/xds_http_fault_filter.cc +4 -4
- data/src/core/ext/xds/xds_listener.cc +20 -10
- data/src/core/ext/xds/xds_route_config.cc +162 -25
- data/src/core/ext/xds/xds_route_config.h +13 -10
- data/src/core/ext/xds/xds_server_config_fetcher.cc +19 -23
- data/src/core/lib/address_utils/sockaddr_utils.cc +56 -23
- data/src/core/lib/address_utils/sockaddr_utils.h +7 -4
- data/src/core/lib/avl/avl.h +71 -6
- data/src/core/lib/channel/call_finalization.h +4 -0
- data/src/core/lib/channel/call_tracer.h +12 -3
- data/src/core/lib/channel/channel_args.cc +179 -81
- data/src/core/lib/channel/channel_args.h +242 -11
- data/src/core/lib/channel/channel_args_preconditioning.cc +5 -11
- data/src/core/lib/channel/channel_args_preconditioning.h +4 -4
- data/src/core/lib/channel/channel_stack.cc +41 -3
- data/src/core/lib/channel/channel_stack.h +51 -8
- data/src/core/lib/channel/channel_stack_builder.cc +9 -84
- data/src/core/lib/channel/channel_stack_builder.h +35 -26
- data/src/core/lib/channel/channel_stack_builder_impl.cc +97 -0
- data/src/core/lib/channel/channel_stack_builder_impl.h +45 -0
- data/src/core/lib/channel/channel_trace.cc +8 -13
- data/src/core/lib/channel/channel_trace.h +6 -3
- data/src/core/lib/channel/channelz.cc +8 -13
- data/src/core/lib/channel/channelz.h +13 -4
- data/src/core/lib/channel/channelz_registry.cc +7 -14
- data/src/core/lib/channel/channelz_registry.h +10 -9
- data/src/core/lib/channel/connected_channel.cc +21 -31
- data/src/core/lib/channel/connected_channel.h +2 -0
- data/src/core/lib/channel/promise_based_filter.cc +848 -260
- data/src/core/lib/channel/promise_based_filter.h +215 -68
- data/src/core/lib/channel/status_util.cc +2 -0
- data/src/core/lib/channel/status_util.h +0 -3
- data/src/core/lib/compression/compression_internal.cc +46 -17
- data/src/core/lib/compression/compression_internal.h +1 -1
- data/src/core/lib/config/core_configuration.cc +3 -0
- data/src/core/lib/config/core_configuration.h +2 -1
- data/src/core/lib/debug/stats_data.cc +2 -6
- data/src/core/lib/debug/stats_data.h +18 -21
- data/src/core/lib/event_engine/channel_args_endpoint_config.cc +4 -2
- data/src/core/lib/event_engine/channel_args_endpoint_config.h +3 -2
- data/src/core/lib/event_engine/default_event_engine_factory.cc +8 -2
- data/src/core/lib/event_engine/event_engine.cc +12 -2
- data/src/core/lib/event_engine/event_engine_factory.h +5 -0
- data/src/core/lib/event_engine/handle_containers.h +67 -0
- data/src/core/lib/event_engine/iomgr_engine.cc +206 -0
- data/src/core/lib/event_engine/iomgr_engine.h +118 -0
- data/src/core/lib/event_engine/memory_allocator.cc +12 -4
- data/src/core/lib/event_engine/resolved_address.cc +4 -2
- data/src/core/lib/event_engine/slice.cc +102 -0
- data/src/core/lib/event_engine/slice_buffer.cc +50 -0
- data/src/core/{ext/filters/max_age/max_age_filter.h → lib/event_engine/trace.cc} +3 -11
- data/src/core/lib/{iomgr/endpoint_pair_event_engine.cc → event_engine/trace.h} +12 -14
- data/src/core/lib/gpr/log.cc +5 -0
- data/src/core/lib/gpr/tls.h +4 -5
- data/src/core/lib/gprpp/bitset.h +17 -1
- data/src/core/lib/gprpp/chunked_vector.h +4 -0
- data/src/core/lib/gprpp/construct_destruct.h +1 -0
- data/src/core/lib/gprpp/cpp_impl_of.h +4 -0
- data/src/core/lib/gprpp/dual_ref_counted.h +1 -4
- data/src/core/lib/gprpp/examine_stack.h +0 -1
- data/src/core/lib/gprpp/fork.cc +3 -6
- data/src/core/lib/gprpp/global_config.h +2 -4
- data/src/core/lib/gprpp/global_config_env.cc +3 -2
- data/src/core/lib/gprpp/global_config_env.h +3 -1
- data/src/core/lib/gprpp/global_config_generic.h +0 -4
- data/src/core/lib/gprpp/host_port.cc +2 -0
- data/src/core/lib/gprpp/manual_constructor.h +0 -1
- data/src/core/lib/gprpp/match.h +75 -0
- data/src/core/lib/gprpp/memory.h +1 -5
- data/src/core/lib/gprpp/orphanable.h +1 -4
- data/src/core/lib/gprpp/overload.h +59 -0
- data/src/core/lib/gprpp/ref_counted.h +3 -3
- data/src/core/lib/gprpp/ref_counted_ptr.h +1 -1
- data/src/core/lib/gprpp/single_set_ptr.h +87 -0
- data/src/core/lib/gprpp/stat.h +0 -2
- data/src/core/lib/gprpp/stat_posix.cc +7 -2
- data/src/core/lib/gprpp/status_helper.cc +25 -5
- data/src/core/lib/gprpp/status_helper.h +4 -0
- data/src/core/lib/gprpp/sync.h +3 -1
- data/src/core/lib/gprpp/table.h +10 -0
- data/src/core/lib/gprpp/thd.h +2 -5
- data/src/core/lib/gprpp/thd_posix.cc +4 -2
- data/src/core/lib/gprpp/thd_windows.cc +2 -0
- data/src/core/lib/gprpp/time.cc +20 -0
- data/src/core/lib/gprpp/time.h +7 -2
- data/src/core/lib/gprpp/time_util.cc +4 -0
- data/src/core/lib/gprpp/time_util.h +1 -1
- data/src/core/lib/gprpp/unique_type_name.h +104 -0
- data/src/core/lib/http/format_request.cc +30 -2
- data/src/core/lib/http/format_request.h +2 -0
- data/src/core/lib/http/httpcli.cc +88 -81
- data/src/core/lib/http/httpcli.h +39 -7
- data/src/core/lib/http/httpcli_security_connector.cc +6 -7
- data/src/core/lib/http/parser.cc +80 -9
- data/src/core/lib/http/parser.h +14 -1
- data/src/core/lib/iomgr/endpoint.cc +4 -4
- data/src/core/lib/iomgr/endpoint.h +6 -4
- data/src/core/lib/iomgr/endpoint_cfstream.cc +7 -4
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +2 -1
- data/src/core/lib/iomgr/ev_posix.cc +7 -11
- data/src/core/lib/iomgr/exec_ctx.h +1 -2
- data/src/core/lib/iomgr/fork_posix.cc +1 -1
- data/src/core/lib/iomgr/internal_errqueue.cc +38 -47
- data/src/core/lib/iomgr/internal_errqueue.h +1 -6
- data/src/core/lib/iomgr/iomgr.cc +0 -1
- data/src/core/lib/iomgr/{event_engine/pollset.h → iomgr_fwd.h} +9 -9
- data/src/core/lib/iomgr/pollset_set.h +1 -2
- data/src/core/lib/iomgr/port.h +25 -8
- data/src/core/lib/iomgr/resolve_address.cc +8 -0
- data/src/core/lib/iomgr/resolve_address.h +21 -14
- data/src/core/lib/iomgr/resolve_address_impl.h +2 -3
- data/src/core/lib/iomgr/resolve_address_posix.cc +8 -14
- data/src/core/lib/iomgr/resolve_address_posix.h +5 -2
- data/src/core/lib/iomgr/resolve_address_windows.cc +7 -14
- data/src/core/lib/iomgr/resolve_address_windows.h +5 -2
- data/src/core/lib/iomgr/sockaddr.h +2 -3
- data/src/core/lib/iomgr/sockaddr_posix.h +2 -0
- data/src/core/lib/iomgr/sockaddr_windows.h +2 -0
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +3 -2
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +10 -2
- data/src/core/lib/iomgr/tcp_client_posix.cc +14 -7
- data/src/core/lib/iomgr/tcp_client_windows.cc +13 -6
- data/src/core/lib/iomgr/tcp_posix.cc +77 -37
- data/src/core/lib/iomgr/tcp_server_posix.cc +50 -27
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +30 -27
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +7 -4
- data/src/core/lib/iomgr/tcp_server_windows.cc +13 -5
- data/src/core/lib/iomgr/tcp_windows.cc +7 -4
- data/src/core/lib/json/json.h +1 -2
- data/src/core/lib/json/json_reader.cc +9 -1
- data/src/core/lib/json/json_util.cc +7 -0
- data/src/core/lib/json/json_util.h +13 -4
- data/src/core/lib/json/json_writer.cc +6 -1
- data/src/core/lib/promise/activity.cc +1 -1
- data/src/core/lib/promise/activity.h +6 -6
- data/src/core/lib/promise/arena_promise.h +11 -1
- data/src/core/lib/promise/call_push_pull.h +148 -0
- data/src/core/lib/promise/context.h +1 -1
- data/src/core/lib/promise/detail/basic_seq.h +2 -2
- data/src/core/lib/promise/detail/promise_factory.h +0 -1
- data/src/core/lib/promise/detail/status.h +2 -1
- data/src/core/lib/promise/intra_activity_waiter.h +49 -0
- data/src/core/lib/promise/latch.h +103 -0
- data/src/core/lib/promise/loop.h +1 -0
- data/src/core/lib/promise/race.h +0 -1
- data/src/core/lib/promise/seq.h +0 -2
- data/src/core/lib/promise/sleep.cc +2 -0
- data/src/core/lib/promise/sleep.h +10 -0
- data/src/core/lib/promise/try_seq.h +2 -2
- data/src/core/lib/resolver/resolver_factory.h +1 -2
- data/src/core/lib/resolver/server_address.cc +9 -3
- data/src/core/lib/resolver/server_address.h +4 -4
- data/src/core/lib/resource_quota/api.cc +19 -31
- data/src/core/lib/resource_quota/api.h +5 -2
- data/src/core/lib/resource_quota/arena.cc +0 -6
- data/src/core/lib/resource_quota/arena.h +1 -2
- data/src/core/lib/resource_quota/memory_quota.cc +47 -5
- data/src/core/lib/resource_quota/memory_quota.h +24 -5
- data/src/core/lib/resource_quota/resource_quota.h +16 -0
- data/src/core/lib/resource_quota/thread_quota.cc +2 -0
- data/src/core/lib/resource_quota/thread_quota.h +4 -0
- data/src/core/lib/security/authorization/authorization_policy_provider.h +7 -0
- data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +12 -12
- data/src/core/lib/security/authorization/grpc_server_authz_filter.h +5 -6
- data/src/core/lib/security/context/security_context.h +8 -1
- data/src/core/lib/security/credentials/alts/alts_credentials.cc +12 -5
- data/src/core/lib/security/credentials/alts/alts_credentials.h +4 -0
- data/src/core/lib/security/credentials/call_creds_util.cc +5 -3
- data/src/core/lib/security/credentials/call_creds_util.h +2 -2
- data/src/core/lib/security/credentials/channel_creds_registry.h +1 -0
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +19 -10
- data/src/core/lib/security/credentials/composite/composite_credentials.h +11 -9
- data/src/core/lib/security/credentials/credentials.h +29 -39
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +81 -0
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +8 -0
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +3 -0
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +2 -0
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +18 -12
- data/src/core/lib/security/credentials/fake/fake_credentials.h +8 -5
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +27 -13
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +4 -4
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +8 -4
- data/src/core/lib/security/credentials/iam/iam_credentials.h +6 -2
- data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +28 -29
- data/src/core/lib/security/credentials/insecure/insecure_credentials.h +57 -0
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +8 -3
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +6 -2
- data/src/core/lib/security/credentials/local/local_credentials.cc +12 -6
- data/src/core/lib/security/credentials/local/local_credentials.h +4 -0
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +22 -10
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +14 -6
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +11 -6
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +8 -6
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +12 -4
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +8 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +10 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +47 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +34 -1
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +66 -3
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +66 -95
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +19 -6
- data/src/core/lib/security/credentials/tls/tls_credentials.h +5 -5
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +57 -50
- data/src/core/lib/security/credentials/xds/xds_credentials.h +31 -5
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +1 -1
- data/src/core/lib/security/security_connector/fake/fake_security_connector.h +1 -1
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +2 -2
- data/src/core/lib/security/security_connector/security_connector.cc +1 -1
- data/src/core/lib/security/security_connector/security_connector.h +10 -1
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +5 -3
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +4 -2
- data/src/core/lib/security/transport/auth_filters.h +7 -7
- data/src/core/lib/security/transport/client_auth_filter.cc +26 -20
- data/src/core/lib/security/transport/secure_endpoint.cc +213 -133
- data/src/core/lib/security/transport/secure_endpoint.h +1 -1
- data/src/core/lib/security/transport/security_handshaker.cc +11 -9
- data/src/core/lib/security/transport/security_handshaker.h +1 -1
- data/src/core/lib/security/transport/server_auth_filter.cc +3 -2
- data/src/core/lib/service_config/service_config.h +4 -8
- data/src/core/lib/service_config/service_config_call_data.h +4 -1
- data/src/core/lib/service_config/service_config_impl.cc +7 -0
- data/src/core/lib/service_config/service_config_impl.h +9 -2
- data/src/core/lib/service_config/service_config_parser.cc +8 -0
- data/src/core/lib/service_config/service_config_parser.h +7 -0
- data/src/core/lib/slice/b64.cc +1 -1
- data/src/core/lib/slice/b64.h +2 -0
- data/src/core/lib/slice/percent_encoding.cc +4 -1
- data/src/core/lib/slice/percent_encoding.h +0 -6
- data/src/core/lib/slice/slice.cc +2 -1
- data/src/core/lib/slice/slice.h +10 -5
- data/src/core/lib/slice/slice_api.cc +1 -1
- data/src/core/lib/slice/slice_buffer.cc +50 -23
- data/src/core/lib/slice/slice_buffer.h +106 -0
- data/src/core/lib/{iomgr/is_epollexclusive_available.h → slice/slice_buffer_api.cc} +11 -12
- data/src/core/lib/slice/slice_internal.h +4 -3
- data/src/core/lib/slice/slice_refcount.h +2 -3
- data/src/core/lib/slice/slice_refcount_base.h +2 -3
- data/src/core/lib/slice/slice_split.cc +3 -0
- data/src/core/lib/slice/slice_split.h +0 -4
- data/src/core/lib/slice/slice_string_helpers.cc +4 -0
- data/src/core/lib/slice/slice_string_helpers.h +1 -4
- data/src/core/lib/surface/builtins.cc +7 -2
- data/src/core/lib/surface/byte_buffer.cc +7 -1
- data/src/core/lib/surface/byte_buffer_reader.cc +4 -4
- data/src/core/lib/surface/call.cc +1052 -917
- data/src/core/lib/surface/call.h +16 -16
- data/src/core/lib/surface/call_details.cc +4 -4
- data/src/core/lib/surface/call_log_batch.cc +7 -1
- data/src/core/lib/surface/call_test_only.h +4 -1
- data/src/core/lib/surface/channel.cc +181 -243
- data/src/core/lib/surface/channel.h +94 -57
- data/src/core/lib/surface/channel_init.cc +2 -3
- data/src/core/lib/surface/channel_init.h +3 -5
- data/src/core/lib/surface/channel_ping.cc +8 -2
- data/src/core/lib/surface/channel_stack_type.cc +0 -2
- data/src/core/lib/surface/channel_stack_type.h +0 -2
- data/src/core/lib/surface/completion_queue.cc +14 -6
- data/src/core/lib/surface/completion_queue.h +5 -1
- data/src/core/lib/surface/completion_queue_factory.cc +1 -0
- data/src/core/lib/surface/completion_queue_factory.h +1 -3
- data/src/core/lib/surface/event_string.cc +1 -7
- data/src/core/lib/surface/event_string.h +1 -1
- data/src/core/lib/surface/init.cc +17 -45
- data/src/core/lib/surface/init.h +0 -8
- data/src/core/lib/surface/lame_client.cc +64 -110
- data/src/core/lib/surface/lame_client.h +40 -2
- data/src/core/lib/surface/metadata_array.cc +2 -0
- data/src/core/lib/surface/server.cc +72 -70
- data/src/core/lib/surface/server.h +40 -11
- data/src/core/lib/surface/validate_metadata.cc +2 -5
- data/src/core/lib/surface/validate_metadata.h +3 -0
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/bdp_estimator.cc +3 -1
- data/src/core/lib/transport/bdp_estimator.h +2 -3
- data/src/core/lib/transport/byte_stream.cc +6 -3
- data/src/core/lib/transport/byte_stream.h +5 -1
- data/src/core/lib/transport/connectivity_state.cc +6 -4
- data/src/core/lib/transport/connectivity_state.h +2 -3
- data/src/core/lib/transport/error_utils.cc +4 -2
- data/src/core/lib/transport/error_utils.h +5 -1
- data/src/core/lib/{channel → transport}/handshaker.cc +9 -4
- data/src/core/lib/{channel → transport}/handshaker.h +13 -6
- data/src/core/lib/{channel → transport}/handshaker_factory.h +9 -10
- data/src/core/lib/{channel → transport}/handshaker_registry.cc +5 -1
- data/src/core/lib/{channel → transport}/handshaker_registry.h +5 -4
- data/src/core/{ext/filters/client_channel → lib/transport}/http_connect_handshaker.cc +24 -10
- data/src/core/{ext/filters/client_channel → lib/transport}/http_connect_handshaker.h +3 -3
- data/src/core/lib/transport/metadata_batch.cc +287 -0
- data/src/core/lib/transport/metadata_batch.h +142 -269
- data/src/core/lib/transport/parsed_metadata.cc +2 -0
- data/src/core/lib/transport/parsed_metadata.h +10 -3
- data/src/core/lib/transport/status_conversion.cc +2 -0
- data/src/core/lib/transport/status_conversion.h +2 -2
- data/src/core/lib/transport/tcp_connect_handshaker.cc +253 -0
- data/src/core/lib/transport/tcp_connect_handshaker.h +39 -0
- data/src/core/lib/transport/timeout_encoding.cc +2 -6
- data/src/core/lib/transport/timeout_encoding.h +5 -1
- data/src/core/lib/transport/transport.cc +18 -17
- data/src/core/lib/transport/transport.h +48 -7
- data/src/core/lib/transport/transport_impl.h +14 -3
- data/src/core/lib/transport/transport_op_string.cc +9 -10
- data/src/core/lib/uri/uri_parser.cc +11 -3
- data/src/core/lib/uri/uri_parser.h +0 -2
- data/src/core/plugin_registry/grpc_plugin_registry.cc +13 -4
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +2 -2
- data/src/core/tsi/ssl/session_cache/ssl_session.h +2 -0
- data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +2 -0
- data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +2 -0
- data/src/core/tsi/ssl_transport_security.cc +75 -38
- data/src/core/tsi/ssl_transport_security.h +8 -2
- data/src/core/tsi/transport_security_interface.h +2 -0
- data/src/ruby/ext/grpc/extconf.rb +2 -2
- 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/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/cleanup/cleanup.h +140 -0
- data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +100 -0
- data/third_party/abseil-cpp/absl/container/flat_hash_set.h +504 -0
- data/third_party/upb/third_party/utf8_range/utf8_range.h +1 -1
- data/third_party/upb/upb/decode.c +32 -16
- data/third_party/upb/upb/def.c +118 -55
- data/third_party/upb/upb/def.h +12 -3
- data/third_party/upb/upb/encode.c +14 -8
- 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 +5 -7
- data/third_party/upb/upb/msg.h +1 -2
- data/third_party/upb/upb/msg_internal.h +49 -36
- 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/table.c +10 -6
- data/third_party/upb/upb/table_internal.h +2 -0
- data/third_party/upb/upb/upb.h +41 -11
- 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 +100 -72
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_event_engine.cc +0 -31
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_event_engine.cc +0 -28
- data/src/core/ext/filters/client_idle/client_idle_filter.cc +0 -201
- data/src/core/ext/filters/max_age/max_age_filter.cc +0 -566
- data/src/core/lib/event_engine/sockaddr.cc +0 -40
- data/src/core/lib/event_engine/sockaddr.h +0 -44
- data/src/core/lib/gprpp/capture.h +0 -76
- data/src/core/lib/iomgr/ev_epollex_linux.cc +0 -1657
- data/src/core/lib/iomgr/ev_epollex_linux.h +0 -30
- data/src/core/lib/iomgr/event_engine/closure.cc +0 -77
- data/src/core/lib/iomgr/event_engine/closure.h +0 -42
- data/src/core/lib/iomgr/event_engine/endpoint.cc +0 -172
- data/src/core/lib/iomgr/event_engine/endpoint.h +0 -52
- data/src/core/lib/iomgr/event_engine/iomgr.cc +0 -85
- data/src/core/lib/iomgr/event_engine/pollset.cc +0 -87
- data/src/core/lib/iomgr/event_engine/promise.h +0 -51
- data/src/core/lib/iomgr/event_engine/resolved_address_internal.cc +0 -47
- data/src/core/lib/iomgr/event_engine/resolved_address_internal.h +0 -37
- data/src/core/lib/iomgr/event_engine/resolver.cc +0 -133
- data/src/core/lib/iomgr/event_engine/resolver.h +0 -56
- data/src/core/lib/iomgr/event_engine/tcp.cc +0 -296
- data/src/core/lib/iomgr/event_engine/timer.cc +0 -62
- data/src/core/lib/iomgr/is_epollexclusive_available.cc +0 -119
- data/src/core/lib/iomgr/sys_epoll_wrapper.h +0 -30
@@ -38,6 +38,7 @@
|
|
38
38
|
#include "src/core/ext/xds/xds_channel_args.h"
|
39
39
|
#include "src/core/ext/xds/xds_client_stats.h"
|
40
40
|
#include "src/core/ext/xds/xds_cluster.h"
|
41
|
+
#include "src/core/ext/xds/xds_cluster_specifier_plugin.h"
|
41
42
|
#include "src/core/ext/xds/xds_endpoint.h"
|
42
43
|
#include "src/core/ext/xds/xds_http_filters.h"
|
43
44
|
#include "src/core/ext/xds/xds_listener.h"
|
@@ -83,43 +84,6 @@ char* g_fallback_bootstrap_config ABSL_GUARDED_BY(*g_mu) = nullptr;
|
|
83
84
|
|
84
85
|
} // namespace
|
85
86
|
|
86
|
-
class XdsClient::Notifier {
|
87
|
-
public:
|
88
|
-
// Helper template function to invoke `OnError()` on a list of watchers \a
|
89
|
-
// watchers_list within \a work_serializer. Works with all 4 resource types.
|
90
|
-
template <class T>
|
91
|
-
static void ScheduleNotifyWatchersOnErrorInWorkSerializer(
|
92
|
-
XdsClient* xds_client, const T& watchers_list, grpc_error_handle error,
|
93
|
-
const DebugLocation& location) {
|
94
|
-
xds_client->work_serializer_.Schedule(
|
95
|
-
[watchers_list, error]()
|
96
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&xds_client->work_serializer_) {
|
97
|
-
for (const auto& p : watchers_list) {
|
98
|
-
p.first->OnError(GRPC_ERROR_REF(error));
|
99
|
-
}
|
100
|
-
GRPC_ERROR_UNREF(error);
|
101
|
-
},
|
102
|
-
location);
|
103
|
-
}
|
104
|
-
|
105
|
-
// Helper template function to invoke `OnResourceDoesNotExist()` on a list of
|
106
|
-
// watchers \a watchers_list within \a work_serializer. Works with all 4
|
107
|
-
// resource types.
|
108
|
-
template <class T>
|
109
|
-
static void ScheduleNotifyWatchersOnResourceDoesNotExistInWorkSerializer(
|
110
|
-
XdsClient* xds_client, const T& watchers_list,
|
111
|
-
const DebugLocation& location) {
|
112
|
-
xds_client->work_serializer_.Schedule(
|
113
|
-
[watchers_list]()
|
114
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&xds_client->work_serializer_) {
|
115
|
-
for (const auto& p : watchers_list) {
|
116
|
-
p.first->OnResourceDoesNotExist();
|
117
|
-
}
|
118
|
-
},
|
119
|
-
location);
|
120
|
-
}
|
121
|
-
};
|
122
|
-
|
123
87
|
//
|
124
88
|
// Internal class declarations
|
125
89
|
//
|
@@ -177,7 +141,8 @@ class XdsClient::ChannelState::AdsCallState
|
|
177
141
|
XdsClient* xds_client() const { return chand()->xds_client(); }
|
178
142
|
bool seen_response() const { return seen_response_; }
|
179
143
|
|
180
|
-
void SubscribeLocked(const XdsResourceType* type, const XdsResourceName& name
|
144
|
+
void SubscribeLocked(const XdsResourceType* type, const XdsResourceName& name,
|
145
|
+
bool delay_send)
|
181
146
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
|
182
147
|
void UnsubscribeLocked(const XdsResourceType* type,
|
183
148
|
const XdsResourceName& name, bool delay_unsubscription)
|
@@ -233,9 +198,20 @@ class XdsClient::ChannelState::AdsCallState
|
|
233
198
|
Unref(DEBUG_LOCATION, "Orphan");
|
234
199
|
}
|
235
200
|
|
236
|
-
void MaybeStartTimer(RefCountedPtr<AdsCallState> ads_calld)
|
237
|
-
|
238
|
-
|
201
|
+
void MaybeStartTimer(RefCountedPtr<AdsCallState> ads_calld)
|
202
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_) {
|
203
|
+
if (!timer_start_needed_) return;
|
204
|
+
timer_start_needed_ = false;
|
205
|
+
// Check if we already have a cached version of this resource
|
206
|
+
// (i.e., if this is the initial request for the resource after an
|
207
|
+
// ADS stream restart). If so, we don't start the timer, because
|
208
|
+
// (a) we already have the resource and (b) the server may
|
209
|
+
// optimize by not resending the resource that we already have.
|
210
|
+
auto& authority_state =
|
211
|
+
ads_calld->xds_client()->authority_state_map_[name_.authority];
|
212
|
+
ResourceState& state = authority_state.resource_map[type_][name_.key];
|
213
|
+
if (state.resource != nullptr) return;
|
214
|
+
// Start timer.
|
239
215
|
ads_calld_ = std::move(ads_calld);
|
240
216
|
Ref(DEBUG_LOCATION, "timer").release();
|
241
217
|
timer_pending_ = true;
|
@@ -246,6 +222,18 @@ class XdsClient::ChannelState::AdsCallState
|
|
246
222
|
}
|
247
223
|
|
248
224
|
void MaybeCancelTimer() {
|
225
|
+
// If the timer hasn't been started yet, make sure we don't start
|
226
|
+
// it later. This can happen if the last watch for an LDS or CDS
|
227
|
+
// resource is cancelled and then restarted, both while an ADS
|
228
|
+
// request for a different resource type is being sent (causing
|
229
|
+
// the unsubscription and then resubscription requests to be
|
230
|
+
// queued), and then we get a response for the LDS or CDS resource.
|
231
|
+
// In that case, we would call MaybeCancelTimer() when we receive the
|
232
|
+
// response and then MaybeStartTimer() when we finally send the new
|
233
|
+
// LDS or CDS request, thus causing the timer to fire when it shouldn't.
|
234
|
+
// For details, see https://github.com/grpc/grpc/issues/29583.
|
235
|
+
// TODO(roth): Find a way to write a test for this case.
|
236
|
+
timer_start_needed_ = false;
|
249
237
|
if (timer_pending_) {
|
250
238
|
grpc_timer_cancel(&timer_);
|
251
239
|
timer_pending_ = false;
|
@@ -268,27 +256,23 @@ class XdsClient::ChannelState::AdsCallState
|
|
268
256
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_) {
|
269
257
|
if (error == GRPC_ERROR_NONE && timer_pending_) {
|
270
258
|
timer_pending_ = false;
|
271
|
-
grpc_error_handle watcher_error =
|
272
|
-
GRPC_ERROR_CREATE_FROM_CPP_STRING(absl::StrFormat(
|
273
|
-
"timeout obtaining resource {type=%s name=%s} from xds server",
|
274
|
-
type_->type_url(),
|
275
|
-
XdsClient::ConstructFullXdsResourceName(
|
276
|
-
name_.authority, type_->type_url(), name_.key)));
|
277
|
-
watcher_error = grpc_error_set_int(
|
278
|
-
watcher_error, GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE);
|
279
259
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
280
|
-
gpr_log(GPR_INFO,
|
260
|
+
gpr_log(GPR_INFO,
|
261
|
+
"[xds_client %p] xds server %s: timeout obtaining resource "
|
262
|
+
"{type=%s name=%s} from xds server",
|
281
263
|
ads_calld_->xds_client(),
|
282
264
|
ads_calld_->chand()->server_.server_uri.c_str(),
|
283
|
-
|
265
|
+
std::string(type_->type_url()).c_str(),
|
266
|
+
XdsClient::ConstructFullXdsResourceName(
|
267
|
+
name_.authority, type_->type_url(), name_.key)
|
268
|
+
.c_str());
|
284
269
|
}
|
285
270
|
auto& authority_state =
|
286
271
|
ads_calld_->xds_client()->authority_state_map_[name_.authority];
|
287
272
|
ResourceState& state = authority_state.resource_map[type_][name_.key];
|
288
273
|
state.meta.client_status = XdsApi::ResourceMetadata::DOES_NOT_EXIST;
|
289
|
-
|
290
|
-
|
291
|
-
DEBUG_LOCATION);
|
274
|
+
ads_calld_->xds_client()->NotifyWatchersOnResourceDoesNotExist(
|
275
|
+
state.watchers);
|
292
276
|
}
|
293
277
|
GRPC_ERROR_UNREF(error);
|
294
278
|
}
|
@@ -297,7 +281,7 @@ class XdsClient::ChannelState::AdsCallState
|
|
297
281
|
const XdsResourceName name_;
|
298
282
|
|
299
283
|
RefCountedPtr<AdsCallState> ads_calld_;
|
300
|
-
bool
|
284
|
+
bool timer_start_needed_ = true;
|
301
285
|
bool timer_pending_ = false;
|
302
286
|
grpc_timer timer_;
|
303
287
|
grpc_closure timer_callback_;
|
@@ -333,7 +317,8 @@ class XdsClient::ChannelState::AdsCallState
|
|
333
317
|
|
334
318
|
// Constructs a list of resource names of a given type for an ADS
|
335
319
|
// request. Also starts the timer for each resource if needed.
|
336
|
-
std::vector<std::string> ResourceNamesForRequest(const XdsResourceType* type)
|
320
|
+
std::vector<std::string> ResourceNamesForRequest(const XdsResourceType* type)
|
321
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
|
337
322
|
|
338
323
|
// The owning RetryableCall<>.
|
339
324
|
RefCountedPtr<RetryableCall<AdsCallState>> parent_;
|
@@ -495,7 +480,7 @@ class XdsClient::ChannelState::StateWatcher
|
|
495
480
|
parent_->xds_client(), parent_->server_.server_uri.c_str(),
|
496
481
|
status.ToString().c_str());
|
497
482
|
parent_->xds_client_->NotifyOnErrorLocked(
|
498
|
-
|
483
|
+
absl::UnavailableError(absl::StrCat(
|
499
484
|
"xds channel in TRANSIENT_FAILURE, connectivity error: ",
|
500
485
|
status.ToString())));
|
501
486
|
}
|
@@ -594,7 +579,7 @@ namespace {
|
|
594
579
|
bool IsLameChannel(grpc_channel* channel) {
|
595
580
|
grpc_channel_element* elem =
|
596
581
|
grpc_channel_stack_last_element(grpc_channel_get_channel_stack(channel));
|
597
|
-
return elem->filter == &
|
582
|
+
return elem->filter == &LameClientFilter::kFilter;
|
598
583
|
}
|
599
584
|
|
600
585
|
} // namespace
|
@@ -602,10 +587,11 @@ bool IsLameChannel(grpc_channel* channel) {
|
|
602
587
|
void XdsClient::ChannelState::StartConnectivityWatchLocked() {
|
603
588
|
if (IsLameChannel(channel_)) {
|
604
589
|
xds_client()->NotifyOnErrorLocked(
|
605
|
-
|
590
|
+
absl::UnavailableError("xds client has a lame channel"));
|
606
591
|
return;
|
607
592
|
}
|
608
|
-
ClientChannel* client_channel =
|
593
|
+
ClientChannel* client_channel =
|
594
|
+
ClientChannel::GetFromChannel(Channel::FromC(channel_));
|
609
595
|
GPR_ASSERT(client_channel != nullptr);
|
610
596
|
watcher_ = new StateWatcher(WeakRef(DEBUG_LOCATION, "ChannelState+watch"));
|
611
597
|
client_channel->AddConnectivityWatcher(
|
@@ -617,7 +603,8 @@ void XdsClient::ChannelState::CancelConnectivityWatchLocked() {
|
|
617
603
|
if (IsLameChannel(channel_)) {
|
618
604
|
return;
|
619
605
|
}
|
620
|
-
ClientChannel* client_channel =
|
606
|
+
ClientChannel* client_channel =
|
607
|
+
ClientChannel::GetFromChannel(Channel::FromC(channel_));
|
621
608
|
GPR_ASSERT(client_channel != nullptr);
|
622
609
|
client_channel->RemoveConnectivityWatcher(watcher_);
|
623
610
|
}
|
@@ -637,7 +624,7 @@ void XdsClient::ChannelState::SubscribeLocked(const XdsResourceType* type,
|
|
637
624
|
// because when the call is restarted it will resend all necessary requests.
|
638
625
|
if (ads_calld() == nullptr) return;
|
639
626
|
// Subscribe to this resource if the ADS call is active.
|
640
|
-
ads_calld()->SubscribeLocked(type, name);
|
627
|
+
ads_calld()->SubscribeLocked(type, name, /*delay_send=*/false);
|
641
628
|
}
|
642
629
|
|
643
630
|
void XdsClient::ChannelState::UnsubscribeLocked(const XdsResourceType* type,
|
@@ -685,17 +672,11 @@ void XdsClient::ChannelState::RetryableCall<T>::Orphan() {
|
|
685
672
|
|
686
673
|
template <typename T>
|
687
674
|
void XdsClient::ChannelState::RetryableCall<T>::OnCallFinishedLocked() {
|
688
|
-
|
675
|
+
// If we saw a response on the current stream, reset backoff.
|
676
|
+
if (calld_->seen_response()) backoff_.Reset();
|
689
677
|
calld_.reset();
|
690
|
-
|
691
|
-
|
692
|
-
// call immediately.
|
693
|
-
backoff_.Reset();
|
694
|
-
StartNewCallLocked();
|
695
|
-
} else {
|
696
|
-
// If we failed to connect to the xds server, retry later.
|
697
|
-
StartRetryTimerLocked();
|
698
|
-
}
|
678
|
+
// Start retry timer.
|
679
|
+
StartRetryTimerLocked();
|
699
680
|
}
|
700
681
|
|
701
682
|
template <typename T>
|
@@ -833,7 +814,7 @@ void XdsClient::ChannelState::AdsCallState::AdsResponseParser::ParseResource(
|
|
833
814
|
}
|
834
815
|
// Check the resource name.
|
835
816
|
auto resource_name =
|
836
|
-
|
817
|
+
xds_client()->ParseXdsResourceName(result->name, result_.type);
|
837
818
|
if (!resource_name.ok()) {
|
838
819
|
result_.errors.emplace_back(absl::StrCat(
|
839
820
|
"resource index ", idx, ": Cannot parse xDS resource name \"",
|
@@ -880,13 +861,10 @@ void XdsClient::ChannelState::AdsCallState::AdsResponseParser::ParseResource(
|
|
880
861
|
result_.errors.emplace_back(absl::StrCat(
|
881
862
|
"resource index ", idx, ": ", result->name,
|
882
863
|
": validation error: ", result->resource.status().ToString()));
|
883
|
-
|
884
|
-
|
885
|
-
|
886
|
-
|
887
|
-
"invalid resource: ", result->resource.status().ToString())),
|
888
|
-
GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE),
|
889
|
-
DEBUG_LOCATION);
|
864
|
+
xds_client()->NotifyWatchersOnErrorLocked(
|
865
|
+
resource_state.watchers,
|
866
|
+
absl::UnavailableError(absl::StrCat(
|
867
|
+
"invalid resource: ", result->resource.status().ToString())));
|
890
868
|
UpdateResourceMetadataNacked(result_.version,
|
891
869
|
result->resource.status().ToString(),
|
892
870
|
update_time_, &resource_state.meta);
|
@@ -988,10 +966,13 @@ XdsClient::ChannelState::AdsCallState::AdsCallState(
|
|
988
966
|
const XdsResourceType* type = t.first;
|
989
967
|
for (const auto& r : t.second) {
|
990
968
|
const XdsResourceKey& resource_key = r.first;
|
991
|
-
SubscribeLocked(type, {authority, resource_key});
|
969
|
+
SubscribeLocked(type, {authority, resource_key}, /*delay_send=*/true);
|
992
970
|
}
|
993
971
|
}
|
994
972
|
}
|
973
|
+
for (const auto& p : state_map_) {
|
974
|
+
SendMessageLocked(p.first);
|
975
|
+
}
|
995
976
|
// Op: recv initial metadata.
|
996
977
|
op = ops;
|
997
978
|
op->op = GRPC_OP_RECV_INITIAL_METADATA;
|
@@ -1106,11 +1087,11 @@ void XdsClient::ChannelState::AdsCallState::SendMessageLocked(
|
|
1106
1087
|
}
|
1107
1088
|
|
1108
1089
|
void XdsClient::ChannelState::AdsCallState::SubscribeLocked(
|
1109
|
-
const XdsResourceType* type, const XdsResourceName& name) {
|
1090
|
+
const XdsResourceType* type, const XdsResourceName& name, bool delay_send) {
|
1110
1091
|
auto& state = state_map_[type].subscribed_resources[name.authority][name.key];
|
1111
1092
|
if (state == nullptr) {
|
1112
1093
|
state = MakeOrphanable<ResourceTimer>(type, name);
|
1113
|
-
SendMessageLocked(type);
|
1094
|
+
if (!delay_send) SendMessageLocked(type);
|
1114
1095
|
}
|
1115
1096
|
}
|
1116
1097
|
|
@@ -1204,6 +1185,7 @@ bool XdsClient::ChannelState::AdsCallState::OnResponseReceivedLocked() {
|
|
1204
1185
|
xds_client(), chand()->server_.server_uri.c_str(),
|
1205
1186
|
status.ToString().c_str());
|
1206
1187
|
} else {
|
1188
|
+
seen_response_ = true;
|
1207
1189
|
AdsResponseParser::Result result = parser.TakeResult();
|
1208
1190
|
// Update nonce.
|
1209
1191
|
auto& state = state_map_[result.type];
|
@@ -1250,16 +1232,14 @@ bool XdsClient::ChannelState::AdsCallState::OnResponseReceivedLocked() {
|
|
1250
1232
|
// instead.
|
1251
1233
|
if (resource_state.resource == nullptr) continue;
|
1252
1234
|
resource_state.resource.reset();
|
1253
|
-
|
1254
|
-
|
1255
|
-
xds_client(), resource_state.watchers, DEBUG_LOCATION);
|
1235
|
+
xds_client()->NotifyWatchersOnResourceDoesNotExist(
|
1236
|
+
resource_state.watchers);
|
1256
1237
|
}
|
1257
1238
|
}
|
1258
1239
|
}
|
1259
1240
|
}
|
1260
1241
|
// If we had valid resources, update the version.
|
1261
1242
|
if (result.have_valid_resources) {
|
1262
|
-
seen_response_ = true;
|
1263
1243
|
chand()->resource_type_version_map_[result.type] =
|
1264
1244
|
std::move(result.version);
|
1265
1245
|
// Start load reporting if needed.
|
@@ -1317,13 +1297,11 @@ void XdsClient::ChannelState::AdsCallState::OnStatusReceivedLocked(
|
|
1317
1297
|
// Try to restart the call.
|
1318
1298
|
parent_->OnCallFinishedLocked();
|
1319
1299
|
// Send error to all watchers.
|
1320
|
-
xds_client()->NotifyOnErrorLocked(
|
1321
|
-
|
1322
|
-
|
1323
|
-
|
1324
|
-
|
1325
|
-
StringViewFromSlice(status_details_),
|
1326
|
-
grpc_error_std_string(error))));
|
1300
|
+
xds_client()->NotifyOnErrorLocked(absl::UnavailableError(absl::StrFormat(
|
1301
|
+
"xDS call failed: xDS server: %s, ADS call status code=%d, "
|
1302
|
+
"details='%s', error='%s'",
|
1303
|
+
chand()->server_.server_uri, status_code_,
|
1304
|
+
StringViewFromSlice(status_details_), grpc_error_std_string(error))));
|
1327
1305
|
}
|
1328
1306
|
GRPC_ERROR_UNREF(error);
|
1329
1307
|
}
|
@@ -1836,6 +1814,7 @@ XdsClient::XdsClient(std::unique_ptr<XdsBootstrap> bootstrap,
|
|
1836
1814
|
bootstrap_(std::move(bootstrap)),
|
1837
1815
|
args_(ModifyChannelArgs(args)),
|
1838
1816
|
request_timeout_(GetRequestTimeout(args)),
|
1817
|
+
xds_federation_enabled_(XdsFederationEnabled()),
|
1839
1818
|
interested_parties_(grpc_pollset_set_create()),
|
1840
1819
|
certificate_provider_store_(MakeOrphanable<CertificateProviderStore>(
|
1841
1820
|
bootstrap_->certificate_providers())),
|
@@ -1895,7 +1874,7 @@ void XdsClient::WatchResource(const XdsResourceType* type,
|
|
1895
1874
|
RefCountedPtr<ResourceWatcherInterface> watcher) {
|
1896
1875
|
ResourceWatcherInterface* w = watcher.get();
|
1897
1876
|
// Lambda for handling failure cases.
|
1898
|
-
auto fail = [&](
|
1877
|
+
auto fail = [&](absl::Status status) mutable {
|
1899
1878
|
{
|
1900
1879
|
MutexLock lock(&mu_);
|
1901
1880
|
MaybeRegisterResourceTypeLocked(type);
|
@@ -1904,14 +1883,14 @@ void XdsClient::WatchResource(const XdsResourceType* type,
|
|
1904
1883
|
work_serializer_.Run(
|
1905
1884
|
// TODO(yashykt): When we move to C++14, capture watcher using
|
1906
1885
|
// std::move()
|
1907
|
-
[watcher,
|
1908
|
-
watcher->OnError(
|
1886
|
+
[watcher, status]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(&work_serializer_) {
|
1887
|
+
watcher->OnError(status);
|
1909
1888
|
},
|
1910
1889
|
DEBUG_LOCATION);
|
1911
1890
|
};
|
1912
1891
|
auto resource_name = ParseXdsResourceName(name, type);
|
1913
1892
|
if (!resource_name.ok()) {
|
1914
|
-
fail(
|
1893
|
+
fail(absl::UnavailableError(absl::StrFormat(
|
1915
1894
|
"Unable to parse resource name for listener %s", name)));
|
1916
1895
|
return;
|
1917
1896
|
}
|
@@ -1921,7 +1900,7 @@ void XdsClient::WatchResource(const XdsResourceType* type,
|
|
1921
1900
|
if (absl::ConsumePrefix(&authority_name, "xdstp:")) {
|
1922
1901
|
auto* authority = bootstrap_->LookupAuthority(std::string(authority_name));
|
1923
1902
|
if (authority == nullptr) {
|
1924
|
-
fail(
|
1903
|
+
fail(absl::UnavailableError(
|
1925
1904
|
absl::StrCat("authority \"", authority_name,
|
1926
1905
|
"\" not present in bootstrap config")));
|
1927
1906
|
return;
|
@@ -1972,12 +1951,11 @@ void XdsClient::CancelResourceWatch(const XdsResourceType* type,
|
|
1972
1951
|
bool delay_unsubscription) {
|
1973
1952
|
auto resource_name = ParseXdsResourceName(name, type);
|
1974
1953
|
MutexLock lock(&mu_);
|
1975
|
-
|
1976
|
-
|
1977
|
-
|
1978
|
-
}
|
1979
|
-
if (shutting_down_) return;
|
1954
|
+
// We cannot be sure whether the watcher is in invalid_watchers_ or in
|
1955
|
+
// authority_state_map_, so we check both, just to be safe.
|
1956
|
+
invalid_watchers_.erase(watcher);
|
1980
1957
|
// Find authority.
|
1958
|
+
if (!resource_name.ok()) return;
|
1981
1959
|
auto authority_it = authority_state_map_.find(resource_name->authority);
|
1982
1960
|
if (authority_it == authority_state_map_.end()) return;
|
1983
1961
|
AuthorityState& authority_state = authority_it->second;
|
@@ -2030,7 +2008,7 @@ absl::StatusOr<XdsClient::XdsResourceName> XdsClient::ParseXdsResourceName(
|
|
2030
2008
|
absl::string_view name, const XdsResourceType* type) {
|
2031
2009
|
// Old-style names use the empty string for authority.
|
2032
2010
|
// authority is prefixed with "old:" to indicate that it's an old-style name.
|
2033
|
-
if (!absl::StartsWith(name, "xdstp:")) {
|
2011
|
+
if (!xds_federation_enabled_ || !absl::StartsWith(name, "xdstp:")) {
|
2034
2012
|
return XdsResourceName{"old:", {std::string(name), {}}};
|
2035
2013
|
}
|
2036
2014
|
// New style name. Parse URI.
|
@@ -2202,7 +2180,13 @@ void XdsClient::ResetBackoff() {
|
|
2202
2180
|
}
|
2203
2181
|
}
|
2204
2182
|
|
2205
|
-
void XdsClient::NotifyOnErrorLocked(
|
2183
|
+
void XdsClient::NotifyOnErrorLocked(absl::Status status) {
|
2184
|
+
const auto* node = bootstrap_->node();
|
2185
|
+
if (node != nullptr) {
|
2186
|
+
status = absl::Status(
|
2187
|
+
status.code(), absl::StrCat(status.message(),
|
2188
|
+
" (node ID:", bootstrap_->node()->id, ")"));
|
2189
|
+
}
|
2206
2190
|
std::set<RefCountedPtr<ResourceWatcherInterface>> watchers;
|
2207
2191
|
for (const auto& a : authority_state_map_) { // authority
|
2208
2192
|
for (const auto& t : a.second.resource_map) { // type
|
@@ -2216,11 +2200,41 @@ void XdsClient::NotifyOnErrorLocked(grpc_error_handle error) {
|
|
2216
2200
|
work_serializer_.Schedule(
|
2217
2201
|
// TODO(yashykt): When we move to C++14, capture watchers using
|
2218
2202
|
// std::move()
|
2219
|
-
[watchers,
|
2203
|
+
[watchers, status]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(work_serializer_) {
|
2220
2204
|
for (const auto& watcher : watchers) {
|
2221
|
-
watcher->OnError(
|
2205
|
+
watcher->OnError(status);
|
2206
|
+
}
|
2207
|
+
},
|
2208
|
+
DEBUG_LOCATION);
|
2209
|
+
}
|
2210
|
+
|
2211
|
+
void XdsClient::NotifyWatchersOnErrorLocked(
|
2212
|
+
const std::map<ResourceWatcherInterface*,
|
2213
|
+
RefCountedPtr<ResourceWatcherInterface>>& watchers,
|
2214
|
+
absl::Status status) {
|
2215
|
+
const auto* node = bootstrap_->node();
|
2216
|
+
if (node != nullptr) {
|
2217
|
+
status = absl::Status(
|
2218
|
+
status.code(), absl::StrCat(status.message(),
|
2219
|
+
" (node ID:", bootstrap_->node()->id, ")"));
|
2220
|
+
}
|
2221
|
+
work_serializer_.Schedule(
|
2222
|
+
[watchers, status]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(&work_serializer_) {
|
2223
|
+
for (const auto& p : watchers) {
|
2224
|
+
p.first->OnError(status);
|
2225
|
+
}
|
2226
|
+
},
|
2227
|
+
DEBUG_LOCATION);
|
2228
|
+
}
|
2229
|
+
|
2230
|
+
void XdsClient::NotifyWatchersOnResourceDoesNotExist(
|
2231
|
+
const std::map<ResourceWatcherInterface*,
|
2232
|
+
RefCountedPtr<ResourceWatcherInterface>>& watchers) {
|
2233
|
+
work_serializer_.Schedule(
|
2234
|
+
[watchers]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(&work_serializer_) {
|
2235
|
+
for (const auto& p : watchers) {
|
2236
|
+
p.first->OnResourceDoesNotExist();
|
2222
2237
|
}
|
2223
|
-
GRPC_ERROR_UNREF(error);
|
2224
2238
|
},
|
2225
2239
|
DEBUG_LOCATION);
|
2226
2240
|
}
|
@@ -2338,6 +2352,7 @@ std::string XdsClient::DumpClientConfigBinary() {
|
|
2338
2352
|
void XdsClientGlobalInit() {
|
2339
2353
|
g_mu = new Mutex;
|
2340
2354
|
XdsHttpFilterRegistry::Init();
|
2355
|
+
XdsClusterSpecifierPluginRegistry::Init();
|
2341
2356
|
}
|
2342
2357
|
|
2343
2358
|
// TODO(roth): Find a better way to clear the fallback config that does
|
@@ -2348,6 +2363,7 @@ void XdsClientGlobalShutdown() ABSL_NO_THREAD_SAFETY_ANALYSIS {
|
|
2348
2363
|
delete g_mu;
|
2349
2364
|
g_mu = nullptr;
|
2350
2365
|
XdsHttpFilterRegistry::Shutdown();
|
2366
|
+
XdsClusterSpecifierPluginRegistry::Shutdown();
|
2351
2367
|
}
|
2352
2368
|
|
2353
2369
|
namespace {
|
@@ -55,7 +55,7 @@ class XdsClient : public DualRefCounted<XdsClient> {
|
|
55
55
|
virtual void OnGenericResourceChanged(
|
56
56
|
const XdsResourceType::ResourceData* resource)
|
57
57
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&work_serializer_) = 0;
|
58
|
-
virtual void OnError(
|
58
|
+
virtual void OnError(absl::Status status)
|
59
59
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&work_serializer_) = 0;
|
60
60
|
virtual void OnResourceDoesNotExist()
|
61
61
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&work_serializer_) = 0;
|
@@ -266,11 +266,18 @@ class XdsClient : public DualRefCounted<XdsClient> {
|
|
266
266
|
LoadReportMap load_report_map;
|
267
267
|
};
|
268
268
|
|
269
|
-
class Notifier;
|
270
|
-
|
271
269
|
// Sends an error notification to all watchers.
|
272
|
-
void NotifyOnErrorLocked(
|
270
|
+
void NotifyOnErrorLocked(absl::Status status)
|
273
271
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_);
|
272
|
+
// Sends an error notification to a specific set of watchers.
|
273
|
+
void NotifyWatchersOnErrorLocked(
|
274
|
+
const std::map<ResourceWatcherInterface*,
|
275
|
+
RefCountedPtr<ResourceWatcherInterface>>& watchers,
|
276
|
+
absl::Status status);
|
277
|
+
// Sends a resource-does-not-exist notification to a specific set of watchers.
|
278
|
+
void NotifyWatchersOnResourceDoesNotExist(
|
279
|
+
const std::map<ResourceWatcherInterface*,
|
280
|
+
RefCountedPtr<ResourceWatcherInterface>>& watchers);
|
274
281
|
|
275
282
|
void MaybeRegisterResourceTypeLocked(const XdsResourceType* resource_type)
|
276
283
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_);
|
@@ -279,7 +286,7 @@ class XdsClient : public DualRefCounted<XdsClient> {
|
|
279
286
|
const XdsResourceType* GetResourceTypeLocked(absl::string_view resource_type)
|
280
287
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_);
|
281
288
|
|
282
|
-
|
289
|
+
absl::StatusOr<XdsResourceName> ParseXdsResourceName(
|
283
290
|
absl::string_view name, const XdsResourceType* type);
|
284
291
|
static std::string ConstructFullXdsResourceName(
|
285
292
|
absl::string_view authority, absl::string_view resource_type,
|
@@ -295,6 +302,7 @@ class XdsClient : public DualRefCounted<XdsClient> {
|
|
295
302
|
std::unique_ptr<XdsBootstrap> bootstrap_;
|
296
303
|
grpc_channel_args* args_;
|
297
304
|
const Duration request_timeout_;
|
305
|
+
const bool xds_federation_enabled_;
|
298
306
|
grpc_pollset_set* interested_parties_;
|
299
307
|
OrphanablePtr<CertificateProviderStore> certificate_provider_store_;
|
300
308
|
XdsApi api_;
|
@@ -25,6 +25,7 @@
|
|
25
25
|
#include "envoy/config/cluster/v3/circuit_breaker.upb.h"
|
26
26
|
#include "envoy/config/cluster/v3/cluster.upb.h"
|
27
27
|
#include "envoy/config/cluster/v3/cluster.upbdefs.h"
|
28
|
+
#include "envoy/config/cluster/v3/outlier_detection.upb.h"
|
28
29
|
#include "envoy/config/core/v3/address.upb.h"
|
29
30
|
#include "envoy/config/core/v3/base.upb.h"
|
30
31
|
#include "envoy/config/core/v3/config_source.upb.h"
|
@@ -36,6 +37,8 @@
|
|
36
37
|
|
37
38
|
#include <grpc/support/alloc.h>
|
38
39
|
|
40
|
+
#include "src/core/ext/xds/xds_common_types.h"
|
41
|
+
#include "src/core/ext/xds/xds_route_config.h"
|
39
42
|
#include "src/core/lib/gpr/env.h"
|
40
43
|
#include "src/core/lib/gpr/string.h"
|
41
44
|
#include "src/core/lib/gprpp/host_port.h"
|
@@ -203,19 +206,6 @@ grpc_error_handle CdsLogicalDnsParse(
|
|
203
206
|
return GRPC_ERROR_NONE;
|
204
207
|
}
|
205
208
|
|
206
|
-
// TODO(donnadionne): Check to see if cluster types aggregate_cluster and
|
207
|
-
// logical_dns are enabled, this will be
|
208
|
-
// removed once the cluster types are fully integration-tested and enabled by
|
209
|
-
// default.
|
210
|
-
bool XdsAggregateAndLogicalDnsClusterEnabled() {
|
211
|
-
char* value = gpr_getenv(
|
212
|
-
"GRPC_XDS_EXPERIMENTAL_ENABLE_AGGREGATE_AND_LOGICAL_DNS_CLUSTER");
|
213
|
-
bool parsed_value;
|
214
|
-
bool parse_succeeded = gpr_parse_bool_value(value, &parsed_value);
|
215
|
-
gpr_free(value);
|
216
|
-
return parse_succeeded && parsed_value;
|
217
|
-
}
|
218
|
-
|
219
209
|
grpc_error_handle CdsResourceParse(
|
220
210
|
const XdsEncodingContext& context,
|
221
211
|
const envoy_config_cluster_v3_Cluster* cluster, bool /*is_v2*/,
|
@@ -247,9 +237,6 @@ grpc_error_handle CdsResourceParse(
|
|
247
237
|
if (service_name.size != 0) {
|
248
238
|
cds_update->eds_service_name = UpbStringToStdString(service_name);
|
249
239
|
}
|
250
|
-
} else if (!XdsAggregateAndLogicalDnsClusterEnabled()) {
|
251
|
-
errors.push_back(
|
252
|
-
GRPC_ERROR_CREATE_FROM_STATIC_STRING("DiscoveryType is not valid."));
|
253
240
|
} else if (envoy_config_cluster_v3_Cluster_type(cluster) ==
|
254
241
|
envoy_config_cluster_v3_Cluster_LOGICAL_DNS) {
|
255
242
|
cds_update->cluster_type = XdsClusterResource::ClusterType::LOGICAL_DNS;
|
@@ -398,6 +385,109 @@ grpc_error_handle CdsResourceParse(
|
|
398
385
|
}
|
399
386
|
}
|
400
387
|
}
|
388
|
+
// As long as outlier detection field is present in the cluster update,
|
389
|
+
// we will end up with a outlier detection in the cluster resource which will
|
390
|
+
// lead to the creation of outlier detection in discovery mechanism. Values
|
391
|
+
// for outlier detection will be based on fields received and
|
392
|
+
// default values.
|
393
|
+
if (XdsOutlierDetectionEnabled() &&
|
394
|
+
envoy_config_cluster_v3_Cluster_has_outlier_detection(cluster)) {
|
395
|
+
OutlierDetectionConfig outlier_detection_update;
|
396
|
+
const envoy_config_cluster_v3_OutlierDetection* outlier_detection =
|
397
|
+
envoy_config_cluster_v3_Cluster_outlier_detection(cluster);
|
398
|
+
const google_protobuf_Duration* duration =
|
399
|
+
envoy_config_cluster_v3_OutlierDetection_interval(outlier_detection);
|
400
|
+
if (duration != nullptr) {
|
401
|
+
outlier_detection_update.interval = ParseDuration(duration);
|
402
|
+
}
|
403
|
+
duration = envoy_config_cluster_v3_OutlierDetection_base_ejection_time(
|
404
|
+
outlier_detection);
|
405
|
+
if (duration != nullptr) {
|
406
|
+
outlier_detection_update.base_ejection_time = ParseDuration(duration);
|
407
|
+
}
|
408
|
+
duration = envoy_config_cluster_v3_OutlierDetection_max_ejection_time(
|
409
|
+
outlier_detection);
|
410
|
+
if (duration != nullptr) {
|
411
|
+
outlier_detection_update.max_ejection_time = ParseDuration(duration);
|
412
|
+
}
|
413
|
+
const google_protobuf_UInt32Value* max_ejection_percent =
|
414
|
+
envoy_config_cluster_v3_OutlierDetection_max_ejection_percent(
|
415
|
+
outlier_detection);
|
416
|
+
if (max_ejection_percent != nullptr) {
|
417
|
+
outlier_detection_update.max_ejection_percent =
|
418
|
+
google_protobuf_UInt32Value_value(max_ejection_percent);
|
419
|
+
}
|
420
|
+
const google_protobuf_UInt32Value* enforcing_success_rate =
|
421
|
+
envoy_config_cluster_v3_OutlierDetection_enforcing_success_rate(
|
422
|
+
outlier_detection);
|
423
|
+
if (enforcing_success_rate != nullptr) {
|
424
|
+
uint32_t enforcement_percentage =
|
425
|
+
google_protobuf_UInt32Value_value(enforcing_success_rate);
|
426
|
+
if (enforcement_percentage != 0) {
|
427
|
+
OutlierDetectionConfig::SuccessRateEjection success_rate_ejection;
|
428
|
+
success_rate_ejection.enforcement_percentage = enforcement_percentage;
|
429
|
+
const google_protobuf_UInt32Value* minimum_hosts =
|
430
|
+
envoy_config_cluster_v3_OutlierDetection_success_rate_minimum_hosts(
|
431
|
+
outlier_detection);
|
432
|
+
if (minimum_hosts != nullptr) {
|
433
|
+
success_rate_ejection.minimum_hosts =
|
434
|
+
google_protobuf_UInt32Value_value(minimum_hosts);
|
435
|
+
}
|
436
|
+
const google_protobuf_UInt32Value* request_volume =
|
437
|
+
envoy_config_cluster_v3_OutlierDetection_success_rate_request_volume(
|
438
|
+
outlier_detection);
|
439
|
+
if (request_volume != nullptr) {
|
440
|
+
success_rate_ejection.request_volume =
|
441
|
+
google_protobuf_UInt32Value_value(request_volume);
|
442
|
+
}
|
443
|
+
const google_protobuf_UInt32Value* stdev_factor =
|
444
|
+
envoy_config_cluster_v3_OutlierDetection_success_rate_stdev_factor(
|
445
|
+
outlier_detection);
|
446
|
+
if (stdev_factor != nullptr) {
|
447
|
+
success_rate_ejection.stdev_factor =
|
448
|
+
google_protobuf_UInt32Value_value(stdev_factor);
|
449
|
+
}
|
450
|
+
outlier_detection_update.success_rate_ejection = success_rate_ejection;
|
451
|
+
}
|
452
|
+
}
|
453
|
+
const google_protobuf_UInt32Value* enforcing_failure_percentage =
|
454
|
+
envoy_config_cluster_v3_OutlierDetection_enforcing_failure_percentage(
|
455
|
+
outlier_detection);
|
456
|
+
if (enforcing_failure_percentage != nullptr) {
|
457
|
+
uint32_t enforcement_percentage =
|
458
|
+
google_protobuf_UInt32Value_value(enforcing_failure_percentage);
|
459
|
+
if (enforcement_percentage != 0) {
|
460
|
+
OutlierDetectionConfig::FailurePercentageEjection
|
461
|
+
failure_percentage_ejection;
|
462
|
+
failure_percentage_ejection.enforcement_percentage =
|
463
|
+
enforcement_percentage;
|
464
|
+
const google_protobuf_UInt32Value* minimum_hosts =
|
465
|
+
envoy_config_cluster_v3_OutlierDetection_failure_percentage_minimum_hosts(
|
466
|
+
outlier_detection);
|
467
|
+
if (minimum_hosts != nullptr) {
|
468
|
+
failure_percentage_ejection.minimum_hosts =
|
469
|
+
google_protobuf_UInt32Value_value(minimum_hosts);
|
470
|
+
}
|
471
|
+
const google_protobuf_UInt32Value* request_volume =
|
472
|
+
envoy_config_cluster_v3_OutlierDetection_failure_percentage_request_volume(
|
473
|
+
outlier_detection);
|
474
|
+
if (request_volume != nullptr) {
|
475
|
+
failure_percentage_ejection.request_volume =
|
476
|
+
google_protobuf_UInt32Value_value(request_volume);
|
477
|
+
}
|
478
|
+
const google_protobuf_UInt32Value* threshold =
|
479
|
+
envoy_config_cluster_v3_OutlierDetection_failure_percentage_threshold(
|
480
|
+
outlier_detection);
|
481
|
+
if (threshold != nullptr) {
|
482
|
+
failure_percentage_ejection.threshold =
|
483
|
+
google_protobuf_UInt32Value_value(threshold);
|
484
|
+
}
|
485
|
+
outlier_detection_update.failure_percentage_ejection =
|
486
|
+
failure_percentage_ejection;
|
487
|
+
}
|
488
|
+
}
|
489
|
+
cds_update->outlier_detection = outlier_detection_update;
|
490
|
+
}
|
401
491
|
return GRPC_ERROR_CREATE_FROM_VECTOR("errors parsing CDS resource", &errors);
|
402
492
|
}
|
403
493
|
|