grpc 1.46.3-x86_64-linux → 1.47.0-x86_64-linux
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 +49 -97
- 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/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 +18 -30
- data/src/core/ext/filters/channel_idle/channel_idle_filter.h +4 -1
- 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 +60 -17
- data/src/core/ext/filters/client_channel/client_channel.h +26 -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 +14 -1
- data/src/core/ext/filters/client_channel/health/health_check_client.h +2 -0
- data/src/core/ext/filters/client_channel/http_proxy.cc +10 -2
- data/src/core/ext/filters/client_channel/http_proxy.h +3 -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 +102 -60
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +157 -96
- 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 +45 -10
- 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 +30 -5
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +99 -23
- 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 +23 -3
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +75 -11
- 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 +134 -43
- 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 +30 -7
- 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 +13 -1
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +8 -1
- 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 +89 -33
- 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 +42 -2
- 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 +156 -160
- 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 +16 -2
- data/src/core/ext/filters/client_channel/subchannel_stream_client.h +12 -0
- data/src/core/ext/filters/deadline/deadline_filter.cc +6 -2
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +1 -4
- data/src/core/ext/filters/http/client/http_client_filter.cc +14 -5
- data/src/core/ext/filters/http/client/http_client_filter.h +7 -1
- data/src/core/ext/filters/http/client_authority_filter.cc +5 -10
- data/src/core/ext/filters/http/http_filters_plugin.cc +7 -8
- 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 -247
- 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/transport/chttp2/client/chttp2_connector.cc +101 -135
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +9 -7
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +44 -15
- 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 +69 -20
- 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 +12 -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 +14 -12
- 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 +24 -3
- data/src/core/ext/transport/chttp2/transport/parsing.cc +27 -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 +38 -2
- data/src/core/ext/transport/inproc/inproc_transport.cc +8 -5
- 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/xds/certificate_provider_store.cc +4 -2
- data/src/core/ext/xds/certificate_provider_store.h +1 -1
- data/src/core/ext/xds/xds_certificate_provider.cc +4 -1
- data/src/core/ext/xds/xds_certificate_provider.h +1 -1
- data/src/core/ext/xds/xds_channel_stack_modifier.cc +5 -5
- data/src/core/ext/xds/xds_client.cc +46 -22
- 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_http_fault_filter.cc +3 -3
- data/src/core/ext/xds/xds_listener.cc +19 -9
- data/src/core/ext/xds/xds_server_config_fetcher.cc +2 -1
- 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 +3 -1
- data/src/core/lib/channel/call_finalization.h +4 -0
- data/src/core/lib/channel/call_tracer.h +8 -2
- data/src/core/lib/channel/channel_args.cc +41 -22
- data/src/core/lib/channel/channel_args.h +33 -3
- data/src/core/lib/channel/channel_args_preconditioning.cc +3 -3
- data/src/core/lib/channel/channel_args_preconditioning.h +3 -2
- data/src/core/lib/channel/channel_stack.cc +41 -3
- data/src/core/lib/channel/channel_stack.h +49 -3
- data/src/core/lib/channel/channel_stack_builder.cc +9 -19
- data/src/core/lib/channel/channel_stack_builder.h +15 -27
- data/src/core/lib/channel/channel_stack_builder_impl.cc +36 -41
- data/src/core/lib/channel/channel_stack_builder_impl.h +3 -6
- 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 +1 -0
- data/src/core/lib/channel/promise_based_filter.cc +444 -189
- data/src/core/lib/channel/promise_based_filter.h +160 -27
- 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 +45 -10
- 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/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/lib/{iomgr/event_engine/pollset.h → event_engine/trace.cc} +3 -10
- 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 +3 -5
- data/src/core/lib/gprpp/bitset.h +5 -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/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 +2 -0
- data/src/core/lib/gprpp/memory.h +1 -5
- data/src/core/lib/gprpp/orphanable.h +1 -4
- data/src/core/lib/gprpp/ref_counted.h +1 -3
- data/src/core/lib/gprpp/ref_counted_ptr.h +1 -1
- 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 +8 -4
- 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 +8 -0
- data/src/core/lib/gprpp/time.h +6 -1
- 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 +29 -0
- 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 +3 -4
- 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 +1 -4
- data/src/core/lib/iomgr/exec_ctx.h +1 -2
- 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/{ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_event_engine.cc → lib/iomgr/iomgr_fwd.h} +9 -12
- data/src/core/lib/iomgr/pollset_set.h +1 -2
- data/src/core/lib/iomgr/port.h +25 -6
- 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 +12 -5
- data/src/core/lib/iomgr/tcp_client_windows.cc +13 -6
- data/src/core/lib/iomgr/tcp_posix.cc +9 -27
- data/src/core/lib/iomgr/tcp_server_posix.cc +26 -12
- 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 +10 -1
- 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 +4 -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/latch.h +0 -1
- 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 +14 -1
- data/src/core/lib/resource_quota/api.h +4 -1
- 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 +8 -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/grpc_server_authz_filter.cc +3 -0
- data/src/core/lib/security/credentials/alts/alts_credentials.cc +8 -2
- data/src/core/lib/security/credentials/alts/alts_credentials.h +2 -2
- data/src/core/lib/security/credentials/call_creds_util.cc +2 -0
- data/src/core/lib/security/credentials/channel_creds_registry.h +1 -0
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +7 -3
- data/src/core/lib/security/credentials/composite/composite_credentials.h +5 -4
- data/src/core/lib/security/credentials/credentials.h +17 -10
- 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 +13 -3
- data/src/core/lib/security/credentials/fake/fake_credentials.h +2 -2
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +25 -15
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +2 -2
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +4 -1
- data/src/core/lib/security/credentials/iam/iam_credentials.h +2 -2
- data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +8 -2
- data/src/core/lib/security/credentials/insecure/insecure_credentials.h +4 -4
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +3 -2
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +2 -2
- data/src/core/lib/security/credentials/local/local_credentials.cc +8 -2
- data/src/core/lib/security/credentials/local/local_credentials.h +2 -2
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +10 -6
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +4 -4
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +4 -1
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +1 -1
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +8 -2
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +4 -4
- 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 +5 -7
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +26 -1
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +28 -4
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +10 -0
- data/src/core/lib/security/credentials/tls/tls_credentials.h +2 -2
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +12 -3
- data/src/core/lib/security/credentials/xds/xds_credentials.h +5 -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/security_connector.cc +1 -1
- data/src/core/lib/security/security_connector/security_connector.h +1 -1
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +1 -1
- data/src/core/lib/security/transport/client_auth_filter.cc +6 -8
- data/src/core/lib/security/transport/secure_endpoint.cc +23 -12
- data/src/core/lib/security/transport/security_handshaker.cc +5 -5
- 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/slice/slice_buffer_api.cc +35 -0
- 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 +41 -26
- data/src/core/lib/surface/call.h +16 -2
- 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 +179 -242
- data/src/core/lib/surface/channel.h +94 -57
- data/src/core/lib/surface/channel_init.h +2 -0
- 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 +69 -56
- data/src/core/lib/surface/server.h +39 -9
- 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 +4 -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 +133 -264
- 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 +28 -2
- data/src/core/lib/transport/transport_impl.h +10 -0
- 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 +11 -0
- 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/ruby/ext/grpc/extconf.rb +2 -2
- data/src/ruby/lib/grpc/2.5/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/2.6/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/2.7/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/3.0/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/3.1/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/version.rb +1 -1
- 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
- metadata +36 -29
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_event_engine.cc +0 -31
- 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/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
@@ -0,0 +1,109 @@
|
|
1
|
+
/* This file was generated by upbc (the upb compiler) from the input
|
2
|
+
* file:
|
3
|
+
*
|
4
|
+
* xds/service/orca/v3/orca.proto
|
5
|
+
*
|
6
|
+
* Do not edit -- your changes will be discarded when the file is
|
7
|
+
* regenerated. */
|
8
|
+
|
9
|
+
#ifndef XDS_SERVICE_ORCA_V3_ORCA_PROTO_UPB_H_
|
10
|
+
#define XDS_SERVICE_ORCA_V3_ORCA_PROTO_UPB_H_
|
11
|
+
|
12
|
+
#include "upb/msg_internal.h"
|
13
|
+
#include "upb/decode.h"
|
14
|
+
#include "upb/decode_fast.h"
|
15
|
+
#include "upb/encode.h"
|
16
|
+
|
17
|
+
#include "upb/port_def.inc"
|
18
|
+
|
19
|
+
#ifdef __cplusplus
|
20
|
+
extern "C" {
|
21
|
+
#endif
|
22
|
+
|
23
|
+
struct xds_service_orca_v3_OrcaLoadReportRequest;
|
24
|
+
typedef struct xds_service_orca_v3_OrcaLoadReportRequest xds_service_orca_v3_OrcaLoadReportRequest;
|
25
|
+
extern const upb_MiniTable xds_service_orca_v3_OrcaLoadReportRequest_msginit;
|
26
|
+
struct google_protobuf_Duration;
|
27
|
+
extern const upb_MiniTable google_protobuf_Duration_msginit;
|
28
|
+
|
29
|
+
|
30
|
+
|
31
|
+
/* xds.service.orca.v3.OrcaLoadReportRequest */
|
32
|
+
|
33
|
+
UPB_INLINE xds_service_orca_v3_OrcaLoadReportRequest* xds_service_orca_v3_OrcaLoadReportRequest_new(upb_Arena* arena) {
|
34
|
+
return (xds_service_orca_v3_OrcaLoadReportRequest*)_upb_Message_New(&xds_service_orca_v3_OrcaLoadReportRequest_msginit, arena);
|
35
|
+
}
|
36
|
+
UPB_INLINE xds_service_orca_v3_OrcaLoadReportRequest* xds_service_orca_v3_OrcaLoadReportRequest_parse(const char* buf, size_t size, upb_Arena* arena) {
|
37
|
+
xds_service_orca_v3_OrcaLoadReportRequest* ret = xds_service_orca_v3_OrcaLoadReportRequest_new(arena);
|
38
|
+
if (!ret) return NULL;
|
39
|
+
if (upb_Decode(buf, size, ret, &xds_service_orca_v3_OrcaLoadReportRequest_msginit, NULL, 0, arena) != kUpb_DecodeStatus_Ok) {
|
40
|
+
return NULL;
|
41
|
+
}
|
42
|
+
return ret;
|
43
|
+
}
|
44
|
+
UPB_INLINE xds_service_orca_v3_OrcaLoadReportRequest* xds_service_orca_v3_OrcaLoadReportRequest_parse_ex(const char* buf, size_t size,
|
45
|
+
const upb_ExtensionRegistry* extreg,
|
46
|
+
int options, upb_Arena* arena) {
|
47
|
+
xds_service_orca_v3_OrcaLoadReportRequest* ret = xds_service_orca_v3_OrcaLoadReportRequest_new(arena);
|
48
|
+
if (!ret) return NULL;
|
49
|
+
if (upb_Decode(buf, size, ret, &xds_service_orca_v3_OrcaLoadReportRequest_msginit, extreg, options, arena) !=
|
50
|
+
kUpb_DecodeStatus_Ok) {
|
51
|
+
return NULL;
|
52
|
+
}
|
53
|
+
return ret;
|
54
|
+
}
|
55
|
+
UPB_INLINE char* xds_service_orca_v3_OrcaLoadReportRequest_serialize(const xds_service_orca_v3_OrcaLoadReportRequest* msg, upb_Arena* arena, size_t* len) {
|
56
|
+
return upb_Encode(msg, &xds_service_orca_v3_OrcaLoadReportRequest_msginit, 0, arena, len);
|
57
|
+
}
|
58
|
+
UPB_INLINE char* xds_service_orca_v3_OrcaLoadReportRequest_serialize_ex(const xds_service_orca_v3_OrcaLoadReportRequest* msg, int options,
|
59
|
+
upb_Arena* arena, size_t* len) {
|
60
|
+
return upb_Encode(msg, &xds_service_orca_v3_OrcaLoadReportRequest_msginit, options, arena, len);
|
61
|
+
}
|
62
|
+
UPB_INLINE bool xds_service_orca_v3_OrcaLoadReportRequest_has_report_interval(const xds_service_orca_v3_OrcaLoadReportRequest* msg) {
|
63
|
+
return _upb_hasbit(msg, 1);
|
64
|
+
}
|
65
|
+
UPB_INLINE void xds_service_orca_v3_OrcaLoadReportRequest_clear_report_interval(const xds_service_orca_v3_OrcaLoadReportRequest* msg) {
|
66
|
+
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
|
67
|
+
}
|
68
|
+
UPB_INLINE const struct google_protobuf_Duration* xds_service_orca_v3_OrcaLoadReportRequest_report_interval(const xds_service_orca_v3_OrcaLoadReportRequest* msg) {
|
69
|
+
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct google_protobuf_Duration*);
|
70
|
+
}
|
71
|
+
UPB_INLINE void xds_service_orca_v3_OrcaLoadReportRequest_clear_request_cost_names(const xds_service_orca_v3_OrcaLoadReportRequest* msg) {
|
72
|
+
_upb_array_detach(msg, UPB_SIZE(8, 16));
|
73
|
+
}
|
74
|
+
UPB_INLINE upb_StringView const* xds_service_orca_v3_OrcaLoadReportRequest_request_cost_names(const xds_service_orca_v3_OrcaLoadReportRequest* msg, size_t* len) {
|
75
|
+
return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(8, 16), len);
|
76
|
+
}
|
77
|
+
|
78
|
+
UPB_INLINE void xds_service_orca_v3_OrcaLoadReportRequest_set_report_interval(xds_service_orca_v3_OrcaLoadReportRequest *msg, struct google_protobuf_Duration* value) {
|
79
|
+
_upb_sethas(msg, 1);
|
80
|
+
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct google_protobuf_Duration*) = value;
|
81
|
+
}
|
82
|
+
UPB_INLINE struct google_protobuf_Duration* xds_service_orca_v3_OrcaLoadReportRequest_mutable_report_interval(xds_service_orca_v3_OrcaLoadReportRequest* msg, upb_Arena* arena) {
|
83
|
+
struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)xds_service_orca_v3_OrcaLoadReportRequest_report_interval(msg);
|
84
|
+
if (sub == NULL) {
|
85
|
+
sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
|
86
|
+
if (!sub) return NULL;
|
87
|
+
xds_service_orca_v3_OrcaLoadReportRequest_set_report_interval(msg, sub);
|
88
|
+
}
|
89
|
+
return sub;
|
90
|
+
}
|
91
|
+
UPB_INLINE upb_StringView* xds_service_orca_v3_OrcaLoadReportRequest_mutable_request_cost_names(xds_service_orca_v3_OrcaLoadReportRequest* msg, size_t* len) {
|
92
|
+
return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(8, 16), len);
|
93
|
+
}
|
94
|
+
UPB_INLINE upb_StringView* xds_service_orca_v3_OrcaLoadReportRequest_resize_request_cost_names(xds_service_orca_v3_OrcaLoadReportRequest* msg, size_t len, upb_Arena* arena) {
|
95
|
+
return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(8, 16), len, UPB_SIZE(3, 4), arena);
|
96
|
+
}
|
97
|
+
UPB_INLINE bool xds_service_orca_v3_OrcaLoadReportRequest_add_request_cost_names(xds_service_orca_v3_OrcaLoadReportRequest* msg, upb_StringView val, upb_Arena* arena) {
|
98
|
+
return _upb_Array_Append_accessor2(msg, UPB_SIZE(8, 16), UPB_SIZE(3, 4), &val, arena);
|
99
|
+
}
|
100
|
+
|
101
|
+
extern const upb_MiniTable_File xds_service_orca_v3_orca_proto_upb_file_layout;
|
102
|
+
|
103
|
+
#ifdef __cplusplus
|
104
|
+
} /* extern "C" */
|
105
|
+
#endif
|
106
|
+
|
107
|
+
#include "upb/port_undef.inc"
|
108
|
+
|
109
|
+
#endif /* XDS_SERVICE_ORCA_V3_ORCA_PROTO_UPB_H_ */
|
@@ -28,8 +28,10 @@ namespace grpc_core {
|
|
28
28
|
// CertificateProviderStore::CertificateProviderWrapper
|
29
29
|
//
|
30
30
|
|
31
|
-
|
32
|
-
|
31
|
+
UniqueTypeName CertificateProviderStore::CertificateProviderWrapper::type()
|
32
|
+
const {
|
33
|
+
static UniqueTypeName::Factory kFactory("Wrapper");
|
34
|
+
return kFactory.Create();
|
33
35
|
}
|
34
36
|
|
35
37
|
// If a certificate provider is created, the CertificateProviderStore
|
@@ -263,7 +263,10 @@ XdsCertificateProvider::~XdsCertificateProvider() {
|
|
263
263
|
distributor_->SetWatchStatusCallback(nullptr);
|
264
264
|
}
|
265
265
|
|
266
|
-
|
266
|
+
UniqueTypeName XdsCertificateProvider::type() const {
|
267
|
+
static UniqueTypeName::Factory kFactory("Xds");
|
268
|
+
return kFactory.Create();
|
269
|
+
}
|
267
270
|
|
268
271
|
bool XdsCertificateProvider::ProvidesRootCerts(const std::string& cert_name) {
|
269
272
|
MutexLock lock(&mu_);
|
@@ -39,7 +39,7 @@ class XdsCertificateProvider : public grpc_tls_certificate_provider {
|
|
39
39
|
return distributor_;
|
40
40
|
}
|
41
41
|
|
42
|
-
|
42
|
+
UniqueTypeName type() const override;
|
43
43
|
|
44
44
|
bool ProvidesRootCerts(const std::string& cert_name);
|
45
45
|
void UpdateRootCertNameAndDistributor(
|
@@ -53,7 +53,7 @@ bool XdsChannelStackModifier::ModifyChannelStack(ChannelStackBuilder* builder) {
|
|
53
53
|
// Insert the filters after the census filter if present.
|
54
54
|
auto it = builder->mutable_stack()->begin();
|
55
55
|
while (it != builder->mutable_stack()->end()) {
|
56
|
-
const char* filter_name_at_it = it->
|
56
|
+
const char* filter_name_at_it = (*it)->name;
|
57
57
|
if (strcmp("census_server", filter_name_at_it) == 0 ||
|
58
58
|
strcmp("opencensus_server", filter_name_at_it) == 0) {
|
59
59
|
break;
|
@@ -71,8 +71,7 @@ bool XdsChannelStackModifier::ModifyChannelStack(ChannelStackBuilder* builder) {
|
|
71
71
|
++it;
|
72
72
|
}
|
73
73
|
for (const grpc_channel_filter* filter : filters_) {
|
74
|
-
it = builder->mutable_stack()->insert(
|
75
|
-
it, ChannelStackBuilder::StackEntry{filter, nullptr});
|
74
|
+
it = builder->mutable_stack()->insert(it, filter);
|
76
75
|
++it;
|
77
76
|
}
|
78
77
|
return true;
|
@@ -96,9 +95,10 @@ XdsChannelStackModifier::GetFromChannelArgs(const grpc_channel_args& args) {
|
|
96
95
|
void RegisterXdsChannelStackModifier(CoreConfiguration::Builder* builder) {
|
97
96
|
builder->channel_init()->RegisterStage(
|
98
97
|
GRPC_SERVER_CHANNEL, INT_MAX, [](ChannelStackBuilder* builder) {
|
98
|
+
const grpc_channel_args* channel_args = builder->channel_args().ToC();
|
99
99
|
RefCountedPtr<XdsChannelStackModifier> channel_stack_modifier =
|
100
|
-
XdsChannelStackModifier::GetFromChannelArgs(
|
101
|
-
|
100
|
+
XdsChannelStackModifier::GetFromChannelArgs(*channel_args);
|
101
|
+
grpc_channel_args_destroy(channel_args);
|
102
102
|
if (channel_stack_modifier != nullptr) {
|
103
103
|
return channel_stack_modifier->ModifyChannelStack(builder);
|
104
104
|
}
|
@@ -198,9 +198,20 @@ class XdsClient::ChannelState::AdsCallState
|
|
198
198
|
Unref(DEBUG_LOCATION, "Orphan");
|
199
199
|
}
|
200
200
|
|
201
|
-
void MaybeStartTimer(RefCountedPtr<AdsCallState> ads_calld)
|
202
|
-
|
203
|
-
|
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.
|
204
215
|
ads_calld_ = std::move(ads_calld);
|
205
216
|
Ref(DEBUG_LOCATION, "timer").release();
|
206
217
|
timer_pending_ = true;
|
@@ -211,6 +222,18 @@ class XdsClient::ChannelState::AdsCallState
|
|
211
222
|
}
|
212
223
|
|
213
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;
|
214
237
|
if (timer_pending_) {
|
215
238
|
grpc_timer_cancel(&timer_);
|
216
239
|
timer_pending_ = false;
|
@@ -233,23 +256,23 @@ class XdsClient::ChannelState::AdsCallState
|
|
233
256
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_) {
|
234
257
|
if (error == GRPC_ERROR_NONE && timer_pending_) {
|
235
258
|
timer_pending_ = false;
|
236
|
-
absl::Status watcher_error = absl::UnavailableError(absl::StrFormat(
|
237
|
-
"timeout obtaining resource {type=%s name=%s} from xds server",
|
238
|
-
type_->type_url(),
|
239
|
-
XdsClient::ConstructFullXdsResourceName(
|
240
|
-
name_.authority, type_->type_url(), name_.key)));
|
241
259
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
242
|
-
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",
|
243
263
|
ads_calld_->xds_client(),
|
244
264
|
ads_calld_->chand()->server_.server_uri.c_str(),
|
245
|
-
|
265
|
+
std::string(type_->type_url()).c_str(),
|
266
|
+
XdsClient::ConstructFullXdsResourceName(
|
267
|
+
name_.authority, type_->type_url(), name_.key)
|
268
|
+
.c_str());
|
246
269
|
}
|
247
270
|
auto& authority_state =
|
248
271
|
ads_calld_->xds_client()->authority_state_map_[name_.authority];
|
249
272
|
ResourceState& state = authority_state.resource_map[type_][name_.key];
|
250
273
|
state.meta.client_status = XdsApi::ResourceMetadata::DOES_NOT_EXIST;
|
251
|
-
ads_calld_->xds_client()->
|
252
|
-
|
274
|
+
ads_calld_->xds_client()->NotifyWatchersOnResourceDoesNotExist(
|
275
|
+
state.watchers);
|
253
276
|
}
|
254
277
|
GRPC_ERROR_UNREF(error);
|
255
278
|
}
|
@@ -258,7 +281,7 @@ class XdsClient::ChannelState::AdsCallState
|
|
258
281
|
const XdsResourceName name_;
|
259
282
|
|
260
283
|
RefCountedPtr<AdsCallState> ads_calld_;
|
261
|
-
bool
|
284
|
+
bool timer_start_needed_ = true;
|
262
285
|
bool timer_pending_ = false;
|
263
286
|
grpc_timer timer_;
|
264
287
|
grpc_closure timer_callback_;
|
@@ -294,7 +317,8 @@ class XdsClient::ChannelState::AdsCallState
|
|
294
317
|
|
295
318
|
// Constructs a list of resource names of a given type for an ADS
|
296
319
|
// request. Also starts the timer for each resource if needed.
|
297
|
-
std::vector<std::string> ResourceNamesForRequest(const XdsResourceType* type)
|
320
|
+
std::vector<std::string> ResourceNamesForRequest(const XdsResourceType* type)
|
321
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
|
298
322
|
|
299
323
|
// The owning RetryableCall<>.
|
300
324
|
RefCountedPtr<RetryableCall<AdsCallState>> parent_;
|
@@ -555,7 +579,7 @@ namespace {
|
|
555
579
|
bool IsLameChannel(grpc_channel* channel) {
|
556
580
|
grpc_channel_element* elem =
|
557
581
|
grpc_channel_stack_last_element(grpc_channel_get_channel_stack(channel));
|
558
|
-
return elem->filter == &
|
582
|
+
return elem->filter == &LameClientFilter::kFilter;
|
559
583
|
}
|
560
584
|
|
561
585
|
} // namespace
|
@@ -566,7 +590,8 @@ void XdsClient::ChannelState::StartConnectivityWatchLocked() {
|
|
566
590
|
absl::UnavailableError("xds client has a lame channel"));
|
567
591
|
return;
|
568
592
|
}
|
569
|
-
ClientChannel* client_channel =
|
593
|
+
ClientChannel* client_channel =
|
594
|
+
ClientChannel::GetFromChannel(Channel::FromC(channel_));
|
570
595
|
GPR_ASSERT(client_channel != nullptr);
|
571
596
|
watcher_ = new StateWatcher(WeakRef(DEBUG_LOCATION, "ChannelState+watch"));
|
572
597
|
client_channel->AddConnectivityWatcher(
|
@@ -578,7 +603,8 @@ void XdsClient::ChannelState::CancelConnectivityWatchLocked() {
|
|
578
603
|
if (IsLameChannel(channel_)) {
|
579
604
|
return;
|
580
605
|
}
|
581
|
-
ClientChannel* client_channel =
|
606
|
+
ClientChannel* client_channel =
|
607
|
+
ClientChannel::GetFromChannel(Channel::FromC(channel_));
|
582
608
|
GPR_ASSERT(client_channel != nullptr);
|
583
609
|
client_channel->RemoveConnectivityWatcher(watcher_);
|
584
610
|
}
|
@@ -1925,11 +1951,9 @@ void XdsClient::CancelResourceWatch(const XdsResourceType* type,
|
|
1925
1951
|
bool delay_unsubscription) {
|
1926
1952
|
auto resource_name = ParseXdsResourceName(name, type);
|
1927
1953
|
MutexLock lock(&mu_);
|
1928
|
-
|
1929
|
-
|
1930
|
-
|
1931
|
-
}
|
1932
|
-
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);
|
1933
1957
|
// Find authority.
|
1934
1958
|
if (!resource_name.ok()) return;
|
1935
1959
|
auto authority_it = authority_state_map_.find(resource_name->authority);
|
@@ -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
|
|
@@ -27,6 +27,7 @@
|
|
27
27
|
#include "envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h"
|
28
28
|
#include "envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h"
|
29
29
|
|
30
|
+
#include "src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h"
|
30
31
|
#include "src/core/ext/xds/xds_client.h"
|
31
32
|
#include "src/core/ext/xds/xds_common_types.h"
|
32
33
|
#include "src/core/ext/xds/xds_resource_type_impl.h"
|
@@ -63,6 +64,8 @@ struct XdsClusterResource {
|
|
63
64
|
// cluster.
|
64
65
|
uint32_t max_concurrent_requests = 1024;
|
65
66
|
|
67
|
+
absl::optional<OutlierDetectionConfig> outlier_detection;
|
68
|
+
|
66
69
|
bool operator==(const XdsClusterResource& other) const {
|
67
70
|
return cluster_type == other.cluster_type &&
|
68
71
|
eds_service_name == other.eds_service_name &&
|
@@ -36,6 +36,7 @@
|
|
36
36
|
#include <grpc/grpc.h>
|
37
37
|
|
38
38
|
#include "src/core/ext/filters/fault_injection/fault_injection_filter.h"
|
39
|
+
#include "src/core/ext/xds/xds_common_types.h"
|
39
40
|
#include "src/core/ext/xds/xds_http_filters.h"
|
40
41
|
#include "src/core/lib/channel/channel_args.h"
|
41
42
|
#include "src/core/lib/channel/channel_stack.h"
|
@@ -140,9 +141,8 @@ absl::StatusOr<Json> ParseHttpFaultIntoJson(
|
|
140
141
|
envoy_extensions_filters_common_fault_v3_FaultDelay_fixed_delay(
|
141
142
|
fault_delay);
|
142
143
|
if (delay_duration != nullptr) {
|
143
|
-
fault_injection_policy_json["delay"] =
|
144
|
-
|
145
|
-
google_protobuf_Duration_nanos(delay_duration));
|
144
|
+
fault_injection_policy_json["delay"] =
|
145
|
+
ParseDuration(delay_duration).ToJsonString();
|
146
146
|
}
|
147
147
|
// Set the headers if we enabled header delay injection control
|
148
148
|
if (envoy_extensions_filters_common_fault_v3_FaultDelay_has_header_delay(
|
@@ -109,8 +109,10 @@ std::string XdsListenerResource::FilterChainData::ToString() const {
|
|
109
109
|
//
|
110
110
|
|
111
111
|
std::string XdsListenerResource::FilterChainMap::CidrRange::ToString() const {
|
112
|
+
auto addr_str = grpc_sockaddr_to_string(&address, false);
|
112
113
|
return absl::StrCat(
|
113
|
-
"{address_prefix=",
|
114
|
+
"{address_prefix=",
|
115
|
+
addr_str.ok() ? addr_str.value() : addr_str.status().ToString(),
|
114
116
|
", prefix_len=", prefix_len, "}");
|
115
117
|
}
|
116
118
|
|
@@ -776,9 +778,12 @@ grpc_error_handle AddFilterChainDataForSourceIpRange(
|
|
776
778
|
} else {
|
777
779
|
for (const auto& prefix_range :
|
778
780
|
filter_chain.filter_chain_match.source_prefix_ranges) {
|
781
|
+
auto addr_str = grpc_sockaddr_to_string(&prefix_range.address, false);
|
782
|
+
if (!addr_str.ok()) {
|
783
|
+
return GRPC_ERROR_CREATE_FROM_CPP_STRING(addr_str.status().ToString());
|
784
|
+
}
|
779
785
|
auto insert_result = source_ip_map->emplace(
|
780
|
-
absl::StrCat(
|
781
|
-
"/", prefix_range.prefix_len),
|
786
|
+
absl::StrCat(*addr_str, "/", prefix_range.prefix_len),
|
782
787
|
XdsListenerResource::FilterChainMap::SourceIp());
|
783
788
|
if (insert_result.second) {
|
784
789
|
insert_result.first->second.prefix_range.emplace(prefix_range);
|
@@ -860,9 +865,12 @@ grpc_error_handle AddFilterChainDataForDestinationIpRange(
|
|
860
865
|
} else {
|
861
866
|
for (const auto& prefix_range :
|
862
867
|
filter_chain.filter_chain_match.prefix_ranges) {
|
868
|
+
auto addr_str = grpc_sockaddr_to_string(&prefix_range.address, false);
|
869
|
+
if (!addr_str.ok()) {
|
870
|
+
return GRPC_ERROR_CREATE_FROM_CPP_STRING(addr_str.status().ToString());
|
871
|
+
}
|
863
872
|
auto insert_result = destination_ip_map->emplace(
|
864
|
-
absl::StrCat(
|
865
|
-
"/", prefix_range.prefix_len),
|
873
|
+
absl::StrCat(*addr_str, "/", prefix_range.prefix_len),
|
866
874
|
InternalFilterChainMap::DestinationIp());
|
867
875
|
if (insert_result.second) {
|
868
876
|
insert_result.first->second.prefix_range.emplace(prefix_range);
|
@@ -968,10 +976,12 @@ grpc_error_handle LdsResourceParse(
|
|
968
976
|
envoy_config_listener_v3_Listener_api_listener(listener);
|
969
977
|
const envoy_config_core_v3_Address* address =
|
970
978
|
envoy_config_listener_v3_Listener_address(listener);
|
971
|
-
|
972
|
-
|
973
|
-
|
974
|
-
|
979
|
+
// TODO(roth): Re-enable the following check once
|
980
|
+
// github.com/istio/istio/issues/38914 is resolved.
|
981
|
+
// if (api_listener != nullptr && address != nullptr) {
|
982
|
+
// return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
983
|
+
// "Listener has both address and ApiListener");
|
984
|
+
// }
|
975
985
|
if (api_listener == nullptr && address == nullptr) {
|
976
986
|
return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
977
987
|
"Listener has neither address nor ApiListener");
|
@@ -1287,7 +1287,8 @@ grpc_server_config_fetcher* grpc_server_config_fetcher_xds_create(
|
|
1287
1287
|
grpc_core::ExecCtx exec_ctx;
|
1288
1288
|
args = grpc_core::CoreConfiguration::Get()
|
1289
1289
|
.channel_args_preconditioning()
|
1290
|
-
.PreconditionChannelArgs(args)
|
1290
|
+
.PreconditionChannelArgs(args)
|
1291
|
+
.ToC();
|
1291
1292
|
GRPC_API_TRACE(
|
1292
1293
|
"grpc_server_config_fetcher_xds_create(notifier={on_serving_status_"
|
1293
1294
|
"update=%p, user_data=%p}, args=%p)",
|