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
@@ -30,12 +30,12 @@
|
|
30
30
|
#include <variant>
|
31
31
|
#include <vector>
|
32
32
|
|
33
|
-
#include "absl/log/check.h"
|
34
33
|
#include "absl/log/log.h"
|
35
34
|
#include "absl/status/status.h"
|
36
35
|
#include "absl/status/statusor.h"
|
37
36
|
#include "absl/strings/str_cat.h"
|
38
37
|
#include "absl/strings/string_view.h"
|
38
|
+
#include "src/core/client_channel/client_channel_internal.h"
|
39
39
|
#include "src/core/config/core_configuration.h"
|
40
40
|
#include "src/core/lib/channel/channel_args.h"
|
41
41
|
#include "src/core/lib/debug/trace.h"
|
@@ -50,6 +50,7 @@
|
|
50
50
|
#include "src/core/resolver/xds/xds_dependency_manager.h"
|
51
51
|
#include "src/core/util/debug_location.h"
|
52
52
|
#include "src/core/util/env.h"
|
53
|
+
#include "src/core/util/grpc_check.h"
|
53
54
|
#include "src/core/util/json/json.h"
|
54
55
|
#include "src/core/util/json/json_args.h"
|
55
56
|
#include "src/core/util/json/json_object_loader.h"
|
@@ -121,8 +122,43 @@ class CdsLb final : public LoadBalancingPolicy {
|
|
121
122
|
void ExitIdleLocked() override;
|
122
123
|
|
123
124
|
private:
|
125
|
+
class Picker final : public SubchannelPicker {
|
126
|
+
public:
|
127
|
+
Picker(CdsLb* cds_lb, RefCountedPtr<SubchannelPicker> child_picker)
|
128
|
+
: cluster_name_(cds_lb->cluster_name_),
|
129
|
+
child_picker_(std::move(child_picker)) {}
|
130
|
+
|
131
|
+
PickResult Pick(PickArgs args) override {
|
132
|
+
auto* call_state =
|
133
|
+
static_cast<ClientChannelLbCallState*>(args.call_state);
|
134
|
+
auto* call_attempt_tracer = call_state->GetCallAttemptTracer();
|
135
|
+
if (call_attempt_tracer != nullptr) {
|
136
|
+
call_attempt_tracer->SetOptionalLabel(
|
137
|
+
ClientCallTracerInterface::CallAttemptTracer::OptionalLabelKey::
|
138
|
+
kBackendService,
|
139
|
+
cluster_name_);
|
140
|
+
}
|
141
|
+
return child_picker_->Pick(args);
|
142
|
+
}
|
143
|
+
|
144
|
+
private:
|
145
|
+
RefCountedStringValue cluster_name_;
|
146
|
+
RefCountedPtr<SubchannelPicker> child_picker_;
|
147
|
+
};
|
148
|
+
|
124
149
|
// Delegating helper to be passed to child policy.
|
125
|
-
|
150
|
+
class Helper final
|
151
|
+
: public ParentOwningDelegatingChannelControlHelper<CdsLb> {
|
152
|
+
public:
|
153
|
+
using ParentOwningDelegatingChannelControlHelper::
|
154
|
+
ParentOwningDelegatingChannelControlHelper;
|
155
|
+
|
156
|
+
void UpdateState(grpc_connectivity_state state, const absl::Status& status,
|
157
|
+
RefCountedPtr<SubchannelPicker> picker) override {
|
158
|
+
parent_helper()->UpdateState(
|
159
|
+
state, status, MakeRefCounted<Picker>(parent(), std::move(picker)));
|
160
|
+
}
|
161
|
+
};
|
126
162
|
|
127
163
|
// State used to retain child policy names for the priority policy.
|
128
164
|
struct ChildNameState {
|
@@ -160,7 +196,7 @@ class CdsLb final : public LoadBalancingPolicy {
|
|
160
196
|
|
161
197
|
void ReportTransientFailure(absl::Status status);
|
162
198
|
|
163
|
-
|
199
|
+
RefCountedStringValue cluster_name_;
|
164
200
|
RefCountedPtr<const XdsConfig> xds_config_;
|
165
201
|
|
166
202
|
// Cluster subscription, for dynamic clusters (e.g., RLS).
|
@@ -225,7 +261,7 @@ std::string MakeChildPolicyName(absl::string_view cluster,
|
|
225
261
|
class PriorityEndpointIterator final : public EndpointAddressesIterator {
|
226
262
|
public:
|
227
263
|
PriorityEndpointIterator(
|
228
|
-
|
264
|
+
RefCountedStringValue cluster_name, bool use_http_connect,
|
229
265
|
std::shared_ptr<const XdsEndpointResource> endpoints,
|
230
266
|
std::vector<size_t /*child_number*/> priority_child_numbers)
|
231
267
|
: cluster_name_(std::move(cluster_name)),
|
@@ -238,8 +274,8 @@ class PriorityEndpointIterator final : public EndpointAddressesIterator {
|
|
238
274
|
const auto& priority_list = GetUpdatePriorityList(endpoints_.get());
|
239
275
|
for (size_t priority = 0; priority < priority_list.size(); ++priority) {
|
240
276
|
const auto& priority_entry = priority_list[priority];
|
241
|
-
std::string priority_child_name =
|
242
|
-
|
277
|
+
std::string priority_child_name = MakeChildPolicyName(
|
278
|
+
cluster_name_.as_string_view(), priority_child_numbers_[priority]);
|
243
279
|
for (const auto& [locality_name, locality] : priority_entry.localities) {
|
244
280
|
std::vector<RefCountedStringValue> hierarchical_path = {
|
245
281
|
RefCountedStringValue(priority_child_name),
|
@@ -264,7 +300,7 @@ class PriorityEndpointIterator final : public EndpointAddressesIterator {
|
|
264
300
|
}
|
265
301
|
|
266
302
|
private:
|
267
|
-
|
303
|
+
RefCountedStringValue cluster_name_;
|
268
304
|
bool use_http_connect_;
|
269
305
|
std::shared_ptr<const XdsEndpointResource> endpoints_;
|
270
306
|
std::vector<size_t /*child_number*/> priority_child_numbers_;
|
@@ -277,19 +313,19 @@ absl::Status CdsLb::UpdateLocked(UpdateArgs args) {
|
|
277
313
|
<< "[cdslb " << this
|
278
314
|
<< "] received update: cluster=" << new_config->cluster()
|
279
315
|
<< " is_dynamic=" << new_config->is_dynamic();
|
280
|
-
|
316
|
+
GRPC_CHECK(new_config != nullptr);
|
281
317
|
// Cluster name should never change, because we should use a different
|
282
318
|
// child name in xds_cluster_manager in that case.
|
283
|
-
if (cluster_name_.empty()) {
|
284
|
-
cluster_name_ = new_config->cluster();
|
319
|
+
if (cluster_name_.as_string_view().empty()) {
|
320
|
+
cluster_name_ = RefCountedStringValue(new_config->cluster());
|
285
321
|
} else {
|
286
|
-
|
322
|
+
GRPC_CHECK_EQ(cluster_name_.as_string_view(), new_config->cluster());
|
287
323
|
}
|
288
324
|
// Start dynamic subscription if needed.
|
289
325
|
if (new_config->is_dynamic() && subscription_ == nullptr) {
|
290
326
|
GRPC_TRACE_LOG(cds_lb, INFO)
|
291
327
|
<< "[cdslb " << this << "] obtaining dynamic subscription for cluster "
|
292
|
-
<< cluster_name_;
|
328
|
+
<< cluster_name_.as_string_view();
|
293
329
|
auto* dependency_mgr = args.args.GetObject<XdsDependencyManager>();
|
294
330
|
if (dependency_mgr == nullptr) {
|
295
331
|
// Should never happen.
|
@@ -298,7 +334,8 @@ absl::Status CdsLb::UpdateLocked(UpdateArgs args) {
|
|
298
334
|
ReportTransientFailure(status);
|
299
335
|
return status;
|
300
336
|
}
|
301
|
-
subscription_ =
|
337
|
+
subscription_ =
|
338
|
+
dependency_mgr->GetClusterSubscription(cluster_name_.as_string_view());
|
302
339
|
}
|
303
340
|
// Get xDS config.
|
304
341
|
auto new_xds_config = args.args.GetObjectRef<XdsConfig>();
|
@@ -309,7 +346,7 @@ absl::Status CdsLb::UpdateLocked(UpdateArgs args) {
|
|
309
346
|
ReportTransientFailure(status);
|
310
347
|
return status;
|
311
348
|
}
|
312
|
-
auto it = new_xds_config->clusters.find(cluster_name_);
|
349
|
+
auto it = new_xds_config->clusters.find(cluster_name_.as_string_view());
|
313
350
|
if (it == new_xds_config->clusters.end()) {
|
314
351
|
// Cluster not present.
|
315
352
|
if (new_config->is_dynamic()) {
|
@@ -318,14 +355,16 @@ absl::Status CdsLb::UpdateLocked(UpdateArgs args) {
|
|
318
355
|
// got the new cluster, in which case it will still be missing.
|
319
356
|
GRPC_TRACE_LOG(cds_lb, INFO)
|
320
357
|
<< "[cdslb " << this
|
321
|
-
<< "] xDS config has no entry for dynamic cluster "
|
358
|
+
<< "] xDS config has no entry for dynamic cluster "
|
359
|
+
<< cluster_name_.as_string_view()
|
322
360
|
<< ", waiting for subsequent update";
|
323
361
|
// Stay in CONNECTING until we get an update that has the cluster.
|
324
362
|
return absl::OkStatus();
|
325
363
|
}
|
326
364
|
// Not a dynamic cluster. This should never happen.
|
327
|
-
absl::Status status = absl::UnavailableError(
|
328
|
-
"xDS config has no entry for static cluster ",
|
365
|
+
absl::Status status = absl::UnavailableError(
|
366
|
+
absl::StrCat("xDS config has no entry for static cluster ",
|
367
|
+
cluster_name_.as_string_view()));
|
329
368
|
ReportTransientFailure(status);
|
330
369
|
return status;
|
331
370
|
}
|
@@ -335,11 +374,11 @@ absl::Status CdsLb::UpdateLocked(UpdateArgs args) {
|
|
335
374
|
ReportTransientFailure(new_cluster_config.status());
|
336
375
|
return new_cluster_config.status();
|
337
376
|
}
|
338
|
-
|
377
|
+
GRPC_CHECK_NE(new_cluster_config->cluster, nullptr);
|
339
378
|
// Find old cluster, if any.
|
340
379
|
const XdsConfig::ClusterConfig* old_cluster_config = nullptr;
|
341
380
|
if (xds_config_ != nullptr) {
|
342
|
-
auto it_old = xds_config_->clusters.find(cluster_name_);
|
381
|
+
auto it_old = xds_config_->clusters.find(cluster_name_.as_string_view());
|
343
382
|
if (it_old != xds_config_->clusters.end() && it_old->second.ok()) {
|
344
383
|
old_cluster_config = &*it_old->second;
|
345
384
|
// If nothing changed for a leaf cluster, then ignore the update.
|
@@ -375,11 +414,12 @@ absl::Status CdsLb::UpdateLocked(UpdateArgs args) {
|
|
375
414
|
ReportTransientFailure(aggregate_cluster_config.status());
|
376
415
|
return aggregate_cluster_config.status();
|
377
416
|
}
|
378
|
-
|
417
|
+
GRPC_CHECK_NE(aggregate_cluster_config->cluster, nullptr);
|
379
418
|
aggregate_cluster_resource = aggregate_cluster_config->cluster.get();
|
380
419
|
}
|
381
420
|
} else {
|
382
|
-
args.args = args.args.Set(kArgXdsAggregateClusterName,
|
421
|
+
args.args = args.args.Set(kArgXdsAggregateClusterName,
|
422
|
+
cluster_name_.as_string_view());
|
383
423
|
}
|
384
424
|
}
|
385
425
|
// Construct child policy config and update state based on the cluster type.
|
@@ -408,6 +448,9 @@ absl::Status CdsLb::UpdateLocked(UpdateArgs args) {
|
|
408
448
|
// Construct child policy config.
|
409
449
|
child_policy_config_json = CreateChildPolicyConfigForLeafCluster(
|
410
450
|
*new_cluster_config, endpoint_config, aggregate_cluster_resource);
|
451
|
+
// Pass backend service label to child policy.
|
452
|
+
args.args = args.args.Set(GRPC_ARG_BACKEND_SERVICE,
|
453
|
+
cluster_name_.as_string_view());
|
411
454
|
},
|
412
455
|
// Aggregate cluster.
|
413
456
|
[&](const XdsConfig::ClusterConfig::AggregateConfig& aggregate_config) {
|
@@ -426,9 +469,9 @@ absl::Status CdsLb::UpdateLocked(UpdateArgs args) {
|
|
426
469
|
child_policy_config_json);
|
427
470
|
if (!child_config.ok()) {
|
428
471
|
// Should never happen.
|
429
|
-
absl::Status status = absl::InternalError(
|
430
|
-
|
431
|
-
|
472
|
+
absl::Status status = absl::InternalError(absl::StrCat(
|
473
|
+
cluster_name_.as_string_view(), ": error parsing child policy config: ",
|
474
|
+
child_config.status().message()));
|
432
475
|
ReportTransientFailure(status);
|
433
476
|
return status;
|
434
477
|
}
|
@@ -444,8 +487,8 @@ absl::Status CdsLb::UpdateLocked(UpdateArgs args) {
|
|
444
487
|
(*child_config)->name(), std::move(lb_args));
|
445
488
|
if (child_policy_ == nullptr) {
|
446
489
|
// Should never happen.
|
447
|
-
absl::Status status = absl::UnavailableError(
|
448
|
-
|
490
|
+
absl::Status status = absl::UnavailableError(absl::StrCat(
|
491
|
+
cluster_name_.as_string_view(), ": failed to create child policy"));
|
449
492
|
ReportTransientFailure(status);
|
450
493
|
return status;
|
451
494
|
}
|
@@ -465,7 +508,7 @@ CdsLb::ChildNameState CdsLb::ComputeChildNames(
|
|
465
508
|
const XdsConfig::ClusterConfig* old_cluster,
|
466
509
|
const XdsConfig::ClusterConfig& new_cluster,
|
467
510
|
const XdsConfig::ClusterConfig::EndpointConfig& endpoint_config) const {
|
468
|
-
|
511
|
+
GRPC_CHECK(!std::holds_alternative<XdsConfig::ClusterConfig::AggregateConfig>(
|
469
512
|
new_cluster.children));
|
470
513
|
// First, build some maps from locality to child number and the reverse
|
471
514
|
// from old_cluster and child_name_state_.
|
@@ -566,8 +609,9 @@ Json CdsLb::CreateChildPolicyConfigForLeafCluster(
|
|
566
609
|
GetUpdatePriorityList(endpoint_config.endpoints.get());
|
567
610
|
for (size_t priority = 0; priority < priority_list.size(); ++priority) {
|
568
611
|
// Add priority entry, with the appropriate child name.
|
569
|
-
std::string child_name =
|
570
|
-
cluster_name_
|
612
|
+
std::string child_name =
|
613
|
+
MakeChildPolicyName(cluster_name_.as_string_view(),
|
614
|
+
child_name_state_.priority_child_numbers[priority]);
|
571
615
|
priority_priorities.emplace_back(Json::FromString(child_name));
|
572
616
|
Json::Object child_config = {{"config", xds_lb_policy}};
|
573
617
|
if (!is_logical_dns) {
|
@@ -586,7 +630,7 @@ Json CdsLb::CreateChildPolicyConfigForLeafCluster(
|
|
586
630
|
Json xds_override_host_policy = Json::FromArray({Json::FromObject({
|
587
631
|
{"xds_override_host_experimental",
|
588
632
|
Json::FromObject({
|
589
|
-
{"clusterName", Json::FromString(cluster_name_)},
|
633
|
+
{"clusterName", Json::FromString(cluster_name_.c_str())},
|
590
634
|
{"childPolicy", std::move(priority_policy)},
|
591
635
|
})},
|
592
636
|
})});
|
@@ -594,7 +638,7 @@ Json CdsLb::CreateChildPolicyConfigForLeafCluster(
|
|
594
638
|
Json xds_cluster_impl_policy = Json::FromArray({Json::FromObject({
|
595
639
|
{"xds_cluster_impl_experimental",
|
596
640
|
Json::FromObject({
|
597
|
-
{"clusterName", Json::FromString(cluster_name_)},
|
641
|
+
{"clusterName", Json::FromString(cluster_name_.c_str())},
|
598
642
|
{"childPolicy", std::move(xds_override_host_policy)},
|
599
643
|
})},
|
600
644
|
})});
|
@@ -689,7 +733,7 @@ Json CdsLb::CreateChildPolicyConfigForAggregateCluster(
|
|
689
733
|
}
|
690
734
|
|
691
735
|
void CdsLb::ResetState() {
|
692
|
-
cluster_name_
|
736
|
+
cluster_name_ = RefCountedStringValue("");
|
693
737
|
xds_config_.reset();
|
694
738
|
child_name_state_.Reset();
|
695
739
|
if (child_policy_ != nullptr) {
|
@@ -29,7 +29,6 @@
|
|
29
29
|
#include <vector>
|
30
30
|
|
31
31
|
#include "absl/base/thread_annotations.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"
|
@@ -56,6 +55,7 @@
|
|
56
55
|
#include "src/core/resolver/xds/xds_resolver_attributes.h"
|
57
56
|
#include "src/core/telemetry/call_tracer.h"
|
58
57
|
#include "src/core/util/debug_location.h"
|
58
|
+
#include "src/core/util/grpc_check.h"
|
59
59
|
#include "src/core/util/json/json.h"
|
60
60
|
#include "src/core/util/json/json_args.h"
|
61
61
|
#include "src/core/util/json/json_object_loader.h"
|
@@ -333,7 +333,7 @@ class XdsClusterImplLb::Picker::SubchannelCallTracker final
|
|
333
333
|
locality_stats_.reset(DEBUG_LOCATION, "SubchannelCallTracker");
|
334
334
|
call_counter_.reset(DEBUG_LOCATION, "SubchannelCallTracker");
|
335
335
|
#ifndef NDEBUG
|
336
|
-
|
336
|
+
GRPC_DCHECK(!started_);
|
337
337
|
#endif
|
338
338
|
}
|
339
339
|
|
@@ -561,7 +561,7 @@ absl::Status XdsClusterImplLb::UpdateLocked(UpdateArgs args) {
|
|
561
561
|
// different priority child name if that happens, which means that this
|
562
562
|
// policy instance will get replaced instead of being updated.
|
563
563
|
if (config_ != nullptr) {
|
564
|
-
|
564
|
+
GRPC_CHECK(config_->cluster_name() == new_config->cluster_name());
|
565
565
|
}
|
566
566
|
// Get xDS config.
|
567
567
|
auto new_xds_config = args.args.GetObjectRef<XdsConfig>();
|
@@ -36,7 +36,6 @@
|
|
36
36
|
|
37
37
|
#include "absl/base/thread_annotations.h"
|
38
38
|
#include "absl/functional/function_ref.h"
|
39
|
-
#include "absl/log/check.h"
|
40
39
|
#include "absl/log/log.h"
|
41
40
|
#include "absl/status/status.h"
|
42
41
|
#include "absl/status/statusor.h"
|
@@ -69,6 +68,7 @@
|
|
69
68
|
#include "src/core/resolver/endpoint_addresses.h"
|
70
69
|
#include "src/core/resolver/xds/xds_config.h"
|
71
70
|
#include "src/core/util/debug_location.h"
|
71
|
+
#include "src/core/util/grpc_check.h"
|
72
72
|
#include "src/core/util/json/json.h"
|
73
73
|
#include "src/core/util/json/json_args.h"
|
74
74
|
#include "src/core/util/json/json_object_loader.h"
|
@@ -225,7 +225,7 @@ class XdsOverrideHostLb final : public LoadBalancingPolicy {
|
|
225
225
|
// already has an owned subchannel.
|
226
226
|
void SetOwnedSubchannel(RefCountedPtr<SubchannelWrapper> subchannel)
|
227
227
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsOverrideHostLb::mu_) {
|
228
|
-
|
228
|
+
GRPC_DCHECK(!HasOwnedSubchannel());
|
229
229
|
subchannel_ = std::move(subchannel);
|
230
230
|
}
|
231
231
|
|
@@ -427,7 +427,7 @@ XdsOverrideHostLb::Picker::Picker(
|
|
427
427
|
std::optional<LoadBalancingPolicy::PickResult>
|
428
428
|
XdsOverrideHostLb::Picker::PickOverriddenHost(
|
429
429
|
XdsOverrideHostAttribute* override_host_attr) const {
|
430
|
-
|
430
|
+
GRPC_CHECK_NE(override_host_attr, nullptr);
|
431
431
|
auto cookie_address_list = override_host_attr->cookie_address_list();
|
432
432
|
if (cookie_address_list.empty()) return std::nullopt;
|
433
433
|
// The cookie has an address list, so look through the addresses in order.
|
@@ -904,7 +904,7 @@ void XdsOverrideHostLb::CreateSubchannelForAddress(absl::string_view address) {
|
|
904
904
|
<< "[xds_override_host_lb " << this << "] creating owned subchannel for "
|
905
905
|
<< address;
|
906
906
|
auto addr = StringToSockaddr(address);
|
907
|
-
|
907
|
+
GRPC_CHECK(addr.ok());
|
908
908
|
// We need to do 3 things here:
|
909
909
|
// 1. Get the per-endpoint args from the entry in subchannel_map_.
|
910
910
|
// 2. Create the subchannel using those per-endpoint args.
|
@@ -35,7 +35,6 @@
|
|
35
35
|
#include <utility>
|
36
36
|
|
37
37
|
#include "absl/base/thread_annotations.h"
|
38
|
-
#include "absl/log/check.h"
|
39
38
|
#include "absl/strings/str_cat.h"
|
40
39
|
#include "src/core/lib/iomgr/closure.h"
|
41
40
|
#include "src/core/lib/iomgr/error.h"
|
@@ -44,6 +43,7 @@
|
|
44
43
|
#include "src/core/lib/iomgr/socket_utils_posix.h"
|
45
44
|
#include "src/core/resolver/dns/c_ares/grpc_ares_ev_driver.h"
|
46
45
|
#include "src/core/resolver/dns/c_ares/grpc_ares_wrapper.h"
|
46
|
+
#include "src/core/util/grpc_check.h"
|
47
47
|
#include "src/core/util/sync.h"
|
48
48
|
|
49
49
|
namespace grpc_core {
|
@@ -113,7 +113,7 @@ class GrpcPolledFdFactoryPosix final : public GrpcPolledFdFactory {
|
|
113
113
|
GrpcPolledFd* NewGrpcPolledFdLocked(
|
114
114
|
ares_socket_t as, grpc_pollset_set* driver_pollset_set) override {
|
115
115
|
auto insert_result = owned_fds_.insert(as);
|
116
|
-
|
116
|
+
GRPC_CHECK(insert_result.second);
|
117
117
|
return new GrpcPolledFdPosix(as, driver_pollset_set);
|
118
118
|
}
|
119
119
|
|
@@ -31,7 +31,6 @@
|
|
31
31
|
#include <unordered_set>
|
32
32
|
|
33
33
|
#include "absl/functional/any_invocable.h"
|
34
|
-
#include "absl/log/check.h"
|
35
34
|
#include "absl/strings/str_format.h"
|
36
35
|
#include "src/core/lib/address_utils/sockaddr_utils.h"
|
37
36
|
#include "src/core/lib/iomgr/iocp_windows.h"
|
@@ -45,6 +44,7 @@
|
|
45
44
|
#include "src/core/resolver/dns/c_ares/grpc_ares_ev_driver.h"
|
46
45
|
#include "src/core/resolver/dns/c_ares/grpc_ares_wrapper.h"
|
47
46
|
#include "src/core/util/crash.h"
|
47
|
+
#include "src/core/util/grpc_check.h"
|
48
48
|
#include "src/core/util/memory.h"
|
49
49
|
#include "src/core/util/string.h"
|
50
50
|
|
@@ -135,8 +135,8 @@ class GrpcPolledFdWindows final : public GrpcPolledFd {
|
|
135
135
|
<< "| ~GrpcPolledFdWindows shutdown_called_: " << shutdown_called_;
|
136
136
|
CSliceUnref(read_buf_);
|
137
137
|
CSliceUnref(write_buf_);
|
138
|
-
|
139
|
-
|
138
|
+
GRPC_CHECK_EQ(read_closure_, nullptr);
|
139
|
+
GRPC_CHECK_EQ(write_closure_, nullptr);
|
140
140
|
if (!shutdown_called_) {
|
141
141
|
// This can happen if the socket was never seen by grpc ares wrapper
|
142
142
|
// code, i.e. if we never started I/O polling on it.
|
@@ -156,16 +156,16 @@ class GrpcPolledFdWindows final : public GrpcPolledFd {
|
|
156
156
|
}
|
157
157
|
|
158
158
|
void RegisterForOnReadableLocked(grpc_closure* read_closure) override {
|
159
|
-
|
159
|
+
GRPC_CHECK_EQ(read_closure_, nullptr);
|
160
160
|
read_closure_ = read_closure;
|
161
|
-
|
161
|
+
GRPC_CHECK_EQ(GRPC_SLICE_LENGTH(read_buf_), 0);
|
162
162
|
CSliceUnref(read_buf_);
|
163
|
-
|
163
|
+
GRPC_CHECK(!read_buf_has_data_);
|
164
164
|
read_buf_ = GRPC_SLICE_MALLOC(4192);
|
165
165
|
if (connect_done_) {
|
166
166
|
ContinueRegisterForOnReadableLocked();
|
167
167
|
} else {
|
168
|
-
|
168
|
+
GRPC_CHECK(pending_continue_register_for_on_readable_locked_ == false);
|
169
169
|
pending_continue_register_for_on_readable_locked_ = true;
|
170
170
|
}
|
171
171
|
}
|
@@ -175,7 +175,7 @@ class GrpcPolledFdWindows final : public GrpcPolledFd {
|
|
175
175
|
<< "(c-ares resolver) fd:|" << GetName()
|
176
176
|
<< "| ContinueRegisterForOnReadableLocked "
|
177
177
|
<< "wsa_connect_error_:" << wsa_connect_error_;
|
178
|
-
|
178
|
+
GRPC_CHECK(connect_done_);
|
179
179
|
if (wsa_connect_error_ != 0) {
|
180
180
|
ScheduleAndNullReadClosure(GRPC_WSA_ERROR(wsa_connect_error_, "connect"));
|
181
181
|
return;
|
@@ -212,16 +212,16 @@ class GrpcPolledFdWindows final : public GrpcPolledFd {
|
|
212
212
|
<< "(c-ares resolver) fd:|" << GetName()
|
213
213
|
<< "| RegisterForOnWriteableLocked called";
|
214
214
|
} else {
|
215
|
-
|
215
|
+
GRPC_CHECK(socket_type_ == SOCK_STREAM);
|
216
216
|
GRPC_TRACE_VLOG(cares_resolver, 2)
|
217
217
|
<< "(c-ares resolver) fd:|" << GetName()
|
218
218
|
<< "| RegisterForOnWriteableLocked called tcp_write_state_: "
|
219
219
|
<< tcp_write_state_ << " connect_done_: " << connect_done_;
|
220
220
|
}
|
221
|
-
|
221
|
+
GRPC_CHECK_EQ(write_closure_, nullptr);
|
222
222
|
write_closure_ = write_closure;
|
223
223
|
if (!connect_done_) {
|
224
|
-
|
224
|
+
GRPC_CHECK(!pending_continue_register_for_on_writeable_locked_);
|
225
225
|
pending_continue_register_for_on_writeable_locked_ = true;
|
226
226
|
// Register an async OnTcpConnect callback here rather than when the
|
227
227
|
// connect was initiated, since we are now guaranteed to hold a ref of the
|
@@ -237,7 +237,7 @@ class GrpcPolledFdWindows final : public GrpcPolledFd {
|
|
237
237
|
<< "(c-ares resolver) fd:|" << GetName()
|
238
238
|
<< "| ContinueRegisterForOnWriteableLocked "
|
239
239
|
<< "wsa_connect_error_:" << wsa_connect_error_;
|
240
|
-
|
240
|
+
GRPC_CHECK(connect_done_);
|
241
241
|
if (wsa_connect_error_ != 0) {
|
242
242
|
ScheduleAndNullWriteClosure(
|
243
243
|
GRPC_WSA_ERROR(wsa_connect_error_, "connect"));
|
@@ -246,7 +246,7 @@ class GrpcPolledFdWindows final : public GrpcPolledFd {
|
|
246
246
|
if (socket_type_ == SOCK_DGRAM) {
|
247
247
|
ScheduleAndNullWriteClosure(absl::OkStatus());
|
248
248
|
} else {
|
249
|
-
|
249
|
+
GRPC_CHECK(socket_type_ == SOCK_STREAM);
|
250
250
|
int wsa_error_code = 0;
|
251
251
|
switch (tcp_write_state_) {
|
252
252
|
case WRITE_IDLE:
|
@@ -272,7 +272,7 @@ class GrpcPolledFdWindows final : public GrpcPolledFd {
|
|
272
272
|
bool IsFdStillReadableLocked() override { return read_buf_has_data_; }
|
273
273
|
|
274
274
|
void ShutdownLocked(grpc_error_handle /* error */) override {
|
275
|
-
|
275
|
+
GRPC_CHECK(!shutdown_called_);
|
276
276
|
shutdown_called_ = true;
|
277
277
|
on_shutdown_locked_();
|
278
278
|
grpc_winsocket_shutdown(winsocket_);
|
@@ -308,7 +308,7 @@ class GrpcPolledFdWindows final : public GrpcPolledFd {
|
|
308
308
|
// c-ares overloads this recv_from virtual socket function to receive
|
309
309
|
// data on both UDP and TCP sockets, and from is nullptr for TCP.
|
310
310
|
if (from != nullptr) {
|
311
|
-
|
311
|
+
GRPC_CHECK(*from_len >= recv_from_source_addr_len_);
|
312
312
|
memcpy(from, &recv_from_source_addr_, recv_from_source_addr_len_);
|
313
313
|
*from_len = recv_from_source_addr_len_;
|
314
314
|
}
|
@@ -379,7 +379,7 @@ class GrpcPolledFdWindows final : public GrpcPolledFd {
|
|
379
379
|
// to write everything inline.
|
380
380
|
GRPC_TRACE_VLOG(cares_resolver, 2)
|
381
381
|
<< "(c-ares resolver) fd:" << GetName() << " SendVUDP called";
|
382
|
-
|
382
|
+
GRPC_CHECK_EQ(GRPC_SLICE_LENGTH(write_buf_), 0);
|
383
383
|
CSliceUnref(write_buf_);
|
384
384
|
write_buf_ = FlattenIovec(iov, iov_count);
|
385
385
|
DWORD bytes_sent = 0;
|
@@ -414,7 +414,7 @@ class GrpcPolledFdWindows final : public GrpcPolledFd {
|
|
414
414
|
switch (tcp_write_state_) {
|
415
415
|
case WRITE_IDLE:
|
416
416
|
tcp_write_state_ = WRITE_REQUESTED;
|
417
|
-
|
417
|
+
GRPC_CHECK_EQ(GRPC_SLICE_LENGTH(write_buf_), 0);
|
418
418
|
CSliceUnref(write_buf_);
|
419
419
|
write_buf_ = FlattenIovec(iov, iov_count);
|
420
420
|
wsa_error_ctx->SetWSAError(WSAEWOULDBLOCK);
|
@@ -430,12 +430,12 @@ class GrpcPolledFdWindows final : public GrpcPolledFd {
|
|
430
430
|
// send again. If c-ares still needs to send even more data, we'll get
|
431
431
|
// to it eventually.
|
432
432
|
grpc_slice currently_attempted = FlattenIovec(iov, iov_count);
|
433
|
-
|
434
|
-
|
433
|
+
GRPC_CHECK(GRPC_SLICE_LENGTH(currently_attempted) >=
|
434
|
+
GRPC_SLICE_LENGTH(write_buf_));
|
435
435
|
ares_ssize_t total_sent = 0;
|
436
436
|
for (size_t i = 0; i < GRPC_SLICE_LENGTH(write_buf_); i++) {
|
437
|
-
|
438
|
-
|
437
|
+
GRPC_CHECK(GRPC_SLICE_START_PTR(currently_attempted)[i] ==
|
438
|
+
GRPC_SLICE_START_PTR(write_buf_)[i]);
|
439
439
|
total_sent++;
|
440
440
|
}
|
441
441
|
CSliceUnref(currently_attempted);
|
@@ -460,9 +460,9 @@ class GrpcPolledFdWindows final : public GrpcPolledFd {
|
|
460
460
|
<< pending_continue_register_for_on_readable_locked_
|
461
461
|
<< " pending_register_for_writeable:"
|
462
462
|
<< pending_continue_register_for_on_writeable_locked_;
|
463
|
-
|
463
|
+
GRPC_CHECK(!connect_done_);
|
464
464
|
connect_done_ = true;
|
465
|
-
|
465
|
+
GRPC_CHECK_EQ(wsa_connect_error_, 0);
|
466
466
|
if (!error.ok() || shutdown_called_) {
|
467
467
|
wsa_connect_error_ = WSA_OPERATION_ABORTED;
|
468
468
|
} else {
|
@@ -472,7 +472,7 @@ class GrpcPolledFdWindows final : public GrpcPolledFd {
|
|
472
472
|
WSAGetOverlappedResult(grpc_winsocket_wrapped_socket(winsocket_),
|
473
473
|
&winsocket_->write_info.overlapped,
|
474
474
|
&transferred_bytes, FALSE, &flags);
|
475
|
-
|
475
|
+
GRPC_CHECK_EQ(transferred_bytes, 0);
|
476
476
|
if (!wsa_success) {
|
477
477
|
wsa_connect_error_ = WSAGetLastError();
|
478
478
|
char* msg = gpr_format_message(wsa_connect_error_);
|
@@ -507,8 +507,8 @@ class GrpcPolledFdWindows final : public GrpcPolledFd {
|
|
507
507
|
ares_socklen_t target_len) {
|
508
508
|
GRPC_TRACE_VLOG(cares_resolver, 2)
|
509
509
|
<< "(c-ares resolver) fd:" << GetName() << " ConnectUDP";
|
510
|
-
|
511
|
-
|
510
|
+
GRPC_CHECK(!connect_done_);
|
511
|
+
GRPC_CHECK_EQ(wsa_connect_error_, 0);
|
512
512
|
SOCKET s = grpc_winsocket_wrapped_socket(winsocket_);
|
513
513
|
int out =
|
514
514
|
WSAConnect(s, target, target_len, nullptr, nullptr, nullptr, nullptr);
|
@@ -652,7 +652,7 @@ class GrpcPolledFdWindows final : public GrpcPolledFd {
|
|
652
652
|
void OnIocpWriteableLocked(grpc_error_handle error) {
|
653
653
|
GRPC_TRACE_VLOG(cares_resolver, 2)
|
654
654
|
<< "(c-ares resolver) OnIocpWriteableInner. fd:|" << GetName() << "|";
|
655
|
-
|
655
|
+
GRPC_CHECK(socket_type_ == SOCK_STREAM);
|
656
656
|
if (error.ok()) {
|
657
657
|
if (winsocket_->write_info.wsa_error != 0) {
|
658
658
|
error = GRPC_WSA_ERROR(winsocket_->write_info.wsa_error,
|
@@ -665,7 +665,7 @@ class GrpcPolledFdWindows final : public GrpcPolledFd {
|
|
665
665
|
<< StatusToString(error) << "|";
|
666
666
|
}
|
667
667
|
}
|
668
|
-
|
668
|
+
GRPC_CHECK(tcp_write_state_ == WRITE_PENDING);
|
669
669
|
if (error.ok()) {
|
670
670
|
tcp_write_state_ = WRITE_WAITING_FOR_VERIFICATION_UPON_RETRY;
|
671
671
|
write_buf_ = grpc_slice_sub_no_ref(
|
@@ -726,7 +726,7 @@ class GrpcPolledFdFactoryWindows final : public GrpcPolledFdFactory {
|
|
726
726
|
GrpcPolledFd* NewGrpcPolledFdLocked(
|
727
727
|
ares_socket_t as, grpc_pollset_set* /* driver_pollset_set */) override {
|
728
728
|
auto it = sockets_.find(as);
|
729
|
-
|
729
|
+
GRPC_CHECK(it != sockets_.end());
|
730
730
|
return it->second;
|
731
731
|
}
|
732
732
|
|
@@ -777,7 +777,7 @@ class GrpcPolledFdFactoryWindows final : public GrpcPolledFdFactory {
|
|
777
777
|
<< "(c-ares resolver) fd:" << polled_fd->GetName()
|
778
778
|
<< " created with params af:" << af << " type:" << type
|
779
779
|
<< " protocol:" << protocol;
|
780
|
-
|
780
|
+
GRPC_CHECK(self->sockets_.insert({s, polled_fd}).second);
|
781
781
|
return s;
|
782
782
|
}
|
783
783
|
|
@@ -787,7 +787,7 @@ class GrpcPolledFdFactoryWindows final : public GrpcPolledFdFactory {
|
|
787
787
|
GrpcPolledFdFactoryWindows* self =
|
788
788
|
static_cast<GrpcPolledFdFactoryWindows*>(user_data);
|
789
789
|
auto it = self->sockets_.find(as);
|
790
|
-
|
790
|
+
GRPC_CHECK(it != self->sockets_.end());
|
791
791
|
return it->second->Connect(&wsa_error_ctx, target, target_len);
|
792
792
|
}
|
793
793
|
|
@@ -797,7 +797,7 @@ class GrpcPolledFdFactoryWindows final : public GrpcPolledFdFactory {
|
|
797
797
|
GrpcPolledFdFactoryWindows* self =
|
798
798
|
static_cast<GrpcPolledFdFactoryWindows*>(user_data);
|
799
799
|
auto it = self->sockets_.find(as);
|
800
|
-
|
800
|
+
GRPC_CHECK(it != self->sockets_.end());
|
801
801
|
return it->second->SendV(&wsa_error_ctx, iov, iovec_count);
|
802
802
|
}
|
803
803
|
|
@@ -808,7 +808,7 @@ class GrpcPolledFdFactoryWindows final : public GrpcPolledFdFactory {
|
|
808
808
|
GrpcPolledFdFactoryWindows* self =
|
809
809
|
static_cast<GrpcPolledFdFactoryWindows*>(user_data);
|
810
810
|
auto it = self->sockets_.find(as);
|
811
|
-
|
811
|
+
GRPC_CHECK(it != self->sockets_.end());
|
812
812
|
return it->second->RecvFrom(&wsa_error_ctx, data, data_len, flags, from,
|
813
813
|
from_len);
|
814
814
|
}
|