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
@@ -22,7 +22,6 @@
|
|
22
22
|
#include <winsock2.h>
|
23
23
|
|
24
24
|
#include "absl/functional/any_invocable.h"
|
25
|
-
#include "absl/log/check.h"
|
26
25
|
#include "absl/status/status.h"
|
27
26
|
#include "absl/strings/str_format.h"
|
28
27
|
#include "src/core/lib/address_utils/sockaddr_utils.h"
|
@@ -35,6 +34,7 @@
|
|
35
34
|
#include "src/core/lib/iomgr/error.h"
|
36
35
|
#include "src/core/lib/slice/slice.h"
|
37
36
|
#include "src/core/util/debug_location.h"
|
37
|
+
#include "src/core/util/grpc_check.h"
|
38
38
|
#include "src/core/util/sync.h"
|
39
39
|
|
40
40
|
// TODO(apolcyn): remove this hack after fixing upstream.
|
@@ -130,8 +130,8 @@ class GrpcPolledFdWindows : public GrpcPolledFd {
|
|
130
130
|
<< "| ~GrpcPolledFdWindows shutdown_called_: " << shutdown_called_;
|
131
131
|
grpc_core::CSliceUnref(read_buf_);
|
132
132
|
grpc_core::CSliceUnref(write_buf_);
|
133
|
-
|
134
|
-
|
133
|
+
GRPC_CHECK(read_closure_ == nullptr);
|
134
|
+
GRPC_CHECK(write_closure_ == nullptr);
|
135
135
|
if (!shutdown_called_) {
|
136
136
|
winsocket_->Shutdown(DEBUG_LOCATION, "~GrpcPolledFdWindows");
|
137
137
|
}
|
@@ -139,15 +139,15 @@ class GrpcPolledFdWindows : public GrpcPolledFd {
|
|
139
139
|
|
140
140
|
void RegisterForOnReadableLocked(
|
141
141
|
absl::AnyInvocable<void(absl::Status)> read_closure) override {
|
142
|
-
|
142
|
+
GRPC_CHECK(read_closure_ == nullptr);
|
143
143
|
read_closure_ = std::move(read_closure);
|
144
144
|
grpc_core::CSliceUnref(read_buf_);
|
145
|
-
|
145
|
+
GRPC_CHECK(!read_buf_has_data_);
|
146
146
|
read_buf_ = GRPC_SLICE_MALLOC(kReadBufferSize);
|
147
147
|
if (connect_done_) {
|
148
148
|
ContinueRegisterForOnReadableLocked();
|
149
149
|
} else {
|
150
|
-
|
150
|
+
GRPC_CHECK(pending_continue_register_for_on_readable_locked_ == false);
|
151
151
|
pending_continue_register_for_on_readable_locked_ = true;
|
152
152
|
}
|
153
153
|
}
|
@@ -159,17 +159,17 @@ class GrpcPolledFdWindows : public GrpcPolledFd {
|
|
159
159
|
<< "(EventEngine c-ares resolver) fd:|" << GetName()
|
160
160
|
<< "| RegisterForOnWriteableLocked called";
|
161
161
|
} else {
|
162
|
-
|
162
|
+
GRPC_CHECK(socket_type_ == SOCK_STREAM);
|
163
163
|
GRPC_TRACE_LOG(cares_resolver, INFO)
|
164
164
|
<< "(EventEngine c-ares resolver) fd:|" << GetName()
|
165
165
|
<< "| RegisterForOnWriteableLocked called tcp_write_state_: "
|
166
166
|
<< static_cast<int>(tcp_write_state_)
|
167
167
|
<< " connect_done_: " << connect_done_;
|
168
168
|
}
|
169
|
-
|
169
|
+
GRPC_CHECK(write_closure_ == nullptr);
|
170
170
|
write_closure_ = std::move(write_closure);
|
171
171
|
if (!connect_done_) {
|
172
|
-
|
172
|
+
GRPC_CHECK(!pending_continue_register_for_on_writeable_locked_);
|
173
173
|
pending_continue_register_for_on_writeable_locked_ = true;
|
174
174
|
} else {
|
175
175
|
ContinueRegisterForOnWriteableLocked();
|
@@ -179,7 +179,7 @@ class GrpcPolledFdWindows : public GrpcPolledFd {
|
|
179
179
|
bool IsFdStillReadableLocked() override { return read_buf_has_data_; }
|
180
180
|
|
181
181
|
bool ShutdownLocked(absl::Status error) override {
|
182
|
-
|
182
|
+
GRPC_CHECK(!shutdown_called_);
|
183
183
|
if (!absl::IsCancelled(error)) {
|
184
184
|
return false;
|
185
185
|
}
|
@@ -224,7 +224,7 @@ class GrpcPolledFdWindows : public GrpcPolledFd {
|
|
224
224
|
// c-ares overloads this recv_from virtual socket function to receive
|
225
225
|
// data on both UDP and TCP sockets, and from is nullptr for TCP.
|
226
226
|
if (from != nullptr) {
|
227
|
-
|
227
|
+
GRPC_CHECK(*from_len >= recv_from_source_addr_len_);
|
228
228
|
memcpy(from, &recv_from_source_addr_, recv_from_source_addr_len_);
|
229
229
|
*from_len = recv_from_source_addr_len_;
|
230
230
|
}
|
@@ -295,7 +295,7 @@ class GrpcPolledFdWindows : public GrpcPolledFd {
|
|
295
295
|
<< "(EventEngine c-ares resolver) fd:|" << GetName()
|
296
296
|
<< "| ContinueRegisterForOnReadableLocked wsa_connect_error_:"
|
297
297
|
<< wsa_connect_error_;
|
298
|
-
|
298
|
+
GRPC_CHECK(connect_done_);
|
299
299
|
if (wsa_connect_error_ != 0) {
|
300
300
|
ScheduleAndNullReadClosure(GRPC_WSA_ERROR(wsa_connect_error_, "connect"));
|
301
301
|
return;
|
@@ -332,7 +332,7 @@ class GrpcPolledFdWindows : public GrpcPolledFd {
|
|
332
332
|
<< "(EventEngine c-ares resolver) fd:|" << GetName()
|
333
333
|
<< "| ContinueRegisterForOnWriteableLocked wsa_connect_error_:"
|
334
334
|
<< wsa_connect_error_;
|
335
|
-
|
335
|
+
GRPC_CHECK(connect_done_);
|
336
336
|
if (wsa_connect_error_ != 0) {
|
337
337
|
ScheduleAndNullWriteClosure(
|
338
338
|
GRPC_WSA_ERROR(wsa_connect_error_, "connect"));
|
@@ -342,7 +342,7 @@ class GrpcPolledFdWindows : public GrpcPolledFd {
|
|
342
342
|
ScheduleAndNullWriteClosure(absl::OkStatus());
|
343
343
|
return;
|
344
344
|
}
|
345
|
-
|
345
|
+
GRPC_CHECK(socket_type_ == SOCK_STREAM);
|
346
346
|
int wsa_error_code = 0;
|
347
347
|
switch (tcp_write_state_) {
|
348
348
|
case WRITE_IDLE:
|
@@ -391,7 +391,7 @@ class GrpcPolledFdWindows : public GrpcPolledFd {
|
|
391
391
|
// to write everything inline.
|
392
392
|
GRPC_TRACE_LOG(cares_resolver, INFO) << "(EventEngine c-ares resolver) fd:|"
|
393
393
|
<< GetName() << "| SendVUDP called";
|
394
|
-
|
394
|
+
GRPC_CHECK_EQ(GRPC_SLICE_LENGTH(write_buf_), 0);
|
395
395
|
grpc_core::CSliceUnref(write_buf_);
|
396
396
|
write_buf_ = FlattenIovec(iov, iov_count);
|
397
397
|
DWORD bytes_sent = 0;
|
@@ -442,12 +442,12 @@ class GrpcPolledFdWindows : public GrpcPolledFd {
|
|
442
442
|
// send again. If c-ares still needs to send even more data, we'll get
|
443
443
|
// to it eventually.
|
444
444
|
grpc_slice currently_attempted = FlattenIovec(iov, iov_count);
|
445
|
-
|
446
|
-
|
445
|
+
GRPC_CHECK(GRPC_SLICE_LENGTH(currently_attempted) >=
|
446
|
+
GRPC_SLICE_LENGTH(write_buf_));
|
447
447
|
ares_ssize_t total_sent = 0;
|
448
448
|
for (size_t i = 0; i < GRPC_SLICE_LENGTH(write_buf_); i++) {
|
449
|
-
|
450
|
-
|
449
|
+
GRPC_CHECK(GRPC_SLICE_START_PTR(currently_attempted)[i] ==
|
450
|
+
GRPC_SLICE_START_PTR(write_buf_)[i]);
|
451
451
|
total_sent++;
|
452
452
|
}
|
453
453
|
grpc_core::CSliceUnref(currently_attempted);
|
@@ -466,9 +466,9 @@ class GrpcPolledFdWindows : public GrpcPolledFd {
|
|
466
466
|
<< pending_continue_register_for_on_readable_locked_
|
467
467
|
<< " pending_register_for_writeable:"
|
468
468
|
<< pending_continue_register_for_on_writeable_locked_;
|
469
|
-
|
469
|
+
GRPC_CHECK(!connect_done_);
|
470
470
|
connect_done_ = true;
|
471
|
-
|
471
|
+
GRPC_CHECK_EQ(wsa_connect_error_, 0);
|
472
472
|
if (shutdown_called_) {
|
473
473
|
wsa_connect_error_ = WSA_OPERATION_ABORTED;
|
474
474
|
} else {
|
@@ -477,7 +477,7 @@ class GrpcPolledFdWindows : public GrpcPolledFd {
|
|
477
477
|
BOOL wsa_success = WSAGetOverlappedResult(
|
478
478
|
winsocket_->raw_socket(), winsocket_->write_info()->overlapped(),
|
479
479
|
&transferred_bytes, FALSE, &flags);
|
480
|
-
|
480
|
+
GRPC_CHECK_EQ(transferred_bytes, 0);
|
481
481
|
if (!wsa_success) {
|
482
482
|
wsa_connect_error_ = WSAGetLastError();
|
483
483
|
char* msg = gpr_format_message(wsa_connect_error_);
|
@@ -500,8 +500,8 @@ class GrpcPolledFdWindows : public GrpcPolledFd {
|
|
500
500
|
ares_socklen_t target_len) {
|
501
501
|
GRPC_TRACE_LOG(cares_resolver, INFO)
|
502
502
|
<< "(EventEngine c-ares resolver) fd:" << GetName() << " ConnectUDP";
|
503
|
-
|
504
|
-
|
503
|
+
GRPC_CHECK(!connect_done_);
|
504
|
+
GRPC_CHECK_EQ(wsa_connect_error_, 0);
|
505
505
|
SOCKET s = winsocket_->raw_socket();
|
506
506
|
int out =
|
507
507
|
WSAConnect(s, target, target_len, nullptr, nullptr, nullptr, nullptr);
|
@@ -639,7 +639,7 @@ class GrpcPolledFdWindows : public GrpcPolledFd {
|
|
639
639
|
GRPC_TRACE_LOG(cares_resolver, INFO)
|
640
640
|
<< "(EventEngine c-ares resolver) OnIocpWriteableInner. fd:|"
|
641
641
|
<< GetName() << "|";
|
642
|
-
|
642
|
+
GRPC_CHECK(socket_type_ == SOCK_STREAM);
|
643
643
|
absl::Status error;
|
644
644
|
if (winsocket_->write_info()->result().wsa_error != 0) {
|
645
645
|
error = GRPC_WSA_ERROR(winsocket_->write_info()->result().wsa_error,
|
@@ -651,7 +651,7 @@ class GrpcPolledFdWindows : public GrpcPolledFd {
|
|
651
651
|
<< winsocket_->write_info()->result().wsa_error << "| msg:|"
|
652
652
|
<< grpc_core::StatusToString(error) << "|";
|
653
653
|
}
|
654
|
-
|
654
|
+
GRPC_CHECK(tcp_write_state_ == WRITE_PENDING);
|
655
655
|
if (error.ok()) {
|
656
656
|
tcp_write_state_ = WRITE_WAITING_FOR_VERIFICATION_UPON_RETRY;
|
657
657
|
write_buf_ = grpc_slice_sub_no_ref(
|
@@ -738,7 +738,7 @@ class CustomSockFuncs {
|
|
738
738
|
<< "(EventEngine c-ares resolver) fd:" << polled_fd->GetName()
|
739
739
|
<< " created with params af:" << af << " type:" << type
|
740
740
|
<< " protocol:" << protocol;
|
741
|
-
|
741
|
+
GRPC_CHECK(self->sockets_.insert({s, std::move(polled_fd)}).second);
|
742
742
|
return s;
|
743
743
|
}
|
744
744
|
|
@@ -748,7 +748,7 @@ class CustomSockFuncs {
|
|
748
748
|
GrpcPolledFdFactoryWindows* self =
|
749
749
|
static_cast<GrpcPolledFdFactoryWindows*>(user_data);
|
750
750
|
auto it = self->sockets_.find(as);
|
751
|
-
|
751
|
+
GRPC_CHECK(it != self->sockets_.end());
|
752
752
|
return it->second->Connect(&wsa_error_ctx, target, target_len);
|
753
753
|
}
|
754
754
|
|
@@ -758,7 +758,7 @@ class CustomSockFuncs {
|
|
758
758
|
GrpcPolledFdFactoryWindows* self =
|
759
759
|
static_cast<GrpcPolledFdFactoryWindows*>(user_data);
|
760
760
|
auto it = self->sockets_.find(as);
|
761
|
-
|
761
|
+
GRPC_CHECK(it != self->sockets_.end());
|
762
762
|
return it->second->SendV(&wsa_error_ctx, iov, iovec_count);
|
763
763
|
}
|
764
764
|
|
@@ -769,7 +769,7 @@ class CustomSockFuncs {
|
|
769
769
|
GrpcPolledFdFactoryWindows* self =
|
770
770
|
static_cast<GrpcPolledFdFactoryWindows*>(user_data);
|
771
771
|
auto it = self->sockets_.find(as);
|
772
|
-
|
772
|
+
GRPC_CHECK(it != self->sockets_.end());
|
773
773
|
return it->second->RecvFrom(&wsa_error_ctx, data, data_len, flags, from,
|
774
774
|
from_len);
|
775
775
|
}
|
@@ -832,7 +832,7 @@ void GrpcPolledFdFactoryWindows::Initialize(grpc_core::Mutex* mutex,
|
|
832
832
|
std::unique_ptr<GrpcPolledFd> GrpcPolledFdFactoryWindows::NewGrpcPolledFdLocked(
|
833
833
|
ares_socket_t as) {
|
834
834
|
auto it = sockets_.find(as);
|
835
|
-
|
835
|
+
GRPC_CHECK(it != sockets_.end());
|
836
836
|
return std::make_unique<GrpcPolledFdWrapper>(it->second.get());
|
837
837
|
}
|
838
838
|
|
@@ -20,7 +20,6 @@
|
|
20
20
|
|
21
21
|
#include <chrono>
|
22
22
|
|
23
|
-
#include "absl/log/check.h"
|
24
23
|
#include "absl/strings/str_format.h"
|
25
24
|
#include "src/core/lib/event_engine/thread_pool/thread_pool.h"
|
26
25
|
#include "src/core/lib/event_engine/time_util.h"
|
@@ -28,6 +27,7 @@
|
|
28
27
|
#include "src/core/lib/event_engine/windows/win_socket.h"
|
29
28
|
#include "src/core/lib/iomgr/error.h"
|
30
29
|
#include "src/core/util/crash.h"
|
30
|
+
#include "src/core/util/grpc_check.h"
|
31
31
|
|
32
32
|
namespace grpc_event_engine::experimental {
|
33
33
|
|
@@ -35,7 +35,7 @@ IOCP::IOCP(ThreadPool* thread_pool) noexcept
|
|
35
35
|
: thread_pool_(thread_pool),
|
36
36
|
iocp_handle_(CreateIoCompletionPort(INVALID_HANDLE_VALUE, nullptr,
|
37
37
|
(ULONG_PTR) nullptr, 0)) {
|
38
|
-
|
38
|
+
GRPC_CHECK(iocp_handle_);
|
39
39
|
WSASocketFlagsInit();
|
40
40
|
}
|
41
41
|
|
@@ -52,7 +52,7 @@ std::unique_ptr<WinSocket> IOCP::Watch(SOCKET socket) {
|
|
52
52
|
GRPC_WSA_ERROR(WSAGetLastError(), "Unable to add socket to iocp")
|
53
53
|
.ToString());
|
54
54
|
}
|
55
|
-
|
55
|
+
GRPC_CHECK(ret == iocp_handle_);
|
56
56
|
return wrapped_socket;
|
57
57
|
}
|
58
58
|
|
@@ -63,7 +63,7 @@ void IOCP::Shutdown() {
|
|
63
63
|
while (outstanding_kicks_.load() > 0) {
|
64
64
|
Work(std::chrono::hours(42), []() {});
|
65
65
|
}
|
66
|
-
|
66
|
+
GRPC_CHECK(CloseHandle(iocp_handle_));
|
67
67
|
}
|
68
68
|
|
69
69
|
Poller::WorkResult IOCP::Work(EventEngine::Duration timeout,
|
@@ -81,8 +81,8 @@ Poller::WorkResult IOCP::Work(EventEngine::Duration timeout,
|
|
81
81
|
<< "IOCP::" << this << " deadline exceeded";
|
82
82
|
return Poller::WorkResult::kDeadlineExceeded;
|
83
83
|
}
|
84
|
-
|
85
|
-
|
84
|
+
GRPC_CHECK(completion_key);
|
85
|
+
GRPC_CHECK(overlapped);
|
86
86
|
if (overlapped == &kick_overlap_) {
|
87
87
|
GRPC_TRACE_LOG(event_engine_poller, INFO) << "IOCP::" << this << " kicked";
|
88
88
|
outstanding_kicks_.fetch_sub(1);
|
@@ -101,7 +101,7 @@ Poller::WorkResult IOCP::Work(EventEngine::Duration timeout,
|
|
101
101
|
// about to register for notification of an overlapped event.
|
102
102
|
auto* socket = reinterpret_cast<WinSocket*>(completion_key);
|
103
103
|
WinSocket::OpState* info = socket->GetOpInfoForOverlapped(overlapped);
|
104
|
-
|
104
|
+
GRPC_CHECK_NE(info, nullptr);
|
105
105
|
info->GetOverlappedResult();
|
106
106
|
info->SetReady();
|
107
107
|
schedule_poll_again();
|
@@ -110,9 +110,9 @@ Poller::WorkResult IOCP::Work(EventEngine::Duration timeout,
|
|
110
110
|
|
111
111
|
void IOCP::Kick() {
|
112
112
|
outstanding_kicks_.fetch_add(1);
|
113
|
-
|
114
|
-
|
115
|
-
|
113
|
+
GRPC_CHECK(PostQueuedCompletionStatus(
|
114
|
+
iocp_handle_, 0, reinterpret_cast<ULONG_PTR>(&kick_token_),
|
115
|
+
&kick_overlap_));
|
116
116
|
}
|
117
117
|
|
118
118
|
DWORD IOCP::GetDefaultSocketFlags() {
|
@@ -17,13 +17,13 @@
|
|
17
17
|
#include <grpc/support/alloc.h>
|
18
18
|
#include <grpc/support/log_windows.h>
|
19
19
|
|
20
|
-
#include "absl/log/check.h"
|
21
20
|
#include "absl/log/log.h"
|
22
21
|
#include "src/core/lib/event_engine/tcp_socket_utils.h"
|
23
22
|
#include "src/core/lib/event_engine/thread_pool/thread_pool.h"
|
24
23
|
#include "src/core/lib/event_engine/windows/win_socket.h"
|
25
24
|
#include "src/core/lib/iomgr/error.h"
|
26
25
|
#include "src/core/util/debug_location.h"
|
26
|
+
#include "src/core/util/grpc_check.h"
|
27
27
|
#include "src/core/util/sync.h"
|
28
28
|
|
29
29
|
#if defined(__MSYS__) && defined(GPR_ARCH_64)
|
@@ -45,7 +45,7 @@ WinSocket::WinSocket(SOCKET socket, ThreadPool* thread_pool) noexcept
|
|
45
45
|
write_info_(this) {}
|
46
46
|
|
47
47
|
WinSocket::~WinSocket() {
|
48
|
-
|
48
|
+
GRPC_CHECK(is_shutdown_.load());
|
49
49
|
GRPC_TRACE_LOG(event_engine_endpoint, INFO)
|
50
50
|
<< "WinSocket::" << this << " destroyed";
|
51
51
|
}
|
@@ -103,7 +103,7 @@ void WinSocket::NotifyOnReady(OpState& info, EventEngine::Closure* closure) {
|
|
103
103
|
return;
|
104
104
|
};
|
105
105
|
// It is an error if any notification is already registered for this socket.
|
106
|
-
|
106
|
+
GRPC_CHECK_EQ(std::exchange(info.closure_, closure), nullptr);
|
107
107
|
}
|
108
108
|
|
109
109
|
void WinSocket::NotifyOnRead(EventEngine::Closure* on_read) {
|
@@ -115,11 +115,11 @@ void WinSocket::NotifyOnWrite(EventEngine::Closure* on_write) {
|
|
115
115
|
}
|
116
116
|
|
117
117
|
void WinSocket::UnregisterReadCallback() {
|
118
|
-
|
118
|
+
GRPC_CHECK_NE(std::exchange(read_info_.closure_, nullptr), nullptr);
|
119
119
|
}
|
120
120
|
|
121
121
|
void WinSocket::UnregisterWriteCallback() {
|
122
|
-
|
122
|
+
GRPC_CHECK_NE(std::exchange(write_info_.closure_, nullptr), nullptr);
|
123
123
|
}
|
124
124
|
|
125
125
|
// ---- WinSocket::OpState ----
|
@@ -133,7 +133,7 @@ void WinSocket::OpState::SetReady() {
|
|
133
133
|
auto* closure = std::exchange(closure_, nullptr);
|
134
134
|
// If an IOCP event is returned for a socket, and no callback has been
|
135
135
|
// registered for notification, this is invalid usage.
|
136
|
-
|
136
|
+
GRPC_CHECK_NE(closure, nullptr);
|
137
137
|
win_socket_->thread_pool_->Run(closure);
|
138
138
|
}
|
139
139
|
|
@@ -20,7 +20,6 @@
|
|
20
20
|
|
21
21
|
#include "absl/cleanup/cleanup.h"
|
22
22
|
#include "absl/functional/any_invocable.h"
|
23
|
-
#include "absl/log/check.h"
|
24
23
|
#include "absl/log/log.h"
|
25
24
|
#include "absl/status/status.h"
|
26
25
|
#include "absl/strings/str_format.h"
|
@@ -30,6 +29,7 @@
|
|
30
29
|
#include "src/core/lib/event_engine/windows/windows_endpoint.h"
|
31
30
|
#include "src/core/lib/iomgr/error.h"
|
32
31
|
#include "src/core/util/debug_location.h"
|
32
|
+
#include "src/core/util/grpc_check.h"
|
33
33
|
#include "src/core/util/status_helper.h"
|
34
34
|
|
35
35
|
namespace grpc_event_engine::experimental {
|
@@ -59,7 +59,7 @@ WindowsEndpoint::WindowsEndpoint(
|
|
59
59
|
io_state_(std::make_shared<AsyncIOState>(
|
60
60
|
this, std::move(socket), std::move(engine), thread_pool)) {
|
61
61
|
auto local_address = SocketToAddress(io_state_->socket->raw_socket());
|
62
|
-
|
62
|
+
GRPC_CHECK(local_address.ok())
|
63
63
|
<< "Failed to get local socket address: " << local_address.status();
|
64
64
|
local_address_ = std::move(*local_address);
|
65
65
|
local_address_string_ = *ResolvedAddressToURI(local_address_);
|
@@ -81,7 +81,7 @@ void WindowsEndpoint::AsyncIOState::DoTcpRead(SliceBuffer* buffer) {
|
|
81
81
|
return;
|
82
82
|
}
|
83
83
|
// Prepare the WSABUF struct
|
84
|
-
|
84
|
+
GRPC_CHECK(buffer->Count() <= kMaxWSABUFCount);
|
85
85
|
WSABUF wsa_buffers[kMaxWSABUFCount];
|
86
86
|
for (size_t i = 0; i < buffer->Count(); i++) {
|
87
87
|
auto& slice = buffer->MutableSliceAt(i);
|
@@ -160,11 +160,11 @@ bool WindowsEndpoint::Write(absl::AnyInvocable<void(absl::Status)> on_writable,
|
|
160
160
|
<< " WRITE (peer=" << peer_address_string_ << "): " << str;
|
161
161
|
}
|
162
162
|
}
|
163
|
-
|
163
|
+
GRPC_CHECK(data->Count() <= UINT_MAX);
|
164
164
|
absl::InlinedVector<WSABUF, kMaxWSABUFCount> buffers(data->Count());
|
165
165
|
for (size_t i = 0; i < data->Count(); i++) {
|
166
166
|
auto& slice = data->MutableSliceAt(i);
|
167
|
-
|
167
|
+
GRPC_CHECK(slice.size() <= ULONG_MAX);
|
168
168
|
buffers[i].len = slice.size();
|
169
169
|
buffers[i].buf = (char*)slice.begin();
|
170
170
|
}
|
@@ -289,7 +289,7 @@ void WindowsEndpoint::HandleReadClosure::Run() {
|
|
289
289
|
return ResetAndReturnCallback()(status);
|
290
290
|
}
|
291
291
|
if (result.bytes_transferred == 0) {
|
292
|
-
|
292
|
+
GRPC_DCHECK_GT(io_state.use_count(), 0);
|
293
293
|
// Either the endpoint is shut down or we've seen the end of the stream
|
294
294
|
if (GRPC_TRACE_FLAG_ENABLED(event_engine_endpoint_data)) {
|
295
295
|
LOG(INFO) << "WindowsEndpoint::" << this << " read 0 bytes.";
|
@@ -308,8 +308,8 @@ void WindowsEndpoint::HandleReadClosure::Run() {
|
|
308
308
|
}
|
309
309
|
return ResetAndReturnCallback()(status);
|
310
310
|
}
|
311
|
-
|
312
|
-
|
311
|
+
GRPC_DCHECK_GT(result.bytes_transferred, 0);
|
312
|
+
GRPC_DCHECK(result.bytes_transferred <= buffer_->Length());
|
313
313
|
buffer_->MoveFirstNBytesIntoSliceBuffer(result.bytes_transferred,
|
314
314
|
last_read_buffer_);
|
315
315
|
if (buffer_->Length() == 0) {
|
@@ -340,9 +340,9 @@ bool WindowsEndpoint::HandleReadClosure::MaybeFinishIfDataHasAlreadyBeenRead() {
|
|
340
340
|
void WindowsEndpoint::HandleReadClosure::DonateSpareSlices(
|
341
341
|
SliceBuffer* buffer) {
|
342
342
|
// Donee buffer must be empty.
|
343
|
-
|
343
|
+
GRPC_CHECK_EQ(buffer->Length(), 0);
|
344
344
|
// HandleReadClosure must be in the reset state.
|
345
|
-
|
345
|
+
GRPC_CHECK_EQ(buffer_, nullptr);
|
346
346
|
buffer->Swap(last_read_buffer_);
|
347
347
|
}
|
348
348
|
|
@@ -360,7 +360,7 @@ void WindowsEndpoint::HandleWriteClosure::Run() {
|
|
360
360
|
if (result.wsa_error != 0) {
|
361
361
|
status = GRPC_WSA_ERROR(result.wsa_error, "WSASend");
|
362
362
|
} else {
|
363
|
-
|
363
|
+
GRPC_CHECK(result.bytes_transferred == buffer_->Length());
|
364
364
|
}
|
365
365
|
return ResetAndReturnCallback()(status);
|
366
366
|
}
|
@@ -24,7 +24,6 @@
|
|
24
24
|
#include <memory>
|
25
25
|
#include <ostream>
|
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"
|
@@ -46,6 +45,7 @@
|
|
46
45
|
#include "src/core/lib/resource_quota/resource_quota.h"
|
47
46
|
#include "src/core/util/crash.h"
|
48
47
|
#include "src/core/util/dump_args.h"
|
48
|
+
#include "src/core/util/grpc_check.h"
|
49
49
|
#include "src/core/util/sync.h"
|
50
50
|
#include "src/core/util/time.h"
|
51
51
|
|
@@ -75,7 +75,7 @@ WindowsEventEngine::ConnectionState::ConnectionState(
|
|
75
75
|
allocator_(std::move(allocator)),
|
76
76
|
on_connect_user_callback_(std::move(on_connect_user_callback)),
|
77
77
|
engine_(std::move(engine)) {
|
78
|
-
|
78
|
+
GRPC_CHECK(socket_ != nullptr);
|
79
79
|
connection_handle_ = ConnectionHandle{reinterpret_cast<intptr_t>(this),
|
80
80
|
engine_->aba_token_.fetch_add(1)};
|
81
81
|
}
|
@@ -112,7 +112,7 @@ void WindowsEventEngine::ConnectionState::AbortDeadlineTimer() {
|
|
112
112
|
}
|
113
113
|
|
114
114
|
void WindowsEventEngine::ConnectionState::OnConnectedCallback::Run() {
|
115
|
-
|
115
|
+
GRPC_DCHECK_NE(connection_state_, nullptr)
|
116
116
|
<< "ConnectionState::OnConnectedCallback::" << this
|
117
117
|
<< " has already run. It should only ever run once.";
|
118
118
|
bool has_run;
|
@@ -131,7 +131,7 @@ void WindowsEventEngine::ConnectionState::OnConnectedCallback::Run() {
|
|
131
131
|
}
|
132
132
|
|
133
133
|
void WindowsEventEngine::ConnectionState::DeadlineTimerCallback::Run() {
|
134
|
-
|
134
|
+
GRPC_DCHECK_NE(connection_state_, nullptr)
|
135
135
|
<< "ConnectionState::DeadlineTimerCallback::" << this
|
136
136
|
<< " has already run. It should only ever run once.";
|
137
137
|
bool has_run;
|
@@ -207,7 +207,7 @@ WindowsEventEngine::WindowsEventEngine()
|
|
207
207
|
iocp_worker_(thread_pool_.get(), &iocp_) {
|
208
208
|
WSADATA wsaData;
|
209
209
|
int status = WSAStartup(MAKEWORD(2, 0), &wsaData);
|
210
|
-
|
210
|
+
GRPC_CHECK_EQ(status, 0);
|
211
211
|
}
|
212
212
|
|
213
213
|
WindowsEventEngine::~WindowsEventEngine() {
|
@@ -235,13 +235,13 @@ WindowsEventEngine::~WindowsEventEngine() {
|
|
235
235
|
task_mu_.Lock();
|
236
236
|
}
|
237
237
|
}
|
238
|
-
|
238
|
+
GRPC_CHECK(GPR_LIKELY(known_handles_.empty()));
|
239
239
|
task_mu_.Unlock();
|
240
240
|
}
|
241
241
|
iocp_.Kick();
|
242
242
|
iocp_worker_.WaitForShutdown();
|
243
243
|
iocp_.Shutdown();
|
244
|
-
|
244
|
+
GRPC_CHECK_EQ(WSACleanup(), 0);
|
245
245
|
timer_manager_.Shutdown();
|
246
246
|
thread_pool_->Quiesce();
|
247
247
|
}
|
@@ -287,9 +287,10 @@ WindowsEventEngine::CreateEndpointFromWinSocket(SOCKET socket,
|
|
287
287
|
->CreateMemoryAllocator(local_address_string);
|
288
288
|
} else {
|
289
289
|
auto* rqv = config.GetVoidPointer(GRPC_ARG_RESOURCE_QUOTA);
|
290
|
-
|
291
|
-
|
292
|
-
|
290
|
+
GRPC_CHECK_NE(rqv, nullptr)
|
291
|
+
<< "WindowsEventEngine::" << this
|
292
|
+
<< ": config does not contain a resource quota. "
|
293
|
+
"This should not happen.";
|
293
294
|
allocator = static_cast<grpc_core::ResourceQuota*>(rqv)
|
294
295
|
->memory_quota()
|
295
296
|
->CreateMemoryAllocator(local_address_string);
|
@@ -552,10 +553,11 @@ EventEngine::ConnectionHandle WindowsEventEngine::Connect(
|
|
552
553
|
erased_handles =
|
553
554
|
known_connection_handles_.erase(connection_state->connection_handle());
|
554
555
|
}
|
555
|
-
|
556
|
-
|
557
|
-
|
558
|
-
|
556
|
+
GRPC_CHECK_EQ(erased_handles, 1)
|
557
|
+
<< "Did not find connection handle "
|
558
|
+
<< connection_state->connection_handle()
|
559
|
+
<< " after a synchronous connection failure. "
|
560
|
+
"This should not be possible.";
|
559
561
|
connection_state->socket()->Shutdown(DEBUG_LOCATION, "ConnectEx");
|
560
562
|
if (!Cancel(connection_state->timer_handle())) {
|
561
563
|
// The deadline timer will run, or is running.
|
@@ -15,7 +15,6 @@
|
|
15
15
|
|
16
16
|
#ifdef GPR_WINDOWS
|
17
17
|
|
18
|
-
#include "absl/log/check.h"
|
19
18
|
#include "absl/log/log.h"
|
20
19
|
#include "absl/status/status.h"
|
21
20
|
#include "absl/strings/str_format.h"
|
@@ -28,6 +27,7 @@
|
|
28
27
|
#include "src/core/lib/iomgr/error.h"
|
29
28
|
#include "src/core/lib/iomgr/port.h"
|
30
29
|
#include "src/core/util/crash.h"
|
30
|
+
#include "src/core/util/grpc_check.h"
|
31
31
|
#include "src/core/util/sync.h"
|
32
32
|
|
33
33
|
namespace grpc_event_engine::experimental {
|
@@ -47,7 +47,7 @@ WindowsEventEngineListener::SinglePortSocketListener::AsyncIOState::
|
|
47
47
|
|
48
48
|
void WindowsEventEngineListener::SinglePortSocketListener::
|
49
49
|
OnAcceptCallbackWrapper::Run() {
|
50
|
-
|
50
|
+
GRPC_CHECK_NE(io_state_, nullptr);
|
51
51
|
grpc_core::ReleasableMutexLock lock(&io_state_->mu);
|
52
52
|
if (io_state_->listener_socket->IsShutdown()) {
|
53
53
|
GRPC_TRACE_LOG(event_engine, INFO)
|
@@ -135,7 +135,7 @@ WindowsEventEngineListener::SinglePortSocketListener::Create(
|
|
135
135
|
}
|
136
136
|
auto result = SinglePortSocketListener::PrepareListenerSocket(sock, addr);
|
137
137
|
GRPC_RETURN_IF_ERROR(result.status());
|
138
|
-
|
138
|
+
GRPC_CHECK_GE(result->port, 0);
|
139
139
|
// Using `new` to access non-public constructor
|
140
140
|
return absl::WrapUnique(new SinglePortSocketListener(
|
141
141
|
listener, AcceptEx, /*win_socket=*/listener->iocp_->Watch(sock),
|
@@ -201,8 +201,8 @@ void WindowsEventEngineListener::SinglePortSocketListener::
|
|
201
201
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(io_state_->mu) {
|
202
202
|
if (do_close_socket) closesocket(io_state_->accept_socket);
|
203
203
|
io_state_->accept_socket = INVALID_SOCKET;
|
204
|
-
|
205
|
-
|
204
|
+
GRPC_CHECK(GRPC_LOG_IF_ERROR("SinglePortSocketListener::Start",
|
205
|
+
StartLocked()));
|
206
206
|
};
|
207
207
|
const auto& overlapped_result =
|
208
208
|
io_state_->listener_socket->read_info()->result();
|
@@ -269,7 +269,7 @@ absl::StatusOr<WindowsEventEngineListener::SinglePortSocketListener::
|
|
269
269
|
WindowsEventEngineListener::SinglePortSocketListener::PrepareListenerSocket(
|
270
270
|
SOCKET sock, const EventEngine::ResolvedAddress& addr) {
|
271
271
|
auto fail = [&](absl::Status error) -> absl::Status {
|
272
|
-
|
272
|
+
GRPC_CHECK(!error.ok());
|
273
273
|
error = GRPC_ERROR_CREATE_REFERENCING("Failed to prepare server socket",
|
274
274
|
&error, 1);
|
275
275
|
if (sock != INVALID_SOCKET) closesocket(sock);
|
@@ -371,7 +371,7 @@ absl::StatusOr<int> WindowsEventEngineListener::Bind(
|
|
371
371
|
}
|
372
372
|
|
373
373
|
absl::Status WindowsEventEngineListener::Start() {
|
374
|
-
|
374
|
+
GRPC_CHECK(!started_.exchange(true));
|
375
375
|
grpc_core::MutexLock lock(&port_listeners_mu_);
|
376
376
|
for (auto& port_listener : port_listeners_) {
|
377
377
|
GRPC_RETURN_IF_ERROR(port_listener->Start());
|