grpc 1.75.0.pre1 → 1.76.0.pre1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Makefile +18 -5
- data/include/grpc/credentials.h +21 -5
- data/src/core/call/call_filters.cc +4 -4
- data/src/core/call/call_filters.h +36 -36
- data/src/core/call/call_spine.h +27 -27
- data/src/core/call/client_call.cc +6 -5
- data/src/core/call/filter_fusion.h +5 -5
- data/src/core/call/metadata_batch.h +3 -3
- data/src/core/call/security_context.cc +1 -1
- data/src/core/call/server_call.cc +4 -4
- data/src/core/call/server_call.h +1 -1
- data/src/core/channelz/channelz.cc +12 -18
- data/src/core/channelz/channelz.h +32 -16
- data/src/core/channelz/channelz_registry.h +11 -0
- data/src/core/channelz/property_list.cc +18 -0
- data/src/core/channelz/property_list.h +10 -1
- data/src/core/channelz/text_encode.cc +66 -0
- data/src/core/channelz/text_encode.h +29 -0
- data/src/core/channelz/v2tov1/convert.cc +11 -0
- data/src/core/channelz/v2tov1/legacy_api.cc +15 -8
- data/src/core/channelz/ztrace_collector.h +247 -86
- data/src/core/client_channel/backup_poller.cc +5 -6
- data/src/core/client_channel/client_channel.cc +20 -13
- data/src/core/client_channel/client_channel_filter.cc +53 -45
- data/src/core/client_channel/client_channel_filter.h +2 -2
- data/src/core/client_channel/client_channel_internal.h +3 -4
- data/src/core/client_channel/config_selector.h +3 -3
- data/src/core/client_channel/dynamic_filters.cc +3 -3
- data/src/core/client_channel/global_subchannel_pool.cc +0 -37
- data/src/core/client_channel/global_subchannel_pool.h +0 -27
- data/src/core/client_channel/load_balanced_call_destination.cc +7 -7
- data/src/core/client_channel/local_subchannel_pool.cc +4 -4
- data/src/core/client_channel/retry_filter.h +3 -3
- data/src/core/client_channel/retry_filter_legacy_call_data.cc +5 -5
- data/src/core/client_channel/subchannel.cc +8 -8
- data/src/core/client_channel/subchannel_stream_client.cc +4 -4
- data/src/core/config/config_vars.cc +30 -1
- data/src/core/config/config_vars.h +21 -0
- data/src/core/config/core_configuration.cc +5 -5
- data/src/core/config/core_configuration.h +7 -7
- data/src/core/config/load_config.cc +12 -0
- data/src/core/config/load_config.h +2 -0
- data/src/core/credentials/call/call_credentials.h +2 -2
- data/src/core/credentials/call/call_creds_util.cc +4 -3
- data/src/core/credentials/call/composite/composite_call_credentials.cc +4 -4
- data/src/core/credentials/call/external/aws_external_account_credentials.cc +3 -3
- data/src/core/credentials/call/external/external_account_credentials.cc +1 -1
- data/src/core/credentials/call/external/url_external_account_credentials.cc +1 -1
- data/src/core/credentials/call/iam/iam_credentials.cc +4 -4
- data/src/core/credentials/call/jwt/json_token.cc +3 -3
- data/src/core/credentials/call/jwt/jwt_credentials.cc +2 -2
- data/src/core/credentials/call/jwt/jwt_verifier.cc +14 -13
- data/src/core/credentials/call/oauth2/oauth2_credentials.cc +20 -12
- data/src/core/credentials/call/plugin/plugin_credentials.cc +2 -2
- data/src/core/credentials/transport/alts/alts_credentials.cc +4 -4
- data/src/core/credentials/transport/alts/alts_security_connector.cc +14 -12
- data/src/core/credentials/transport/alts/grpc_alts_credentials_client_options.cc +22 -2
- data/src/core/credentials/transport/alts/grpc_alts_credentials_options.cc +10 -1
- data/src/core/credentials/transport/alts/grpc_alts_credentials_options.h +31 -0
- data/src/core/credentials/transport/alts/grpc_alts_credentials_server_options.cc +8 -3
- data/src/core/credentials/transport/composite/composite_channel_credentials.cc +5 -5
- data/src/core/credentials/transport/fake/fake_security_connector.cc +2 -2
- data/src/core/credentials/transport/google_default/google_default_credentials.cc +78 -28
- data/src/core/credentials/transport/insecure/insecure_security_connector.cc +3 -3
- data/src/core/credentials/transport/local/local_security_connector.cc +8 -8
- data/src/core/credentials/transport/security_connector.cc +5 -5
- data/src/core/credentials/transport/ssl/ssl_credentials.cc +12 -12
- data/src/core/credentials/transport/ssl/ssl_credentials.h +2 -2
- data/src/core/credentials/transport/ssl/ssl_security_connector.cc +3 -3
- data/src/core/credentials/transport/tls/certificate_provider_registry.cc +2 -2
- data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.cc +24 -24
- data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.cc +5 -5
- data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.h +2 -2
- data/src/core/credentials/transport/tls/grpc_tls_certificate_verifier.cc +2 -2
- data/src/core/credentials/transport/tls/grpc_tls_certificate_verifier.h +2 -2
- data/src/core/credentials/transport/tls/grpc_tls_credentials_options.cc +17 -17
- data/src/core/credentials/transport/tls/ssl_utils.cc +14 -9
- data/src/core/credentials/transport/tls/tls_credentials.cc +2 -2
- data/src/core/credentials/transport/tls/tls_security_connector.cc +11 -11
- data/src/core/credentials/transport/transport_credentials.cc +2 -2
- data/src/core/credentials/transport/transport_credentials.h +2 -2
- data/src/core/credentials/transport/xds/xds_credentials.cc +5 -5
- data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc +2 -0
- data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.cc +1 -1
- data/src/core/ext/filters/http/message_compress/compression_filter.cc +8 -8
- data/src/core/ext/filters/http/message_compress/compression_filter.h +3 -3
- data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +7 -7
- data/src/core/ext/transport/chttp2/alpn/alpn.cc +2 -2
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +10 -9
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +10 -7
- data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +5 -5
- data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +6 -6
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +96 -88
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +3 -3
- data/src/core/ext/transport/chttp2/transport/flow_control.h +12 -7
- data/src/core/ext/transport/chttp2/transport/flow_control_manager.h +60 -0
- data/src/core/ext/transport/chttp2/transport/frame.cc +32 -10
- data/src/core/ext/transport/chttp2/transport/frame.h +16 -2
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +4 -4
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +3 -3
- data/src/core/ext/transport/chttp2/transport/header_assembler.h +28 -12
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +4 -2
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +8 -8
- data/src/core/ext/transport/chttp2/transport/hpack_parse_result.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/hpack_parse_result.h +2 -2
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +27 -27
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +2 -3
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +4 -4
- data/src/core/ext/transport/chttp2/transport/http2_client_transport.cc +543 -366
- data/src/core/ext/transport/chttp2/transport/http2_client_transport.h +198 -277
- data/src/core/ext/transport/chttp2/transport/http2_settings_manager.cc +3 -0
- data/src/core/ext/transport/chttp2/transport/http2_settings_manager.h +11 -0
- data/src/core/ext/transport/chttp2/transport/http2_settings_promises.h +179 -0
- data/src/core/ext/transport/chttp2/transport/http2_transport.cc +51 -23
- data/src/core/ext/transport/chttp2/transport/http2_transport.h +13 -6
- data/src/core/ext/transport/chttp2/transport/http2_ztrace_collector.h +115 -71
- data/src/core/ext/transport/chttp2/transport/internal.h +6 -14
- data/src/core/ext/transport/chttp2/transport/message_assembler.h +7 -7
- data/src/core/ext/transport/chttp2/transport/parsing.cc +17 -15
- data/src/core/ext/transport/chttp2/transport/ping_callbacks.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/ping_promise.cc +62 -26
- data/src/core/ext/transport/chttp2/transport/ping_promise.h +58 -22
- data/src/core/ext/transport/chttp2/transport/stream.h +207 -0
- data/src/core/ext/transport/chttp2/transport/stream_data_queue.h +328 -187
- data/src/core/ext/transport/chttp2/transport/stream_lists.cc +7 -7
- data/src/core/ext/transport/chttp2/transport/transport_common.cc +17 -1
- data/src/core/ext/transport/chttp2/transport/transport_common.h +52 -0
- data/src/core/ext/transport/chttp2/transport/varint.h +2 -2
- data/src/core/ext/transport/chttp2/transport/writable_streams.h +181 -79
- data/src/core/ext/transport/chttp2/transport/write_size_policy.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/writing.cc +3 -3
- data/src/core/ext/transport/inproc/inproc_transport.cc +1 -1
- data/src/core/ext/transport/inproc/legacy_inproc_transport.cc +3 -3
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/service.upb.h +740 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/service.upb_minitable.c +218 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/service.upb_minitable.h +46 -0
- data/src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb.h +87 -55
- data/src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb_minitable.c +23 -21
- data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/channelz.upbdefs.c +80 -0
- data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/channelz.upbdefs.h +47 -0
- data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/service.upbdefs.c +129 -0
- data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/service.upbdefs.h +72 -0
- data/src/core/filter/auth/server_auth_filter.cc +2 -2
- data/src/core/handshaker/handshaker.cc +3 -3
- data/src/core/handshaker/http_connect/http_proxy_mapper.cc +2 -2
- data/src/core/handshaker/security/legacy_secure_endpoint.cc +2 -2
- data/src/core/handshaker/security/pipelined_secure_endpoint.cc +31 -8
- data/src/core/handshaker/security/secure_endpoint.cc +16 -6
- data/src/core/handshaker/security/security_handshaker.cc +3 -3
- data/src/core/handshaker/tcp_connect/tcp_connect_handshaker.cc +2 -2
- data/src/core/lib/channel/channel_stack.cc +8 -5
- data/src/core/lib/channel/channel_stack.h +3 -0
- data/src/core/lib/channel/channel_stack_builder_impl.cc +1 -0
- data/src/core/lib/channel/connected_channel.cc +2 -2
- data/src/core/lib/channel/promise_based_filter.cc +69 -64
- data/src/core/lib/channel/promise_based_filter.h +16 -15
- data/src/core/lib/compression/compression_internal.cc +2 -2
- data/src/core/lib/compression/message_compress.cc +7 -7
- data/src/core/lib/event_engine/ares_resolver.cc +22 -20
- data/src/core/lib/event_engine/cf_engine/cf_engine.cc +2 -2
- data/src/core/lib/event_engine/cf_engine/dns_service_resolver.cc +2 -2
- data/src/core/lib/event_engine/cf_engine/dns_service_resolver.h +2 -2
- data/src/core/lib/event_engine/extensions/channelz.h +2 -2
- data/src/core/lib/event_engine/extensions/supports_fd.h +5 -5
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +8 -8
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +10 -10
- data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +2 -2
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +23 -22
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +11 -11
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +168 -170
- data/src/core/lib/event_engine/posix_engine/posix_engine.h +33 -54
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +4 -3
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +5 -5
- data/src/core/lib/event_engine/posix_engine/posix_interface.h +1 -1
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +1 -1
- data/src/core/lib/event_engine/posix_engine/timer_manager.cc +3 -3
- data/src/core/lib/event_engine/resolved_address.cc +3 -3
- data/src/core/lib/event_engine/shim.cc +8 -11
- data/src/core/lib/event_engine/shim.h +2 -1
- data/src/core/lib/event_engine/slice.cc +2 -2
- data/src/core/lib/event_engine/tcp_socket_utils.cc +11 -11
- data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +7 -7
- data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc +31 -31
- data/src/core/lib/event_engine/windows/iocp.cc +10 -10
- data/src/core/lib/event_engine/windows/win_socket.cc +6 -6
- data/src/core/lib/event_engine/windows/windows_endpoint.cc +11 -11
- data/src/core/lib/event_engine/windows/windows_engine.cc +16 -14
- data/src/core/lib/event_engine/windows/windows_listener.cc +7 -7
- data/src/core/lib/experiments/experiments.cc +105 -18
- data/src/core/lib/experiments/experiments.h +43 -11
- data/src/core/lib/iomgr/call_combiner.cc +3 -3
- data/src/core/lib/iomgr/endpoint_cfstream.cc +6 -6
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +5 -5
- data/src/core/lib/iomgr/endpoint_pair_windows.cc +15 -14
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +15 -15
- data/src/core/lib/iomgr/ev_poll_posix.cc +11 -11
- data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +5 -4
- data/src/core/lib/iomgr/event_engine_shims/endpoint.h +1 -1
- data/src/core/lib/iomgr/iocp_windows.cc +8 -8
- data/src/core/lib/iomgr/iomgr_windows.cc +3 -3
- data/src/core/lib/iomgr/lockfree_event.cc +2 -2
- data/src/core/lib/iomgr/polling_entity.cc +3 -3
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +2 -2
- data/src/core/lib/iomgr/socket_windows.cc +4 -4
- data/src/core/lib/iomgr/tcp_client_posix.cc +4 -4
- data/src/core/lib/iomgr/tcp_client_windows.cc +4 -4
- data/src/core/lib/iomgr/tcp_posix.cc +42 -42
- data/src/core/lib/iomgr/tcp_server.cc +5 -0
- data/src/core/lib/iomgr/tcp_server.h +7 -0
- data/src/core/lib/iomgr/tcp_server_posix.cc +47 -27
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +3 -0
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +5 -5
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +2 -2
- data/src/core/lib/iomgr/tcp_server_windows.cc +68 -29
- data/src/core/lib/iomgr/tcp_windows.cc +7 -7
- data/src/core/lib/iomgr/timer_generic.cc +2 -2
- data/src/core/lib/iomgr/timer_manager.cc +2 -2
- data/src/core/lib/iomgr/unix_sockets_posix.cc +2 -2
- data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +2 -2
- data/src/core/lib/promise/activity.cc +2 -2
- data/src/core/lib/promise/activity.h +6 -6
- data/src/core/lib/promise/context.h +2 -2
- data/src/core/lib/promise/detail/join_state.h +9 -9
- data/src/core/lib/promise/detail/seq_state.h +13 -13
- data/src/core/lib/promise/detail/status.h +2 -2
- data/src/core/lib/promise/for_each.h +5 -5
- data/src/core/lib/promise/interceptor_list.h +2 -2
- data/src/core/lib/promise/latch.h +7 -7
- data/src/core/lib/promise/mpsc.cc +26 -26
- data/src/core/lib/promise/mpsc.h +2 -2
- data/src/core/lib/promise/observable.h +4 -4
- data/src/core/lib/promise/party.cc +32 -25
- data/src/core/lib/promise/party.h +16 -19
- data/src/core/lib/promise/pipe.h +15 -15
- data/src/core/lib/promise/poll.h +5 -4
- data/src/core/lib/promise/promise.h +0 -2
- data/src/core/lib/promise/sleep.cc +3 -1
- data/src/core/lib/promise/status_flag.h +7 -7
- data/src/core/lib/promise/try_join.h +2 -2
- data/src/core/lib/promise/try_seq.h +2 -2
- data/src/core/lib/resource_quota/arena.h +15 -2
- data/src/core/lib/resource_quota/connection_quota.cc +9 -7
- data/src/core/lib/resource_quota/memory_quota.cc +45 -24
- data/src/core/lib/resource_quota/memory_quota.h +48 -16
- data/src/core/lib/resource_quota/telemetry.h +54 -0
- data/src/core/lib/resource_quota/thread_quota.cc +2 -2
- data/src/core/lib/resource_tracker/resource_tracker.cc +33 -0
- data/src/core/lib/resource_tracker/resource_tracker.h +46 -0
- data/src/core/lib/security/authorization/audit_logging.cc +5 -5
- data/src/core/lib/security/authorization/grpc_authorization_engine.cc +2 -2
- data/src/core/lib/security/authorization/stdout_logger.cc +3 -3
- data/src/core/lib/surface/byte_buffer_reader.cc +2 -2
- data/src/core/lib/surface/call.cc +16 -14
- data/src/core/lib/surface/call.h +1 -1
- data/src/core/lib/surface/call_utils.cc +2 -2
- data/src/core/lib/surface/call_utils.h +2 -2
- data/src/core/lib/surface/channel.cc +4 -4
- data/src/core/lib/surface/channel_create.cc +10 -6
- data/src/core/lib/surface/channel_init.cc +80 -23
- data/src/core/lib/surface/channel_init.h +26 -11
- data/src/core/lib/surface/completion_queue.cc +17 -16
- data/src/core/lib/surface/completion_queue_factory.cc +7 -7
- data/src/core/lib/surface/connection_context.h +45 -2
- data/src/core/lib/surface/filter_stack_call.cc +12 -23
- data/src/core/lib/surface/filter_stack_call.h +3 -4
- data/src/core/lib/surface/legacy_channel.cc +7 -7
- data/src/core/lib/surface/validate_metadata.h +2 -2
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/bdp_estimator.cc +2 -2
- data/src/core/lib/transport/bdp_estimator.h +3 -3
- data/src/core/lib/transport/promise_endpoint.cc +3 -3
- data/src/core/lib/transport/promise_endpoint.h +8 -8
- data/src/core/lib/transport/timeout_encoding.cc +4 -4
- data/src/core/load_balancing/child_policy_handler.cc +4 -4
- data/src/core/load_balancing/endpoint_list.cc +2 -2
- data/src/core/load_balancing/grpclb/grpclb.cc +24 -24
- data/src/core/load_balancing/health_check_client.cc +4 -4
- data/src/core/load_balancing/health_check_client_internal.h +2 -2
- data/src/core/load_balancing/lb_policy_registry.cc +2 -2
- data/src/core/load_balancing/oob_backend_metric.cc +4 -4
- data/src/core/load_balancing/oob_backend_metric_internal.h +2 -2
- data/src/core/load_balancing/outlier_detection/outlier_detection.cc +2 -2
- data/src/core/load_balancing/pick_first/pick_first.cc +14 -14
- data/src/core/load_balancing/priority/priority.cc +23 -24
- data/src/core/load_balancing/ring_hash/ring_hash.cc +3 -3
- data/src/core/load_balancing/rls/rls.cc +13 -13
- data/src/core/load_balancing/round_robin/round_robin.cc +9 -9
- data/src/core/load_balancing/weighted_round_robin/static_stride_scheduler.cc +3 -3
- data/src/core/load_balancing/weighted_round_robin/weighted_round_robin.cc +33 -26
- data/src/core/load_balancing/weighted_target/weighted_target.cc +5 -5
- data/src/core/load_balancing/xds/cds.cc +76 -32
- data/src/core/load_balancing/xds/xds_cluster_impl.cc +3 -3
- data/src/core/load_balancing/xds/xds_override_host.cc +4 -4
- data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +2 -2
- data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +33 -33
- data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.cc +10 -10
- data/src/core/resolver/dns/dns_resolver_plugin.cc +6 -3
- data/src/core/resolver/dns/event_engine/event_engine_client_channel_resolver.cc +2 -2
- data/src/core/resolver/endpoint_addresses.cc +3 -3
- data/src/core/resolver/endpoint_addresses.h +3 -0
- data/src/core/resolver/fake/fake_resolver.cc +2 -2
- data/src/core/resolver/google_c2p/google_c2p_resolver.cc +41 -54
- data/src/core/resolver/polling_resolver.cc +3 -3
- data/src/core/resolver/resolver_registry.cc +5 -4
- data/src/core/resolver/xds/xds_dependency_manager.cc +5 -5
- data/src/core/resolver/xds/xds_resolver.cc +9 -9
- data/src/core/server/server.cc +38 -38
- data/src/core/server/server_call_tracer_filter.h +4 -4
- data/src/core/server/server_config_selector_filter.cc +2 -2
- data/src/core/server/xds_server_config_fetcher.cc +9 -8
- data/src/core/service_config/service_config_impl.h +2 -2
- data/src/core/telemetry/call_tracer.cc +39 -49
- data/src/core/telemetry/call_tracer.h +199 -22
- data/src/core/telemetry/histogram.h +205 -0
- data/src/core/telemetry/instrument.cc +719 -0
- data/src/core/telemetry/instrument.h +932 -0
- data/src/core/telemetry/metrics.cc +13 -5
- data/src/core/telemetry/metrics.h +3 -1
- data/src/core/telemetry/stats_data.cc +0 -19
- data/src/core/telemetry/stats_data.h +0 -19
- data/src/core/transport/auth_context.cc +2 -2
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +78 -45
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +1 -0
- data/src/core/tsi/alts/handshaker/alts_shared_resource.cc +3 -3
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +39 -31
- data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +3 -3
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +3 -3
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +7 -7
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +3 -3
- data/src/core/tsi/fake_transport_security.cc +4 -4
- data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +4 -4
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +9 -9
- data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +3 -3
- data/src/core/tsi/ssl_transport_security.cc +26 -25
- data/src/core/tsi/ssl_transport_security_utils.cc +9 -9
- data/src/core/util/chunked_vector.h +4 -4
- data/src/core/util/event_log.cc +2 -2
- data/src/core/util/gcp_metadata_query.cc +2 -2
- data/src/core/util/grpc_check.cc +22 -0
- data/src/core/util/grpc_check.h +103 -0
- data/src/core/util/http_client/httpcli.cc +3 -3
- data/src/core/util/http_client/parser.cc +4 -4
- data/src/core/util/latent_see.h +7 -4
- data/src/core/util/lru_cache.h +4 -4
- data/src/core/util/memory_usage.h +16 -0
- data/src/core/util/posix/directory_reader.cc +3 -2
- data/src/core/util/posix/sync.cc +24 -24
- data/src/core/util/postmortem_emit.cc +52 -0
- data/src/core/util/postmortem_emit.h +30 -0
- data/src/core/util/ref_counted_ptr.h +5 -0
- data/src/core/util/trie_lookup.h +170 -0
- data/src/core/util/unique_ptr_with_bitset.h +5 -5
- data/src/core/xds/grpc/xds_bootstrap_grpc.h +6 -1
- data/src/core/xds/grpc/xds_certificate_provider.cc +3 -3
- data/src/core/xds/grpc/xds_client_grpc.cc +34 -15
- data/src/core/xds/grpc/xds_client_grpc.h +4 -1
- data/src/core/xds/grpc/xds_cluster_parser.cc +2 -2
- data/src/core/xds/grpc/xds_cluster_specifier_plugin.cc +2 -2
- data/src/core/xds/grpc/xds_endpoint_parser.cc +2 -2
- data/src/core/xds/grpc/xds_http_filter_registry.cc +4 -3
- data/src/core/xds/grpc/xds_listener_parser.cc +3 -3
- data/src/core/xds/grpc/xds_matcher.cc +277 -0
- data/src/core/xds/grpc/xds_matcher.h +432 -0
- data/src/core/xds/grpc/xds_matcher_action.cc +47 -0
- data/src/core/xds/grpc/xds_matcher_action.h +48 -0
- data/src/core/xds/grpc/xds_matcher_context.cc +29 -0
- data/src/core/xds/grpc/xds_matcher_context.h +46 -0
- data/src/core/xds/grpc/xds_matcher_input.cc +79 -0
- data/src/core/xds/grpc/xds_matcher_input.h +105 -0
- data/src/core/xds/grpc/xds_matcher_parse.cc +356 -0
- data/src/core/xds/grpc/xds_matcher_parse.h +39 -0
- data/src/core/xds/grpc/xds_metadata.cc +4 -3
- data/src/core/xds/grpc/xds_route_config_parser.cc +6 -6
- data/src/core/xds/grpc/xds_routing.cc +3 -3
- data/src/core/xds/grpc/xds_transport_grpc.cc +10 -10
- data/src/core/xds/xds_client/lrs_client.cc +6 -6
- data/src/core/xds/xds_client/xds_client.cc +9 -9
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +2 -2
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/third_party/abseil-cpp/absl/container/internal/node_slot_policy.h +95 -0
- data/third_party/abseil-cpp/absl/container/node_hash_map.h +687 -0
- metadata +37 -2
@@ -47,7 +47,6 @@
|
|
47
47
|
#include <string>
|
48
48
|
#include <utility>
|
49
49
|
|
50
|
-
#include "absl/log/check.h"
|
51
50
|
#include "absl/log/log.h"
|
52
51
|
#include "absl/status/status.h"
|
53
52
|
#include "absl/status/statusor.h"
|
@@ -64,6 +63,7 @@
|
|
64
63
|
#include "src/core/resolver/dns/c_ares/grpc_ares_ev_driver.h"
|
65
64
|
#include "src/core/resolver/dns/c_ares/grpc_ares_wrapper.h"
|
66
65
|
#include "src/core/util/debug_location.h"
|
66
|
+
#include "src/core/util/grpc_check.h"
|
67
67
|
#include "src/core/util/host_port.h"
|
68
68
|
#include "src/core/util/string.h"
|
69
69
|
#include "src/core/util/time.h"
|
@@ -215,7 +215,7 @@ static void grpc_ares_ev_driver_unref(grpc_ares_ev_driver* ev_driver)
|
|
215
215
|
GRPC_TRACE_VLOG(cares_resolver, 2)
|
216
216
|
<< "(c-ares resolver) request:" << ev_driver->request
|
217
217
|
<< " destroy ev_driver " << ev_driver;
|
218
|
-
|
218
|
+
GRPC_CHECK_EQ(ev_driver->fds, nullptr);
|
219
219
|
ares_destroy(ev_driver->channel);
|
220
220
|
grpc_ares_complete_request_locked(ev_driver->request);
|
221
221
|
delete ev_driver;
|
@@ -227,9 +227,9 @@ static void fd_node_destroy_locked(fd_node* fdn)
|
|
227
227
|
GRPC_TRACE_VLOG(cares_resolver, 2)
|
228
228
|
<< "(c-ares resolver) request:" << fdn->ev_driver->request
|
229
229
|
<< " delete fd: " << fdn->grpc_polled_fd->GetName();
|
230
|
-
|
231
|
-
|
232
|
-
|
230
|
+
GRPC_CHECK(!fdn->readable_registered);
|
231
|
+
GRPC_CHECK(!fdn->writable_registered);
|
232
|
+
GRPC_CHECK(fdn->already_shutdown);
|
233
233
|
delete fdn->grpc_polled_fd;
|
234
234
|
delete fdn;
|
235
235
|
}
|
@@ -369,7 +369,7 @@ static void on_ares_backup_poll_alarm(void* arg, grpc_error_handle error) {
|
|
369
369
|
static void on_readable(void* arg, grpc_error_handle error) {
|
370
370
|
fd_node* fdn = static_cast<fd_node*>(arg);
|
371
371
|
grpc_core::MutexLock lock(&fdn->ev_driver->request->mu);
|
372
|
-
|
372
|
+
GRPC_CHECK(fdn->readable_registered);
|
373
373
|
grpc_ares_ev_driver* ev_driver = fdn->ev_driver;
|
374
374
|
const ares_socket_t as = fdn->grpc_polled_fd->GetWrappedAresSocketLocked();
|
375
375
|
fdn->readable_registered = false;
|
@@ -394,7 +394,7 @@ static void on_readable(void* arg, grpc_error_handle error) {
|
|
394
394
|
static void on_writable(void* arg, grpc_error_handle error) {
|
395
395
|
fd_node* fdn = static_cast<fd_node*>(arg);
|
396
396
|
grpc_core::MutexLock lock(&fdn->ev_driver->request->mu);
|
397
|
-
|
397
|
+
GRPC_CHECK(fdn->writable_registered);
|
398
398
|
grpc_ares_ev_driver* ev_driver = fdn->ev_driver;
|
399
399
|
const ares_socket_t as = fdn->grpc_polled_fd->GetWrappedAresSocketLocked();
|
400
400
|
fdn->writable_registered = false;
|
@@ -949,7 +949,7 @@ static bool inner_resolve_as_ip_literal_locked(
|
|
949
949
|
false /* log errors */) ||
|
950
950
|
grpc_parse_ipv6_hostport(hostport->c_str(), &addr,
|
951
951
|
false /* log errors */)) {
|
952
|
-
|
952
|
+
GRPC_CHECK(*addrs == nullptr);
|
953
953
|
*addrs = std::make_unique<EndpointAddressesList>();
|
954
954
|
(*addrs)->emplace_back(addr, grpc_core::ChannelArgs());
|
955
955
|
return true;
|
@@ -1003,7 +1003,7 @@ static bool inner_maybe_resolve_localhost_manually_locked(
|
|
1003
1003
|
*port = default_port;
|
1004
1004
|
}
|
1005
1005
|
if (gpr_stricmp(host->c_str(), "localhost") == 0) {
|
1006
|
-
|
1006
|
+
GRPC_CHECK(*addrs == nullptr);
|
1007
1007
|
*addrs = std::make_unique<grpc_core::EndpointAddressesList>();
|
1008
1008
|
uint16_t numeric_port = grpc_strhtons(port->c_str());
|
1009
1009
|
grpc_resolved_address address;
|
@@ -1202,7 +1202,7 @@ grpc_ares_request* (*grpc_dns_lookup_txt_ares)(
|
|
1202
1202
|
int query_timeout_ms) = grpc_dns_lookup_txt_ares_impl;
|
1203
1203
|
|
1204
1204
|
static void grpc_cancel_ares_request_impl(grpc_ares_request* r) {
|
1205
|
-
|
1205
|
+
GRPC_CHECK_NE(r, nullptr);
|
1206
1206
|
grpc_core::MutexLock lock(&r->mu);
|
1207
1207
|
GRPC_TRACE_VLOG(cares_resolver, 2)
|
1208
1208
|
<< "(c-ares resolver) request:" << r
|
@@ -36,14 +36,17 @@ void RegisterDnsResolver(CoreConfiguration::Builder* builder) {
|
|
36
36
|
std::make_unique<EventEngineClientChannelDNSResolverFactory>());
|
37
37
|
return;
|
38
38
|
#endif
|
39
|
-
#
|
40
|
-
|
39
|
+
#ifdef GRPC_PYTHON_BUILD
|
40
|
+
bool use_ee = IsEventEnginePollerForPythonEnabled();
|
41
|
+
#else // GRPC_PYTHON_BUILD
|
42
|
+
bool use_ee = true;
|
43
|
+
#endif // GRPC_PYTHON_BUILD
|
44
|
+
if (use_ee && IsEventEngineDnsEnabled()) {
|
41
45
|
VLOG(2) << "Using EventEngine dns resolver";
|
42
46
|
builder->resolver_registry()->RegisterResolverFactory(
|
43
47
|
std::make_unique<EventEngineClientChannelDNSResolverFactory>());
|
44
48
|
return;
|
45
49
|
}
|
46
|
-
#endif
|
47
50
|
auto resolver = ConfigVars::Get().DnsResolver();
|
48
51
|
// ---- Ares resolver ----
|
49
52
|
if (ShouldUseAresDnsResolver(resolver)) {
|
@@ -29,7 +29,6 @@
|
|
29
29
|
|
30
30
|
#include "absl/base/thread_annotations.h"
|
31
31
|
#include "absl/cleanup/cleanup.h"
|
32
|
-
#include "absl/log/check.h"
|
33
32
|
#include "absl/log/log.h"
|
34
33
|
#include "absl/status/status.h"
|
35
34
|
#include "absl/status/statusor.h"
|
@@ -51,6 +50,7 @@
|
|
51
50
|
#include "src/core/service_config/service_config_impl.h"
|
52
51
|
#include "src/core/util/backoff.h"
|
53
52
|
#include "src/core/util/debug_location.h"
|
53
|
+
#include "src/core/util/grpc_check.h"
|
54
54
|
#include "src/core/util/ref_counted_ptr.h"
|
55
55
|
#include "src/core/util/sync.h"
|
56
56
|
#include "src/core/util/time.h"
|
@@ -421,7 +421,7 @@ void EventEngineClientChannelDNSResolver::EventEngineDNSRequestWrapper::
|
|
421
421
|
// Make sure field destroys before cleanup.
|
422
422
|
ValidationErrors::ScopedField field(&errors_, "txt lookup");
|
423
423
|
if (orphaned_) return;
|
424
|
-
|
424
|
+
GRPC_CHECK(is_txt_inflight_);
|
425
425
|
is_txt_inflight_ = false;
|
426
426
|
if (!service_config.ok()) {
|
427
427
|
errors_.AddError(service_config.status().message());
|
@@ -25,13 +25,13 @@
|
|
25
25
|
#include <utility>
|
26
26
|
#include <vector>
|
27
27
|
|
28
|
-
#include "absl/log/check.h"
|
29
28
|
#include "absl/status/status.h"
|
30
29
|
#include "absl/status/statusor.h"
|
31
30
|
#include "absl/strings/str_cat.h"
|
32
31
|
#include "absl/strings/str_join.h"
|
33
32
|
#include "src/core/lib/address_utils/sockaddr_utils.h"
|
34
33
|
#include "src/core/lib/channel/channel_args.h"
|
34
|
+
#include "src/core/util/grpc_check.h"
|
35
35
|
#include "src/core/util/useful.h"
|
36
36
|
|
37
37
|
// IWYU pragma: no_include <sys/socket.h>
|
@@ -45,7 +45,7 @@ EndpointAddresses::EndpointAddresses(const grpc_resolved_address& address,
|
|
45
45
|
EndpointAddresses::EndpointAddresses(
|
46
46
|
std::vector<grpc_resolved_address> addresses, const ChannelArgs& args)
|
47
47
|
: addresses_(std::move(addresses)), args_(args) {
|
48
|
-
|
48
|
+
GRPC_CHECK(!addresses_.empty());
|
49
49
|
}
|
50
50
|
|
51
51
|
EndpointAddresses::EndpointAddresses(const EndpointAddresses& other)
|
@@ -108,7 +108,7 @@ bool EndpointAddressSet::operator==(const EndpointAddressSet& other) const {
|
|
108
108
|
if (addresses_.size() != other.addresses_.size()) return false;
|
109
109
|
auto other_it = other.addresses_.begin();
|
110
110
|
for (auto it = addresses_.begin(); it != addresses_.end(); ++it) {
|
111
|
-
|
111
|
+
GRPC_CHECK(other_it != other.addresses_.end());
|
112
112
|
if (it->len != other_it->len ||
|
113
113
|
memcmp(it->addr, other_it->addr, it->len) != 0) {
|
114
114
|
return false;
|
@@ -42,6 +42,9 @@
|
|
42
42
|
// Name associated with individual address, if available (e.g., DNS name).
|
43
43
|
#define GRPC_ARG_ADDRESS_NAME "grpc.address_name"
|
44
44
|
|
45
|
+
// Backend service name associated with the addresses.
|
46
|
+
#define GRPC_ARG_BACKEND_SERVICE "grpc.internal.backend_service"
|
47
|
+
|
45
48
|
namespace grpc_core {
|
46
49
|
|
47
50
|
// A list of addresses for a given endpoint with an associated set of channel
|
@@ -25,12 +25,12 @@
|
|
25
25
|
#include <type_traits>
|
26
26
|
#include <utility>
|
27
27
|
|
28
|
-
#include "absl/log/check.h"
|
29
28
|
#include "absl/strings/string_view.h"
|
30
29
|
#include "src/core/config/core_configuration.h"
|
31
30
|
#include "src/core/lib/channel/channel_args.h"
|
32
31
|
#include "src/core/resolver/resolver_factory.h"
|
33
32
|
#include "src/core/util/debug_location.h"
|
33
|
+
#include "src/core/util/grpc_check.h"
|
34
34
|
#include "src/core/util/orphanable.h"
|
35
35
|
#include "src/core/util/uri.h"
|
36
36
|
#include "src/core/util/useful.h"
|
@@ -94,7 +94,7 @@ void FakeResolver::StartLocked() {
|
|
94
94
|
|
95
95
|
void FakeResolver::RequestReresolutionLocked() {
|
96
96
|
// Re-resolution can't happen until after we return an initial result.
|
97
|
-
|
97
|
+
GRPC_CHECK(response_generator_ != nullptr);
|
98
98
|
response_generator_->ReresolutionRequested();
|
99
99
|
}
|
100
100
|
|
@@ -25,7 +25,6 @@
|
|
25
25
|
#include <type_traits>
|
26
26
|
#include <utility>
|
27
27
|
|
28
|
-
#include "absl/log/check.h"
|
29
28
|
#include "absl/log/log.h"
|
30
29
|
#include "absl/status/statusor.h"
|
31
30
|
#include "absl/strings/str_cat.h"
|
@@ -42,6 +41,7 @@
|
|
42
41
|
#include "src/core/util/debug_location.h"
|
43
42
|
#include "src/core/util/env.h"
|
44
43
|
#include "src/core/util/gcp_metadata_query.h"
|
44
|
+
#include "src/core/util/grpc_check.h"
|
45
45
|
#include "src/core/util/json/json.h"
|
46
46
|
#include "src/core/util/json/json_writer.h"
|
47
47
|
#include "src/core/util/orphanable.h"
|
@@ -71,6 +71,7 @@ class GoogleCloud2ProdResolver final : public Resolver {
|
|
71
71
|
void ZoneQueryDone(std::string zone);
|
72
72
|
void IPv6QueryDone(bool ipv6_supported);
|
73
73
|
void StartXdsResolver();
|
74
|
+
std::shared_ptr<GrpcXdsBootstrap> ConstructBootstrap() const;
|
74
75
|
|
75
76
|
ResourceQuotaRefPtr resource_quota_;
|
76
77
|
std::shared_ptr<WorkSerializer> work_serializer_;
|
@@ -80,11 +81,12 @@ class GoogleCloud2ProdResolver final : public Resolver {
|
|
80
81
|
std::string metadata_server_name_ = "metadata.google.internal.";
|
81
82
|
bool shutdown_ = false;
|
82
83
|
|
83
|
-
|
84
|
-
std::
|
84
|
+
// Used to hold state between ctor and StartLocked().
|
85
|
+
std::string xds_uri_;
|
86
|
+
ChannelArgs args_;
|
85
87
|
|
86
|
-
OrphanablePtr<GcpMetadataQuery>
|
87
|
-
std::
|
88
|
+
OrphanablePtr<GcpMetadataQuery> zone_query_;
|
89
|
+
std::string zone_;
|
88
90
|
};
|
89
91
|
|
90
92
|
//
|
@@ -99,13 +101,13 @@ bool XdsBootstrapConfigured() {
|
|
99
101
|
GoogleCloud2ProdResolver::GoogleCloud2ProdResolver(ResolverArgs args)
|
100
102
|
: resource_quota_(args.args.GetObjectRef<ResourceQuota>()),
|
101
103
|
work_serializer_(std::move(args.work_serializer)),
|
102
|
-
pollent_(grpc_polling_entity_create_from_pollset_set(args.pollset_set))
|
104
|
+
pollent_(grpc_polling_entity_create_from_pollset_set(args.pollset_set)),
|
105
|
+
args_(std::move(args.args)) {
|
103
106
|
absl::string_view name_to_resolve = absl::StripPrefix(args.uri.path(), "/");
|
104
107
|
// If we're not running on GCP, we can't use DirectPath, so delegate
|
105
108
|
// to the DNS resolver.
|
106
109
|
const bool test_only_pretend_running_on_gcp =
|
107
|
-
|
108
|
-
.GetBool("grpc.testing.google_c2p_resolver_pretend_running_on_gcp")
|
110
|
+
args_.GetBool("grpc.testing.google_c2p_resolver_pretend_running_on_gcp")
|
109
111
|
.value_or(false);
|
110
112
|
const bool running_on_gcp =
|
111
113
|
test_only_pretend_running_on_gcp || grpc_alts_is_running_on_gcp();
|
@@ -120,28 +122,27 @@ GoogleCloud2ProdResolver::GoogleCloud2ProdResolver(ResolverArgs args)
|
|
120
122
|
using_dns_ = true;
|
121
123
|
child_resolver_ =
|
122
124
|
CoreConfiguration::Get().resolver_registry().CreateResolver(
|
123
|
-
absl::StrCat("dns:", name_to_resolve),
|
125
|
+
absl::StrCat("dns:", name_to_resolve), args_, args.pollset_set,
|
124
126
|
work_serializer_, std::move(args.result_handler));
|
125
|
-
|
127
|
+
GRPC_CHECK(child_resolver_ != nullptr);
|
126
128
|
return;
|
127
129
|
}
|
128
130
|
// Maybe override metadata server name for testing
|
129
131
|
std::optional<std::string> test_only_metadata_server_override =
|
130
|
-
|
132
|
+
args_.GetOwnedString(
|
131
133
|
"grpc.testing.google_c2p_resolver_metadata_server_override");
|
132
134
|
if (test_only_metadata_server_override.has_value() &&
|
133
135
|
!test_only_metadata_server_override->empty()) {
|
134
136
|
metadata_server_name_ = std::move(*test_only_metadata_server_override);
|
135
137
|
}
|
136
138
|
// Create xds resolver.
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
: absl::StrCat("xds:", name_to_resolve);
|
139
|
+
xds_uri_ = federation_enabled
|
140
|
+
? absl::StrCat("xds://", kC2PAuthority, "/", name_to_resolve)
|
141
|
+
: absl::StrCat("xds:", name_to_resolve);
|
141
142
|
child_resolver_ = CoreConfiguration::Get().resolver_registry().CreateResolver(
|
142
|
-
|
143
|
+
xds_uri_, args_, args.pollset_set, work_serializer_,
|
143
144
|
std::move(args.result_handler));
|
144
|
-
|
145
|
+
GRPC_CHECK(child_resolver_ != nullptr);
|
145
146
|
}
|
146
147
|
|
147
148
|
void GoogleCloud2ProdResolver::StartLocked() {
|
@@ -162,22 +163,6 @@ void GoogleCloud2ProdResolver::StartLocked() {
|
|
162
163
|
});
|
163
164
|
},
|
164
165
|
Duration::Seconds(10));
|
165
|
-
ipv6_query_ = MakeOrphanable<GcpMetadataQuery>(
|
166
|
-
metadata_server_name_, std::string(GcpMetadataQuery::kIPv6Attribute),
|
167
|
-
&pollent_,
|
168
|
-
[resolver = RefAsSubclass<GoogleCloud2ProdResolver>()](
|
169
|
-
std::string /* attribute */,
|
170
|
-
absl::StatusOr<std::string> result) mutable {
|
171
|
-
resolver->work_serializer_->Run(
|
172
|
-
[resolver, result = std::move(result)]() {
|
173
|
-
// Check that the payload is non-empty in order to work around
|
174
|
-
// the fact that there are buggy implementations of metadata
|
175
|
-
// servers in the wild, which can in some cases return 200
|
176
|
-
// plus an empty result when they should have returned 404.
|
177
|
-
resolver->IPv6QueryDone(result.ok() && !result->empty());
|
178
|
-
});
|
179
|
-
},
|
180
|
-
Duration::Seconds(10));
|
181
166
|
}
|
182
167
|
|
183
168
|
void GoogleCloud2ProdResolver::RequestReresolutionLocked() {
|
@@ -195,26 +180,17 @@ void GoogleCloud2ProdResolver::ResetBackoffLocked() {
|
|
195
180
|
void GoogleCloud2ProdResolver::ShutdownLocked() {
|
196
181
|
shutdown_ = true;
|
197
182
|
zone_query_.reset();
|
198
|
-
ipv6_query_.reset();
|
199
183
|
child_resolver_.reset();
|
200
184
|
}
|
201
185
|
|
202
186
|
void GoogleCloud2ProdResolver::ZoneQueryDone(std::string zone) {
|
203
187
|
zone_query_.reset();
|
204
188
|
zone_ = std::move(zone);
|
205
|
-
|
206
|
-
}
|
207
|
-
|
208
|
-
void GoogleCloud2ProdResolver::IPv6QueryDone(bool ipv6_supported) {
|
209
|
-
ipv6_query_.reset();
|
210
|
-
supports_ipv6_ = ipv6_supported;
|
211
|
-
if (zone_.has_value()) StartXdsResolver();
|
189
|
+
StartXdsResolver();
|
212
190
|
}
|
213
191
|
|
214
|
-
|
215
|
-
|
216
|
-
return;
|
217
|
-
}
|
192
|
+
std::shared_ptr<GrpcXdsBootstrap> GoogleCloud2ProdResolver::ConstructBootstrap()
|
193
|
+
const {
|
218
194
|
// Construct bootstrap JSON.
|
219
195
|
std::random_device rd;
|
220
196
|
std::mt19937 mt(rd());
|
@@ -222,16 +198,15 @@ void GoogleCloud2ProdResolver::StartXdsResolver() {
|
|
222
198
|
Json::Object node = {
|
223
199
|
{"id", Json::FromString(absl::StrCat("C2P-", dist(mt)))},
|
224
200
|
};
|
225
|
-
if (!zone_
|
201
|
+
if (!zone_.empty()) {
|
226
202
|
node["locality"] = Json::FromObject({
|
227
|
-
{"zone", Json::FromString(
|
203
|
+
{"zone", Json::FromString(zone_)},
|
228
204
|
});
|
229
205
|
};
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
}
|
206
|
+
// Enable dualstack endpoints from TD
|
207
|
+
node["metadata"] = Json::FromObject({
|
208
|
+
{"TRAFFICDIRECTOR_DIRECTPATH_C2P_IPV6_CAPABLE", Json::FromBool(true)},
|
209
|
+
});
|
235
210
|
// Allow the TD server uri to be overridden for testing purposes.
|
236
211
|
auto override_server =
|
237
212
|
GetEnv("GRPC_TEST_ONLY_GOOGLE_C2P_RESOLVER_TRAFFIC_DIRECTOR_URI");
|
@@ -262,8 +237,20 @@ void GoogleCloud2ProdResolver::StartXdsResolver() {
|
|
262
237
|
})},
|
263
238
|
{"node", Json::FromObject(std::move(node))},
|
264
239
|
});
|
265
|
-
|
266
|
-
|
240
|
+
return GrpcXdsBootstrap::Create(JsonDump(bootstrap)).value();
|
241
|
+
}
|
242
|
+
|
243
|
+
void GoogleCloud2ProdResolver::StartXdsResolver() {
|
244
|
+
if (shutdown_) return;
|
245
|
+
// Create XdsClient here with a custom bootstrap for C2P. When the
|
246
|
+
// xds resolver calls GrpcXdsClient::GetOrCreate(), it will get back
|
247
|
+
// the same instance rather than creating one with the normal
|
248
|
+
// bootstrap config from env vars.
|
249
|
+
static NoDestruct<std::shared_ptr<GrpcXdsBootstrap>> bootstrap(
|
250
|
+
ConstructBootstrap());
|
251
|
+
auto xds_client = GrpcXdsClient::GetOrCreate(
|
252
|
+
xds_uri_, args_, "google-c2p resolver", *bootstrap);
|
253
|
+
args_ = ChannelArgs(); // Don't need the args anymore.
|
267
254
|
// Now start xDS resolver.
|
268
255
|
child_resolver_->StartLocked();
|
269
256
|
}
|
@@ -24,7 +24,6 @@
|
|
24
24
|
#include <utility>
|
25
25
|
#include <vector>
|
26
26
|
|
27
|
-
#include "absl/log/check.h"
|
28
27
|
#include "absl/log/log.h"
|
29
28
|
#include "absl/status/status.h"
|
30
29
|
#include "absl/status/statusor.h"
|
@@ -36,6 +35,7 @@
|
|
36
35
|
#include "src/core/service_config/service_config.h"
|
37
36
|
#include "src/core/util/backoff.h"
|
38
37
|
#include "src/core/util/debug_location.h"
|
38
|
+
#include "src/core/util/grpc_check.h"
|
39
39
|
#include "src/core/util/ref_counted_ptr.h"
|
40
40
|
#include "src/core/util/uri.h"
|
41
41
|
#include "src/core/util/work_serializer.h"
|
@@ -164,7 +164,7 @@ void PollingResolver::OnRequestCompleteLocked(Result result) {
|
|
164
164
|
: result.service_config.status().ToString())
|
165
165
|
<< ", resolution_note=" << result.resolution_note;
|
166
166
|
}
|
167
|
-
|
167
|
+
GRPC_CHECK(result.result_health_callback == nullptr);
|
168
168
|
result.result_health_callback =
|
169
169
|
[self = RefAsSubclass<PollingResolver>(
|
170
170
|
DEBUG_LOCATION, "result_health_callback")](absl::Status status) {
|
@@ -194,7 +194,7 @@ void PollingResolver::GetResultStatus(absl::Status status) {
|
|
194
194
|
} else {
|
195
195
|
// Set up for retry.
|
196
196
|
const Duration delay = backoff_.NextAttemptDelay();
|
197
|
-
|
197
|
+
GRPC_CHECK(!next_resolution_timer_handle_.has_value());
|
198
198
|
if (GPR_UNLIKELY(tracer_ != nullptr && tracer_->enabled())) {
|
199
199
|
LOG(INFO) << "[polling resolver " << this << "] retrying in "
|
200
200
|
<< delay.millis() << " ms";
|
@@ -18,13 +18,13 @@
|
|
18
18
|
|
19
19
|
#include <grpc/support/port_platform.h>
|
20
20
|
|
21
|
-
#include "absl/log/check.h"
|
22
21
|
#include "absl/log/log.h"
|
23
22
|
#include "absl/status/status.h"
|
24
23
|
#include "absl/status/statusor.h"
|
25
24
|
#include "absl/strings/ascii.h"
|
26
25
|
#include "absl/strings/str_cat.h"
|
27
26
|
#include "absl/strings/str_format.h"
|
27
|
+
#include "src/core/util/grpc_check.h"
|
28
28
|
|
29
29
|
namespace grpc_core {
|
30
30
|
|
@@ -51,10 +51,11 @@ bool IsLowerCase(absl::string_view str) {
|
|
51
51
|
|
52
52
|
void ResolverRegistry::Builder::RegisterResolverFactory(
|
53
53
|
std::unique_ptr<ResolverFactory> factory) {
|
54
|
-
|
54
|
+
GRPC_CHECK(IsLowerCase(factory->scheme())) << factory->scheme();
|
55
55
|
auto [_, inserted] =
|
56
56
|
state_.factories.try_emplace(factory->scheme(), std::move(factory));
|
57
|
-
|
57
|
+
GRPC_CHECK(inserted) << "scheme " << factory->scheme()
|
58
|
+
<< " already registered";
|
58
59
|
}
|
59
60
|
|
60
61
|
bool ResolverRegistry::Builder::HasResolverFactory(
|
@@ -132,7 +133,7 @@ ResolverFactory* ResolverRegistry::LookupResolverFactory(
|
|
132
133
|
// point to the parsed URI.
|
133
134
|
ResolverFactory* ResolverRegistry::FindResolverFactory(
|
134
135
|
absl::string_view target, URI* uri, std::string* canonical_target) const {
|
135
|
-
|
136
|
+
GRPC_CHECK_NE(uri, nullptr);
|
136
137
|
absl::StatusOr<URI> tmp_uri = URI::Parse(target);
|
137
138
|
ResolverFactory* factory =
|
138
139
|
tmp_uri.ok() ? LookupResolverFactory(tmp_uri->scheme()) : nullptr;
|
@@ -18,12 +18,12 @@
|
|
18
18
|
|
19
19
|
#include <set>
|
20
20
|
|
21
|
-
#include "absl/log/check.h"
|
22
21
|
#include "absl/log/log.h"
|
23
22
|
#include "absl/strings/str_join.h"
|
24
23
|
#include "src/core/config/core_configuration.h"
|
25
24
|
#include "src/core/load_balancing/xds/xds_channel_args.h"
|
26
25
|
#include "src/core/resolver/fake/fake_resolver.h"
|
26
|
+
#include "src/core/util/grpc_check.h"
|
27
27
|
#include "src/core/util/match.h"
|
28
28
|
#include "src/core/xds/grpc/xds_cluster_parser.h"
|
29
29
|
#include "src/core/xds/grpc/xds_endpoint_parser.h"
|
@@ -608,9 +608,9 @@ void XdsDependencyManager::PopulateDnsUpdate(const std::string& dns_name,
|
|
608
608
|
std::vector<grpc_resolved_address> addresses;
|
609
609
|
ChannelArgs address_args = result.addresses->front().args();
|
610
610
|
for (const auto& address : *result.addresses) {
|
611
|
-
|
611
|
+
GRPC_CHECK_EQ(address.addresses().size(), 1UL);
|
612
612
|
addresses.emplace_back(address.addresses().front());
|
613
|
-
|
613
|
+
GRPC_CHECK_EQ(address_args, address.args());
|
614
614
|
}
|
615
615
|
locality.endpoints.emplace_back(
|
616
616
|
std::move(addresses),
|
@@ -659,8 +659,8 @@ bool XdsDependencyManager::PopulateClusterConfigMap(
|
|
659
659
|
absl::StatusOr<std::vector<absl::string_view>>* leaf_clusters,
|
660
660
|
std::vector<std::string>* resolution_notes) {
|
661
661
|
if (depth > 0) {
|
662
|
-
|
663
|
-
|
662
|
+
GRPC_CHECK_NE(leaf_clusters, nullptr);
|
663
|
+
GRPC_CHECK_NE(resolution_notes, nullptr);
|
664
664
|
}
|
665
665
|
if (depth == kMaxXdsAggregateClusterRecursionDepth) {
|
666
666
|
*leaf_clusters =
|
@@ -32,7 +32,6 @@
|
|
32
32
|
#include <variant>
|
33
33
|
#include <vector>
|
34
34
|
|
35
|
-
#include "absl/log/check.h"
|
36
35
|
#include "absl/log/log.h"
|
37
36
|
#include "absl/meta/type_traits.h"
|
38
37
|
#include "absl/random/random.h"
|
@@ -75,6 +74,7 @@
|
|
75
74
|
#include "src/core/service_config/service_config_impl.h"
|
76
75
|
#include "src/core/util/debug_location.h"
|
77
76
|
#include "src/core/util/dual_ref_counted.h"
|
77
|
+
#include "src/core/util/grpc_check.h"
|
78
78
|
#include "src/core/util/match.h"
|
79
79
|
#include "src/core/util/orphanable.h"
|
80
80
|
#include "src/core/util/ref_counted.h"
|
@@ -627,7 +627,7 @@ XdsResolver::XdsConfigSelector::XdsConfigSelector(
|
|
627
627
|
const XdsHttpFilterImpl* filter_impl =
|
628
628
|
http_filter_registry.GetFilterForType(
|
629
629
|
http_filter.config.config_proto_type_name);
|
630
|
-
|
630
|
+
GRPC_CHECK_NE(filter_impl, nullptr);
|
631
631
|
// Add filter to list.
|
632
632
|
filters_.push_back(filter_impl);
|
633
633
|
}
|
@@ -667,7 +667,7 @@ std::optional<uint64_t> HeaderHashHelper(
|
|
667
667
|
absl::Status XdsResolver::XdsConfigSelector::GetCallConfig(
|
668
668
|
GetCallConfigArgs args) {
|
669
669
|
Slice* path = args.initial_metadata->get_pointer(HttpPathMetadata());
|
670
|
-
|
670
|
+
GRPC_CHECK_NE(path, nullptr);
|
671
671
|
auto* entry = route_config_data_->GetRouteForRequest(path->as_string_view(),
|
672
672
|
args.initial_metadata);
|
673
673
|
if (entry == nullptr) {
|
@@ -715,7 +715,7 @@ absl::Status XdsResolver::XdsConfigSelector::GetCallConfig(
|
|
715
715
|
}
|
716
716
|
}
|
717
717
|
if (index == 0) index = start_index;
|
718
|
-
|
718
|
+
GRPC_CHECK(entry->weighted_cluster_state[index].range_end > key);
|
719
719
|
cluster_name = absl::StrCat(
|
720
720
|
"cluster:", entry->weighted_cluster_state[index].cluster);
|
721
721
|
method_config = entry->weighted_cluster_state[index].method_config;
|
@@ -729,7 +729,7 @@ absl::Status XdsResolver::XdsConfigSelector::GetCallConfig(
|
|
729
729
|
method_config = entry->method_config;
|
730
730
|
});
|
731
731
|
auto cluster = route_config_data_->FindClusterRef(cluster_name);
|
732
|
-
|
732
|
+
GRPC_CHECK(cluster != nullptr);
|
733
733
|
// Generate a hash.
|
734
734
|
std::optional<uint64_t> hash;
|
735
735
|
for (const auto& hash_policy : route_action->hash_policies) {
|
@@ -781,7 +781,7 @@ void XdsResolver::XdsConfigSelector::AddFilters(
|
|
781
781
|
Blackboard* new_blackboard) {
|
782
782
|
const auto& hcm =
|
783
783
|
std::get<XdsListenerResource::HttpConnectionManager>(listener_->listener);
|
784
|
-
|
784
|
+
GRPC_CHECK_EQ(filters_.size(), hcm.http_filters.size());
|
785
785
|
for (size_t i = 0; i < filters_.size(); ++i) {
|
786
786
|
auto* filter = filters_[i];
|
787
787
|
filter->AddFilter(builder);
|
@@ -796,7 +796,7 @@ XdsResolver::XdsConfigSelector::GetFilters(const Blackboard* old_blackboard,
|
|
796
796
|
Blackboard* new_blackboard) {
|
797
797
|
const auto& hcm =
|
798
798
|
std::get<XdsListenerResource::HttpConnectionManager>(listener_->listener);
|
799
|
-
|
799
|
+
GRPC_CHECK_EQ(filters_.size(), hcm.http_filters.size());
|
800
800
|
std::vector<const grpc_channel_filter*> filters;
|
801
801
|
for (size_t i = 0; i < filters_.size(); ++i) {
|
802
802
|
auto* filter = filters_[i];
|
@@ -863,7 +863,7 @@ void XdsResolver::ClusterSelectionFilter::Call::OnClientInitialMetadata(
|
|
863
863
|
ClientMetadata&) {
|
864
864
|
auto* service_config_call_data =
|
865
865
|
GetContext<ClientChannelServiceConfigCallData>();
|
866
|
-
|
866
|
+
GRPC_CHECK_NE(service_config_call_data, nullptr);
|
867
867
|
auto* route_state_attribute = static_cast<XdsRouteStateAttributeImpl*>(
|
868
868
|
service_config_call_data->GetCallAttribute<XdsRouteStateAttribute>());
|
869
869
|
auto* cluster_name_attribute =
|
@@ -1068,7 +1068,7 @@ void XdsResolver::GenerateErrorResult(std::string error) {
|
|
1068
1068
|
Result result;
|
1069
1069
|
result.addresses.emplace();
|
1070
1070
|
result.service_config = ServiceConfigImpl::Create(args_, "{}");
|
1071
|
-
|
1071
|
+
GRPC_CHECK(result.service_config.ok());
|
1072
1072
|
result.resolution_note = std::move(error);
|
1073
1073
|
result.args = args_;
|
1074
1074
|
result_handler_->ReportResult(std::move(result));
|