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
@@ -82,7 +82,6 @@
|
|
82
82
|
|
83
83
|
#include "absl/container/inlined_vector.h"
|
84
84
|
#include "absl/functional/function_ref.h"
|
85
|
-
#include "absl/log/check.h"
|
86
85
|
#include "absl/log/globals.h"
|
87
86
|
#include "absl/log/log.h"
|
88
87
|
#include "absl/status/status.h"
|
@@ -128,6 +127,7 @@
|
|
128
127
|
#include "src/core/util/backoff.h"
|
129
128
|
#include "src/core/util/crash.h"
|
130
129
|
#include "src/core/util/debug_location.h"
|
130
|
+
#include "src/core/util/grpc_check.h"
|
131
131
|
#include "src/core/util/json/json.h"
|
132
132
|
#include "src/core/util/json/json_args.h"
|
133
133
|
#include "src/core/util/json/json_object_loader.h"
|
@@ -870,8 +870,8 @@ GrpcLb::BalancerCallState::BalancerCallState(
|
|
870
870
|
: InternallyRefCounted<BalancerCallState>(
|
871
871
|
GRPC_TRACE_FLAG_ENABLED(glb) ? "BalancerCallState" : nullptr),
|
872
872
|
grpclb_policy_(std::move(parent_grpclb_policy)) {
|
873
|
-
|
874
|
-
|
873
|
+
GRPC_CHECK(grpclb_policy_ != nullptr);
|
874
|
+
GRPC_CHECK(!grpclb_policy()->shutting_down_);
|
875
875
|
// Init the LB call. Note that the LB call will progress every time there's
|
876
876
|
// activity in grpclb_policy_->interested_parties(), which is comprised of
|
877
877
|
// the polling entities from client_channel.
|
@@ -908,7 +908,7 @@ GrpcLb::BalancerCallState::BalancerCallState(
|
|
908
908
|
}
|
909
909
|
|
910
910
|
GrpcLb::BalancerCallState::~BalancerCallState() {
|
911
|
-
|
911
|
+
GRPC_CHECK_NE(lb_call_, nullptr);
|
912
912
|
grpc_call_unref(lb_call_);
|
913
913
|
grpc_metadata_array_destroy(&lb_initial_metadata_recv_);
|
914
914
|
grpc_metadata_array_destroy(&lb_trailing_metadata_recv_);
|
@@ -918,7 +918,7 @@ GrpcLb::BalancerCallState::~BalancerCallState() {
|
|
918
918
|
}
|
919
919
|
|
920
920
|
void GrpcLb::BalancerCallState::Orphan() {
|
921
|
-
|
921
|
+
GRPC_CHECK_NE(lb_call_, nullptr);
|
922
922
|
// If we are here because grpclb_policy wants to cancel the call,
|
923
923
|
// lb_on_balancer_status_received_ will complete the cancellation and clean
|
924
924
|
// up. Otherwise, we are here because grpclb_policy has to orphan a failed
|
@@ -935,7 +935,7 @@ void GrpcLb::BalancerCallState::Orphan() {
|
|
935
935
|
}
|
936
936
|
|
937
937
|
void GrpcLb::BalancerCallState::StartQuery() {
|
938
|
-
|
938
|
+
GRPC_CHECK_NE(lb_call_, nullptr);
|
939
939
|
GRPC_TRACE_LOG(glb, INFO)
|
940
940
|
<< "[grpclb " << grpclb_policy_.get() << "] lb_calld=" << this
|
941
941
|
<< ": Starting LB call " << lb_call_;
|
@@ -952,7 +952,7 @@ void GrpcLb::BalancerCallState::StartQuery() {
|
|
952
952
|
op->reserved = nullptr;
|
953
953
|
op++;
|
954
954
|
// Op: send request message.
|
955
|
-
|
955
|
+
GRPC_CHECK_NE(send_message_payload_, nullptr);
|
956
956
|
op->op = GRPC_OP_SEND_MESSAGE;
|
957
957
|
op->data.send_message.send_message = send_message_payload_;
|
958
958
|
op->flags = 0;
|
@@ -966,7 +966,7 @@ void GrpcLb::BalancerCallState::StartQuery() {
|
|
966
966
|
call_error = grpc_call_start_batch_and_execute(lb_call_, ops,
|
967
967
|
static_cast<size_t>(op - ops),
|
968
968
|
&lb_on_initial_request_sent_);
|
969
|
-
|
969
|
+
GRPC_CHECK_EQ(call_error, GRPC_CALL_OK);
|
970
970
|
// Op: recv initial metadata.
|
971
971
|
op = ops;
|
972
972
|
op->op = GRPC_OP_RECV_INITIAL_METADATA;
|
@@ -989,7 +989,7 @@ void GrpcLb::BalancerCallState::StartQuery() {
|
|
989
989
|
call_error = grpc_call_start_batch_and_execute(
|
990
990
|
lb_call_, ops, static_cast<size_t>(op - ops),
|
991
991
|
&lb_on_balancer_message_received_);
|
992
|
-
|
992
|
+
GRPC_CHECK_EQ(call_error, GRPC_CALL_OK);
|
993
993
|
// Op: recv server status.
|
994
994
|
op = ops;
|
995
995
|
op->op = GRPC_OP_RECV_STATUS_ON_CLIENT;
|
@@ -1006,7 +1006,7 @@ void GrpcLb::BalancerCallState::StartQuery() {
|
|
1006
1006
|
call_error = grpc_call_start_batch_and_execute(
|
1007
1007
|
lb_call_, ops, static_cast<size_t>(op - ops),
|
1008
1008
|
&lb_on_balancer_status_received_);
|
1009
|
-
|
1009
|
+
GRPC_CHECK_EQ(call_error, GRPC_CALL_OK);
|
1010
1010
|
}
|
1011
1011
|
|
1012
1012
|
void GrpcLb::BalancerCallState::ScheduleNextClientLoadReportLocked() {
|
@@ -1037,7 +1037,7 @@ void GrpcLb::BalancerCallState::MaybeSendClientLoadReportLocked() {
|
|
1037
1037
|
|
1038
1038
|
void GrpcLb::BalancerCallState::SendClientLoadReportLocked() {
|
1039
1039
|
// Construct message payload.
|
1040
|
-
|
1040
|
+
GRPC_CHECK_EQ(send_message_payload_, nullptr);
|
1041
1041
|
// Get snapshot of stats.
|
1042
1042
|
int64_t num_calls_started;
|
1043
1043
|
int64_t num_calls_finished;
|
@@ -1080,7 +1080,7 @@ void GrpcLb::BalancerCallState::SendClientLoadReportLocked() {
|
|
1080
1080
|
if (GPR_UNLIKELY(call_error != GRPC_CALL_OK)) {
|
1081
1081
|
LOG(ERROR) << "[grpclb " << grpclb_policy_.get() << "] lb_calld=" << this
|
1082
1082
|
<< " call_error=" << call_error << " sending client load report";
|
1083
|
-
|
1083
|
+
GRPC_CHECK_EQ(call_error, GRPC_CALL_OK);
|
1084
1084
|
}
|
1085
1085
|
}
|
1086
1086
|
|
@@ -1174,7 +1174,7 @@ void GrpcLb::BalancerCallState::OnBalancerMessageReceivedLocked() {
|
|
1174
1174
|
break;
|
1175
1175
|
}
|
1176
1176
|
case response.SERVERLIST: {
|
1177
|
-
|
1177
|
+
GRPC_CHECK_NE(lb_call_, nullptr);
|
1178
1178
|
auto serverlist_wrapper =
|
1179
1179
|
MakeRefCounted<Serverlist>(std::move(response.serverlist));
|
1180
1180
|
GRPC_TRACE_LOG(glb, INFO)
|
@@ -1272,7 +1272,7 @@ void GrpcLb::BalancerCallState::OnBalancerMessageReceivedLocked() {
|
|
1272
1272
|
// Reuse the "OnBalancerMessageReceivedLocked" ref taken in StartQuery().
|
1273
1273
|
const grpc_call_error call_error = grpc_call_start_batch_and_execute(
|
1274
1274
|
lb_call_, &op, 1, &lb_on_balancer_message_received_);
|
1275
|
-
|
1275
|
+
GRPC_CHECK_EQ(call_error, GRPC_CALL_OK);
|
1276
1276
|
} else {
|
1277
1277
|
Unref(DEBUG_LOCATION, "on_message_received+grpclb_shutdown");
|
1278
1278
|
}
|
@@ -1287,7 +1287,7 @@ void GrpcLb::BalancerCallState::OnBalancerStatusReceived(
|
|
1287
1287
|
|
1288
1288
|
void GrpcLb::BalancerCallState::OnBalancerStatusReceivedLocked(
|
1289
1289
|
grpc_error_handle error) {
|
1290
|
-
|
1290
|
+
GRPC_CHECK_NE(lb_call_, nullptr);
|
1291
1291
|
if (GRPC_TRACE_FLAG_ENABLED(glb)) {
|
1292
1292
|
char* status_details = grpc_slice_to_c_string(lb_call_status_details_);
|
1293
1293
|
LOG(INFO) << "[grpclb " << grpclb_policy() << "] lb_calld=" << this
|
@@ -1306,7 +1306,7 @@ void GrpcLb::BalancerCallState::OnBalancerStatusReceivedLocked(
|
|
1306
1306
|
// case.
|
1307
1307
|
grpclb_policy()->lb_calld_.reset();
|
1308
1308
|
if (grpclb_policy()->fallback_at_startup_checks_pending_) {
|
1309
|
-
|
1309
|
+
GRPC_CHECK(!seen_serverlist_);
|
1310
1310
|
LOG(INFO) << "[grpclb " << grpclb_policy()
|
1311
1311
|
<< "] Balancer call finished without receiving serverlist; "
|
1312
1312
|
"entering fallback mode";
|
@@ -1320,7 +1320,7 @@ void GrpcLb::BalancerCallState::OnBalancerStatusReceivedLocked(
|
|
1320
1320
|
// This handles the fallback-after-startup case.
|
1321
1321
|
grpclb_policy()->MaybeEnterFallbackModeAfterStartup();
|
1322
1322
|
}
|
1323
|
-
|
1323
|
+
GRPC_CHECK(!grpclb_policy()->shutting_down_);
|
1324
1324
|
grpclb_policy()->channel_control_helper()->RequestReresolution();
|
1325
1325
|
if (seen_initial_response_) {
|
1326
1326
|
// If we lose connection to the LB server, reset the backoff and restart
|
@@ -1474,7 +1474,7 @@ void GrpcLb::ShutdownLocked() {
|
|
1474
1474
|
if (lb_channel_ != nullptr) {
|
1475
1475
|
if (parent_channelz_node_ != nullptr) {
|
1476
1476
|
channelz::ChannelNode* child_channelz_node = lb_channel_->channelz_node();
|
1477
|
-
|
1477
|
+
GRPC_CHECK_NE(child_channelz_node, nullptr);
|
1478
1478
|
child_channelz_node->RemoveParent(parent_channelz_node_.get());
|
1479
1479
|
}
|
1480
1480
|
lb_channel_.reset();
|
@@ -1524,7 +1524,7 @@ absl::Status GrpcLb::UpdateLocked(UpdateArgs args) {
|
|
1524
1524
|
GRPC_TRACE_LOG(glb, INFO) << "[grpclb " << this << "] received update";
|
1525
1525
|
const bool is_initial_update = lb_channel_ == nullptr;
|
1526
1526
|
config_ = args.config.TakeAsSubclass<GrpcLbConfig>();
|
1527
|
-
|
1527
|
+
GRPC_CHECK(config_ != nullptr);
|
1528
1528
|
args_ = std::move(args.args);
|
1529
1529
|
// Update fallback address list.
|
1530
1530
|
if (!args.addresses.ok()) {
|
@@ -1597,7 +1597,7 @@ absl::Status GrpcLb::UpdateBalancerChannelLocked() {
|
|
1597
1597
|
lb_channel_.reset(Channel::FromC(
|
1598
1598
|
grpc_channel_create(uri_str.c_str(), channel_credentials.get(),
|
1599
1599
|
lb_channel_args.ToC().get())));
|
1600
|
-
|
1600
|
+
GRPC_CHECK(lb_channel_ != nullptr);
|
1601
1601
|
// Set up channelz linkage.
|
1602
1602
|
channelz::ChannelNode* child_channelz_node = lb_channel_->channelz_node();
|
1603
1603
|
auto parent_channelz_node = args_.GetObjectRef<channelz::ChannelNode>();
|
@@ -1627,10 +1627,10 @@ void GrpcLb::CancelBalancerChannelConnectivityWatchLocked() {
|
|
1627
1627
|
//
|
1628
1628
|
|
1629
1629
|
void GrpcLb::StartBalancerCallLocked() {
|
1630
|
-
|
1630
|
+
GRPC_CHECK(lb_channel_ != nullptr);
|
1631
1631
|
if (shutting_down_) return;
|
1632
1632
|
// Init the LB call data.
|
1633
|
-
|
1633
|
+
GRPC_CHECK(lb_calld_ == nullptr);
|
1634
1634
|
lb_calld_ = MakeOrphanable<BalancerCallState>(Ref());
|
1635
1635
|
GRPC_TRACE_LOG(glb, INFO)
|
1636
1636
|
<< "[grpclb " << this
|
@@ -1780,7 +1780,7 @@ void GrpcLb::CreateOrUpdateChildPolicyLocked() {
|
|
1780
1780
|
}
|
1781
1781
|
update_args.args =
|
1782
1782
|
CreateChildPolicyArgsLocked(is_backend_from_grpclb_load_balancer);
|
1783
|
-
|
1783
|
+
GRPC_CHECK(update_args.args != ChannelArgs());
|
1784
1784
|
update_args.config = config_->child_policy();
|
1785
1785
|
// Create child policy if needed.
|
1786
1786
|
if (child_policy_ == nullptr) {
|
@@ -1809,7 +1809,7 @@ void GrpcLb::CacheDeletedSubchannelLocked(
|
|
1809
1809
|
}
|
1810
1810
|
|
1811
1811
|
void GrpcLb::StartSubchannelCacheTimerLocked() {
|
1812
|
-
|
1812
|
+
GRPC_CHECK(!cached_subchannels_.empty());
|
1813
1813
|
subchannel_cache_timer_handle_ =
|
1814
1814
|
channel_control_helper()->GetEventEngine()->RunAfter(
|
1815
1815
|
cached_subchannels_.begin()->first - Timestamp::Now(),
|
@@ -30,7 +30,6 @@
|
|
30
30
|
#include <type_traits>
|
31
31
|
#include <utility>
|
32
32
|
|
33
|
-
#include "absl/log/check.h"
|
34
33
|
#include "absl/log/log.h"
|
35
34
|
#include "absl/status/status.h"
|
36
35
|
#include "absl/status/statusor.h"
|
@@ -53,6 +52,7 @@
|
|
53
52
|
#include "src/core/load_balancing/health_check_client_internal.h"
|
54
53
|
#include "src/core/load_balancing/subchannel_interface.h"
|
55
54
|
#include "src/core/util/debug_location.h"
|
55
|
+
#include "src/core/util/grpc_check.h"
|
56
56
|
#include "src/core/util/orphanable.h"
|
57
57
|
#include "src/core/util/ref_counted_ptr.h"
|
58
58
|
#include "src/core/util/sync.h"
|
@@ -104,7 +104,7 @@ void HealthProducer::HealthChecker::OnConnectivityStateChangeLocked(
|
|
104
104
|
state_ = GRPC_CHANNEL_CONNECTING;
|
105
105
|
status_ = absl::OkStatus();
|
106
106
|
} else {
|
107
|
-
|
107
|
+
GRPC_CHECK(state_ == GRPC_CHANNEL_CONNECTING);
|
108
108
|
}
|
109
109
|
// Start the health watch stream.
|
110
110
|
StartHealthStreamLocked();
|
@@ -295,7 +295,7 @@ class HealthProducer::ConnectivityWatcher final
|
|
295
295
|
// HealthProducer
|
296
296
|
//
|
297
297
|
|
298
|
-
void HealthProducer::Start(
|
298
|
+
void HealthProducer::Start(WeakRefCountedPtr<Subchannel> subchannel) {
|
299
299
|
GRPC_TRACE_LOG(health_check_client, INFO)
|
300
300
|
<< "HealthProducer " << this << ": starting with subchannel "
|
301
301
|
<< subchannel.get();
|
@@ -419,7 +419,7 @@ void HealthWatcher::SetSubchannel(Subchannel* subchannel) {
|
|
419
419
|
// This needs to be done outside of the lambda passed to
|
420
420
|
// GetOrAddDataProducer() to avoid deadlocking by re-acquiring the
|
421
421
|
// subchannel lock while already holding it.
|
422
|
-
if (created) producer_->Start(subchannel->
|
422
|
+
if (created) producer_->Start(subchannel->WeakRef());
|
423
423
|
// Register ourself with the producer.
|
424
424
|
producer_->AddWatcher(this, health_check_service_name_);
|
425
425
|
GRPC_TRACE_LOG(health_check_client, INFO)
|
@@ -55,7 +55,7 @@ class HealthProducer final : public Subchannel::DataProducerInterface {
|
|
55
55
|
HealthProducer() : interested_parties_(grpc_pollset_set_create()) {}
|
56
56
|
~HealthProducer() override { grpc_pollset_set_destroy(interested_parties_); }
|
57
57
|
|
58
|
-
void Start(
|
58
|
+
void Start(WeakRefCountedPtr<Subchannel> subchannel);
|
59
59
|
|
60
60
|
static UniqueTypeName Type() {
|
61
61
|
static UniqueTypeName::Factory kFactory("health_check");
|
@@ -137,7 +137,7 @@ class HealthProducer final : public Subchannel::DataProducerInterface {
|
|
137
137
|
const absl::Status& status);
|
138
138
|
void Orphaned() override;
|
139
139
|
|
140
|
-
|
140
|
+
WeakRefCountedPtr<Subchannel> subchannel_;
|
141
141
|
ConnectivityWatcher* connectivity_watcher_;
|
142
142
|
grpc_pollset_set* interested_parties_;
|
143
143
|
|
@@ -25,7 +25,6 @@
|
|
25
25
|
#include <utility>
|
26
26
|
#include <vector>
|
27
27
|
|
28
|
-
#include "absl/log/check.h"
|
29
28
|
#include "absl/log/log.h"
|
30
29
|
#include "absl/status/status.h"
|
31
30
|
#include "absl/strings/str_cat.h"
|
@@ -33,6 +32,7 @@
|
|
33
32
|
#include "absl/strings/str_join.h"
|
34
33
|
#include "absl/strings/string_view.h"
|
35
34
|
#include "src/core/load_balancing/lb_policy.h"
|
35
|
+
#include "src/core/util/grpc_check.h"
|
36
36
|
|
37
37
|
namespace grpc_core {
|
38
38
|
|
@@ -43,7 +43,7 @@ namespace grpc_core {
|
|
43
43
|
void LoadBalancingPolicyRegistry::Builder::RegisterLoadBalancingPolicyFactory(
|
44
44
|
std::unique_ptr<LoadBalancingPolicyFactory> factory) {
|
45
45
|
VLOG(2) << "registering LB policy factory for \"" << factory->name() << "\"";
|
46
|
-
|
46
|
+
GRPC_CHECK(factories_.find(factory->name()) == factories_.end());
|
47
47
|
factories_.emplace(factory->name(), std::move(factory));
|
48
48
|
}
|
49
49
|
|
@@ -29,7 +29,6 @@
|
|
29
29
|
#include <utility>
|
30
30
|
#include <vector>
|
31
31
|
|
32
|
-
#include "absl/log/check.h"
|
33
32
|
#include "absl/log/log.h"
|
34
33
|
#include "absl/status/status.h"
|
35
34
|
#include "absl/strings/string_view.h"
|
@@ -47,6 +46,7 @@
|
|
47
46
|
#include "src/core/load_balancing/backend_metric_parser.h"
|
48
47
|
#include "src/core/load_balancing/oob_backend_metric_internal.h"
|
49
48
|
#include "src/core/util/debug_location.h"
|
49
|
+
#include "src/core/util/grpc_check.h"
|
50
50
|
#include "src/core/util/memory.h"
|
51
51
|
#include "src/core/util/orphanable.h"
|
52
52
|
#include "src/core/util/ref_counted_ptr.h"
|
@@ -201,7 +201,7 @@ class OrcaProducer::OrcaStreamEventHandler final
|
|
201
201
|
// OrcaProducer
|
202
202
|
//
|
203
203
|
|
204
|
-
void OrcaProducer::Start(
|
204
|
+
void OrcaProducer::Start(WeakRefCountedPtr<Subchannel> subchannel) {
|
205
205
|
subchannel_ = std::move(subchannel);
|
206
206
|
connected_subchannel_ = subchannel_->connected_subchannel();
|
207
207
|
auto connectivity_watcher =
|
@@ -215,7 +215,7 @@ void OrcaProducer::Orphaned() {
|
|
215
215
|
MutexLock lock(&mu_);
|
216
216
|
stream_client_.reset();
|
217
217
|
}
|
218
|
-
|
218
|
+
GRPC_CHECK(subchannel_ != nullptr); // Should not be called before Start().
|
219
219
|
subchannel_->CancelConnectivityStateWatch(connectivity_watcher_);
|
220
220
|
subchannel_->RemoveDataProducer(this);
|
221
221
|
}
|
@@ -313,7 +313,7 @@ void OrcaWatcher::SetSubchannel(Subchannel* subchannel) {
|
|
313
313
|
// This needs to be done outside of the lambda passed to
|
314
314
|
// GetOrAddDataProducer() to avoid deadlocking by re-acquiring the
|
315
315
|
// subchannel lock while already holding it.
|
316
|
-
if (created) producer_->Start(subchannel->
|
316
|
+
if (created) producer_->Start(subchannel->WeakRef());
|
317
317
|
// Register ourself with the producer.
|
318
318
|
producer_->AddWatcher(this);
|
319
319
|
}
|
@@ -46,7 +46,7 @@ class OrcaWatcher;
|
|
46
46
|
// registered watchers.
|
47
47
|
class OrcaProducer final : public Subchannel::DataProducerInterface {
|
48
48
|
public:
|
49
|
-
void Start(
|
49
|
+
void Start(WeakRefCountedPtr<Subchannel> subchannel);
|
50
50
|
|
51
51
|
static UniqueTypeName Type() {
|
52
52
|
static UniqueTypeName::Factory kFactory("orca");
|
@@ -79,7 +79,7 @@ class OrcaProducer final : public Subchannel::DataProducerInterface {
|
|
79
79
|
// Called to notify watchers of a new backend metric report.
|
80
80
|
void NotifyWatchers(const BackendMetricData& backend_metric_data);
|
81
81
|
|
82
|
-
|
82
|
+
WeakRefCountedPtr<Subchannel> subchannel_;
|
83
83
|
RefCountedPtr<ConnectedSubchannel> connected_subchannel_;
|
84
84
|
ConnectivityWatcher* connectivity_watcher_;
|
85
85
|
Mutex mu_;
|
@@ -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/meta/type_traits.h"
|
41
40
|
#include "absl/random/random.h"
|
@@ -62,6 +61,7 @@
|
|
62
61
|
#include "src/core/load_balancing/subchannel_interface.h"
|
63
62
|
#include "src/core/resolver/endpoint_addresses.h"
|
64
63
|
#include "src/core/util/debug_location.h"
|
64
|
+
#include "src/core/util/grpc_check.h"
|
65
65
|
#include "src/core/util/json/json.h"
|
66
66
|
#include "src/core/util/orphanable.h"
|
67
67
|
#include "src/core/util/ref_counted.h"
|
@@ -329,7 +329,7 @@ class OutlierDetectionLb final : public LoadBalancingPolicy {
|
|
329
329
|
--multiplier_;
|
330
330
|
}
|
331
331
|
} else {
|
332
|
-
|
332
|
+
GRPC_CHECK(ejection_time_.has_value());
|
333
333
|
auto change_time = ejection_time_.value() +
|
334
334
|
Duration::Milliseconds(std::min(
|
335
335
|
base_ejection_time_in_millis * multiplier_,
|
@@ -32,7 +32,6 @@
|
|
32
32
|
#include <vector>
|
33
33
|
|
34
34
|
#include "absl/algorithm/container.h"
|
35
|
-
#include "absl/log/check.h"
|
36
35
|
#include "absl/log/log.h"
|
37
36
|
#include "absl/random/random.h"
|
38
37
|
#include "absl/status/status.h"
|
@@ -56,6 +55,7 @@
|
|
56
55
|
#include "src/core/telemetry/metrics.h"
|
57
56
|
#include "src/core/util/crash.h"
|
58
57
|
#include "src/core/util/debug_location.h"
|
58
|
+
#include "src/core/util/grpc_check.h"
|
59
59
|
#include "src/core/util/json/json.h"
|
60
60
|
#include "src/core/util/json/json_args.h"
|
61
61
|
#include "src/core/util/json/json_object_loader.h"
|
@@ -428,7 +428,7 @@ PickFirst::PickFirst(Args args)
|
|
428
428
|
|
429
429
|
PickFirst::~PickFirst() {
|
430
430
|
GRPC_TRACE_LOG(pick_first, INFO) << "Destroying Pick First " << this;
|
431
|
-
|
431
|
+
GRPC_CHECK_EQ(subchannel_list_.get(), nullptr);
|
432
432
|
}
|
433
433
|
|
434
434
|
void PickFirst::ShutdownLocked() {
|
@@ -700,7 +700,7 @@ void PickFirst::SubchannelList::SubchannelData::SubchannelState::Select() {
|
|
700
700
|
GRPC_TRACE_LOG(pick_first, INFO)
|
701
701
|
<< "Pick First " << pick_first_.get() << " selected subchannel "
|
702
702
|
<< subchannel_.get();
|
703
|
-
|
703
|
+
GRPC_CHECK_NE(subchannel_data_, nullptr);
|
704
704
|
pick_first_->UnsetSelectedSubchannel(); // Cancel health watch, if any.
|
705
705
|
pick_first_->selected_ = std::move(subchannel_data_->subchannel_state_);
|
706
706
|
// If health checking is enabled, start the health watch, but don't
|
@@ -756,8 +756,8 @@ void PickFirst::SubchannelList::SubchannelData::SubchannelState::
|
|
756
756
|
// If we're still part of a subchannel list trying to connect, check
|
757
757
|
// if we're connected.
|
758
758
|
if (subchannel_data_ != nullptr) {
|
759
|
-
|
760
|
-
|
759
|
+
GRPC_CHECK_EQ(pick_first_->subchannel_list_.get(),
|
760
|
+
subchannel_data_->subchannel_list_);
|
761
761
|
// If the subchannel is READY, use it.
|
762
762
|
// Otherwise, tell the subchannel list to keep trying.
|
763
763
|
if (new_state == GRPC_CHANNEL_READY) {
|
@@ -768,7 +768,7 @@ void PickFirst::SubchannelList::SubchannelData::SubchannelState::
|
|
768
768
|
return;
|
769
769
|
}
|
770
770
|
// We aren't trying to connect, so we must be the selected subchannel.
|
771
|
-
|
771
|
+
GRPC_CHECK_EQ(pick_first_->selected_.get(), this);
|
772
772
|
GRPC_TRACE_LOG(pick_first, INFO)
|
773
773
|
<< "Pick First " << pick_first_.get()
|
774
774
|
<< " selected subchannel connectivity changed to "
|
@@ -819,12 +819,12 @@ void PickFirst::SubchannelList::SubchannelData::OnConnectivityStateChange(
|
|
819
819
|
<< p->subchannel_list_->shutting_down_;
|
820
820
|
if (subchannel_list_->shutting_down_) return;
|
821
821
|
// The notification must be for a subchannel in the current list.
|
822
|
-
|
822
|
+
GRPC_CHECK_EQ(subchannel_list_, p->subchannel_list_.get());
|
823
823
|
// SHUTDOWN should never happen.
|
824
|
-
|
824
|
+
GRPC_CHECK_NE(new_state, GRPC_CHANNEL_SHUTDOWN);
|
825
825
|
// READY should be caught by SubchannelState, in which case it will
|
826
826
|
// not call us in the first place.
|
827
|
-
|
827
|
+
GRPC_CHECK_NE(new_state, GRPC_CHANNEL_READY);
|
828
828
|
// Update state.
|
829
829
|
std::optional<grpc_connectivity_state> old_state = connectivity_state_;
|
830
830
|
connectivity_state_ = new_state;
|
@@ -950,11 +950,11 @@ void PickFirst::SubchannelList::SubchannelData::OnConnectivityStateChange(
|
|
950
950
|
}
|
951
951
|
|
952
952
|
void PickFirst::SubchannelList::SubchannelData::RequestConnectionWithTimer() {
|
953
|
-
|
953
|
+
GRPC_CHECK(connectivity_state_.has_value());
|
954
954
|
if (connectivity_state_ == GRPC_CHANNEL_IDLE) {
|
955
955
|
subchannel_state_->RequestConnection();
|
956
956
|
} else {
|
957
|
-
|
957
|
+
GRPC_CHECK_EQ(connectivity_state_.value(), GRPC_CHANNEL_CONNECTING);
|
958
958
|
}
|
959
959
|
// If this is not the last subchannel in the list, start the timer.
|
960
960
|
if (index_ != subchannel_list_->size() - 1) {
|
@@ -1009,7 +1009,7 @@ PickFirst::SubchannelList::SubchannelList(RefCountedPtr<PickFirst> policy,
|
|
1009
1009
|
if (addresses == nullptr) return;
|
1010
1010
|
// Create a subchannel for each address.
|
1011
1011
|
addresses->ForEach([&](const EndpointAddresses& address) {
|
1012
|
-
|
1012
|
+
GRPC_CHECK_EQ(address.addresses().size(), 1u);
|
1013
1013
|
RefCountedPtr<SubchannelInterface> subchannel =
|
1014
1014
|
policy_->channel_control_helper()->CreateSubchannel(
|
1015
1015
|
address.address(), address.args(), args_);
|
@@ -1038,7 +1038,7 @@ PickFirst::SubchannelList::~SubchannelList() {
|
|
1038
1038
|
void PickFirst::SubchannelList::Orphan() {
|
1039
1039
|
GRPC_TRACE_LOG(pick_first, INFO)
|
1040
1040
|
<< "[PF " << policy_.get() << "] Shutting down subchannel_list " << this;
|
1041
|
-
|
1041
|
+
GRPC_CHECK(!shutting_down_);
|
1042
1042
|
shutting_down_ = true;
|
1043
1043
|
// Shut down subchannels.
|
1044
1044
|
subchannels_.clear();
|
@@ -1070,7 +1070,7 @@ void PickFirst::SubchannelList::StartConnectingNextSubchannel() {
|
|
1070
1070
|
// large recursion that could overflow the stack.
|
1071
1071
|
for (; attempting_index_ < size(); ++attempting_index_) {
|
1072
1072
|
SubchannelData* sc = subchannels_[attempting_index_].get();
|
1073
|
-
|
1073
|
+
GRPC_CHECK(sc->connectivity_state().has_value());
|
1074
1074
|
if (sc->connectivity_state() != GRPC_CHANNEL_TRANSIENT_FAILURE) {
|
1075
1075
|
// Found a subchannel not in TRANSIENT_FAILURE, so trigger a
|
1076
1076
|
// connection attempt.
|
@@ -30,7 +30,6 @@
|
|
30
30
|
#include <utility>
|
31
31
|
#include <vector>
|
32
32
|
|
33
|
-
#include "absl/log/check.h"
|
34
33
|
#include "absl/log/log.h"
|
35
34
|
#include "absl/status/status.h"
|
36
35
|
#include "absl/status/statusor.h"
|
@@ -51,6 +50,7 @@
|
|
51
50
|
#include "src/core/load_balancing/lb_policy_registry.h"
|
52
51
|
#include "src/core/resolver/endpoint_addresses.h"
|
53
52
|
#include "src/core/util/debug_location.h"
|
53
|
+
#include "src/core/util/grpc_check.h"
|
54
54
|
#include "src/core/util/json/json.h"
|
55
55
|
#include "src/core/util/json/json_args.h"
|
56
56
|
#include "src/core/util/json/json_object_loader.h"
|
@@ -224,7 +224,10 @@ class PriorityLb final : public LoadBalancingPolicy {
|
|
224
224
|
absl::Status connectivity_status_;
|
225
225
|
RefCountedPtr<SubchannelPicker> picker_;
|
226
226
|
|
227
|
-
|
227
|
+
// Initialize to false, since we start the timer when the child is
|
228
|
+
// created. We don't want to start it again unless the child sees
|
229
|
+
// READY or IDLE without seeing TF before seeing CONNECTING.
|
230
|
+
bool can_start_failover_timer_ = false;
|
228
231
|
|
229
232
|
OrphanablePtr<DeactivationTimer> deactivation_timer_;
|
230
233
|
OrphanablePtr<FailoverTimer> failover_timer_;
|
@@ -401,7 +404,7 @@ void PriorityLb::ChoosePriorityLocked() {
|
|
401
404
|
RefAsSubclass<PriorityLb>(DEBUG_LOCATION, "ChildPriority"),
|
402
405
|
child_name);
|
403
406
|
auto child_config = config_->children().find(child_name);
|
404
|
-
|
407
|
+
GRPC_DCHECK(child_config != config_->children().end());
|
405
408
|
// If the child policy returns a non-OK status, request re-resolution.
|
406
409
|
// Note that this will initially cause fixed backoff delay in the
|
407
410
|
// resolver instead of exponential delay. However, once the
|
@@ -451,7 +454,7 @@ void PriorityLb::ChoosePriorityLocked() {
|
|
451
454
|
<< "[priority_lb " << this << "] trying priority " << priority
|
452
455
|
<< ", child " << child_name;
|
453
456
|
auto& child = children_[child_name];
|
454
|
-
|
457
|
+
GRPC_CHECK(child != nullptr);
|
455
458
|
if (child->connectivity_state() == GRPC_CHANNEL_CONNECTING) {
|
456
459
|
SetCurrentPriorityLocked(priority, /*deactivate_lower_priorities=*/false,
|
457
460
|
"CONNECTING (pass 2)");
|
@@ -480,7 +483,7 @@ void PriorityLb::SetCurrentPriorityLocked(int32_t priority,
|
|
480
483
|
}
|
481
484
|
}
|
482
485
|
auto& child = children_[config_->priorities()[priority]];
|
483
|
-
|
486
|
+
GRPC_CHECK(child != nullptr);
|
484
487
|
channel_control_helper()->UpdateState(child->connectivity_state(),
|
485
488
|
child->connectivity_status(),
|
486
489
|
child->GetPicker());
|
@@ -583,10 +586,10 @@ void PriorityLb::ChildPriority::FailoverTimer::OnTimerLocked() {
|
|
583
586
|
<< "[priority_lb " << child_priority_->priority_policy_.get()
|
584
587
|
<< "] child " << child_priority_->name_ << " (" << child_priority_.get()
|
585
588
|
<< "): failover timer fired, reporting TRANSIENT_FAILURE";
|
586
|
-
child_priority_->
|
587
|
-
|
588
|
-
|
589
|
-
|
589
|
+
child_priority_->failover_timer_.reset();
|
590
|
+
// Call the LB policy's ChoosePriorityLocked() to choose a priority to
|
591
|
+
// use based on the updated state of this child.
|
592
|
+
child_priority_->priority_policy_->ChoosePriorityLocked();
|
590
593
|
}
|
591
594
|
}
|
592
595
|
|
@@ -706,27 +709,23 @@ void PriorityLb::ChildPriority::OnConnectivityStateUpdateLocked(
|
|
706
709
|
// Store the state and picker.
|
707
710
|
connectivity_state_ = state;
|
708
711
|
connectivity_status_ = status;
|
709
|
-
|
710
|
-
//
|
711
|
-
//
|
712
|
-
//
|
713
|
-
// child when all priorities are failing.
|
714
|
-
if (picker != nullptr) picker_ = std::move(picker);
|
715
|
-
// If we transition to state CONNECTING and we've not seen
|
716
|
-
// TRANSIENT_FAILURE more recently than READY or IDLE, start failover
|
717
|
-
// timer if not already pending.
|
718
|
-
// In any other state, update seen_ready_or_idle_since_transient_failure_
|
719
|
-
// and cancel failover timer.
|
712
|
+
picker_ = std::move(picker);
|
713
|
+
// If we transition to state CONNECTING and we've seen READY or IDLE
|
714
|
+
// more recently than TRANSIENT_FAILURE, start failover timer if not
|
715
|
+
// already pending. In any other state, cancel the timer.
|
720
716
|
if (state == GRPC_CHANNEL_CONNECTING) {
|
721
|
-
if (
|
722
|
-
|
717
|
+
if (can_start_failover_timer_ && failover_timer_ == nullptr) {
|
718
|
+
// Can't start timer again until after we see READY or IDLE.
|
719
|
+
can_start_failover_timer_ = false;
|
723
720
|
failover_timer_ = MakeOrphanable<FailoverTimer>(Ref());
|
724
721
|
}
|
725
722
|
} else if (state == GRPC_CHANNEL_READY || state == GRPC_CHANNEL_IDLE) {
|
726
|
-
|
723
|
+
// Can start the timer again the next time we see CONNECTING.
|
724
|
+
can_start_failover_timer_ = true;
|
727
725
|
failover_timer_.reset();
|
728
726
|
} else if (state == GRPC_CHANNEL_TRANSIENT_FAILURE) {
|
729
|
-
|
727
|
+
// Can't start timer again until after we see READY or IDLE.
|
728
|
+
can_start_failover_timer_ = false;
|
730
729
|
failover_timer_.reset();
|
731
730
|
}
|
732
731
|
// Call the LB policy's ChoosePriorityLocked() to choose a priority to
|
@@ -34,7 +34,6 @@
|
|
34
34
|
|
35
35
|
#include "absl/base/attributes.h"
|
36
36
|
#include "absl/container/inlined_vector.h"
|
37
|
-
#include "absl/log/check.h"
|
38
37
|
#include "absl/log/log.h"
|
39
38
|
#include "absl/random/random.h"
|
40
39
|
#include "absl/status/status.h"
|
@@ -61,6 +60,7 @@
|
|
61
60
|
#include "src/core/util/crash.h"
|
62
61
|
#include "src/core/util/debug_location.h"
|
63
62
|
#include "src/core/util/env.h"
|
63
|
+
#include "src/core/util/grpc_check.h"
|
64
64
|
#include "src/core/util/json/json.h"
|
65
65
|
#include "src/core/util/orphanable.h"
|
66
66
|
#include "src/core/util/ref_counted.h"
|
@@ -594,7 +594,7 @@ void RingHash::RingHashEndpoint::RequestConnectionLocked() {
|
|
594
594
|
}
|
595
595
|
|
596
596
|
void RingHash::RingHashEndpoint::CreateChildPolicy() {
|
597
|
-
|
597
|
+
GRPC_CHECK(child_policy_ == nullptr);
|
598
598
|
LoadBalancingPolicy::Args lb_policy_args;
|
599
599
|
lb_policy_args.work_serializer = ring_hash_->work_serializer();
|
600
600
|
lb_policy_args.args =
|
@@ -636,7 +636,7 @@ absl::Status RingHash::RingHashEndpoint::UpdateChildPolicyLocked() {
|
|
636
636
|
CoreConfiguration::Get().lb_policy_registry().ParseLoadBalancingConfig(
|
637
637
|
Json::FromArray(
|
638
638
|
{Json::FromObject({{"pick_first", Json::FromObject({})}})}));
|
639
|
-
|
639
|
+
GRPC_CHECK(config.ok());
|
640
640
|
// Update child policy.
|
641
641
|
LoadBalancingPolicy::UpdateArgs update_args;
|
642
642
|
update_args.addresses =
|