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
@@ -54,7 +54,6 @@
|
|
54
54
|
#include <utility>
|
55
55
|
|
56
56
|
#include "absl/functional/any_invocable.h"
|
57
|
-
#include "absl/log/check.h"
|
58
57
|
#include "absl/log/log.h"
|
59
58
|
#include "absl/strings/match.h"
|
60
59
|
#include "absl/strings/numbers.h"
|
@@ -70,6 +69,7 @@
|
|
70
69
|
#include "src/core/lib/event_engine/time_util.h"
|
71
70
|
#include "src/core/lib/iomgr/resolved_address.h"
|
72
71
|
#include "src/core/util/debug_location.h"
|
72
|
+
#include "src/core/util/grpc_check.h"
|
73
73
|
#include "src/core/util/host_port.h"
|
74
74
|
#include "src/core/util/orphanable.h"
|
75
75
|
#include "src/core/util/ref_counted_ptr.h"
|
@@ -280,9 +280,9 @@ AresResolver::AresResolver(
|
|
280
280
|
}
|
281
281
|
|
282
282
|
AresResolver::~AresResolver() {
|
283
|
-
|
284
|
-
|
285
|
-
|
283
|
+
GRPC_CHECK(fd_node_list_.empty());
|
284
|
+
GRPC_CHECK(callback_map_.empty());
|
285
|
+
GRPC_CHECK_NE(channel_, nullptr);
|
286
286
|
ares_destroy(channel_);
|
287
287
|
}
|
288
288
|
|
@@ -367,7 +367,7 @@ void AresResolver::LookupHostname(
|
|
367
367
|
grpc_core::MutexLock lock(&mutex_);
|
368
368
|
callback_map_.emplace(++id_, std::move(callback));
|
369
369
|
auto* resolver_arg = new HostnameQueryArg(this, id_, name, port);
|
370
|
-
|
370
|
+
GRPC_CHECK_NE(channel_, nullptr);
|
371
371
|
if (AresIsIpv6LoopbackAvailable()) {
|
372
372
|
// Note that using AF_UNSPEC for both IPv6 and IPv4 queries does not work in
|
373
373
|
// all cases, e.g. for localhost:<> it only gets back the IPv6 result (i.e.
|
@@ -415,7 +415,7 @@ void AresResolver::LookupSRV(
|
|
415
415
|
grpc_core::MutexLock lock(&mutex_);
|
416
416
|
callback_map_.emplace(++id_, std::move(callback));
|
417
417
|
auto* resolver_arg = new QueryArg(this, id_, host);
|
418
|
-
|
418
|
+
GRPC_CHECK_NE(channel_, nullptr);
|
419
419
|
ares_query(channel_, std::string(host).c_str(), ns_c_in, ns_t_srv,
|
420
420
|
&AresResolver::OnSRVQueryDoneLocked, resolver_arg);
|
421
421
|
CheckSocketsLocked();
|
@@ -451,7 +451,7 @@ void AresResolver::LookupTXT(
|
|
451
451
|
grpc_core::MutexLock lock(&mutex_);
|
452
452
|
callback_map_.emplace(++id_, std::move(callback));
|
453
453
|
auto* resolver_arg = new QueryArg(this, id_, host);
|
454
|
-
|
454
|
+
GRPC_CHECK_NE(channel_, nullptr);
|
455
455
|
ares_search(channel_, std::string(host).c_str(), ns_c_in, ns_t_txt,
|
456
456
|
&AresResolver::OnTXTDoneLocked, resolver_arg);
|
457
457
|
CheckSocketsLocked();
|
@@ -576,7 +576,7 @@ void AresResolver::MaybeStartTimerLocked() {
|
|
576
576
|
|
577
577
|
void AresResolver::OnReadable(FdNode* fd_node, absl::Status status) {
|
578
578
|
grpc_core::MutexLock lock(&mutex_);
|
579
|
-
|
579
|
+
GRPC_CHECK(fd_node->readable_registered);
|
580
580
|
fd_node->readable_registered = false;
|
581
581
|
GRPC_TRACE_LOG(cares_resolver, INFO)
|
582
582
|
<< "(EventEngine c-ares resolver) OnReadable: fd: " << fd_node->as
|
@@ -598,7 +598,7 @@ void AresResolver::OnReadable(FdNode* fd_node, absl::Status status) {
|
|
598
598
|
|
599
599
|
void AresResolver::OnWritable(FdNode* fd_node, absl::Status status) {
|
600
600
|
grpc_core::MutexLock lock(&mutex_);
|
601
|
-
|
601
|
+
GRPC_CHECK(fd_node->writable_registered);
|
602
602
|
fd_node->writable_registered = false;
|
603
603
|
GRPC_TRACE_LOG(cares_resolver, INFO)
|
604
604
|
<< "(EventEngine c-ares resolver) OnWritable: fd: " << fd_node->as
|
@@ -650,7 +650,7 @@ void AresResolver::OnHostbynameDoneLocked(void* arg, int status,
|
|
650
650
|
int /*timeouts*/,
|
651
651
|
struct hostent* hostent) {
|
652
652
|
auto* hostname_qa = static_cast<HostnameQueryArg*>(arg);
|
653
|
-
|
653
|
+
GRPC_CHECK_GT(hostname_qa->pending_requests--, 0);
|
654
654
|
auto* ares_resolver = hostname_qa->ares_resolver;
|
655
655
|
if (status != ARES_SUCCESS) {
|
656
656
|
std::string error_msg =
|
@@ -722,8 +722,8 @@ void AresResolver::OnHostbynameDoneLocked(void* arg, int status,
|
|
722
722
|
delete hostname_qa;
|
723
723
|
return;
|
724
724
|
}
|
725
|
-
|
726
|
-
|
725
|
+
GRPC_CHECK(std::holds_alternative<
|
726
|
+
EventEngine::DNSResolver::LookupHostnameCallback>(nh.mapped()));
|
727
727
|
auto callback = std::get<EventEngine::DNSResolver::LookupHostnameCallback>(
|
728
728
|
std::move(nh.mapped()));
|
729
729
|
if (!hostname_qa->result.empty() || hostname_qa->error_status.ok()) {
|
@@ -751,8 +751,9 @@ void AresResolver::OnSRVQueryDoneLocked(void* arg, int status, int /*timeouts*/,
|
|
751
751
|
if (nh.empty()) {
|
752
752
|
return;
|
753
753
|
}
|
754
|
-
|
755
|
-
|
754
|
+
GRPC_CHECK(
|
755
|
+
std::holds_alternative<EventEngine::DNSResolver::LookupSRVCallback>(
|
756
|
+
nh.mapped()));
|
756
757
|
auto callback = std::get<EventEngine::DNSResolver::LookupSRVCallback>(
|
757
758
|
std::move(nh.mapped()));
|
758
759
|
auto fail = [&](absl::string_view prefix) {
|
@@ -814,8 +815,9 @@ void AresResolver::OnTXTDoneLocked(void* arg, int status, int /*timeouts*/,
|
|
814
815
|
if (nh.empty()) {
|
815
816
|
return;
|
816
817
|
}
|
817
|
-
|
818
|
-
|
818
|
+
GRPC_CHECK(
|
819
|
+
std::holds_alternative<EventEngine::DNSResolver::LookupTXTCallback>(
|
820
|
+
nh.mapped()));
|
819
821
|
auto callback = std::get<EventEngine::DNSResolver::LookupTXTCallback>(
|
820
822
|
std::move(nh.mapped()));
|
821
823
|
auto fail = [&](absl::string_view prefix) {
|
@@ -894,7 +896,7 @@ void AresResolver::Reset(const absl::Status& reason) {
|
|
894
896
|
callback_map_.clear();
|
895
897
|
ShutdownLocked(reason, "resolver reset");
|
896
898
|
CheckSocketsLocked();
|
897
|
-
|
899
|
+
GRPC_CHECK_NE(channel_, nullptr);
|
898
900
|
ares_destroy(channel_);
|
899
901
|
channel_ = nullptr;
|
900
902
|
}
|
@@ -903,10 +905,10 @@ void AresResolver::Restart() {
|
|
903
905
|
grpc_core::MutexLock lock(&mutex_);
|
904
906
|
polled_fd_factory_ = polled_fd_factory_->NewEmptyInstance();
|
905
907
|
polled_fd_factory_->Initialize(&mutex_, event_engine_.get());
|
906
|
-
|
908
|
+
GRPC_CHECK_EQ(channel_, nullptr);
|
907
909
|
absl::Status status =
|
908
910
|
InitAresChannel(dns_server_, *polled_fd_factory_, &channel_);
|
909
|
-
|
911
|
+
GRPC_CHECK_OK(status);
|
910
912
|
}
|
911
913
|
|
912
914
|
#endif // GRPC_ENABLE_FORK_SUPPORT
|
@@ -922,7 +924,7 @@ void AresResolver::ShutdownLocked(const absl::Status& shutdown_status,
|
|
922
924
|
GRPC_TRACE_LOG(cares_resolver, INFO) << absl::Substitute(
|
923
925
|
"(EventEngine c-ares resolver) resolver: $0 shutdown fd: $1 ($2)",
|
924
926
|
this, fd_node->polled_fd->GetName(), reason);
|
925
|
-
|
927
|
+
GRPC_CHECK(fd_node->polled_fd->ShutdownLocked(shutdown_status));
|
926
928
|
fd_node->already_shutdown = true;
|
927
929
|
}
|
928
930
|
}
|
@@ -21,7 +21,6 @@
|
|
21
21
|
#include <CoreFoundation/CoreFoundation.h>
|
22
22
|
#include <grpc/support/cpu.h>
|
23
23
|
|
24
|
-
#include "absl/log/check.h"
|
25
24
|
#include "absl/log/log.h"
|
26
25
|
#include "src/core/lib/event_engine/cf_engine/cf_engine.h"
|
27
26
|
#include "src/core/lib/event_engine/cf_engine/cfsocket_listener.h"
|
@@ -32,6 +31,7 @@
|
|
32
31
|
#include "src/core/lib/event_engine/thread_pool/thread_pool.h"
|
33
32
|
#include "src/core/lib/event_engine/utils.h"
|
34
33
|
#include "src/core/util/crash.h"
|
34
|
+
#include "src/core/util/grpc_check.h"
|
35
35
|
#include "src/core/util/useful.h"
|
36
36
|
|
37
37
|
#ifndef GRPC_CFSTREAM_MAX_THREADPOOL_SIZE
|
@@ -74,7 +74,7 @@ CFEventEngine::~CFEventEngine() {
|
|
74
74
|
<< HandleToString(handle);
|
75
75
|
}
|
76
76
|
}
|
77
|
-
|
77
|
+
GRPC_CHECK(GPR_LIKELY(known_handles_.empty()));
|
78
78
|
timer_manager_.Shutdown();
|
79
79
|
}
|
80
80
|
thread_pool_->Quiesce();
|
@@ -18,13 +18,13 @@
|
|
18
18
|
#include <AvailabilityMacros.h>
|
19
19
|
#ifdef AVAILABLE_MAC_OS_X_VERSION_10_12_AND_LATER
|
20
20
|
|
21
|
-
#include "absl/log/check.h"
|
22
21
|
#include "absl/strings/str_cat.h"
|
23
22
|
#include "absl/strings/str_format.h"
|
24
23
|
#include "src/core/lib/address_utils/parse_address.h"
|
25
24
|
#include "src/core/lib/event_engine/cf_engine/dns_service_resolver.h"
|
26
25
|
#include "src/core/lib/event_engine/posix_engine/lockfree_event.h"
|
27
26
|
#include "src/core/lib/event_engine/tcp_socket_utils.h"
|
27
|
+
#include "src/core/util/grpc_check.h"
|
28
28
|
#include "src/core/util/host_port.h"
|
29
29
|
|
30
30
|
namespace grpc_event_engine::experimental {
|
@@ -148,7 +148,7 @@ void DNSServiceResolverImpl::ResolveCallback(
|
|
148
148
|
|
149
149
|
grpc_core::ReleasableMutexLock lock(&that->request_mu_);
|
150
150
|
auto request_it = that->requests_.find(sdRef);
|
151
|
-
|
151
|
+
GRPC_CHECK(request_it != that->requests_.end());
|
152
152
|
|
153
153
|
if (errorCode != kDNSServiceErr_NoError &&
|
154
154
|
errorCode != kDNSServiceErr_NoSuchRecord) {
|
@@ -24,8 +24,8 @@
|
|
24
24
|
#include <grpc/event_engine/event_engine.h>
|
25
25
|
|
26
26
|
#include "absl/container/flat_hash_map.h"
|
27
|
-
#include "absl/log/check.h"
|
28
27
|
#include "src/core/lib/event_engine/cf_engine/cf_engine.h"
|
28
|
+
#include "src/core/util/grpc_check.h"
|
29
29
|
#include "src/core/util/ref_counted.h"
|
30
30
|
#include "src/core/util/ref_counted_ptr.h"
|
31
31
|
|
@@ -45,7 +45,7 @@ class DNSServiceResolverImpl
|
|
45
45
|
explicit DNSServiceResolverImpl(std::shared_ptr<CFEventEngine> engine)
|
46
46
|
: engine_(std::move((engine))) {}
|
47
47
|
~DNSServiceResolverImpl() override {
|
48
|
-
|
48
|
+
GRPC_CHECK(requests_.empty());
|
49
49
|
dispatch_release(queue_);
|
50
50
|
}
|
51
51
|
|
@@ -30,7 +30,7 @@ class ChannelzExtension {
|
|
30
30
|
static absl::string_view EndpointExtensionName() {
|
31
31
|
return "io.grpc.event_engine.extension.channelz";
|
32
32
|
}
|
33
|
-
virtual void
|
33
|
+
virtual void AddData(grpc_core::channelz::DataSink& sink) = 0;
|
34
34
|
|
35
35
|
void SetSocketNode(
|
36
36
|
grpc_core::RefCountedPtr<grpc_core::channelz::SocketNode> socket_node) {
|
@@ -51,7 +51,7 @@ class ChannelzExtension {
|
|
51
51
|
}
|
52
52
|
~EndpointDataSource() { SourceDestructing(); }
|
53
53
|
void AddData(grpc_core::channelz::DataSink sink) override {
|
54
|
-
ep_->
|
54
|
+
ep_->AddData(sink);
|
55
55
|
}
|
56
56
|
|
57
57
|
private:
|
@@ -107,16 +107,16 @@ class EventEngineSupportsFdExtension {
|
|
107
107
|
/// file descriptor. \a config - Additional configuration to applied to the
|
108
108
|
/// endpoint. \a memory_allocator - The endpoint may use the provided memory
|
109
109
|
/// allocator to track memory allocations.
|
110
|
-
virtual std::unique_ptr<EventEngine::Endpoint
|
111
|
-
|
112
|
-
|
110
|
+
virtual absl::StatusOr<std::unique_ptr<EventEngine::Endpoint>>
|
111
|
+
CreatePosixEndpointFromFd(int fd, const EndpointConfig& config,
|
112
|
+
MemoryAllocator memory_allocator) = 0;
|
113
113
|
|
114
114
|
/// Creates an EventEngine::Endpoint from an fd which is already assumed to be
|
115
115
|
/// connected to a remote peer. See \a CreatePosixEndpointFromFd for details.
|
116
116
|
/// This has the same behavior, but the \a memory_allocator is taken from the
|
117
117
|
/// EndpointConfig's resource quota.
|
118
|
-
virtual std::unique_ptr<EventEngine::Endpoint
|
119
|
-
|
118
|
+
virtual absl::StatusOr<std::unique_ptr<EventEngine::Endpoint>>
|
119
|
+
CreateEndpointFromFd(int fd, const EndpointConfig& config) = 0;
|
120
120
|
|
121
121
|
/// Creates an EventEngine::Endpoint from a file descriptor that is configured
|
122
122
|
/// and bound locally but not yet connected to a remote peer. Returns a
|
@@ -22,7 +22,6 @@
|
|
22
22
|
#include <atomic>
|
23
23
|
#include <memory>
|
24
24
|
|
25
|
-
#include "absl/log/check.h"
|
26
25
|
#include "absl/log/log.h"
|
27
26
|
#include "absl/status/status.h"
|
28
27
|
#include "absl/status/statusor.h"
|
@@ -32,6 +31,7 @@
|
|
32
31
|
#include "src/core/lib/event_engine/time_util.h"
|
33
32
|
#include "src/core/lib/iomgr/port.h"
|
34
33
|
#include "src/core/util/crash.h"
|
34
|
+
#include "src/core/util/grpc_check.h"
|
35
35
|
|
36
36
|
// This polling engine is only relevant on linux kernels supporting epoll
|
37
37
|
// epoll_create() or epoll_create1()
|
@@ -247,13 +247,13 @@ Epoll1Poller::Epoll1Poller(std::shared_ptr<ThreadPool> thread_pool)
|
|
247
247
|
: thread_pool_(thread_pool), was_kicked_(false), closed_(false) {
|
248
248
|
g_epoll_set_.epfd = posix_interface().EpollCreateAndCloexec().value();
|
249
249
|
wakeup_fd_ = CreateWakeupFd(&posix_interface()).value();
|
250
|
-
|
251
|
-
|
250
|
+
GRPC_CHECK(wakeup_fd_ != nullptr);
|
251
|
+
GRPC_CHECK(g_epoll_set_.epfd.ready());
|
252
252
|
GRPC_TRACE_LOG(event_engine_poller, INFO)
|
253
253
|
<< "grpc epoll fd: " << g_epoll_set_.epfd;
|
254
254
|
auto result = posix_interface().EpollCtlAdd(
|
255
255
|
g_epoll_set_.epfd, false, wakeup_fd_->ReadFd(), wakeup_fd_.get());
|
256
|
-
|
256
|
+
GRPC_CHECK(result.ok()) << result.StrError();
|
257
257
|
g_epoll_set_.num_events = 0;
|
258
258
|
g_epoll_set_.cursor = 0;
|
259
259
|
}
|
@@ -330,7 +330,7 @@ bool Epoll1Poller::ProcessEpollEvents(int max_epoll_events_to_handle,
|
|
330
330
|
struct epoll_event* ev = &g_epoll_set_.events[c];
|
331
331
|
void* data_ptr = ev->data.ptr;
|
332
332
|
if (data_ptr == wakeup_fd_.get()) {
|
333
|
-
|
333
|
+
GRPC_CHECK(wakeup_fd_->ConsumeWakeup().ok());
|
334
334
|
was_kicked = true;
|
335
335
|
} else {
|
336
336
|
Epoll1EventHandle* handle = reinterpret_cast<Epoll1EventHandle*>(
|
@@ -453,7 +453,7 @@ void Epoll1Poller::Kick() {
|
|
453
453
|
return;
|
454
454
|
}
|
455
455
|
was_kicked_ = true;
|
456
|
-
|
456
|
+
GRPC_CHECK(wakeup_fd_->Wakeup().ok());
|
457
457
|
}
|
458
458
|
|
459
459
|
#ifdef GRPC_ENABLE_FORK_SUPPORT
|
@@ -472,7 +472,7 @@ void Epoll1Poller::HandleForkInChild() {
|
|
472
472
|
}
|
473
473
|
g_epoll_set_ = {};
|
474
474
|
g_epoll_set_.epfd = posix_interface().EpollCreateAndCloexec().value();
|
475
|
-
|
475
|
+
GRPC_CHECK(g_epoll_set_.epfd.ready());
|
476
476
|
GRPC_TRACE_LOG(event_engine_poller, INFO)
|
477
477
|
<< "Post-fork grpc epoll fd: " << g_epoll_set_.epfd;
|
478
478
|
g_epoll_set_.num_events = 0;
|
@@ -488,7 +488,7 @@ void Epoll1Poller::ResetKickState() {
|
|
488
488
|
wakeup_fd_ = *CreateWakeupFd(&posix_interface());
|
489
489
|
auto status = posix_interface().EpollCtlAdd(
|
490
490
|
g_epoll_set_.epfd, false, wakeup_fd_->ReadFd(), wakeup_fd_.get());
|
491
|
-
|
491
|
+
GRPC_CHECK(status.ok()) << status.StrError();
|
492
492
|
grpc_core::MutexLock lock(&mu_);
|
493
493
|
was_kicked_ = false;
|
494
494
|
}
|
@@ -28,7 +28,6 @@
|
|
28
28
|
|
29
29
|
#include "absl/container/inlined_vector.h"
|
30
30
|
#include "absl/functional/any_invocable.h"
|
31
|
-
#include "absl/log/check.h"
|
32
31
|
#include "absl/status/status.h"
|
33
32
|
#include "absl/status/statusor.h"
|
34
33
|
#include "absl/strings/str_format.h"
|
@@ -38,6 +37,7 @@
|
|
38
37
|
#include "src/core/lib/event_engine/posix_engine/posix_interface.h"
|
39
38
|
#include "src/core/lib/iomgr/port.h"
|
40
39
|
#include "src/core/util/crash.h"
|
40
|
+
#include "src/core/util/grpc_check.h"
|
41
41
|
|
42
42
|
#ifdef GRPC_POSIX_SOCKET_EV_POLL
|
43
43
|
|
@@ -239,7 +239,7 @@ EventHandle* PollPoller::CreateHandle(FileDescriptor fd,
|
|
239
239
|
bool track_err) {
|
240
240
|
// Avoid unused-parameter warning for debug-only parameter
|
241
241
|
(void)track_err;
|
242
|
-
|
242
|
+
GRPC_DCHECK(track_err == false);
|
243
243
|
PollEventHandle* handle = new PollEventHandle(fd, shared_from_this());
|
244
244
|
// We need to send a kick to the thread executing Work(..) so that it can
|
245
245
|
// add this new Fd into the list of Fds to poll.
|
@@ -258,7 +258,7 @@ void PollEventHandle::OrphanHandle(PosixEngineClosure* on_done,
|
|
258
258
|
if (release_fd != nullptr) {
|
259
259
|
*release_fd = fd_;
|
260
260
|
}
|
261
|
-
|
261
|
+
GRPC_CHECK(!is_orphaned_);
|
262
262
|
is_orphaned_ = true;
|
263
263
|
// Perform shutdown operations if not already done so.
|
264
264
|
if (!is_shutdown_) {
|
@@ -473,7 +473,7 @@ void PollPoller::KickExternal(bool ext) {
|
|
473
473
|
}
|
474
474
|
was_kicked_ = true;
|
475
475
|
was_kicked_ext_ = ext;
|
476
|
-
|
476
|
+
GRPC_CHECK(wakeup_fd_->Wakeup().ok());
|
477
477
|
}
|
478
478
|
|
479
479
|
void PollPoller::Kick() { KickExternal(true); }
|
@@ -513,14 +513,14 @@ PollPoller::PollPoller(std::shared_ptr<ThreadPool> thread_pool,
|
|
513
513
|
poll_handles_list_head_(nullptr),
|
514
514
|
closed_(false) {
|
515
515
|
wakeup_fd_ = *CreateWakeupFd(&posix_interface());
|
516
|
-
|
516
|
+
GRPC_CHECK(wakeup_fd_ != nullptr);
|
517
517
|
}
|
518
518
|
|
519
519
|
PollPoller::~PollPoller() {
|
520
520
|
// Assert that no active handles are present at the time of destruction.
|
521
521
|
// They should have been orphaned before reaching this state.
|
522
|
-
|
523
|
-
|
522
|
+
GRPC_CHECK_EQ(num_poll_handles_, 0);
|
523
|
+
GRPC_CHECK_EQ(poll_handles_list_head_, nullptr);
|
524
524
|
}
|
525
525
|
|
526
526
|
Poller::WorkResult PollPoller::Work(
|
@@ -563,7 +563,7 @@ Poller::WorkResult PollPoller::Work(
|
|
563
563
|
|
564
564
|
pfd_count = 1;
|
565
565
|
auto wakeup_fd = posix_interface().GetFd(wakeup_fd_->ReadFd());
|
566
|
-
|
566
|
+
GRPC_CHECK(wakeup_fd.ok()) << wakeup_fd.StrError();
|
567
567
|
pfds[0].fd = *wakeup_fd;
|
568
568
|
pfds[0].events = POLLIN;
|
569
569
|
pfds[0].revents = 0;
|
@@ -575,7 +575,7 @@ Poller::WorkResult PollPoller::Work(
|
|
575
575
|
// There shouldn't be any orphaned fds at this point. This is because
|
576
576
|
// prior to marking a handle as orphaned it is first removed from
|
577
577
|
// poll handle list for the poller under the poller lock.
|
578
|
-
|
578
|
+
GRPC_CHECK(!head->IsOrphaned());
|
579
579
|
if (!head->IsPollhup()) {
|
580
580
|
if (auto file_descriptor = posix_interface().GetFd(head->WrappedFd());
|
581
581
|
file_descriptor.ok()) {
|
@@ -656,7 +656,7 @@ Poller::WorkResult PollPoller::Work(
|
|
656
656
|
}
|
657
657
|
} else {
|
658
658
|
if (pfds[0].revents & kPollinCheck) {
|
659
|
-
|
659
|
+
GRPC_CHECK(wakeup_fd_->ConsumeWakeup().ok());
|
660
660
|
}
|
661
661
|
for (i = 1; i < pfd_count; i++) {
|
662
662
|
PollEventHandle* head = watchers[i];
|
@@ -19,11 +19,11 @@
|
|
19
19
|
#include <atomic>
|
20
20
|
#include <cstdint>
|
21
21
|
|
22
|
-
#include "absl/log/check.h"
|
23
22
|
#include "absl/status/status.h"
|
24
23
|
#include "src/core/lib/event_engine/posix_engine/event_poller.h"
|
25
24
|
#include "src/core/lib/event_engine/posix_engine/posix_engine_closure.h"
|
26
25
|
#include "src/core/util/crash.h"
|
26
|
+
#include "src/core/util/grpc_check.h"
|
27
27
|
#include "src/core/util/status_helper.h"
|
28
28
|
|
29
29
|
// 'state' holds the to call when the fd is readable or writable respectively.
|
@@ -76,7 +76,7 @@ void LockfreeEvent::DestroyEvent() {
|
|
76
76
|
if (curr & kShutdownBit) {
|
77
77
|
grpc_core::internal::StatusFreeHeapPtr(curr & ~kShutdownBit);
|
78
78
|
} else {
|
79
|
-
|
79
|
+
GRPC_CHECK(curr == kClosureNotReady || curr == kClosureReady);
|
80
80
|
}
|
81
81
|
// we CAS in a shutdown, no error value here. If this event is interacted
|
82
82
|
// with post-deletion (see the note in the constructor) we want the bit
|
@@ -31,7 +31,6 @@
|
|
31
31
|
#include <string>
|
32
32
|
|
33
33
|
#include "absl/functional/any_invocable.h"
|
34
|
-
#include "absl/log/check.h"
|
35
34
|
#include "absl/log/log.h"
|
36
35
|
#include "absl/status/status.h"
|
37
36
|
#include "absl/status/statusor.h"
|
@@ -46,6 +45,7 @@
|
|
46
45
|
#include "src/core/lib/slice/slice.h"
|
47
46
|
#include "src/core/telemetry/stats.h"
|
48
47
|
#include "src/core/util/debug_location.h"
|
48
|
+
#include "src/core/util/grpc_check.h"
|
49
49
|
#include "src/core/util/load_file.h"
|
50
50
|
#include "src/core/util/ref_counted_ptr.h"
|
51
51
|
#include "src/core/util/status_helper.h"
|
@@ -247,7 +247,7 @@ msg_iovlen_type TcpZerocopySendRecord::PopulateIovs(size_t* unwind_slice_idx,
|
|
247
247
|
++(out_offset_.slice_idx);
|
248
248
|
out_offset_.byte_idx = 0;
|
249
249
|
}
|
250
|
-
|
250
|
+
GRPC_DCHECK_GT(iov_size, 0u);
|
251
251
|
return iov_size;
|
252
252
|
}
|
253
253
|
|
@@ -310,8 +310,8 @@ bool PosixEndpointImpl::TcpDoRead(absl::Status& status) {
|
|
310
310
|
iov[i].iov_len = slice.length();
|
311
311
|
}
|
312
312
|
|
313
|
-
|
314
|
-
|
313
|
+
GRPC_CHECK_NE(incoming_buffer_->Length(), 0u);
|
314
|
+
GRPC_DCHECK_GT(min_progress_size_, 0);
|
315
315
|
|
316
316
|
do {
|
317
317
|
// Assume there is something on the queue. If we receive TCP_INQ from
|
@@ -377,11 +377,12 @@ bool PosixEndpointImpl::TcpDoRead(absl::Status& status) {
|
|
377
377
|
}
|
378
378
|
grpc_core::global_stats().IncrementTcpReadSize(read_bytes);
|
379
379
|
AddToEstimate(static_cast<size_t>(read_bytes));
|
380
|
-
|
380
|
+
GRPC_DCHECK((size_t)read_bytes <=
|
381
|
+
incoming_buffer_->Length() - total_read_bytes);
|
381
382
|
|
382
383
|
#ifdef GRPC_HAVE_TCP_INQ
|
383
384
|
if (inq_capable_) {
|
384
|
-
|
385
|
+
GRPC_DCHECK(!(msg.msg_flags & MSG_CTRUNC));
|
385
386
|
struct cmsghdr* cmsg = CMSG_FIRSTHDR(&msg);
|
386
387
|
for (; cmsg != nullptr; cmsg = CMSG_NXTHDR(&msg, cmsg)) {
|
387
388
|
if (cmsg->cmsg_level == SOL_TCP && cmsg->cmsg_type == TCP_CM_INQ &&
|
@@ -430,7 +431,7 @@ bool PosixEndpointImpl::TcpDoRead(absl::Status& status) {
|
|
430
431
|
inq_ = 1;
|
431
432
|
}
|
432
433
|
|
433
|
-
|
434
|
+
GRPC_DCHECK_GT(total_read_bytes, 0u);
|
434
435
|
status = absl::OkStatus();
|
435
436
|
if (grpc_core::IsTcpFrameSizeTuningEnabled()) {
|
436
437
|
// Update min progress size based on the total number of bytes read in
|
@@ -613,7 +614,7 @@ bool PosixEndpointImpl::Read(absl::AnyInvocable<void(absl::Status)> on_read,
|
|
613
614
|
grpc_core::ReleasableMutexLock lock(&read_mu_);
|
614
615
|
GRPC_TRACE_LOG(event_engine_endpoint, INFO)
|
615
616
|
<< "Endpoint[" << this << "]: Read";
|
616
|
-
|
617
|
+
GRPC_CHECK(read_cb_ == nullptr);
|
617
618
|
incoming_buffer_ = buffer;
|
618
619
|
incoming_buffer_->Clear();
|
619
620
|
incoming_buffer_->Swap(last_read_buffer_);
|
@@ -687,8 +688,8 @@ TcpZerocopySendRecord* PosixEndpointImpl::TcpGetSendZerocopyRecord(
|
|
687
688
|
}
|
688
689
|
if (zerocopy_send_record != nullptr) {
|
689
690
|
zerocopy_send_record->PrepareForSends(buf);
|
690
|
-
|
691
|
-
|
691
|
+
GRPC_DCHECK_EQ(buf.Count(), 0u);
|
692
|
+
GRPC_DCHECK_EQ(buf.Length(), 0u);
|
692
693
|
outgoing_byte_idx_ = 0;
|
693
694
|
outgoing_buffer_ = nullptr;
|
694
695
|
}
|
@@ -775,10 +776,10 @@ void PosixEndpointImpl::ZerocopyDisableAndWaitForRemaining() {
|
|
775
776
|
|
776
777
|
// Reads \a cmsg to process zerocopy control messages.
|
777
778
|
void PosixEndpointImpl::ProcessZerocopy(struct cmsghdr* cmsg) {
|
778
|
-
|
779
|
+
GRPC_DCHECK(cmsg);
|
779
780
|
auto serr = reinterpret_cast<struct sock_extended_err*>(CMSG_DATA(cmsg));
|
780
|
-
|
781
|
-
|
781
|
+
GRPC_DCHECK_EQ(serr->ee_errno, 0u);
|
782
|
+
GRPC_DCHECK(serr->ee_origin == SO_EE_ORIGIN_ZEROCOPY);
|
782
783
|
const uint32_t lo = serr->ee_info;
|
783
784
|
const uint32_t hi = serr->ee_data;
|
784
785
|
for (uint32_t seq = lo; seq <= hi; ++seq) {
|
@@ -788,7 +789,7 @@ void PosixEndpointImpl::ProcessZerocopy(struct cmsghdr* cmsg) {
|
|
788
789
|
// both; if so, batch the unref/put.
|
789
790
|
TcpZerocopySendRecord* record =
|
790
791
|
tcp_zerocopy_send_ctx_->ReleaseSendRecord(seq);
|
791
|
-
|
792
|
+
GRPC_DCHECK(record);
|
792
793
|
UnrefMaybePutZerocopySendRecord(record);
|
793
794
|
}
|
794
795
|
if (tcp_zerocopy_send_ctx_->UpdateZeroCopyOptMemStateAfterFree()) {
|
@@ -1086,7 +1087,7 @@ bool PosixEndpointImpl::TcpFlush(absl::Status& status) {
|
|
1086
1087
|
outgoing_slice_idx++;
|
1087
1088
|
outgoing_byte_idx_ = 0;
|
1088
1089
|
}
|
1089
|
-
|
1090
|
+
GRPC_CHECK_GT(iov_size, 0u);
|
1090
1091
|
|
1091
1092
|
msg.msg_name = nullptr;
|
1092
1093
|
msg.msg_namelen = 0;
|
@@ -1132,7 +1133,7 @@ bool PosixEndpointImpl::TcpFlush(absl::Status& status) {
|
|
1132
1133
|
}
|
1133
1134
|
}
|
1134
1135
|
|
1135
|
-
|
1136
|
+
GRPC_CHECK_EQ(outgoing_byte_idx_, 0u);
|
1136
1137
|
bytes_counter_ += *send_result;
|
1137
1138
|
trailing = sending_length - static_cast<size_t>(*send_result);
|
1138
1139
|
while (trailing > 0) {
|
@@ -1171,7 +1172,7 @@ void PosixEndpointImpl::HandleWrite(absl::Status status) {
|
|
1171
1172
|
? TcpFlushZerocopy(current_zerocopy_send_, status)
|
1172
1173
|
: TcpFlush(status);
|
1173
1174
|
if (!flush_result) {
|
1174
|
-
|
1175
|
+
GRPC_DCHECK(status.ok());
|
1175
1176
|
handle_->NotifyOnWrite(on_write_);
|
1176
1177
|
} else {
|
1177
1178
|
GRPC_TRACE_LOG(event_engine_endpoint, INFO)
|
@@ -1190,9 +1191,9 @@ bool PosixEndpointImpl::Write(
|
|
1190
1191
|
absl::Status status = absl::OkStatus();
|
1191
1192
|
TcpZerocopySendRecord* zerocopy_send_record = nullptr;
|
1192
1193
|
|
1193
|
-
|
1194
|
-
|
1195
|
-
|
1194
|
+
GRPC_CHECK(write_cb_ == nullptr);
|
1195
|
+
GRPC_DCHECK_EQ(current_zerocopy_send_, nullptr);
|
1196
|
+
GRPC_DCHECK_NE(data, nullptr);
|
1196
1197
|
|
1197
1198
|
GRPC_TRACE_LOG(event_engine_endpoint, INFO)
|
1198
1199
|
<< "Endpoint[" << this << "]: Write " << data->Length() << " bytes";
|
@@ -1293,7 +1294,7 @@ PosixEndpointImpl::PosixEndpointImpl(EventHandle* handle,
|
|
1293
1294
|
poller_(handle->Poller()),
|
1294
1295
|
engine_(engine) {
|
1295
1296
|
FileDescriptor fd = handle_->WrappedFd();
|
1296
|
-
|
1297
|
+
GRPC_CHECK(options.resource_quota != nullptr);
|
1297
1298
|
auto& posix_interface = poller_->posix_interface();
|
1298
1299
|
auto peer_addr_string = posix_interface.PeerAddressString(fd);
|
1299
1300
|
mem_quota_ = options.resource_quota->memory_quota();
|
@@ -1405,7 +1406,7 @@ std::unique_ptr<PosixEndpoint> CreatePosixEndpoint(
|
|
1405
1406
|
EventHandle* handle, PosixEngineClosure* on_shutdown,
|
1406
1407
|
std::shared_ptr<EventEngine> engine, MemoryAllocator&& allocator,
|
1407
1408
|
const PosixTcpOptions& options) {
|
1408
|
-
|
1409
|
+
GRPC_DCHECK_NE(handle, nullptr);
|
1409
1410
|
return std::make_unique<PosixEndpoint>(handle, on_shutdown, std::move(engine),
|
1410
1411
|
std::move(allocator), options);
|
1411
1412
|
}
|