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
@@ -25,7 +25,6 @@
|
|
25
25
|
|
26
26
|
#include "absl/base/attributes.h"
|
27
27
|
#include "absl/functional/function_ref.h"
|
28
|
-
#include "absl/log/check.h"
|
29
28
|
#include "absl/log/log.h"
|
30
29
|
#include "absl/status/status.h"
|
31
30
|
#include "absl/strings/str_cat.h"
|
@@ -37,6 +36,7 @@
|
|
37
36
|
#include "src/core/lib/promise/seq.h"
|
38
37
|
#include "src/core/lib/slice/slice.h"
|
39
38
|
#include "src/core/util/crash.h"
|
39
|
+
#include "src/core/util/grpc_check.h"
|
40
40
|
#include "src/core/util/latent_see.h"
|
41
41
|
#include "src/core/util/manual_constructor.h"
|
42
42
|
#include "src/core/util/status_helper.h"
|
@@ -172,7 +172,7 @@ BaseCallData::CapturedBatch::~CapturedBatch() {
|
|
172
172
|
uintptr_t& refcnt = *RefCountField(batch_);
|
173
173
|
if (refcnt == 0) return; // refcnt==0 ==> cancelled
|
174
174
|
--refcnt;
|
175
|
-
|
175
|
+
GRPC_CHECK_NE(refcnt, 0u);
|
176
176
|
}
|
177
177
|
|
178
178
|
BaseCallData::CapturedBatch::CapturedBatch(const CapturedBatch& rhs)
|
@@ -203,7 +203,7 @@ BaseCallData::CapturedBatch& BaseCallData::CapturedBatch::operator=(
|
|
203
203
|
|
204
204
|
void BaseCallData::CapturedBatch::ResumeWith(Flusher* releaser) {
|
205
205
|
auto* batch = std::exchange(batch_, nullptr);
|
206
|
-
|
206
|
+
GRPC_CHECK_NE(batch, nullptr);
|
207
207
|
uintptr_t& refcnt = *RefCountField(batch);
|
208
208
|
if (refcnt == 0) {
|
209
209
|
// refcnt==0 ==> cancelled
|
@@ -218,7 +218,7 @@ void BaseCallData::CapturedBatch::ResumeWith(Flusher* releaser) {
|
|
218
218
|
|
219
219
|
void BaseCallData::CapturedBatch::CompleteWith(Flusher* releaser) {
|
220
220
|
auto* batch = std::exchange(batch_, nullptr);
|
221
|
-
|
221
|
+
GRPC_CHECK_NE(batch, nullptr);
|
222
222
|
uintptr_t& refcnt = *RefCountField(batch);
|
223
223
|
if (refcnt == 0) return; // refcnt==0 ==> cancelled
|
224
224
|
if (--refcnt == 0) {
|
@@ -229,7 +229,7 @@ void BaseCallData::CapturedBatch::CompleteWith(Flusher* releaser) {
|
|
229
229
|
void BaseCallData::CapturedBatch::CancelWith(grpc_error_handle error,
|
230
230
|
Flusher* releaser) {
|
231
231
|
auto* batch = std::exchange(batch_, nullptr);
|
232
|
-
|
232
|
+
GRPC_CHECK_NE(batch, nullptr);
|
233
233
|
uintptr_t& refcnt = *RefCountField(batch);
|
234
234
|
if (refcnt == 0) {
|
235
235
|
// refcnt==0 ==> cancelled
|
@@ -351,7 +351,7 @@ template <typename T>
|
|
351
351
|
void BaseCallData::SendMessage::GotPipe(T* pipe_end) {
|
352
352
|
GRPC_TRACE_LOG(channel, INFO)
|
353
353
|
<< base_->LogTag() << " SendMessage.GotPipe st=" << StateString(state_);
|
354
|
-
|
354
|
+
GRPC_CHECK_NE(pipe_end, nullptr);
|
355
355
|
switch (state_) {
|
356
356
|
case State::kInitial:
|
357
357
|
state_ = State::kIdle;
|
@@ -495,7 +495,7 @@ void BaseCallData::SendMessage::WakeInsideCombiner(Flusher* flusher,
|
|
495
495
|
}
|
496
496
|
[[fallthrough]];
|
497
497
|
case State::kPushedToPipe: {
|
498
|
-
|
498
|
+
GRPC_CHECK(push_.has_value());
|
499
499
|
auto r_push = (*push_)();
|
500
500
|
if (auto* p = r_push.value_if_ready()) {
|
501
501
|
GRPC_TRACE_LOG(channel, INFO)
|
@@ -504,12 +504,12 @@ void BaseCallData::SendMessage::WakeInsideCombiner(Flusher* flusher,
|
|
504
504
|
"result="
|
505
505
|
<< (*p ? "true" : "false");
|
506
506
|
// We haven't pulled through yet, so this certainly shouldn't succeed.
|
507
|
-
|
507
|
+
GRPC_CHECK(!*p);
|
508
508
|
state_ = State::kCancelled;
|
509
509
|
batch_.CancelWith(absl::CancelledError(), flusher);
|
510
510
|
break;
|
511
511
|
}
|
512
|
-
|
512
|
+
GRPC_CHECK(next_.has_value());
|
513
513
|
auto r_next = (*next_)();
|
514
514
|
if (auto* p = r_next.value_if_ready()) {
|
515
515
|
GRPC_TRACE_LOG(channel, INFO)
|
@@ -820,12 +820,12 @@ void BaseCallData::ReceiveMessage::WakeInsideCombiner(Flusher* flusher,
|
|
820
820
|
completed_status_, "recv_message");
|
821
821
|
break;
|
822
822
|
}
|
823
|
-
|
824
|
-
|
823
|
+
GRPC_CHECK(state_ == State::kPushedToPipe ||
|
824
|
+
state_ == State::kCompletedWhilePushedToPipe);
|
825
825
|
[[fallthrough]];
|
826
826
|
case State::kCompletedWhilePushedToPipe:
|
827
827
|
case State::kPushedToPipe: {
|
828
|
-
|
828
|
+
GRPC_CHECK(push_.has_value());
|
829
829
|
auto r_push = (*push_)();
|
830
830
|
if (auto* p = r_push.value_if_ready()) {
|
831
831
|
GRPC_TRACE_LOG(channel, INFO)
|
@@ -833,11 +833,11 @@ void BaseCallData::ReceiveMessage::WakeInsideCombiner(Flusher* flusher,
|
|
833
833
|
<< " ReceiveMessage.WakeInsideCombiner push complete: "
|
834
834
|
<< (*p ? "true" : "false");
|
835
835
|
// We haven't pulled through yet, so this certainly shouldn't succeed.
|
836
|
-
|
836
|
+
GRPC_CHECK(!*p);
|
837
837
|
state_ = State::kCancelled;
|
838
838
|
break;
|
839
839
|
}
|
840
|
-
|
840
|
+
GRPC_CHECK(next_.has_value());
|
841
841
|
auto r_next = (*next_)();
|
842
842
|
if (auto* p = r_next.value_if_ready()) {
|
843
843
|
next_.reset();
|
@@ -872,7 +872,7 @@ void BaseCallData::ReceiveMessage::WakeInsideCombiner(Flusher* flusher,
|
|
872
872
|
[[fallthrough]];
|
873
873
|
case State::kCompletedWhilePulledFromPipe:
|
874
874
|
case State::kPulledFromPipe: {
|
875
|
-
|
875
|
+
GRPC_CHECK(push_.has_value());
|
876
876
|
if ((*push_)().ready()) {
|
877
877
|
GRPC_TRACE_LOG(channel, INFO)
|
878
878
|
<< base_->LogTag()
|
@@ -976,7 +976,7 @@ class ClientCallData::PollContext {
|
|
976
976
|
public:
|
977
977
|
explicit PollContext(ClientCallData* self, Flusher* flusher)
|
978
978
|
: self_(self), flusher_(flusher) {
|
979
|
-
|
979
|
+
GRPC_CHECK_EQ(self_->poll_ctx_, nullptr);
|
980
980
|
|
981
981
|
self_->poll_ctx_ = this;
|
982
982
|
scoped_activity_.Init(self_);
|
@@ -987,11 +987,11 @@ class ClientCallData::PollContext {
|
|
987
987
|
PollContext& operator=(const PollContext&) = delete;
|
988
988
|
|
989
989
|
void Run() {
|
990
|
-
|
990
|
+
GRPC_DCHECK(HasContext<Arena>());
|
991
991
|
GRPC_TRACE_LOG(channel, INFO)
|
992
992
|
<< self_->LogTag() << " ClientCallData.PollContext.Run "
|
993
993
|
<< self_->DebugString();
|
994
|
-
|
994
|
+
GRPC_CHECK(have_scoped_activity_);
|
995
995
|
repoll_ = false;
|
996
996
|
if (self_->send_message() != nullptr) {
|
997
997
|
self_->send_message()->WakeInsideCombiner(flusher_, true);
|
@@ -1026,8 +1026,10 @@ class ClientCallData::PollContext {
|
|
1026
1026
|
case RecvInitialMetadata::kCompleteAndGotPipe:
|
1027
1027
|
self_->recv_initial_metadata_->state =
|
1028
1028
|
RecvInitialMetadata::kCompleteAndPushedToPipe;
|
1029
|
-
|
1030
|
-
|
1029
|
+
GRPC_CHECK(
|
1030
|
+
!self_->recv_initial_metadata_->metadata_push_.has_value());
|
1031
|
+
GRPC_CHECK(
|
1032
|
+
!self_->recv_initial_metadata_->metadata_next_.has_value());
|
1031
1033
|
self_->recv_initial_metadata_->metadata_push_.emplace(
|
1032
1034
|
self_->recv_initial_metadata_->server_initial_metadata_publisher
|
1033
1035
|
->Push(ServerMetadataHandle(
|
@@ -1038,7 +1040,7 @@ class ClientCallData::PollContext {
|
|
1038
1040
|
self_->server_initial_metadata_pipe()->receiver.Next());
|
1039
1041
|
[[fallthrough]];
|
1040
1042
|
case RecvInitialMetadata::kCompleteAndPushedToPipe: {
|
1041
|
-
|
1043
|
+
GRPC_CHECK(self_->recv_initial_metadata_->metadata_next_.has_value());
|
1042
1044
|
Poll<NextResult<ServerMetadataHandle>> p =
|
1043
1045
|
(*self_->recv_initial_metadata_->metadata_next_)();
|
1044
1046
|
if (NextResult<ServerMetadataHandle>* nr = p.value_if_ready()) {
|
@@ -1130,7 +1132,7 @@ class ClientCallData::PollContext {
|
|
1130
1132
|
}
|
1131
1133
|
} else {
|
1132
1134
|
self_->cancelled_error_ = StatusFromMetadata(*md);
|
1133
|
-
|
1135
|
+
GRPC_CHECK(!self_->cancelled_error_.ok());
|
1134
1136
|
if (self_->recv_initial_metadata_ != nullptr) {
|
1135
1137
|
switch (self_->recv_initial_metadata_->state) {
|
1136
1138
|
case RecvInitialMetadata::kInitial:
|
@@ -1168,7 +1170,7 @@ class ClientCallData::PollContext {
|
|
1168
1170
|
self_->send_initial_metadata_batch_.CancelWith(
|
1169
1171
|
self_->cancelled_error_, flusher_);
|
1170
1172
|
} else {
|
1171
|
-
|
1173
|
+
GRPC_CHECK(
|
1172
1174
|
self_->recv_trailing_state_ == RecvTrailingState::kInitial ||
|
1173
1175
|
self_->recv_trailing_state_ == RecvTrailingState::kForwarded);
|
1174
1176
|
self_->call_combiner()->Cancel(self_->cancelled_error_);
|
@@ -1272,7 +1274,7 @@ ClientCallData::ClientCallData(grpc_call_element* elem,
|
|
1272
1274
|
|
1273
1275
|
ClientCallData::~ClientCallData() {
|
1274
1276
|
ScopedActivity scoped_activity(this);
|
1275
|
-
|
1277
|
+
GRPC_CHECK_EQ(poll_ctx_, nullptr);
|
1276
1278
|
if (recv_initial_metadata_ != nullptr) {
|
1277
1279
|
recv_initial_metadata_->~RecvInitialMetadata();
|
1278
1280
|
}
|
@@ -1286,7 +1288,7 @@ std::string ClientCallData::DebugTag() const {
|
|
1286
1288
|
|
1287
1289
|
// Activity implementation.
|
1288
1290
|
void ClientCallData::ForceImmediateRepoll(WakeupMask) {
|
1289
|
-
|
1291
|
+
GRPC_CHECK_NE(poll_ctx_, nullptr);
|
1290
1292
|
poll_ctx_->Repoll();
|
1291
1293
|
}
|
1292
1294
|
|
@@ -1354,9 +1356,10 @@ void ClientCallData::StartBatch(grpc_transport_stream_op_batch* b) {
|
|
1354
1356
|
// If this is a cancel stream, cancel anything we have pending and propagate
|
1355
1357
|
// the cancellation.
|
1356
1358
|
if (batch->cancel_stream) {
|
1357
|
-
|
1358
|
-
|
1359
|
-
|
1359
|
+
GRPC_CHECK(!batch->send_initial_metadata &&
|
1360
|
+
!batch->send_trailing_metadata && !batch->send_message &&
|
1361
|
+
!batch->recv_initial_metadata && !batch->recv_message &&
|
1362
|
+
!batch->recv_trailing_metadata);
|
1360
1363
|
PollContext poll_ctx(this, &flusher);
|
1361
1364
|
Cancel(batch->payload->cancel_stream.cancel_error, &flusher);
|
1362
1365
|
poll_ctx.Run();
|
@@ -1427,12 +1430,12 @@ void ClientCallData::StartBatch(grpc_transport_stream_op_batch* b) {
|
|
1427
1430
|
batch.CancelWith(cancelled_error_, &flusher);
|
1428
1431
|
} else {
|
1429
1432
|
// Otherwise, we should not have seen a send_initial_metadata op yet.
|
1430
|
-
|
1433
|
+
GRPC_CHECK(send_initial_state_ == SendInitialState::kInitial);
|
1431
1434
|
// Mark ourselves as queued.
|
1432
1435
|
send_initial_state_ = SendInitialState::kQueued;
|
1433
1436
|
if (batch->recv_trailing_metadata) {
|
1434
1437
|
// If there's a recv_trailing_metadata op, we queue that too.
|
1435
|
-
|
1438
|
+
GRPC_CHECK(recv_trailing_state_ == RecvTrailingState::kInitial);
|
1436
1439
|
recv_trailing_state_ = RecvTrailingState::kQueued;
|
1437
1440
|
}
|
1438
1441
|
// This is the queuing!
|
@@ -1447,7 +1450,7 @@ void ClientCallData::StartBatch(grpc_transport_stream_op_batch* b) {
|
|
1447
1450
|
if (recv_trailing_state_ == RecvTrailingState::kCancelled) {
|
1448
1451
|
batch.CancelWith(cancelled_error_, &flusher);
|
1449
1452
|
} else {
|
1450
|
-
|
1453
|
+
GRPC_CHECK(recv_trailing_state_ == RecvTrailingState::kInitial);
|
1451
1454
|
recv_trailing_state_ = RecvTrailingState::kForwarded;
|
1452
1455
|
HookRecvTrailingMetadata(batch);
|
1453
1456
|
}
|
@@ -1523,7 +1526,7 @@ void ClientCallData::Cancel(grpc_error_handle error, Flusher* flusher) {
|
|
1523
1526
|
// Begin running the promise - which will ultimately take some initial
|
1524
1527
|
// metadata and return some trailing metadata.
|
1525
1528
|
void ClientCallData::StartPromise(Flusher* flusher) {
|
1526
|
-
|
1529
|
+
GRPC_CHECK(send_initial_state_ == SendInitialState::kQueued);
|
1527
1530
|
ChannelFilter* filter = promise_filter_detail::ChannelFilterFromElem(elem());
|
1528
1531
|
|
1529
1532
|
// Construct the promise.
|
@@ -1632,8 +1635,8 @@ ArenaPromise<ServerMetadataHandle> ClientCallData::MakeNextPromise(
|
|
1632
1635
|
CallArgs call_args) {
|
1633
1636
|
GRPC_TRACE_LOG(channel, INFO)
|
1634
1637
|
<< LogTag() << " ClientCallData.MakeNextPromise " << DebugString();
|
1635
|
-
|
1636
|
-
|
1638
|
+
GRPC_CHECK_NE(poll_ctx_, nullptr);
|
1639
|
+
GRPC_CHECK(send_initial_state_ == SendInitialState::kQueued);
|
1637
1640
|
send_initial_metadata_batch_->payload->send_initial_metadata
|
1638
1641
|
.send_initial_metadata = call_args.client_initial_metadata.get();
|
1639
1642
|
if (recv_initial_metadata_ != nullptr) {
|
@@ -1641,7 +1644,7 @@ ArenaPromise<ServerMetadataHandle> ClientCallData::MakeNextPromise(
|
|
1641
1644
|
// It might be the one we passed in - in which case we know this filter
|
1642
1645
|
// only wants to examine the metadata, or it might be a new instance, in
|
1643
1646
|
// which case we know the filter wants to mutate.
|
1644
|
-
|
1647
|
+
GRPC_CHECK_NE(call_args.server_initial_metadata, nullptr);
|
1645
1648
|
recv_initial_metadata_->server_initial_metadata_publisher =
|
1646
1649
|
call_args.server_initial_metadata;
|
1647
1650
|
switch (recv_initial_metadata_->state) {
|
@@ -1670,17 +1673,17 @@ ArenaPromise<ServerMetadataHandle> ClientCallData::MakeNextPromise(
|
|
1670
1673
|
recv_initial_metadata_->state))); // unreachable
|
1671
1674
|
}
|
1672
1675
|
} else {
|
1673
|
-
|
1676
|
+
GRPC_CHECK_EQ(call_args.server_initial_metadata, nullptr);
|
1674
1677
|
}
|
1675
1678
|
if (send_message() != nullptr) {
|
1676
1679
|
send_message()->GotPipe(call_args.client_to_server_messages);
|
1677
1680
|
} else {
|
1678
|
-
|
1681
|
+
GRPC_CHECK_EQ(call_args.client_to_server_messages, nullptr);
|
1679
1682
|
}
|
1680
1683
|
if (receive_message() != nullptr) {
|
1681
1684
|
receive_message()->GotPipe(call_args.server_to_client_messages);
|
1682
1685
|
} else {
|
1683
|
-
|
1686
|
+
GRPC_CHECK_EQ(call_args.server_to_client_messages, nullptr);
|
1684
1687
|
}
|
1685
1688
|
return ArenaPromise<ServerMetadataHandle>(
|
1686
1689
|
[this]() { return PollTrailingMetadata(); });
|
@@ -1693,10 +1696,10 @@ ArenaPromise<ServerMetadataHandle> ClientCallData::MakeNextPromise(
|
|
1693
1696
|
Poll<ServerMetadataHandle> ClientCallData::PollTrailingMetadata() {
|
1694
1697
|
GRPC_TRACE_LOG(channel, INFO)
|
1695
1698
|
<< LogTag() << " ClientCallData.PollTrailingMetadata " << DebugString();
|
1696
|
-
|
1699
|
+
GRPC_CHECK_NE(poll_ctx_, nullptr);
|
1697
1700
|
if (send_initial_state_ == SendInitialState::kQueued) {
|
1698
1701
|
// First poll: pass the send_initial_metadata op down the stack.
|
1699
|
-
|
1702
|
+
GRPC_CHECK(send_initial_metadata_batch_.is_captured());
|
1700
1703
|
send_initial_state_ = SendInitialState::kForwarded;
|
1701
1704
|
if (recv_trailing_state_ == RecvTrailingState::kQueued) {
|
1702
1705
|
// (and the recv_trailing_metadata op if it's part of the queuing)
|
@@ -1762,7 +1765,7 @@ void ClientCallData::RecvTrailingMetadataReady(grpc_error_handle error) {
|
|
1762
1765
|
SetStatusFromError(recv_trailing_metadata_, error);
|
1763
1766
|
}
|
1764
1767
|
// Record that we've got the callback.
|
1765
|
-
|
1768
|
+
GRPC_CHECK(recv_trailing_state_ == RecvTrailingState::kForwarded);
|
1766
1769
|
recv_trailing_state_ = RecvTrailingState::kComplete;
|
1767
1770
|
if (receive_message() != nullptr) {
|
1768
1771
|
receive_message()->Done(*recv_trailing_metadata_, &flusher);
|
@@ -1851,7 +1854,7 @@ class ServerCallData::PollContext {
|
|
1851
1854
|
created_.line(), "; Old: ", self_->poll_ctx_->created_.file(), ":",
|
1852
1855
|
self_->poll_ctx_->created_.line()));
|
1853
1856
|
}
|
1854
|
-
|
1857
|
+
GRPC_CHECK_EQ(self_->poll_ctx_, nullptr);
|
1855
1858
|
self_->poll_ctx_ = this;
|
1856
1859
|
scoped_activity_.Init(self_);
|
1857
1860
|
have_scoped_activity_ = true;
|
@@ -1957,7 +1960,7 @@ ServerCallData::~ServerCallData() {
|
|
1957
1960
|
if (send_initial_metadata_ != nullptr) {
|
1958
1961
|
send_initial_metadata_->~SendInitialMetadata();
|
1959
1962
|
}
|
1960
|
-
|
1963
|
+
GRPC_CHECK_EQ(poll_ctx_, nullptr);
|
1961
1964
|
}
|
1962
1965
|
|
1963
1966
|
std::string ServerCallData::DebugTag() const {
|
@@ -1966,7 +1969,7 @@ std::string ServerCallData::DebugTag() const {
|
|
1966
1969
|
|
1967
1970
|
// Activity implementation.
|
1968
1971
|
void ServerCallData::ForceImmediateRepoll(WakeupMask) {
|
1969
|
-
|
1972
|
+
GRPC_CHECK_NE(poll_ctx_, nullptr);
|
1970
1973
|
poll_ctx_->Repoll();
|
1971
1974
|
}
|
1972
1975
|
|
@@ -1983,9 +1986,10 @@ void ServerCallData::StartBatch(grpc_transport_stream_op_batch* b) {
|
|
1983
1986
|
// If this is a cancel stream, cancel anything we have pending and
|
1984
1987
|
// propagate the cancellation.
|
1985
1988
|
if (batch->cancel_stream) {
|
1986
|
-
|
1987
|
-
|
1988
|
-
|
1989
|
+
GRPC_CHECK(!batch->send_initial_metadata &&
|
1990
|
+
!batch->send_trailing_metadata && !batch->send_message &&
|
1991
|
+
!batch->recv_initial_metadata && !batch->recv_message &&
|
1992
|
+
!batch->recv_trailing_metadata);
|
1989
1993
|
PollContext poll_ctx(this, &flusher);
|
1990
1994
|
Completed(batch->payload->cancel_stream.cancel_error,
|
1991
1995
|
batch->payload->cancel_stream.tarpit, &flusher);
|
@@ -2000,11 +2004,11 @@ void ServerCallData::StartBatch(grpc_transport_stream_op_batch* b) {
|
|
2000
2004
|
// recv_initial_metadata: we hook the response of this so we can start the
|
2001
2005
|
// promise at an appropriate time.
|
2002
2006
|
if (batch->recv_initial_metadata) {
|
2003
|
-
|
2004
|
-
|
2005
|
-
|
2007
|
+
GRPC_CHECK(!batch->send_initial_metadata &&
|
2008
|
+
!batch->send_trailing_metadata && !batch->send_message &&
|
2009
|
+
!batch->recv_message && !batch->recv_trailing_metadata);
|
2006
2010
|
// Otherwise, we should not have seen a send_initial_metadata op yet.
|
2007
|
-
|
2011
|
+
GRPC_CHECK(recv_initial_state_ == RecvInitialState::kInitial);
|
2008
2012
|
// Hook the callback so we know when to start the promise.
|
2009
2013
|
recv_initial_metadata_ =
|
2010
2014
|
batch->payload->recv_initial_metadata.recv_initial_metadata;
|
@@ -2182,13 +2186,14 @@ void ServerCallData::Completed(grpc_error_handle error,
|
|
2182
2186
|
// - return a wrapper around PollTrailingMetadata as the promise.
|
2183
2187
|
ArenaPromise<ServerMetadataHandle> ServerCallData::MakeNextPromise(
|
2184
2188
|
CallArgs call_args) {
|
2185
|
-
|
2186
|
-
|
2187
|
-
|
2189
|
+
GRPC_CHECK(recv_initial_state_ == RecvInitialState::kComplete);
|
2190
|
+
GRPC_CHECK(std::move(call_args.client_initial_metadata).get() ==
|
2191
|
+
recv_initial_metadata_);
|
2188
2192
|
forward_recv_initial_metadata_callback_ = true;
|
2189
2193
|
if (send_initial_metadata_ != nullptr) {
|
2190
|
-
|
2191
|
-
|
2194
|
+
GRPC_CHECK(send_initial_metadata_->server_initial_metadata_publisher ==
|
2195
|
+
nullptr);
|
2196
|
+
GRPC_CHECK_NE(call_args.server_initial_metadata, nullptr);
|
2192
2197
|
send_initial_metadata_->server_initial_metadata_publisher =
|
2193
2198
|
call_args.server_initial_metadata;
|
2194
2199
|
switch (send_initial_metadata_->state) {
|
@@ -2211,17 +2216,17 @@ ArenaPromise<ServerMetadataHandle> ServerCallData::MakeNextPromise(
|
|
2211
2216
|
break;
|
2212
2217
|
}
|
2213
2218
|
} else {
|
2214
|
-
|
2219
|
+
GRPC_CHECK_EQ(call_args.server_initial_metadata, nullptr);
|
2215
2220
|
}
|
2216
2221
|
if (send_message() != nullptr) {
|
2217
2222
|
send_message()->GotPipe(call_args.server_to_client_messages);
|
2218
2223
|
} else {
|
2219
|
-
|
2224
|
+
GRPC_CHECK_EQ(call_args.server_to_client_messages, nullptr);
|
2220
2225
|
}
|
2221
2226
|
if (receive_message() != nullptr) {
|
2222
2227
|
receive_message()->GotPipe(call_args.client_to_server_messages);
|
2223
2228
|
} else {
|
2224
|
-
|
2229
|
+
GRPC_CHECK_EQ(call_args.client_to_server_messages, nullptr);
|
2225
2230
|
}
|
2226
2231
|
return ArenaPromise<ServerMetadataHandle>(
|
2227
2232
|
[this]() { return PollTrailingMetadata(); });
|
@@ -2281,7 +2286,7 @@ void ServerCallData::RecvInitialMetadataReady(grpc_error_handle error) {
|
|
2281
2286
|
Flusher flusher(this);
|
2282
2287
|
GRPC_TRACE_LOG(channel, INFO)
|
2283
2288
|
<< LogTag() << ": RecvInitialMetadataReady " << error;
|
2284
|
-
|
2289
|
+
GRPC_CHECK(recv_initial_state_ == RecvInitialState::kForwarded);
|
2285
2290
|
// If there was an error we just propagate that through
|
2286
2291
|
if (!error.ok()) {
|
2287
2292
|
recv_initial_state_ = RecvInitialState::kResponded;
|
@@ -2351,8 +2356,8 @@ void ServerCallData::WakeInsideCombiner(Flusher* flusher) {
|
|
2351
2356
|
SendInitialMetadata::kQueuedAndGotPipe) {
|
2352
2357
|
send_initial_metadata_->state =
|
2353
2358
|
SendInitialMetadata::kQueuedAndPushedToPipe;
|
2354
|
-
|
2355
|
-
|
2359
|
+
GRPC_CHECK(!send_initial_metadata_->metadata_push_.has_value());
|
2360
|
+
GRPC_CHECK(!send_initial_metadata_->metadata_next_.has_value());
|
2356
2361
|
send_initial_metadata_->metadata_push_.emplace(
|
2357
2362
|
send_initial_metadata_->server_initial_metadata_publisher->Push(
|
2358
2363
|
ServerMetadataHandle(
|
@@ -2426,7 +2431,7 @@ void ServerCallData::WakeInsideCombiner(Flusher* flusher) {
|
|
2426
2431
|
if (send_initial_metadata_ != nullptr &&
|
2427
2432
|
send_initial_metadata_->state ==
|
2428
2433
|
SendInitialMetadata::kQueuedAndPushedToPipe) {
|
2429
|
-
|
2434
|
+
GRPC_CHECK(send_initial_metadata_->metadata_next_.has_value());
|
2430
2435
|
auto p = (*send_initial_metadata_->metadata_next_)();
|
2431
2436
|
GRPC_TRACE_LOG(channel, INFO)
|
2432
2437
|
<< LogTag() << ": WakeInsideCombiner send_initial_metadata poll="
|
@@ -2473,7 +2478,7 @@ void ServerCallData::WakeInsideCombiner(Flusher* flusher) {
|
|
2473
2478
|
StateString(send_trailing_state_))); // unreachable
|
2474
2479
|
break;
|
2475
2480
|
case SendTrailingState::kInitial: {
|
2476
|
-
|
2481
|
+
GRPC_CHECK(*md->get_pointer(GrpcStatusMetadata()) != GRPC_STATUS_OK);
|
2477
2482
|
Completed(StatusFromMetadata(*md), md->get(GrpcTarPit()).has_value(),
|
2478
2483
|
flusher);
|
2479
2484
|
} break;
|
@@ -35,7 +35,6 @@
|
|
35
35
|
|
36
36
|
#include "absl/container/inlined_vector.h"
|
37
37
|
#include "absl/functional/function_ref.h"
|
38
|
-
#include "absl/log/check.h"
|
39
38
|
#include "absl/log/log.h"
|
40
39
|
#include "absl/meta/type_traits.h"
|
41
40
|
#include "absl/status/status.h"
|
@@ -73,6 +72,7 @@
|
|
73
72
|
#include "src/core/lib/transport/error_utils.h"
|
74
73
|
#include "src/core/lib/transport/transport.h"
|
75
74
|
#include "src/core/util/debug_location.h"
|
75
|
+
#include "src/core/util/grpc_check.h"
|
76
76
|
#include "src/core/util/match.h"
|
77
77
|
#include "src/core/util/time.h"
|
78
78
|
|
@@ -287,7 +287,7 @@ auto MapResult(const NoInterceptor*, Promise x, void*) {
|
|
287
287
|
template <typename Promise, typename Derived>
|
288
288
|
auto MapResult(absl::Status (Derived::Call::*fn)(ServerMetadata&), Promise x,
|
289
289
|
FilterCallData<Derived>* call_data) {
|
290
|
-
|
290
|
+
GRPC_DCHECK(fn == &Derived::Call::OnServerTrailingMetadata);
|
291
291
|
return OnCancel(Map(std::move(x),
|
292
292
|
[call_data](ServerMetadataHandle md) {
|
293
293
|
auto status =
|
@@ -308,7 +308,7 @@ auto MapResult(absl::Status (Derived::Call::*fn)(ServerMetadata&), Promise x,
|
|
308
308
|
template <typename Promise, typename Derived>
|
309
309
|
auto MapResult(void (Derived::Call::*fn)(ServerMetadata&), Promise x,
|
310
310
|
FilterCallData<Derived>* call_data) {
|
311
|
-
|
311
|
+
GRPC_DCHECK(fn == &Derived::Call::OnServerTrailingMetadata);
|
312
312
|
return OnCancel(Map(std::move(x),
|
313
313
|
[call_data](ServerMetadataHandle md) {
|
314
314
|
call_data->call.OnServerTrailingMetadata(*md);
|
@@ -325,7 +325,7 @@ auto MapResult(void (Derived::Call::*fn)(ServerMetadata&), Promise x,
|
|
325
325
|
template <typename Promise, typename Derived>
|
326
326
|
auto MapResult(void (Derived::Call::*fn)(ServerMetadata&, Derived*), Promise x,
|
327
327
|
FilterCallData<Derived>* call_data) {
|
328
|
-
|
328
|
+
GRPC_DCHECK(fn == &Derived::Call::OnServerTrailingMetadata);
|
329
329
|
return OnCancel(
|
330
330
|
Map(std::move(x),
|
331
331
|
[call_data](ServerMetadataHandle md) {
|
@@ -346,7 +346,7 @@ template <typename P, typename Call, typename Derived,
|
|
346
346
|
typename = std::enable_if_t<IsFusedFilter<Derived>::value>>
|
347
347
|
auto MapResult(void (Call::*fn)(ServerMetadata&, Derived*), P x,
|
348
348
|
FilterCallData<Derived>* call_data) {
|
349
|
-
|
349
|
+
GRPC_DCHECK(fn == &Derived::Call::OnServerTrailingMetadata);
|
350
350
|
return OnCancel(
|
351
351
|
Map(std::move(x),
|
352
352
|
[call_data](ServerMetadataHandle md) {
|
@@ -367,7 +367,7 @@ template <typename P, typename Call, typename Derived,
|
|
367
367
|
typename = std::enable_if_t<IsFusedFilter<Derived>::value>>
|
368
368
|
auto MapResult(void (Call::*fn)(ServerMetadata&), P x,
|
369
369
|
FilterCallData<Derived>* call_data) {
|
370
|
-
|
370
|
+
GRPC_DCHECK(fn == &Derived::Call::OnServerTrailingMetadata);
|
371
371
|
return OnCancel(Map(std::move(x),
|
372
372
|
[call_data](ServerMetadataHandle md) {
|
373
373
|
call_data->call.OnServerTrailingMetadata(*md);
|
@@ -552,7 +552,7 @@ template <typename Interceptor, typename Derived>
|
|
552
552
|
auto RunCall(Interceptor interceptor, CallArgs call_args,
|
553
553
|
NextPromiseFactory next_promise_factory,
|
554
554
|
FilterCallData<Derived>* call_data) {
|
555
|
-
|
555
|
+
GRPC_DCHECK(interceptor == &Derived::Call::OnClientInitialMetadata);
|
556
556
|
return RunCallImpl<Interceptor, Derived>::Run(
|
557
557
|
std::move(call_args), std::move(next_promise_factory), call_data);
|
558
558
|
}
|
@@ -1273,7 +1273,8 @@ class BaseCallData : public Activity, private Wakeable {
|
|
1273
1273
|
~BaseCallData() override;
|
1274
1274
|
|
1275
1275
|
void set_pollent(grpc_polling_entity* pollent) {
|
1276
|
-
|
1276
|
+
GRPC_CHECK(nullptr ==
|
1277
|
+
pollent_.exchange(pollent, std::memory_order_release));
|
1277
1278
|
}
|
1278
1279
|
|
1279
1280
|
// Activity implementation (partial).
|
@@ -1314,7 +1315,7 @@ class BaseCallData : public Activity, private Wakeable {
|
|
1314
1315
|
~Flusher();
|
1315
1316
|
|
1316
1317
|
void Resume(grpc_transport_stream_op_batch* batch) {
|
1317
|
-
|
1318
|
+
GRPC_CHECK(!call_->is_last());
|
1318
1319
|
if (batch->HasOp()) {
|
1319
1320
|
release_.push_back(batch);
|
1320
1321
|
} else if (batch->on_complete != nullptr) {
|
@@ -1393,7 +1394,7 @@ class BaseCallData : public Activity, private Wakeable {
|
|
1393
1394
|
PipeSender<MessageHandle>* original_sender() override { abort(); }
|
1394
1395
|
|
1395
1396
|
void GotPipe(PipeReceiver<MessageHandle>* receiver) override {
|
1396
|
-
|
1397
|
+
GRPC_CHECK_EQ(receiver_, nullptr);
|
1397
1398
|
receiver_ = receiver;
|
1398
1399
|
}
|
1399
1400
|
|
@@ -1401,7 +1402,7 @@ class BaseCallData : public Activity, private Wakeable {
|
|
1401
1402
|
|
1402
1403
|
PipeSender<MessageHandle>* Push() override { return &pipe_.sender; }
|
1403
1404
|
PipeReceiver<MessageHandle>* Pull() override {
|
1404
|
-
|
1405
|
+
GRPC_CHECK_NE(receiver_, nullptr);
|
1405
1406
|
return receiver_;
|
1406
1407
|
}
|
1407
1408
|
|
@@ -1422,12 +1423,12 @@ class BaseCallData : public Activity, private Wakeable {
|
|
1422
1423
|
void GotPipe(PipeReceiver<MessageHandle>*) override { abort(); }
|
1423
1424
|
|
1424
1425
|
void GotPipe(PipeSender<MessageHandle>* sender) override {
|
1425
|
-
|
1426
|
+
GRPC_CHECK_EQ(sender_, nullptr);
|
1426
1427
|
sender_ = sender;
|
1427
1428
|
}
|
1428
1429
|
|
1429
1430
|
PipeSender<MessageHandle>* Push() override {
|
1430
|
-
|
1431
|
+
GRPC_CHECK_NE(sender_, nullptr);
|
1431
1432
|
return sender_;
|
1432
1433
|
}
|
1433
1434
|
PipeReceiver<MessageHandle>* Pull() override { return &pipe_.receiver; }
|
@@ -1942,7 +1943,7 @@ struct CallDataFilterWithFlagsMethods {
|
|
1942
1943
|
if ((kFlags & kFilterIsLast) != 0) {
|
1943
1944
|
ExecCtx::Run(DEBUG_LOCATION, then_schedule_closure, absl::OkStatus());
|
1944
1945
|
} else {
|
1945
|
-
|
1946
|
+
GRPC_CHECK_EQ(then_schedule_closure, nullptr);
|
1946
1947
|
}
|
1947
1948
|
}
|
1948
1949
|
};
|
@@ -1979,7 +1980,7 @@ template <typename F, uint8_t kFlags>
|
|
1979
1980
|
struct ChannelFilterWithFlagsMethods {
|
1980
1981
|
static absl::Status InitChannelElem(grpc_channel_element* elem,
|
1981
1982
|
grpc_channel_element_args* args) {
|
1982
|
-
|
1983
|
+
GRPC_CHECK(args->is_last == ((kFlags & kFilterIsLast) != 0));
|
1983
1984
|
auto status =
|
1984
1985
|
F::Create(args->channel_args,
|
1985
1986
|
ChannelFilter::Args(args->channel_stack, elem,
|
@@ -25,13 +25,13 @@
|
|
25
25
|
#include <string>
|
26
26
|
|
27
27
|
#include "absl/container/inlined_vector.h"
|
28
|
-
#include "absl/log/check.h"
|
29
28
|
#include "absl/strings/ascii.h"
|
30
29
|
#include "absl/strings/str_format.h"
|
31
30
|
#include "absl/strings/str_split.h"
|
32
31
|
#include "src/core/lib/channel/channel_args.h"
|
33
32
|
#include "src/core/lib/debug/trace.h"
|
34
33
|
#include "src/core/util/crash.h"
|
34
|
+
#include "src/core/util/grpc_check.h"
|
35
35
|
#include "src/core/util/ref_counted_ptr.h"
|
36
36
|
#include "src/core/util/ref_counted_string.h"
|
37
37
|
|
@@ -118,7 +118,7 @@ CompressionAlgorithmSet::CompressionAlgorithmForLevel(
|
|
118
118
|
return GRPC_COMPRESS_NONE;
|
119
119
|
}
|
120
120
|
|
121
|
-
|
121
|
+
GRPC_CHECK_GT(level, 0);
|
122
122
|
|
123
123
|
// Establish a "ranking" or compression algorithms in increasing order of
|
124
124
|
// compression.
|
@@ -25,9 +25,9 @@
|
|
25
25
|
#include <zconf.h>
|
26
26
|
#include <zlib.h>
|
27
27
|
|
28
|
-
#include "absl/log/check.h"
|
29
28
|
#include "absl/log/log.h"
|
30
29
|
#include "src/core/lib/slice/slice.h"
|
30
|
+
#include "src/core/util/grpc_check.h"
|
31
31
|
|
32
32
|
#define OUTPUT_BLOCK_SIZE 1024
|
33
33
|
|
@@ -40,20 +40,20 @@ static int zlib_body(z_stream* zs, grpc_slice_buffer* input,
|
|
40
40
|
grpc_slice outbuf = GRPC_SLICE_MALLOC(OUTPUT_BLOCK_SIZE);
|
41
41
|
const uInt uint_max = ~uInt{0};
|
42
42
|
|
43
|
-
|
43
|
+
GRPC_CHECK(GRPC_SLICE_LENGTH(outbuf) <= uint_max);
|
44
44
|
zs->avail_out = static_cast<uInt> GRPC_SLICE_LENGTH(outbuf);
|
45
45
|
zs->next_out = GRPC_SLICE_START_PTR(outbuf);
|
46
46
|
flush = Z_NO_FLUSH;
|
47
47
|
for (i = 0; i < input->count; i++) {
|
48
48
|
if (i == input->count - 1) flush = Z_FINISH;
|
49
|
-
|
49
|
+
GRPC_CHECK(GRPC_SLICE_LENGTH(input->slices[i]) <= uint_max);
|
50
50
|
zs->avail_in = static_cast<uInt> GRPC_SLICE_LENGTH(input->slices[i]);
|
51
51
|
zs->next_in = GRPC_SLICE_START_PTR(input->slices[i]);
|
52
52
|
do {
|
53
53
|
if (zs->avail_out == 0) {
|
54
54
|
grpc_slice_buffer_add_indexed(output, outbuf);
|
55
55
|
outbuf = GRPC_SLICE_MALLOC(OUTPUT_BLOCK_SIZE);
|
56
|
-
|
56
|
+
GRPC_CHECK(GRPC_SLICE_LENGTH(outbuf) <= uint_max);
|
57
57
|
zs->avail_out = static_cast<uInt> GRPC_SLICE_LENGTH(outbuf);
|
58
58
|
zs->next_out = GRPC_SLICE_START_PTR(outbuf);
|
59
59
|
}
|
@@ -73,7 +73,7 @@ static int zlib_body(z_stream* zs, grpc_slice_buffer* input,
|
|
73
73
|
goto error;
|
74
74
|
}
|
75
75
|
|
76
|
-
|
76
|
+
GRPC_CHECK(outbuf.refcount);
|
77
77
|
outbuf.data.refcounted.length -= zs->avail_out;
|
78
78
|
grpc_slice_buffer_add_indexed(output, outbuf);
|
79
79
|
|
@@ -103,7 +103,7 @@ static int zlib_compress(grpc_slice_buffer* input, grpc_slice_buffer* output,
|
|
103
103
|
zs.zfree = zfree_gpr;
|
104
104
|
r = deflateInit2(&zs, Z_DEFAULT_COMPRESSION, Z_DEFLATED, 15 | (gzip ? 16 : 0),
|
105
105
|
8, Z_DEFAULT_STRATEGY);
|
106
|
-
|
106
|
+
GRPC_CHECK(r == Z_OK);
|
107
107
|
r = zlib_body(&zs, input, output, deflate) && output->length < input->length;
|
108
108
|
if (!r) {
|
109
109
|
for (i = count_before; i < output->count; i++) {
|
@@ -127,7 +127,7 @@ static int zlib_decompress(grpc_slice_buffer* input, grpc_slice_buffer* output,
|
|
127
127
|
zs.zalloc = zalloc_gpr;
|
128
128
|
zs.zfree = zfree_gpr;
|
129
129
|
r = inflateInit2(&zs, 15 | (gzip ? 16 : 0));
|
130
|
-
|
130
|
+
GRPC_CHECK(r == Z_OK);
|
131
131
|
r = zlib_body(&zs, input, output, inflate);
|
132
132
|
if (!r) {
|
133
133
|
for (i = count_before; i < output->count; i++) {
|