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
data/src/core/server/server.cc
CHANGED
@@ -41,7 +41,6 @@
|
|
41
41
|
|
42
42
|
#include "absl/cleanup/cleanup.h"
|
43
43
|
#include "absl/container/flat_hash_map.h"
|
44
|
-
#include "absl/log/check.h"
|
45
44
|
#include "absl/log/log.h"
|
46
45
|
#include "absl/status/status.h"
|
47
46
|
#include "src/core/call/interception_chain.h"
|
@@ -80,6 +79,7 @@
|
|
80
79
|
#include "src/core/telemetry/stats.h"
|
81
80
|
#include "src/core/util/crash.h"
|
82
81
|
#include "src/core/util/debug_location.h"
|
82
|
+
#include "src/core/util/grpc_check.h"
|
83
83
|
#include "src/core/util/mpscq.h"
|
84
84
|
#include "src/core/util/orphanable.h"
|
85
85
|
#include "src/core/util/shared_bit_gen.h"
|
@@ -180,7 +180,7 @@ void Server::ListenerState::Stop() {
|
|
180
180
|
is_serving_ = false;
|
181
181
|
}
|
182
182
|
if (config_fetcher_watcher_ != nullptr) {
|
183
|
-
|
183
|
+
GRPC_CHECK_NE(server_->config_fetcher(), nullptr);
|
184
184
|
server_->config_fetcher()->CancelWatch(config_fetcher_watcher_);
|
185
185
|
}
|
186
186
|
GRPC_CLOSURE_INIT(&destroy_done_, ListenerDestroyDone, server_.get(),
|
@@ -524,7 +524,7 @@ struct Server::RequestedCall {
|
|
524
524
|
md.get(GrpcTimeoutMetadata()).value_or(Timestamp::InfFuture());
|
525
525
|
switch (type) {
|
526
526
|
case RequestedCall::Type::BATCH_CALL:
|
527
|
-
|
527
|
+
GRPC_CHECK(!payload.has_value());
|
528
528
|
data.batch.details->host =
|
529
529
|
CSliceRef(md.get_pointer(HttpAuthorityMetadata())->c_slice());
|
530
530
|
data.batch.details->method =
|
@@ -581,10 +581,10 @@ class Server::RealRequestMatcher : public RequestMatcherInterface {
|
|
581
581
|
|
582
582
|
~RealRequestMatcher() override {
|
583
583
|
for (LockedMultiProducerSingleConsumerQueue& queue : requests_per_cq_) {
|
584
|
-
|
584
|
+
GRPC_CHECK_EQ(queue.Pop(), nullptr);
|
585
585
|
}
|
586
|
-
|
587
|
-
|
586
|
+
GRPC_CHECK(pending_filter_stack_.empty());
|
587
|
+
GRPC_CHECK(pending_promises_.empty());
|
588
588
|
}
|
589
589
|
|
590
590
|
void ZombifyPending() override {
|
@@ -808,7 +808,7 @@ class Server::RealRequestMatcher : public RequestMatcherInterface {
|
|
808
808
|
if (!result.compare_exchange_strong(expected, new_value,
|
809
809
|
std::memory_order_acq_rel,
|
810
810
|
std::memory_order_acquire)) {
|
811
|
-
|
811
|
+
GRPC_CHECK(new_value->value().TakeCall() == requested_call);
|
812
812
|
delete new_value;
|
813
813
|
return false;
|
814
814
|
}
|
@@ -843,7 +843,7 @@ class Server::AllocatingRequestMatcherBase : public RequestMatcherInterface {
|
|
843
843
|
break;
|
844
844
|
}
|
845
845
|
}
|
846
|
-
|
846
|
+
GRPC_CHECK(idx < server->cqs_.size());
|
847
847
|
cq_idx_ = idx;
|
848
848
|
}
|
849
849
|
|
@@ -889,9 +889,9 @@ class Server::AllocatingRequestMatcherBatch
|
|
889
889
|
absl::MakeCleanup([this] { server()->ShutdownUnrefOnRequest(); });
|
890
890
|
if (still_running) {
|
891
891
|
BatchCallAllocation call_info = allocator_();
|
892
|
-
|
893
|
-
|
894
|
-
|
892
|
+
GRPC_CHECK(server()->ValidateServerRequest(
|
893
|
+
cq(), static_cast<void*>(call_info.tag), nullptr,
|
894
|
+
nullptr) == GRPC_CALL_OK);
|
895
895
|
RequestedCall* rc = new RequestedCall(
|
896
896
|
static_cast<void*>(call_info.tag), call_info.cq, call_info.call,
|
897
897
|
call_info.initial_metadata, call_info.details);
|
@@ -905,9 +905,9 @@ class Server::AllocatingRequestMatcherBatch
|
|
905
905
|
ArenaPromise<absl::StatusOr<MatchResult>> MatchRequest(
|
906
906
|
size_t /*start_request_queue_index*/) override {
|
907
907
|
BatchCallAllocation call_info = allocator_();
|
908
|
-
|
909
|
-
|
910
|
-
|
908
|
+
GRPC_CHECK(server()->ValidateServerRequest(
|
909
|
+
cq(), static_cast<void*>(call_info.tag), nullptr, nullptr) ==
|
910
|
+
GRPC_CALL_OK);
|
911
911
|
RequestedCall* rc = new RequestedCall(
|
912
912
|
static_cast<void*>(call_info.tag), call_info.cq, call_info.call,
|
913
913
|
call_info.initial_metadata, call_info.details);
|
@@ -935,9 +935,9 @@ class Server::AllocatingRequestMatcherRegistered
|
|
935
935
|
absl::MakeCleanup([this] { server()->ShutdownUnrefOnRequest(); });
|
936
936
|
if (server()->ShutdownRefOnRequest()) {
|
937
937
|
RegisteredCallAllocation call_info = allocator_();
|
938
|
-
|
939
|
-
|
940
|
-
|
938
|
+
GRPC_CHECK(server()->ValidateServerRequest(
|
939
|
+
cq(), call_info.tag, call_info.optional_payload,
|
940
|
+
registered_method_) == GRPC_CALL_OK);
|
941
941
|
RequestedCall* rc =
|
942
942
|
new RequestedCall(call_info.tag, call_info.cq, call_info.call,
|
943
943
|
call_info.initial_metadata, registered_method_,
|
@@ -952,9 +952,9 @@ class Server::AllocatingRequestMatcherRegistered
|
|
952
952
|
ArenaPromise<absl::StatusOr<MatchResult>> MatchRequest(
|
953
953
|
size_t /*start_request_queue_index*/) override {
|
954
954
|
RegisteredCallAllocation call_info = allocator_();
|
955
|
-
|
956
|
-
|
957
|
-
|
955
|
+
GRPC_CHECK(server()->ValidateServerRequest(
|
956
|
+
cq(), call_info.tag, call_info.optional_payload,
|
957
|
+
registered_method_) == GRPC_CALL_OK);
|
958
958
|
RequestedCall* rc = new RequestedCall(
|
959
959
|
call_info.tag, call_info.cq, call_info.call, call_info.initial_metadata,
|
960
960
|
registered_method_, call_info.deadline, call_info.optional_payload);
|
@@ -979,7 +979,7 @@ class ChannelBroadcaster {
|
|
979
979
|
|
980
980
|
// Copies over the channels from the locked server.
|
981
981
|
void FillChannelsLocked(std::vector<RefCountedPtr<Channel>> channels) {
|
982
|
-
|
982
|
+
GRPC_DCHECK(channels_.empty());
|
983
983
|
channels_ = std::move(channels);
|
984
984
|
}
|
985
985
|
|
@@ -1341,7 +1341,7 @@ grpc_error_handle Server::SetupTransport(Transport* transport,
|
|
1341
1341
|
connections_.emplace(std::move(t));
|
1342
1342
|
++connections_open_;
|
1343
1343
|
} else {
|
1344
|
-
|
1344
|
+
GRPC_CHECK(transport->filter_stack_transport() != nullptr);
|
1345
1345
|
absl::StatusOr<RefCountedPtr<Channel>> channel = LegacyChannel::Create(
|
1346
1346
|
"",
|
1347
1347
|
args.SetObject(transport).SetObject<channelz::BaseNode>(
|
@@ -1350,9 +1350,9 @@ grpc_error_handle Server::SetupTransport(Transport* transport,
|
|
1350
1350
|
if (!channel.ok()) {
|
1351
1351
|
return absl_status_to_grpc_error(channel.status());
|
1352
1352
|
}
|
1353
|
-
|
1353
|
+
GRPC_CHECK(*channel != nullptr);
|
1354
1354
|
auto* channel_stack = (*channel)->channel_stack();
|
1355
|
-
|
1355
|
+
GRPC_CHECK(channel_stack != nullptr);
|
1356
1356
|
ChannelData* chand = static_cast<ChannelData*>(
|
1357
1357
|
grpc_channel_stack_element(channel_stack, 0)->channel_data);
|
1358
1358
|
// Set up CQs.
|
@@ -1391,7 +1391,7 @@ void Server::SetRegisteredMethodAllocator(
|
|
1391
1391
|
|
1392
1392
|
void Server::SetBatchMethodAllocator(
|
1393
1393
|
grpc_completion_queue* cq, std::function<BatchCallAllocation()> allocator) {
|
1394
|
-
|
1394
|
+
GRPC_DCHECK(unregistered_request_matcher_ == nullptr);
|
1395
1395
|
unregistered_request_matcher_ =
|
1396
1396
|
std::make_unique<AllocatingRequestMatcherBatch>(this, cq,
|
1397
1397
|
std::move(allocator));
|
@@ -1442,7 +1442,7 @@ void Server::FailCall(size_t cq_idx, RequestedCall* rc,
|
|
1442
1442
|
grpc_error_handle error) {
|
1443
1443
|
*rc->call = nullptr;
|
1444
1444
|
rc->initial_metadata->count = 0;
|
1445
|
-
|
1445
|
+
GRPC_CHECK(!error.ok());
|
1446
1446
|
grpc_cq_end_op(cqs_[cq_idx], rc->tag, error, DoneRequestEvent, rc,
|
1447
1447
|
&rc->completion);
|
1448
1448
|
}
|
@@ -1538,7 +1538,7 @@ void Server::ShutdownAndNotify(grpc_completion_queue* cq, void* tag) {
|
|
1538
1538
|
starting_cv_.Wait(&mu_global_);
|
1539
1539
|
}
|
1540
1540
|
// Stay locked, and gather up some stuff to do.
|
1541
|
-
|
1541
|
+
GRPC_CHECK(grpc_cq_begin_op(cq, tag));
|
1542
1542
|
if (shutdown_published_) {
|
1543
1543
|
grpc_cq_end_op(cq, tag, absl::OkStatus(), DonePublishedShutdown, nullptr,
|
1544
1544
|
new grpc_cq_completion);
|
@@ -1596,8 +1596,8 @@ void Server::SendGoaways() {
|
|
1596
1596
|
void Server::Orphan() {
|
1597
1597
|
{
|
1598
1598
|
MutexLock lock(&mu_global_);
|
1599
|
-
|
1600
|
-
|
1599
|
+
GRPC_CHECK(ShutdownCalled() || listener_states_.empty());
|
1600
|
+
GRPC_CHECK(listeners_destroyed_ == listener_states_.size());
|
1601
1601
|
}
|
1602
1602
|
listener_states_.clear();
|
1603
1603
|
Unref();
|
@@ -1745,7 +1745,7 @@ void Server::ChannelData::InitTransport(RefCountedPtr<Server> server,
|
|
1745
1745
|
}
|
1746
1746
|
// Start accept_stream transport op.
|
1747
1747
|
grpc_transport_op* op = grpc_make_transport_op(nullptr);
|
1748
|
-
|
1748
|
+
GRPC_CHECK(transport->filter_stack_transport() != nullptr);
|
1749
1749
|
op->set_accept_stream = true;
|
1750
1750
|
op->set_accept_stream_fn = AcceptStream;
|
1751
1751
|
op->set_registered_method_matcher_fn = [](void* arg,
|
@@ -1813,7 +1813,7 @@ void Server::ChannelData::AcceptStream(void* arg, Transport* /*transport*/,
|
|
1813
1813
|
grpc_call* call;
|
1814
1814
|
grpc_error_handle error = grpc_call_create(&args, &call);
|
1815
1815
|
grpc_call_stack* call_stack = grpc_call_get_call_stack(call);
|
1816
|
-
|
1816
|
+
GRPC_CHECK_NE(call_stack, nullptr);
|
1817
1817
|
grpc_call_element* elem = grpc_call_stack_element(call_stack, 0);
|
1818
1818
|
auto* calld = static_cast<Server::CallData*>(elem->call_data);
|
1819
1819
|
if (!error.ok()) {
|
@@ -1835,7 +1835,7 @@ void Server::ChannelData::FinishDestroy(void* arg,
|
|
1835
1835
|
|
1836
1836
|
void Server::ChannelData::Destroy() {
|
1837
1837
|
if (!list_position_.has_value()) return;
|
1838
|
-
|
1838
|
+
GRPC_CHECK(server_ != nullptr);
|
1839
1839
|
server_->channels_.erase(*list_position_);
|
1840
1840
|
list_position_.reset();
|
1841
1841
|
server_->Ref().release();
|
@@ -1855,8 +1855,8 @@ void Server::ChannelData::Destroy() {
|
|
1855
1855
|
|
1856
1856
|
grpc_error_handle Server::ChannelData::InitChannelElement(
|
1857
1857
|
grpc_channel_element* elem, grpc_channel_element_args* args) {
|
1858
|
-
|
1859
|
-
|
1858
|
+
GRPC_CHECK(args->is_first);
|
1859
|
+
GRPC_CHECK(!args->is_last);
|
1860
1860
|
new (elem->channel_data) ChannelData();
|
1861
1861
|
return absl::OkStatus();
|
1862
1862
|
}
|
@@ -1883,7 +1883,7 @@ Server::CallData::CallData(grpc_call_element* elem,
|
|
1883
1883
|
}
|
1884
1884
|
|
1885
1885
|
Server::CallData::~CallData() {
|
1886
|
-
|
1886
|
+
GRPC_CHECK(state_.load(std::memory_order_relaxed) != CallState::PENDING);
|
1887
1887
|
grpc_metadata_array_destroy(&initial_metadata_);
|
1888
1888
|
grpc_byte_buffer_destroy(payload_);
|
1889
1889
|
}
|
@@ -1934,8 +1934,8 @@ void Server::CallData::Publish(size_t cq_idx, RequestedCall* rc) {
|
|
1934
1934
|
std::swap(*rc->initial_metadata, initial_metadata_);
|
1935
1935
|
switch (rc->type) {
|
1936
1936
|
case RequestedCall::Type::BATCH_CALL:
|
1937
|
-
|
1938
|
-
|
1937
|
+
GRPC_CHECK(host_.has_value());
|
1938
|
+
GRPC_CHECK(path_.has_value());
|
1939
1939
|
rc->data.batch.details->host = CSliceRef(host_->c_slice());
|
1940
1940
|
rc->data.batch.details->method = CSliceRef(path_->c_slice());
|
1941
1941
|
rc->data.batch.details->deadline =
|
@@ -2149,7 +2149,7 @@ void grpc_server_register_completion_queue(grpc_server* server,
|
|
2149
2149
|
GRPC_TRACE_LOG(api, INFO)
|
2150
2150
|
<< "grpc_server_register_completion_queue(server=" << server
|
2151
2151
|
<< ", cq=" << cq << ", reserved=" << reserved << ")";
|
2152
|
-
|
2152
|
+
GRPC_CHECK(!reserved);
|
2153
2153
|
auto cq_type = grpc_get_cq_completion_type(cq);
|
2154
2154
|
if (cq_type != GRPC_CQ_NEXT && cq_type != GRPC_CQ_CALLBACK) {
|
2155
2155
|
VLOG(2) << "Completion queue of type " << static_cast<int>(cq_type)
|
@@ -51,7 +51,7 @@ class ServerCallTracerFilter
|
|
51
51
|
void OnClientInitialMetadata(ClientMetadata& client_initial_metadata) {
|
52
52
|
GRPC_LATENT_SEE_SCOPE(
|
53
53
|
"ServerCallTracerFilter::Call::OnClientInitialMetadata");
|
54
|
-
auto* call_tracer = MaybeGetContext<
|
54
|
+
auto* call_tracer = MaybeGetContext<ServerCallTracer>();
|
55
55
|
if (call_tracer == nullptr) return;
|
56
56
|
call_tracer->RecordReceivedInitialMetadata(&client_initial_metadata);
|
57
57
|
}
|
@@ -59,14 +59,14 @@ class ServerCallTracerFilter
|
|
59
59
|
void OnServerInitialMetadata(ServerMetadata& server_initial_metadata) {
|
60
60
|
GRPC_LATENT_SEE_SCOPE(
|
61
61
|
"ServerCallTracerFilter::Call::OnServerInitialMetadata");
|
62
|
-
auto* call_tracer = MaybeGetContext<
|
62
|
+
auto* call_tracer = MaybeGetContext<ServerCallTracer>();
|
63
63
|
if (call_tracer == nullptr) return;
|
64
64
|
call_tracer->RecordSendInitialMetadata(&server_initial_metadata);
|
65
65
|
}
|
66
66
|
|
67
67
|
void OnFinalize(const grpc_call_final_info* final_info) {
|
68
68
|
GRPC_LATENT_SEE_SCOPE("ServerCallTracerFilter::Call::OnFinalize");
|
69
|
-
auto* call_tracer = MaybeGetContext<
|
69
|
+
auto* call_tracer = MaybeGetContext<ServerCallTracer>();
|
70
70
|
if (call_tracer == nullptr) return;
|
71
71
|
call_tracer->RecordEnd(final_info);
|
72
72
|
}
|
@@ -74,7 +74,7 @@ class ServerCallTracerFilter
|
|
74
74
|
void OnServerTrailingMetadata(ServerMetadata& server_trailing_metadata) {
|
75
75
|
GRPC_LATENT_SEE_SCOPE(
|
76
76
|
"ServerCallTracerFilter::Call::OnServerTrailingMetadata");
|
77
|
-
auto* call_tracer = MaybeGetContext<
|
77
|
+
auto* call_tracer = MaybeGetContext<ServerCallTracer>();
|
78
78
|
if (call_tracer == nullptr) return;
|
79
79
|
call_tracer->RecordSendTrailingMetadata(&server_trailing_metadata);
|
80
80
|
}
|
@@ -22,7 +22,6 @@
|
|
22
22
|
#include <utility>
|
23
23
|
|
24
24
|
#include "absl/base/thread_annotations.h"
|
25
|
-
#include "absl/log/check.h"
|
26
25
|
#include "absl/status/status.h"
|
27
26
|
#include "absl/status/statusor.h"
|
28
27
|
#include "src/core/call/metadata_batch.h"
|
@@ -37,6 +36,7 @@
|
|
37
36
|
#include "src/core/server/server_config_selector.h"
|
38
37
|
#include "src/core/service_config/service_config.h"
|
39
38
|
#include "src/core/service_config/service_config_call_data.h"
|
39
|
+
#include "src/core/util/grpc_check.h"
|
40
40
|
#include "src/core/util/latent_see.h"
|
41
41
|
#include "src/core/util/ref_counted_ptr.h"
|
42
42
|
#include "src/core/util/status_helper.h"
|
@@ -123,7 +123,7 @@ ServerConfigSelectorFilter::ServerConfigSelectorFilter(
|
|
123
123
|
RefCountedPtr<ServerConfigSelectorProvider> server_config_selector_provider)
|
124
124
|
: server_config_selector_provider_(
|
125
125
|
std::move(server_config_selector_provider)) {
|
126
|
-
|
126
|
+
GRPC_CHECK(server_config_selector_provider_ != nullptr);
|
127
127
|
auto server_config_selector_watcher =
|
128
128
|
std::make_unique<ServerConfigSelectorWatcher>(Ref());
|
129
129
|
auto config_selector = server_config_selector_provider_->Watch(
|
@@ -35,7 +35,6 @@
|
|
35
35
|
#include <vector>
|
36
36
|
|
37
37
|
#include "absl/base/thread_annotations.h"
|
38
|
-
#include "absl/log/check.h"
|
39
38
|
#include "absl/log/log.h"
|
40
39
|
#include "absl/status/status.h"
|
41
40
|
#include "absl/status/statusor.h"
|
@@ -71,6 +70,7 @@
|
|
71
70
|
#include "src/core/service_config/service_config_impl.h"
|
72
71
|
#include "src/core/util/debug_location.h"
|
73
72
|
#include "src/core/util/down_cast.h"
|
73
|
+
#include "src/core/util/grpc_check.h"
|
74
74
|
#include "src/core/util/host_port.h"
|
75
75
|
#include "src/core/util/match.h"
|
76
76
|
#include "src/core/util/ref_counted_ptr.h"
|
@@ -404,7 +404,7 @@ class XdsServerConfigFetcher::ListenerWatcher::FilterChainMatchManager::
|
|
404
404
|
absl::StatusOr<RefCountedPtr<ServerConfigSelector>> Watch(
|
405
405
|
std::unique_ptr<ServerConfigSelectorProvider::ServerConfigSelectorWatcher>
|
406
406
|
watcher) override {
|
407
|
-
|
407
|
+
GRPC_CHECK(watcher_ == nullptr);
|
408
408
|
watcher_ = std::move(watcher);
|
409
409
|
if (!static_resource_.ok()) {
|
410
410
|
return static_resource_.status();
|
@@ -512,7 +512,7 @@ XdsServerConfigFetcher::XdsServerConfigFetcher(
|
|
512
512
|
RefCountedPtr<GrpcXdsClient> xds_client,
|
513
513
|
grpc_server_xds_status_notifier notifier)
|
514
514
|
: xds_client_(std::move(xds_client)), serving_status_notifier_(notifier) {
|
515
|
-
|
515
|
+
GRPC_CHECK(xds_client_ != nullptr);
|
516
516
|
}
|
517
517
|
|
518
518
|
std::string ListenerResourceName(absl::string_view resource_name_template,
|
@@ -1053,7 +1053,7 @@ absl::StatusOr<ChannelArgs> XdsServerConfigFetcher::ListenerWatcher::
|
|
1053
1053
|
const XdsHttpFilterImpl* filter_impl =
|
1054
1054
|
http_filter_registry.GetFilterForType(
|
1055
1055
|
http_filter.config.config_proto_type_name);
|
1056
|
-
|
1056
|
+
GRPC_CHECK_NE(filter_impl, nullptr);
|
1057
1057
|
// Some filters like the router filter are no-op filters and do not have
|
1058
1058
|
// an implementation.
|
1059
1059
|
if (filter_impl->channel_filter() != nullptr) {
|
@@ -1102,7 +1102,7 @@ absl::StatusOr<ChannelArgs> XdsServerConfigFetcher::ListenerWatcher::
|
|
1102
1102
|
return result.status();
|
1103
1103
|
}
|
1104
1104
|
xds_certificate_provider = std::move(*result);
|
1105
|
-
|
1105
|
+
GRPC_CHECK(xds_certificate_provider != nullptr);
|
1106
1106
|
args = args.SetObject(xds_certificate_provider);
|
1107
1107
|
}
|
1108
1108
|
return args;
|
@@ -1121,7 +1121,8 @@ void XdsServerConfigFetcher::ListenerWatcher::FilterChainMatchManager::
|
|
1121
1121
|
const XdsHttpFilterImpl* filter_impl =
|
1122
1122
|
http_filter_registry.GetFilterForType(
|
1123
1123
|
http_filter.config.config_proto_type_name);
|
1124
|
-
|
1124
|
+
GRPC_CHECK_NE(filter_impl,
|
1125
|
+
nullptr); // Enforced in config validation.
|
1125
1126
|
filter_impl->UpdateBlackboard(http_filter.config, old_blackboard,
|
1126
1127
|
new_blackboard);
|
1127
1128
|
}
|
@@ -1240,7 +1241,7 @@ XdsServerConfigFetcher::ListenerWatcher::FilterChainMatchManager::
|
|
1240
1241
|
resource_name_(std::move(resource_name)),
|
1241
1242
|
http_filters_(std::move(http_filters)),
|
1242
1243
|
resource_(std::move(initial_resource)) {
|
1243
|
-
|
1244
|
+
GRPC_CHECK(!resource_name_.empty());
|
1244
1245
|
// RouteConfigWatcher is being created here instead of in Watch() to avoid
|
1245
1246
|
// deadlocks from invoking XdsRouteConfigResourceType::StartWatch whilst in a
|
1246
1247
|
// critical region.
|
@@ -1267,7 +1268,7 @@ XdsServerConfigFetcher::ListenerWatcher::FilterChainMatchManager::
|
|
1267
1268
|
absl::StatusOr<std::shared_ptr<const XdsRouteConfigResource>> resource;
|
1268
1269
|
{
|
1269
1270
|
MutexLock lock(&mu_);
|
1270
|
-
|
1271
|
+
GRPC_CHECK(watcher_ == nullptr);
|
1271
1272
|
watcher_ = std::move(watcher);
|
1272
1273
|
resource = resource_;
|
1273
1274
|
}
|
@@ -26,13 +26,13 @@
|
|
26
26
|
#include <unordered_map>
|
27
27
|
#include <vector>
|
28
28
|
|
29
|
-
#include "absl/log/check.h"
|
30
29
|
#include "absl/status/statusor.h"
|
31
30
|
#include "absl/strings/string_view.h"
|
32
31
|
#include "src/core/lib/channel/channel_args.h"
|
33
32
|
#include "src/core/lib/slice/slice_internal.h"
|
34
33
|
#include "src/core/service_config/service_config.h"
|
35
34
|
#include "src/core/service_config/service_config_parser.h"
|
35
|
+
#include "src/core/util/grpc_check.h"
|
36
36
|
#include "src/core/util/json/json.h"
|
37
37
|
#include "src/core/util/ref_counted_ptr.h"
|
38
38
|
#include "src/core/util/validation_errors.h"
|
@@ -87,7 +87,7 @@ class ServiceConfigImpl final : public ServiceConfig {
|
|
87
87
|
/// ServiceConfig object.
|
88
88
|
ServiceConfigParser::ParsedConfig* GetGlobalParsedConfig(
|
89
89
|
size_t index) const override {
|
90
|
-
|
90
|
+
GRPC_DCHECK(index < parsed_global_configs_.size());
|
91
91
|
return parsed_global_configs_[index].get();
|
92
92
|
}
|
93
93
|
|
@@ -24,9 +24,9 @@
|
|
24
24
|
#include <utility>
|
25
25
|
#include <vector>
|
26
26
|
|
27
|
-
#include "absl/log/check.h"
|
28
27
|
#include "src/core/lib/promise/context.h"
|
29
28
|
#include "src/core/telemetry/tcp_tracer.h"
|
29
|
+
#include "src/core/util/grpc_check.h"
|
30
30
|
|
31
31
|
namespace grpc_core {
|
32
32
|
|
@@ -86,7 +86,7 @@ class DelegatingClientCallTracer : public ClientCallTracerInterface {
|
|
86
86
|
explicit DelegatingClientCallAttemptTracer(
|
87
87
|
std::vector<CallAttemptTracer*> tracers)
|
88
88
|
: tracers_(std::move(tracers)) {
|
89
|
-
|
89
|
+
GRPC_DCHECK(!tracers_.empty());
|
90
90
|
}
|
91
91
|
~DelegatingClientCallAttemptTracer() override {}
|
92
92
|
void RecordSendInitialMetadata(
|
@@ -192,13 +192,16 @@ class DelegatingClientCallTracer : public ClientCallTracerInterface {
|
|
192
192
|
};
|
193
193
|
explicit DelegatingClientCallTracer(ClientCallTracerInterface* tracer)
|
194
194
|
: tracers_{tracer} {}
|
195
|
+
explicit DelegatingClientCallTracer(
|
196
|
+
absl::Span<ClientCallTracerInterface* const> tracers)
|
197
|
+
: tracers_(tracers.begin(), tracers.end()) {}
|
195
198
|
~DelegatingClientCallTracer() override {}
|
196
199
|
CallAttemptTracer* StartNewAttempt(bool is_transparent_retry) override {
|
197
200
|
std::vector<CallAttemptTracer*> attempt_tracers;
|
198
201
|
attempt_tracers.reserve(tracers_.size());
|
199
202
|
for (auto* tracer : tracers_) {
|
200
203
|
auto* attempt_tracer = tracer->StartNewAttempt(is_transparent_retry);
|
201
|
-
|
204
|
+
GRPC_DCHECK_NE(attempt_tracer, nullptr);
|
202
205
|
attempt_tracers.push_back(attempt_tracer);
|
203
206
|
}
|
204
207
|
return GetContext<Arena>()->ManagedNew<DelegatingClientCallAttemptTracer>(
|
@@ -236,6 +239,9 @@ class DelegatingServerCallTracer : public ServerCallTracerInterface {
|
|
236
239
|
public:
|
237
240
|
explicit DelegatingServerCallTracer(ServerCallTracerInterface* tracer)
|
238
241
|
: tracers_{tracer} {}
|
242
|
+
explicit DelegatingServerCallTracer(
|
243
|
+
absl::Span<ServerCallTracerInterface* const> tracers)
|
244
|
+
: tracers_(tracers.begin(), tracers.end()) {}
|
239
245
|
~DelegatingServerCallTracer() override {}
|
240
246
|
void RecordSendInitialMetadata(
|
241
247
|
grpc_metadata_batch* send_initial_metadata) override {
|
@@ -333,57 +339,41 @@ class DelegatingServerCallTracer : public ServerCallTracerInterface {
|
|
333
339
|
std::vector<ServerCallTracerInterface*> tracers_;
|
334
340
|
};
|
335
341
|
|
336
|
-
void
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
|
345
|
-
|
346
|
-
// We already created a delegating tracer. Just add the new tracer to the
|
347
|
-
// list.
|
348
|
-
DownCast<DelegatingClientCallTracer*>(orig_tracer)->AddTracer(tracer);
|
349
|
-
} else {
|
350
|
-
// Create a new delegating tracer and add the first tracer and the new
|
351
|
-
// tracer to the list.
|
342
|
+
void SetClientCallTracer(Arena* arena,
|
343
|
+
absl::Span<ClientCallTracerInterface* const> tracer) {
|
344
|
+
GRPC_DCHECK_EQ(arena->GetContext<CallSpan>(), nullptr);
|
345
|
+
switch (tracer.size()) {
|
346
|
+
case 0:
|
347
|
+
return;
|
348
|
+
case 1:
|
349
|
+
arena->SetContext<CallSpan>(WrapClientCallTracer(tracer[0], arena));
|
350
|
+
return;
|
351
|
+
default:
|
352
352
|
auto* delegating_tracer =
|
353
|
-
GetContext<Arena>()->ManagedNew<DelegatingClientCallTracer>(
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
}
|
353
|
+
GetContext<Arena>()->ManagedNew<DelegatingClientCallTracer>(tracer);
|
354
|
+
arena->SetContext<CallSpan>(
|
355
|
+
WrapClientCallTracer(delegating_tracer, arena));
|
356
|
+
break;
|
358
357
|
}
|
359
358
|
}
|
360
359
|
|
361
|
-
void
|
362
|
-
|
363
|
-
|
364
|
-
|
365
|
-
|
366
|
-
|
367
|
-
|
368
|
-
|
369
|
-
|
370
|
-
|
371
|
-
|
372
|
-
arena->GetContext<CallTracerAnnotationInterface>());
|
373
|
-
if (orig_tracer->IsDelegatingTracer()) {
|
374
|
-
// We already created a delegating tracer. Just add the new tracer to the
|
375
|
-
// list.
|
376
|
-
DownCast<DelegatingServerCallTracer*>(orig_tracer)->AddTracer(tracer);
|
377
|
-
} else {
|
378
|
-
// Create a new delegating tracer and add the first tracer and the new
|
379
|
-
// tracer to the list.
|
360
|
+
void SetServerCallTracer(Arena* arena,
|
361
|
+
absl::Span<ServerCallTracerInterface* const> tracer) {
|
362
|
+
GRPC_DCHECK_EQ(arena->GetContext<CallSpan>(), nullptr);
|
363
|
+
switch (tracer.size()) {
|
364
|
+
case 0:
|
365
|
+
return;
|
366
|
+
case 1:
|
367
|
+
arena->SetContext<CallSpan>(WrapServerCallTracer(tracer[0], arena));
|
368
|
+
arena->SetContext<CallTracer>(WrapServerCallTracer(tracer[0], arena));
|
369
|
+
return;
|
370
|
+
default:
|
380
371
|
auto* delegating_tracer =
|
381
|
-
GetContext<Arena>()->ManagedNew<DelegatingServerCallTracer>(
|
382
|
-
|
383
|
-
arena->SetContext<
|
384
|
-
arena->SetContext<
|
385
|
-
|
386
|
-
}
|
372
|
+
GetContext<Arena>()->ManagedNew<DelegatingServerCallTracer>(tracer);
|
373
|
+
auto* wrapper = WrapServerCallTracer(delegating_tracer, arena);
|
374
|
+
arena->SetContext<CallSpan>(wrapper);
|
375
|
+
arena->SetContext<CallTracer>(wrapper);
|
376
|
+
break;
|
387
377
|
}
|
388
378
|
}
|
389
379
|
|