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
@@ -38,7 +38,6 @@
|
|
38
38
|
#include <vector>
|
39
39
|
|
40
40
|
#include "absl/cleanup/cleanup.h"
|
41
|
-
#include "absl/log/check.h"
|
42
41
|
#include "absl/log/log.h"
|
43
42
|
#include "absl/status/status.h"
|
44
43
|
#include "absl/status/statusor.h"
|
@@ -96,6 +95,7 @@
|
|
96
95
|
#include "src/core/service_config/service_config_impl.h"
|
97
96
|
#include "src/core/util/crash.h"
|
98
97
|
#include "src/core/util/debug_location.h"
|
98
|
+
#include "src/core/util/grpc_check.h"
|
99
99
|
#include "src/core/util/json/json.h"
|
100
100
|
#include "src/core/util/manual_constructor.h"
|
101
101
|
#include "src/core/util/status_helper.h"
|
@@ -336,8 +336,8 @@ class DynamicTerminationFilter final {
|
|
336
336
|
|
337
337
|
static grpc_error_handle Init(grpc_channel_element* elem,
|
338
338
|
grpc_channel_element_args* args) {
|
339
|
-
|
340
|
-
|
339
|
+
GRPC_CHECK(args->is_last);
|
340
|
+
GRPC_CHECK(elem->filter == &kFilterVtable);
|
341
341
|
new (elem->channel_data) DynamicTerminationFilter(args->channel_args);
|
342
342
|
return absl::OkStatus();
|
343
343
|
}
|
@@ -494,7 +494,7 @@ class ClientChannelFilter::SubchannelWrapper final
|
|
494
494
|
<< " for subchannel " << subchannel_.get();
|
495
495
|
GRPC_CHANNEL_STACK_REF(chand_->owning_stack_, "SubchannelWrapper");
|
496
496
|
#ifndef NDEBUG
|
497
|
-
|
497
|
+
GRPC_DCHECK(chand_->work_serializer_->RunningInWorkSerializer());
|
498
498
|
#endif
|
499
499
|
if (chand_->channelz_node_ != nullptr) {
|
500
500
|
auto* subchannel_node = subchannel_->channelz_node();
|
@@ -530,7 +530,7 @@ class ClientChannelFilter::SubchannelWrapper final
|
|
530
530
|
auto* subchannel_node = subchannel_->channelz_node();
|
531
531
|
if (subchannel_node != nullptr) {
|
532
532
|
auto it = chand_->subchannel_refcount_map_.find(subchannel_.get());
|
533
|
-
|
533
|
+
GRPC_CHECK(it != chand_->subchannel_refcount_map_.end());
|
534
534
|
--it->second;
|
535
535
|
if (it->second == 0) {
|
536
536
|
subchannel_node->RemoveParent(chand_->channelz_node_);
|
@@ -538,6 +538,20 @@ class ClientChannelFilter::SubchannelWrapper final
|
|
538
538
|
}
|
539
539
|
}
|
540
540
|
}
|
541
|
+
if (IsSubchannelWrapperCleanupOnOrphanEnabled()) {
|
542
|
+
// We need to make sure that the internal subchannel gets unreffed
|
543
|
+
// inside of the WorkSerializer, so that updates to the local
|
544
|
+
// subchannel pool are properly synchronized. To that end, we
|
545
|
+
// drop our ref to the internal subchannel here. We also cancel
|
546
|
+
// any watchers that were not properly cancelled, in case any of
|
547
|
+
// them are holding a ref to the internal subchannel.
|
548
|
+
for (const auto& [_, watcher] : watcher_map_) {
|
549
|
+
subchannel_->CancelConnectivityStateWatch(watcher);
|
550
|
+
}
|
551
|
+
watcher_map_.clear();
|
552
|
+
data_watchers_.clear();
|
553
|
+
subchannel_.reset();
|
554
|
+
}
|
541
555
|
WeakUnref(DEBUG_LOCATION, "subchannel map cleanup");
|
542
556
|
});
|
543
557
|
}
|
@@ -546,10 +560,10 @@ class ClientChannelFilter::SubchannelWrapper final
|
|
546
560
|
std::unique_ptr<ConnectivityStateWatcherInterface> watcher) override
|
547
561
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
|
548
562
|
auto& watcher_wrapper = watcher_map_[watcher.get()];
|
549
|
-
|
563
|
+
GRPC_CHECK_EQ(watcher_wrapper, nullptr);
|
550
564
|
watcher_wrapper = new WatcherWrapper(
|
551
565
|
std::move(watcher),
|
552
|
-
|
566
|
+
WeakRefAsSubclass<SubchannelWrapper>(DEBUG_LOCATION, "WatcherWrapper"));
|
553
567
|
subchannel_->WatchConnectivityState(
|
554
568
|
RefCountedPtr<Subchannel::ConnectivityStateWatcherInterface>(
|
555
569
|
watcher_wrapper));
|
@@ -558,7 +572,7 @@ class ClientChannelFilter::SubchannelWrapper final
|
|
558
572
|
void CancelConnectivityStateWatch(ConnectivityStateWatcherInterface* watcher)
|
559
573
|
override ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
|
560
574
|
auto it = watcher_map_.find(watcher);
|
561
|
-
|
575
|
+
GRPC_CHECK(it != watcher_map_.end());
|
562
576
|
subchannel_->CancelConnectivityStateWatch(it->second);
|
563
577
|
watcher_map_.erase(it);
|
564
578
|
}
|
@@ -575,7 +589,7 @@ class ClientChannelFilter::SubchannelWrapper final
|
|
575
589
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
|
576
590
|
static_cast<InternalSubchannelDataWatcherInterface*>(watcher.get())
|
577
591
|
->SetSubchannel(subchannel_.get());
|
578
|
-
|
592
|
+
GRPC_CHECK(data_watchers_.insert(std::move(watcher)).second);
|
579
593
|
}
|
580
594
|
|
581
595
|
void CancelDataWatcher(DataWatcherInterface* watcher) override
|
@@ -609,7 +623,7 @@ class ClientChannelFilter::SubchannelWrapper final
|
|
609
623
|
WatcherWrapper(
|
610
624
|
std::unique_ptr<SubchannelInterface::ConnectivityStateWatcherInterface>
|
611
625
|
watcher,
|
612
|
-
|
626
|
+
WeakRefCountedPtr<SubchannelWrapper> parent)
|
613
627
|
: watcher_(std::move(watcher)), parent_(std::move(parent)) {}
|
614
628
|
|
615
629
|
~WatcherWrapper() override {
|
@@ -621,7 +635,6 @@ class ClientChannelFilter::SubchannelWrapper final
|
|
621
635
|
GRPC_TRACE_LOG(client_channel, INFO)
|
622
636
|
<< "chand=" << parent_->chand_
|
623
637
|
<< ": connectivity change for subchannel wrapper " << parent_.get()
|
624
|
-
<< " subchannel " << parent_->subchannel_.get()
|
625
638
|
<< "hopping into work_serializer";
|
626
639
|
auto self = RefAsSubclass<WatcherWrapper>();
|
627
640
|
parent_->chand_->work_serializer_->Run(
|
@@ -682,7 +695,7 @@ class ClientChannelFilter::SubchannelWrapper final
|
|
682
695
|
|
683
696
|
std::unique_ptr<SubchannelInterface::ConnectivityStateWatcherInterface>
|
684
697
|
watcher_;
|
685
|
-
|
698
|
+
WeakRefCountedPtr<SubchannelWrapper> parent_;
|
686
699
|
};
|
687
700
|
|
688
701
|
// A heterogenous lookup comparator for data watchers that allows
|
@@ -736,7 +749,7 @@ ClientChannelFilter::ExternalConnectivityWatcher::ExternalConnectivityWatcher(
|
|
736
749
|
{
|
737
750
|
MutexLock lock(&chand_->external_watchers_mu_);
|
738
751
|
// Will be deleted when the watch is complete.
|
739
|
-
|
752
|
+
GRPC_CHECK(chand->external_watchers_[on_complete] == nullptr);
|
740
753
|
// Store a ref to the watcher in the external_watchers_ map.
|
741
754
|
chand->external_watchers_[on_complete] =
|
742
755
|
RefAsSubclass<ExternalConnectivityWatcher>(
|
@@ -996,8 +1009,8 @@ class ClientChannelFilter::ClientChannelControlHelper final
|
|
996
1009
|
|
997
1010
|
grpc_error_handle ClientChannelFilter::Init(grpc_channel_element* elem,
|
998
1011
|
grpc_channel_element_args* args) {
|
999
|
-
|
1000
|
-
|
1012
|
+
GRPC_CHECK(args->is_last);
|
1013
|
+
GRPC_CHECK(elem->filter == &kFilter);
|
1001
1014
|
grpc_error_handle error;
|
1002
1015
|
new (elem->channel_data) ClientChannelFilter(args, &error);
|
1003
1016
|
return error;
|
@@ -1015,11 +1028,7 @@ RefCountedPtr<SubchannelPoolInterface> GetSubchannelPool(
|
|
1015
1028
|
if (args.GetBool(GRPC_ARG_USE_LOCAL_SUBCHANNEL_POOL).value_or(false)) {
|
1016
1029
|
return MakeRefCounted<LocalSubchannelPool>();
|
1017
1030
|
}
|
1018
|
-
|
1019
|
-
return GlobalSubchannelPool::instance();
|
1020
|
-
} else {
|
1021
|
-
return LegacyGlobalSubchannelPool::instance();
|
1022
|
-
}
|
1031
|
+
return GlobalSubchannelPool::instance();
|
1023
1032
|
}
|
1024
1033
|
|
1025
1034
|
} // namespace
|
@@ -1189,7 +1198,7 @@ RefCountedPtr<LoadBalancingPolicy::Config> ChooseLbPolicy(
|
|
1189
1198
|
// - A channel arg, in which case we check that the specified policy exists
|
1190
1199
|
// and accepts an empty config. If not, we revert to using pick_first
|
1191
1200
|
// lb_policy
|
1192
|
-
|
1201
|
+
GRPC_CHECK(lb_policy_config.ok());
|
1193
1202
|
return std::move(*lb_policy_config);
|
1194
1203
|
}
|
1195
1204
|
|
@@ -1458,7 +1467,7 @@ void ClientChannelFilter::UpdateServiceConfigInDataPlaneLocked(
|
|
1458
1467
|
blackboard_ = std::move(new_blackboard);
|
1459
1468
|
RefCountedPtr<DynamicFilters> dynamic_filters =
|
1460
1469
|
DynamicFilters::Create(new_args, std::move(filters), blackboard_.get());
|
1461
|
-
|
1470
|
+
GRPC_CHECK(dynamic_filters != nullptr);
|
1462
1471
|
// Grab data plane lock to update service config.
|
1463
1472
|
//
|
1464
1473
|
// We defer unreffing the old values (and deallocating memory) until
|
@@ -1488,7 +1497,7 @@ void ClientChannelFilter::CreateResolverLocked() {
|
|
1488
1497
|
std::make_unique<ResolverResultHandler>(this));
|
1489
1498
|
// Since the validity of the args was checked when the channel was created,
|
1490
1499
|
// CreateResolver() must return a non-null result.
|
1491
|
-
|
1500
|
+
GRPC_CHECK(resolver_ != nullptr);
|
1492
1501
|
UpdateStateLocked(GRPC_CHANNEL_CONNECTING, absl::Status(),
|
1493
1502
|
"started resolving");
|
1494
1503
|
resolver_->StartLocked();
|
@@ -1598,7 +1607,7 @@ T HandlePickResult(
|
|
1598
1607
|
}
|
1599
1608
|
auto* drop_pick =
|
1600
1609
|
std::get_if<LoadBalancingPolicy::PickResult::Drop>(&result->result);
|
1601
|
-
|
1610
|
+
GRPC_CHECK_NE(drop_pick, nullptr);
|
1602
1611
|
return drop_func(drop_pick);
|
1603
1612
|
}
|
1604
1613
|
|
@@ -1691,7 +1700,7 @@ void ClientChannelFilter::StartTransportOpLocked(grpc_transport_op* op) {
|
|
1691
1700
|
}
|
1692
1701
|
} else {
|
1693
1702
|
// Disconnect.
|
1694
|
-
|
1703
|
+
GRPC_CHECK(disconnect_error_.ok());
|
1695
1704
|
disconnect_error_ = op->disconnect_with_error;
|
1696
1705
|
UpdateStateAndPickerLocked(
|
1697
1706
|
GRPC_CHANNEL_SHUTDOWN, absl::Status(), "shutdown from API",
|
@@ -1709,7 +1718,7 @@ void ClientChannelFilter::StartTransportOpLocked(grpc_transport_op* op) {
|
|
1709
1718
|
void ClientChannelFilter::StartTransportOp(grpc_channel_element* elem,
|
1710
1719
|
grpc_transport_op* op) {
|
1711
1720
|
auto* chand = static_cast<ClientChannelFilter*>(elem->channel_data);
|
1712
|
-
|
1721
|
+
GRPC_CHECK(op->set_accept_stream == false);
|
1713
1722
|
// Handle bind_pollset.
|
1714
1723
|
if (op->bind_pollset != nullptr) {
|
1715
1724
|
grpc_pollset_set_add_pollset(chand->interested_parties_, op->bind_pollset);
|
@@ -1871,7 +1880,7 @@ std::optional<absl::Status> ClientChannelFilter::CallData::CheckResolution(
|
|
1871
1880
|
}
|
1872
1881
|
// If the call was queued, add trace annotation.
|
1873
1882
|
if (was_queued) {
|
1874
|
-
auto* call_tracer = arena()->GetContext<
|
1883
|
+
auto* call_tracer = arena()->GetContext<CallSpan>();
|
1875
1884
|
if (call_tracer != nullptr) {
|
1876
1885
|
call_tracer->RecordAnnotation("Delayed name resolution complete.");
|
1877
1886
|
}
|
@@ -1928,7 +1937,7 @@ ClientChannelFilter::FilterBasedCallData::FilterBasedCallData(
|
|
1928
1937
|
ClientChannelFilter::FilterBasedCallData::~FilterBasedCallData() {
|
1929
1938
|
// Make sure there are no remaining pending batches.
|
1930
1939
|
for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) {
|
1931
|
-
|
1940
|
+
GRPC_CHECK_EQ(pending_batches_[i], nullptr);
|
1932
1941
|
}
|
1933
1942
|
}
|
1934
1943
|
|
@@ -2076,7 +2085,7 @@ void ClientChannelFilter::FilterBasedCallData::PendingBatchesAdd(
|
|
2076
2085
|
<< "chand=" << chand() << " calld=" << this
|
2077
2086
|
<< ": adding pending batch at index " << idx;
|
2078
2087
|
grpc_transport_stream_op_batch*& pending = pending_batches_[idx];
|
2079
|
-
|
2088
|
+
GRPC_CHECK_EQ(pending, nullptr);
|
2080
2089
|
pending = batch;
|
2081
2090
|
}
|
2082
2091
|
|
@@ -2096,7 +2105,7 @@ void ClientChannelFilter::FilterBasedCallData::FailPendingBatchInCallCombiner(
|
|
2096
2105
|
void ClientChannelFilter::FilterBasedCallData::PendingBatchesFail(
|
2097
2106
|
grpc_error_handle error,
|
2098
2107
|
YieldCallCombinerPredicate yield_call_combiner_predicate) {
|
2099
|
-
|
2108
|
+
GRPC_CHECK(!error.ok());
|
2100
2109
|
if (GRPC_TRACE_FLAG_ENABLED(client_channel_call)) {
|
2101
2110
|
size_t num_batches = 0;
|
2102
2111
|
for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) {
|
@@ -2290,8 +2299,7 @@ class ClientChannelFilter::LoadBalancedCall::LbCallState final
|
|
2290
2299
|
ServiceConfigCallData::CallAttributeInterface* GetCallAttribute(
|
2291
2300
|
UniqueTypeName type) const override;
|
2292
2301
|
|
2293
|
-
|
2294
|
-
const override;
|
2302
|
+
CallAttemptTracer* GetCallAttemptTracer() const override;
|
2295
2303
|
|
2296
2304
|
private:
|
2297
2305
|
LoadBalancedCall* lb_call_;
|
@@ -2308,7 +2316,7 @@ ClientChannelFilter::LoadBalancedCall::LbCallState::GetCallAttribute(
|
|
2308
2316
|
return service_config_call_data->GetCallAttribute(type);
|
2309
2317
|
}
|
2310
2318
|
|
2311
|
-
|
2319
|
+
CallAttemptTracer*
|
2312
2320
|
ClientChannelFilter::LoadBalancedCall::LbCallState::GetCallAttemptTracer()
|
2313
2321
|
const {
|
2314
2322
|
return lb_call_->call_attempt_tracer();
|
@@ -2365,13 +2373,13 @@ class ClientChannelFilter::LoadBalancedCall::BackendMetricAccessor final
|
|
2365
2373
|
|
2366
2374
|
namespace {
|
2367
2375
|
|
2368
|
-
|
2369
|
-
|
2370
|
-
auto* call_tracer =
|
2371
|
-
arena->GetContext<CallTracerAnnotationInterface>());
|
2376
|
+
CallAttemptTracer* CreateCallAttemptTracer(Arena* arena,
|
2377
|
+
bool is_transparent_retry) {
|
2378
|
+
auto* call_tracer = arena->GetContext<ClientCallTracer>();
|
2372
2379
|
if (call_tracer == nullptr) return nullptr;
|
2373
|
-
auto* tracer =
|
2374
|
-
|
2380
|
+
auto* tracer = WrapCallAttemptTracer(
|
2381
|
+
call_tracer->StartNewAttempt(is_transparent_retry), arena);
|
2382
|
+
arena->SetContext<CallTracer>(tracer);
|
2375
2383
|
return tracer;
|
2376
2384
|
}
|
2377
2385
|
|
@@ -2516,11 +2524,11 @@ ClientChannelFilter::LoadBalancedCall::PickSubchannel(bool was_queued) {
|
|
2516
2524
|
|
2517
2525
|
bool ClientChannelFilter::LoadBalancedCall::PickSubchannelImpl(
|
2518
2526
|
LoadBalancingPolicy::SubchannelPicker* picker, grpc_error_handle* error) {
|
2519
|
-
|
2527
|
+
GRPC_CHECK(connected_subchannel_ == nullptr);
|
2520
2528
|
// Perform LB pick.
|
2521
2529
|
LoadBalancingPolicy::PickArgs pick_args;
|
2522
2530
|
Slice* path = send_initial_metadata()->get_pointer(HttpPathMetadata());
|
2523
|
-
|
2531
|
+
GRPC_CHECK_NE(path, nullptr);
|
2524
2532
|
pick_args.path = path->as_string_view();
|
2525
2533
|
LbCallState lb_call_state(this);
|
2526
2534
|
pick_args.call_state = &lb_call_state;
|
@@ -2535,7 +2543,7 @@ bool ClientChannelFilter::LoadBalancedCall::PickSubchannelImpl(
|
|
2535
2543
|
<< "chand=" << chand_ << " lb_call=" << this
|
2536
2544
|
<< ": LB pick succeeded: subchannel="
|
2537
2545
|
<< complete_pick->subchannel.get();
|
2538
|
-
|
2546
|
+
GRPC_CHECK(complete_pick->subchannel != nullptr);
|
2539
2547
|
// Grab a ref to the connected subchannel while we're still
|
2540
2548
|
// holding the data plane mutex.
|
2541
2549
|
SubchannelWrapper* subchannel =
|
@@ -2620,7 +2628,7 @@ ClientChannelFilter::FilterBasedLoadBalancedCall::
|
|
2620
2628
|
~FilterBasedLoadBalancedCall() {
|
2621
2629
|
// Make sure there are no remaining pending batches.
|
2622
2630
|
for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) {
|
2623
|
-
|
2631
|
+
GRPC_CHECK_EQ(pending_batches_[i], nullptr);
|
2624
2632
|
}
|
2625
2633
|
if (on_call_destruction_complete_ != nullptr) {
|
2626
2634
|
ExecCtx::Run(DEBUG_LOCATION, on_call_destruction_complete_,
|
@@ -2661,7 +2669,7 @@ void ClientChannelFilter::FilterBasedLoadBalancedCall::PendingBatchesAdd(
|
|
2661
2669
|
GRPC_TRACE_LOG(client_channel_lb_call, INFO)
|
2662
2670
|
<< "chand=" << chand() << " lb_call=" << this
|
2663
2671
|
<< ": adding pending batch at index " << idx;
|
2664
|
-
|
2672
|
+
GRPC_CHECK_EQ(pending_batches_[idx], nullptr);
|
2665
2673
|
pending_batches_[idx] = batch;
|
2666
2674
|
}
|
2667
2675
|
|
@@ -2681,7 +2689,7 @@ void ClientChannelFilter::FilterBasedLoadBalancedCall::
|
|
2681
2689
|
void ClientChannelFilter::FilterBasedLoadBalancedCall::PendingBatchesFail(
|
2682
2690
|
grpc_error_handle error,
|
2683
2691
|
YieldCallCombinerPredicate yield_call_combiner_predicate) {
|
2684
|
-
|
2692
|
+
GRPC_CHECK(!error.ok());
|
2685
2693
|
failure_error_ = error;
|
2686
2694
|
if (GRPC_TRACE_FLAG_ENABLED(client_channel_lb_call)) {
|
2687
2695
|
size_t num_batches = 0;
|
@@ -373,7 +373,7 @@ class ClientChannelFilter::LoadBalancedCall
|
|
373
373
|
|
374
374
|
protected:
|
375
375
|
ClientChannelFilter* chand() const { return chand_; }
|
376
|
-
|
376
|
+
CallAttemptTracer* call_attempt_tracer() const {
|
377
377
|
return call_attempt_tracer_;
|
378
378
|
}
|
379
379
|
ConnectedSubchannel* connected_subchannel() const {
|
@@ -434,7 +434,7 @@ class ClientChannelFilter::LoadBalancedCall
|
|
434
434
|
// previous attempt yet leading to a situation where we have two active call
|
435
435
|
// attempt tracers, and so we cannot rely on the arena to give us the right
|
436
436
|
// tracer when performing cleanup.
|
437
|
-
|
437
|
+
CallAttemptTracer* call_attempt_tracer_;
|
438
438
|
|
439
439
|
absl::AnyInvocable<void()> on_commit_;
|
440
440
|
|
@@ -22,13 +22,13 @@
|
|
22
22
|
#include <utility>
|
23
23
|
|
24
24
|
#include "absl/functional/any_invocable.h"
|
25
|
-
#include "absl/log/check.h"
|
26
25
|
#include "src/core/call/call_destination.h"
|
27
26
|
#include "src/core/lib/resource_quota/arena.h"
|
28
27
|
#include "src/core/load_balancing/lb_policy.h"
|
29
28
|
#include "src/core/service_config/service_config_call_data.h"
|
30
29
|
#include "src/core/telemetry/call_tracer.h"
|
31
30
|
#include "src/core/util/down_cast.h"
|
31
|
+
#include "src/core/util/grpc_check.h"
|
32
32
|
#include "src/core/util/unique_type_name.h"
|
33
33
|
|
34
34
|
//
|
@@ -54,8 +54,7 @@ class ClientChannelLbCallState : public LoadBalancingPolicy::CallState {
|
|
54
54
|
|
55
55
|
virtual ServiceConfigCallData::CallAttributeInterface* GetCallAttribute(
|
56
56
|
UniqueTypeName type) const = 0;
|
57
|
-
virtual
|
58
|
-
const = 0;
|
57
|
+
virtual CallAttemptTracer* GetCallAttemptTracer() const = 0;
|
59
58
|
};
|
60
59
|
|
61
60
|
// Internal type for ServiceConfigCallData. Handles call commits.
|
@@ -65,7 +64,7 @@ class ClientChannelServiceConfigCallData final : public ServiceConfigCallData {
|
|
65
64
|
: ServiceConfigCallData(arena) {}
|
66
65
|
|
67
66
|
void SetOnCommit(absl::AnyInvocable<void()> on_commit) {
|
68
|
-
|
67
|
+
GRPC_CHECK(on_commit_ == nullptr);
|
69
68
|
on_commit_ = std::move(on_commit);
|
70
69
|
}
|
71
70
|
|
@@ -24,7 +24,6 @@
|
|
24
24
|
#include <utility>
|
25
25
|
#include <vector>
|
26
26
|
|
27
|
-
#include "absl/log/check.h"
|
28
27
|
#include "absl/status/status.h"
|
29
28
|
#include "absl/strings/string_view.h"
|
30
29
|
#include "src/core/call/interception_chain.h"
|
@@ -35,6 +34,7 @@
|
|
35
34
|
#include "src/core/lib/resource_quota/arena.h"
|
36
35
|
#include "src/core/lib/slice/slice.h"
|
37
36
|
#include "src/core/service_config/service_config.h"
|
37
|
+
#include "src/core/util/grpc_check.h"
|
38
38
|
#include "src/core/util/ref_counted.h"
|
39
39
|
#include "src/core/util/ref_counted_ptr.h"
|
40
40
|
#include "src/core/util/unique_type_name.h"
|
@@ -100,7 +100,7 @@ class DefaultConfigSelector final : public ConfigSelector {
|
|
100
100
|
// The client channel code ensures that this will never be null.
|
101
101
|
// If neither the resolver nor the client application provide a
|
102
102
|
// config, a default empty config will be used.
|
103
|
-
|
103
|
+
GRPC_DCHECK(service_config_ != nullptr);
|
104
104
|
}
|
105
105
|
|
106
106
|
UniqueTypeName name() const override {
|
@@ -110,7 +110,7 @@ class DefaultConfigSelector final : public ConfigSelector {
|
|
110
110
|
|
111
111
|
absl::Status GetCallConfig(GetCallConfigArgs args) override {
|
112
112
|
Slice* path = args.initial_metadata->get_pointer(HttpPathMetadata());
|
113
|
-
|
113
|
+
GRPC_CHECK_NE(path, nullptr);
|
114
114
|
auto* parsed_method_configs =
|
115
115
|
service_config_->GetMethodParsedConfigVector(path->c_slice());
|
116
116
|
args.service_config_call_data->SetServiceConfig(service_config_,
|
@@ -22,7 +22,6 @@
|
|
22
22
|
#include <new>
|
23
23
|
#include <utility>
|
24
24
|
|
25
|
-
#include "absl/log/check.h"
|
26
25
|
#include "absl/log/log.h"
|
27
26
|
#include "absl/status/statusor.h"
|
28
27
|
#include "src/core/lib/channel/channel_args.h"
|
@@ -32,6 +31,7 @@
|
|
32
31
|
#include "src/core/lib/surface/channel_stack_type.h"
|
33
32
|
#include "src/core/lib/surface/lame_client.h"
|
34
33
|
#include "src/core/util/alloc.h"
|
34
|
+
#include "src/core/util/grpc_check.h"
|
35
35
|
#include "src/core/util/status_helper.h"
|
36
36
|
|
37
37
|
// Conversion between call and call stack.
|
@@ -80,8 +80,8 @@ void DynamicFilters::Call::StartTransportStreamOpBatch(
|
|
80
80
|
}
|
81
81
|
|
82
82
|
void DynamicFilters::Call::SetAfterCallStackDestroy(grpc_closure* closure) {
|
83
|
-
|
84
|
-
|
83
|
+
GRPC_CHECK_EQ(after_call_stack_destroy_, nullptr);
|
84
|
+
GRPC_CHECK_NE(closure, nullptr);
|
85
85
|
after_call_stack_destroy_ = closure;
|
86
86
|
}
|
87
87
|
|
@@ -26,43 +26,6 @@
|
|
26
26
|
|
27
27
|
namespace grpc_core {
|
28
28
|
|
29
|
-
RefCountedPtr<LegacyGlobalSubchannelPool>
|
30
|
-
LegacyGlobalSubchannelPool::instance() {
|
31
|
-
static LegacyGlobalSubchannelPool* p = new LegacyGlobalSubchannelPool();
|
32
|
-
return p->RefAsSubclass<LegacyGlobalSubchannelPool>();
|
33
|
-
}
|
34
|
-
|
35
|
-
RefCountedPtr<Subchannel> LegacyGlobalSubchannelPool::RegisterSubchannel(
|
36
|
-
const SubchannelKey& key, RefCountedPtr<Subchannel> constructed) {
|
37
|
-
MutexLock lock(&mu_);
|
38
|
-
auto it = subchannel_map_.find(key);
|
39
|
-
if (it != subchannel_map_.end()) {
|
40
|
-
RefCountedPtr<Subchannel> existing = it->second->RefIfNonZero();
|
41
|
-
if (existing != nullptr) return existing;
|
42
|
-
}
|
43
|
-
subchannel_map_[key] = constructed.get();
|
44
|
-
return constructed;
|
45
|
-
}
|
46
|
-
|
47
|
-
void LegacyGlobalSubchannelPool::UnregisterSubchannel(const SubchannelKey& key,
|
48
|
-
Subchannel* subchannel) {
|
49
|
-
MutexLock lock(&mu_);
|
50
|
-
auto it = subchannel_map_.find(key);
|
51
|
-
// delete only if key hasn't been re-registered to a different subchannel
|
52
|
-
// between strong-unreffing and unregistration of subchannel.
|
53
|
-
if (it != subchannel_map_.end() && it->second == subchannel) {
|
54
|
-
subchannel_map_.erase(it);
|
55
|
-
}
|
56
|
-
}
|
57
|
-
|
58
|
-
RefCountedPtr<Subchannel> LegacyGlobalSubchannelPool::FindSubchannel(
|
59
|
-
const SubchannelKey& key) {
|
60
|
-
MutexLock lock(&mu_);
|
61
|
-
auto it = subchannel_map_.find(key);
|
62
|
-
if (it == subchannel_map_.end()) return nullptr;
|
63
|
-
return it->second->RefIfNonZero();
|
64
|
-
}
|
65
|
-
|
66
29
|
RefCountedPtr<GlobalSubchannelPool> GlobalSubchannelPool::instance() {
|
67
30
|
static GlobalSubchannelPool* p = new GlobalSubchannelPool();
|
68
31
|
return p->RefAsSubclass<GlobalSubchannelPool>();
|
@@ -30,33 +30,6 @@
|
|
30
30
|
|
31
31
|
namespace grpc_core {
|
32
32
|
|
33
|
-
// The global subchannel pool. It shares subchannels among channels. There
|
34
|
-
// should be only one instance of this class.
|
35
|
-
class LegacyGlobalSubchannelPool final : public SubchannelPoolInterface {
|
36
|
-
public:
|
37
|
-
// Gets the singleton instance.
|
38
|
-
static RefCountedPtr<LegacyGlobalSubchannelPool> instance();
|
39
|
-
|
40
|
-
// Implements interface methods.
|
41
|
-
RefCountedPtr<Subchannel> RegisterSubchannel(
|
42
|
-
const SubchannelKey& key, RefCountedPtr<Subchannel> constructed) override
|
43
|
-
ABSL_LOCKS_EXCLUDED(mu_);
|
44
|
-
void UnregisterSubchannel(const SubchannelKey& key,
|
45
|
-
Subchannel* subchannel) override
|
46
|
-
ABSL_LOCKS_EXCLUDED(mu_);
|
47
|
-
RefCountedPtr<Subchannel> FindSubchannel(const SubchannelKey& key) override
|
48
|
-
ABSL_LOCKS_EXCLUDED(mu_);
|
49
|
-
|
50
|
-
private:
|
51
|
-
LegacyGlobalSubchannelPool() {}
|
52
|
-
~LegacyGlobalSubchannelPool() override {}
|
53
|
-
|
54
|
-
// A map from subchannel key to subchannel.
|
55
|
-
std::map<SubchannelKey, Subchannel*> subchannel_map_ ABSL_GUARDED_BY(mu_);
|
56
|
-
// To protect subchannel_map_.
|
57
|
-
Mutex mu_;
|
58
|
-
};
|
59
|
-
|
60
33
|
// The global subchannel pool. It shares subchannels among channels. There
|
61
34
|
// should be only one instance of this class.
|
62
35
|
class GlobalSubchannelPool final : public SubchannelPoolInterface {
|
@@ -29,10 +29,12 @@ namespace grpc_core {
|
|
29
29
|
namespace {
|
30
30
|
|
31
31
|
void MaybeCreateCallAttemptTracer(bool is_transparent_retry) {
|
32
|
-
auto*
|
32
|
+
auto* arena = MaybeGetContext<Arena>();
|
33
|
+
if (arena == nullptr) return;
|
34
|
+
auto* call_tracer = MaybeGetContext<ClientCallTracer>();
|
33
35
|
if (call_tracer == nullptr) return;
|
34
36
|
auto* tracer = call_tracer->StartNewAttempt(is_transparent_retry);
|
35
|
-
SetContext<
|
37
|
+
SetContext<CallAttemptTracer>(WrapCallAttemptTracer(tracer, arena));
|
36
38
|
}
|
37
39
|
|
38
40
|
class LbCallState : public ClientChannelLbCallState {
|
@@ -47,9 +49,8 @@ class LbCallState : public ClientChannelLbCallState {
|
|
47
49
|
return service_config_call_data->GetCallAttribute(type);
|
48
50
|
}
|
49
51
|
|
50
|
-
|
51
|
-
|
52
|
-
return GetContext<ClientCallTracerInterface::CallAttemptTracer>();
|
52
|
+
CallAttemptTracer* GetCallAttemptTracer() const override {
|
53
|
+
return GetContext<CallAttemptTracer>();
|
53
54
|
}
|
54
55
|
};
|
55
56
|
|
@@ -240,8 +241,7 @@ void LoadBalancedCallDestination::StartCall(
|
|
240
241
|
}
|
241
242
|
// If it was queued, add a trace annotation.
|
242
243
|
if (was_queued) {
|
243
|
-
auto* tracer = MaybeGetContext<
|
244
|
-
ClientCallTracerInterface::CallAttemptTracer>();
|
244
|
+
auto* tracer = MaybeGetContext<CallAttemptTracer>();
|
245
245
|
if (tracer != nullptr) {
|
246
246
|
tracer->RecordAnnotation("Delayed LB pick complete.");
|
247
247
|
}
|
@@ -22,8 +22,8 @@
|
|
22
22
|
|
23
23
|
#include <utility>
|
24
24
|
|
25
|
-
#include "absl/log/check.h"
|
26
25
|
#include "src/core/client_channel/subchannel.h"
|
26
|
+
#include "src/core/util/grpc_check.h"
|
27
27
|
|
28
28
|
namespace grpc_core {
|
29
29
|
|
@@ -33,7 +33,7 @@ RefCountedPtr<Subchannel> LocalSubchannelPool::RegisterSubchannel(
|
|
33
33
|
// Because this pool is only accessed under the client channel's work
|
34
34
|
// serializer, and because FindSubchannel is checked before invoking
|
35
35
|
// RegisterSubchannel, no such subchannel should exist in the map.
|
36
|
-
|
36
|
+
GRPC_CHECK(it == subchannel_map_.end());
|
37
37
|
subchannel_map_[key] = constructed.get();
|
38
38
|
return constructed;
|
39
39
|
}
|
@@ -44,8 +44,8 @@ void LocalSubchannelPool::UnregisterSubchannel(const SubchannelKey& key,
|
|
44
44
|
// Because this subchannel pool is accessed only under the client
|
45
45
|
// channel's work serializer, any subchannel created by RegisterSubchannel
|
46
46
|
// will be deleted from the map in UnregisterSubchannel.
|
47
|
-
|
48
|
-
|
47
|
+
GRPC_CHECK(it != subchannel_map_.end());
|
48
|
+
GRPC_CHECK(it->second == subchannel);
|
49
49
|
subchannel_map_.erase(it);
|
50
50
|
}
|
51
51
|
|
@@ -27,7 +27,6 @@
|
|
27
27
|
#include <new>
|
28
28
|
#include <optional>
|
29
29
|
|
30
|
-
#include "absl/log/check.h"
|
31
30
|
#include "src/core/client_channel/client_channel_filter.h"
|
32
31
|
#include "src/core/client_channel/retry_service_config.h"
|
33
32
|
#include "src/core/client_channel/retry_throttle.h"
|
@@ -36,6 +35,7 @@
|
|
36
35
|
#include "src/core/lib/channel/channel_stack.h"
|
37
36
|
#include "src/core/lib/iomgr/error.h"
|
38
37
|
#include "src/core/lib/transport/transport.h"
|
38
|
+
#include "src/core/util/grpc_check.h"
|
39
39
|
#include "src/core/util/ref_counted_ptr.h"
|
40
40
|
#include "src/core/util/useful.h"
|
41
41
|
|
@@ -88,8 +88,8 @@ class RetryFilter final {
|
|
88
88
|
|
89
89
|
static grpc_error_handle Init(grpc_channel_element* elem,
|
90
90
|
grpc_channel_element_args* args) {
|
91
|
-
|
92
|
-
|
91
|
+
GRPC_CHECK(args->is_last);
|
92
|
+
GRPC_CHECK(elem->filter == &kVtable);
|
93
93
|
new (elem->channel_data) RetryFilter(*args);
|
94
94
|
return absl::OkStatus();
|
95
95
|
}
|
@@ -20,7 +20,6 @@
|
|
20
20
|
#include <memory>
|
21
21
|
#include <new>
|
22
22
|
|
23
|
-
#include "absl/log/check.h"
|
24
23
|
#include "absl/log/log.h"
|
25
24
|
#include "absl/status/status.h"
|
26
25
|
#include "absl/strings/str_cat.h"
|
@@ -44,6 +43,7 @@
|
|
44
43
|
#include "src/core/util/backoff.h"
|
45
44
|
#include "src/core/util/construct_destruct.h"
|
46
45
|
#include "src/core/util/debug_location.h"
|
46
|
+
#include "src/core/util/grpc_check.h"
|
47
47
|
#include "src/core/util/orphanable.h"
|
48
48
|
#include "src/core/util/ref_counted.h"
|
49
49
|
#include "src/core/util/ref_counted_ptr.h"
|
@@ -1502,7 +1502,7 @@ RetryFilter::LegacyCallData::~LegacyCallData() {
|
|
1502
1502
|
FreeAllCachedSendOpData();
|
1503
1503
|
// Make sure there are no remaining pending batches.
|
1504
1504
|
for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) {
|
1505
|
-
|
1505
|
+
GRPC_CHECK_EQ(pending_batches_[i].batch, nullptr);
|
1506
1506
|
}
|
1507
1507
|
}
|
1508
1508
|
|
@@ -1731,7 +1731,7 @@ RetryFilter::LegacyCallData::PendingBatchesAdd(
|
|
1731
1731
|
GRPC_TRACE_LOG(retry, INFO) << "chand=" << chand_ << " calld=" << this
|
1732
1732
|
<< ": adding pending batch at index " << idx;
|
1733
1733
|
PendingBatch* pending = &pending_batches_[idx];
|
1734
|
-
|
1734
|
+
GRPC_CHECK_EQ(pending->batch, nullptr);
|
1735
1735
|
pending->batch = batch;
|
1736
1736
|
pending->send_ops_cached = false;
|
1737
1737
|
// Update state in calld about pending batches.
|
@@ -1810,7 +1810,7 @@ void RetryFilter::LegacyCallData::FailPendingBatchInCallCombiner(
|
|
1810
1810
|
|
1811
1811
|
// This is called via the call combiner, so access to calld is synchronized.
|
1812
1812
|
void RetryFilter::LegacyCallData::PendingBatchesFail(grpc_error_handle error) {
|
1813
|
-
|
1813
|
+
GRPC_CHECK(!error.ok());
|
1814
1814
|
if (GRPC_TRACE_FLAG_ENABLED(retry)) {
|
1815
1815
|
size_t num_batches = 0;
|
1816
1816
|
for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) {
|
@@ -1887,7 +1887,7 @@ void RetryFilter::LegacyCallData::StartRetryTimer(
|
|
1887
1887
|
// Compute backoff delay.
|
1888
1888
|
Duration next_attempt_timeout;
|
1889
1889
|
if (server_pushback.has_value()) {
|
1890
|
-
|
1890
|
+
GRPC_CHECK(*server_pushback >= Duration::Zero());
|
1891
1891
|
next_attempt_timeout = *server_pushback;
|
1892
1892
|
retry_backoff_.Reset();
|
1893
1893
|
} else {
|