grpc 1.73.0 → 1.75.0
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 +116 -53
- data/include/grpc/create_channel_from_endpoint.h +54 -0
- data/include/grpc/credentials.h +18 -6
- data/include/grpc/event_engine/event_engine.h +74 -17
- data/include/grpc/grpc_posix.h +20 -1
- data/include/grpc/impl/channel_arg_names.h +2 -4
- data/include/grpc/module.modulemap +1 -0
- data/include/grpc/support/json.h +24 -0
- data/src/core/call/client_call.cc +4 -4
- data/src/core/call/filter_fusion.h +1230 -0
- data/src/core/call/interception_chain.h +7 -11
- data/src/core/call/metadata.cc +22 -0
- data/src/core/call/metadata.h +24 -2
- data/src/core/channelz/channel_trace.cc +213 -115
- data/src/core/channelz/channel_trace.h +380 -86
- data/src/core/channelz/channelz.cc +274 -192
- data/src/core/channelz/channelz.h +224 -72
- data/src/core/channelz/channelz_registry.cc +2 -163
- data/src/core/channelz/channelz_registry.h +37 -6
- data/src/core/channelz/property_list.cc +353 -0
- data/src/core/channelz/property_list.h +204 -0
- data/src/core/channelz/v2tov1/convert.cc +683 -0
- data/src/core/channelz/v2tov1/convert.h +58 -0
- data/src/core/channelz/v2tov1/legacy_api.cc +425 -0
- data/src/core/channelz/v2tov1/legacy_api.h +32 -0
- data/src/core/channelz/v2tov1/property_list.cc +118 -0
- data/src/core/channelz/v2tov1/property_list.h +52 -0
- data/src/core/channelz/ztrace_collector.h +3 -2
- data/src/core/client_channel/backup_poller.cc +17 -2
- data/src/core/client_channel/client_channel.cc +17 -28
- data/src/core/client_channel/client_channel_filter.cc +24 -33
- data/src/core/client_channel/client_channel_filter.h +2 -2
- data/src/core/client_channel/client_channel_internal.h +2 -1
- data/src/core/client_channel/config_selector.h +8 -2
- data/src/core/client_channel/dynamic_filters.cc +5 -6
- data/src/core/client_channel/dynamic_filters.h +1 -1
- data/src/core/client_channel/global_subchannel_pool.cc +4 -1
- data/src/core/client_channel/load_balanced_call_destination.cc +6 -5
- data/src/core/client_channel/retry_filter.cc +21 -27
- data/src/core/client_channel/retry_filter.h +10 -7
- data/src/core/client_channel/retry_filter_legacy_call_data.cc +5 -5
- data/src/core/client_channel/retry_filter_legacy_call_data.h +1 -1
- data/src/core/client_channel/retry_interceptor.cc +30 -44
- data/src/core/client_channel/retry_interceptor.h +18 -17
- data/src/core/client_channel/retry_throttle.cc +46 -61
- data/src/core/client_channel/retry_throttle.h +17 -39
- data/src/core/client_channel/subchannel.cc +57 -25
- data/src/core/client_channel/subchannel.h +10 -0
- data/src/core/config/config_vars.cc +2 -0
- data/src/core/config/core_configuration.cc +4 -1
- data/src/core/config/core_configuration.h +23 -0
- data/src/core/credentials/call/call_creds_registry.h +125 -0
- data/src/core/credentials/call/call_creds_registry_init.cc +91 -0
- data/src/core/credentials/call/gcp_service_account_identity/gcp_service_account_identity_credentials.cc +6 -48
- data/src/core/credentials/call/jwt_token_file/jwt_token_file_call_credentials.cc +86 -0
- data/src/core/credentials/call/jwt_token_file/jwt_token_file_call_credentials.h +74 -0
- data/src/core/credentials/call/jwt_util.cc +70 -0
- data/src/core/credentials/call/jwt_util.h +32 -0
- data/src/core/credentials/transport/alts/alts_credentials.cc +5 -0
- data/src/core/credentials/transport/alts/check_gcp_environment_windows.cc +2 -0
- data/src/core/credentials/transport/channel_creds_registry_init.cc +4 -2
- data/src/core/credentials/transport/google_default/google_default_credentials.cc +72 -4
- data/src/core/credentials/transport/ssl/ssl_credentials.cc +1 -2
- data/src/core/credentials/transport/ssl/ssl_security_connector.cc +8 -3
- data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.cc +29 -24
- data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.h +19 -8
- data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.cc +96 -54
- data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.h +15 -2
- data/src/core/credentials/transport/tls/load_system_roots_supported.cc +1 -0
- data/src/core/credentials/transport/tls/spiffe_utils.cc +371 -0
- data/src/core/credentials/transport/tls/spiffe_utils.h +171 -0
- data/src/core/credentials/transport/tls/ssl_utils.cc +11 -10
- data/src/core/credentials/transport/tls/ssl_utils.h +4 -2
- data/src/core/credentials/transport/tls/tls_credentials.cc +2 -0
- data/src/core/credentials/transport/tls/tls_security_connector.cc +11 -26
- data/src/core/credentials/transport/tls/tls_security_connector.h +12 -12
- data/src/core/credentials/transport/xds/xds_credentials.cc +0 -3
- data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +1 -2
- data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.cc +8 -8
- data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.h +16 -16
- data/src/core/ext/filters/http/client/http_client_filter.cc +3 -6
- data/src/core/ext/filters/http/client_authority_filter.cc +3 -6
- data/src/core/ext/filters/http/message_compress/compression_filter.cc +8 -8
- data/src/core/ext/filters/http/message_compress/compression_filter.h +25 -22
- data/src/core/ext/filters/http/server/http_server_filter.cc +3 -6
- data/src/core/ext/filters/http/server/http_server_filter.h +12 -11
- data/src/core/ext/filters/message_size/message_size_filter.cc +4 -4
- data/src/core/ext/filters/rbac/rbac_filter.cc +1 -1
- data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +3 -5
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +120 -35
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +6 -5
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +165 -117
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +0 -3
- data/src/core/ext/transport/chttp2/transport/decode_huff.cc +1239 -3514
- data/src/core/ext/transport/chttp2/transport/decode_huff.h +1008 -1486
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +1 -0
- data/src/core/ext/transport/chttp2/transport/flow_control.h +23 -17
- data/src/core/ext/transport/chttp2/transport/frame.cc +99 -6
- data/src/core/ext/transport/chttp2/transport/frame.h +40 -2
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +7 -8
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +4 -5
- data/src/core/ext/transport/chttp2/transport/header_assembler.h +290 -0
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +4 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +11 -5
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +12 -1
- data/src/core/ext/transport/chttp2/transport/http2_client_transport.cc +1233 -0
- data/src/core/ext/transport/chttp2/transport/http2_client_transport.h +712 -0
- data/src/core/ext/transport/chttp2/transport/http2_settings.cc +11 -38
- data/src/core/ext/transport/chttp2/transport/http2_settings.h +65 -51
- data/src/core/ext/transport/chttp2/transport/http2_settings_manager.cc +61 -0
- data/src/core/ext/transport/chttp2/transport/http2_settings_manager.h +142 -0
- data/{third_party/abseil-cpp/absl/strings/cord_buffer.cc → src/core/ext/transport/chttp2/transport/http2_stats_collector.cc} +14 -14
- data/src/core/ext/transport/chttp2/transport/http2_stats_collector.h +33 -0
- data/src/core/ext/transport/chttp2/transport/http2_status.h +6 -1
- data/src/core/ext/transport/chttp2/transport/http2_transport.cc +121 -0
- data/src/core/ext/transport/chttp2/transport/http2_transport.h +76 -0
- data/src/core/ext/transport/chttp2/transport/http2_ztrace_collector.h +0 -29
- data/src/core/ext/transport/chttp2/transport/internal.h +18 -8
- data/src/core/ext/transport/chttp2/transport/keepalive.cc +105 -0
- data/src/core/ext/transport/chttp2/transport/keepalive.h +138 -0
- data/src/core/ext/transport/chttp2/transport/message_assembler.h +185 -0
- data/src/core/ext/transport/chttp2/transport/parsing.cc +4 -5
- data/src/core/ext/transport/chttp2/transport/ping_callbacks.h +19 -0
- data/src/core/ext/transport/chttp2/transport/ping_promise.cc +152 -0
- data/src/core/ext/transport/chttp2/transport/ping_promise.h +197 -0
- data/src/core/ext/transport/chttp2/transport/ping_rate_policy.cc +5 -9
- data/src/core/ext/transport/chttp2/transport/ping_rate_policy.h +11 -0
- data/src/core/ext/transport/chttp2/transport/stream_data_queue.h +607 -0
- data/src/core/ext/transport/chttp2/transport/stream_lists.cc +39 -1
- data/src/core/ext/transport/chttp2/transport/transport_common.cc +19 -0
- data/src/core/ext/transport/chttp2/transport/transport_common.h +27 -0
- data/src/core/ext/transport/chttp2/transport/writable_streams.h +254 -0
- data/src/core/ext/transport/chttp2/transport/writing.cc +41 -13
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/channelz.upb.h +4959 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/channelz.upb_minitable.c +1111 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/channelz.upb_minitable.h +108 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/channelz.upb.h +571 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/channelz.upb_minitable.c +120 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/channelz.upb_minitable.h +36 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb.h +1272 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb_minitable.c +312 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb_minitable.h +50 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb.h +1072 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb_minitable.c +230 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb_minitable.h +44 -0
- data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/channelz.upbdefs.c +716 -0
- data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/channelz.upbdefs.h +227 -0
- data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/promise.upbdefs.c +175 -0
- data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/promise.upbdefs.h +82 -0
- data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/property_list.upbdefs.c +133 -0
- data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/property_list.upbdefs.h +67 -0
- data/src/core/filter/auth/auth_filters.h +2 -27
- data/src/core/filter/auth/client_auth_filter.cc +0 -118
- data/src/core/filter/filter_args.h +9 -23
- data/src/core/filter/fused_filters.cc +154 -0
- data/src/core/handshaker/handshaker.cc +23 -14
- data/src/core/handshaker/handshaker.h +3 -0
- data/src/core/handshaker/http_connect/http_connect_handshaker.cc +3 -1
- data/src/core/handshaker/security/legacy_secure_endpoint.cc +7 -6
- data/src/core/handshaker/security/pipelined_secure_endpoint.cc +965 -0
- data/src/core/handshaker/security/secure_endpoint.cc +98 -38
- data/src/core/handshaker/security/secure_endpoint.h +8 -0
- data/src/core/handshaker/security/security_handshaker.cc +4 -1
- data/src/core/handshaker/tcp_connect/tcp_connect_handshaker.cc +7 -1
- data/src/core/lib/channel/channel_args.cc +15 -0
- data/src/core/lib/channel/channel_args.h +3 -0
- data/src/core/lib/channel/channel_stack.cc +22 -23
- data/src/core/lib/channel/channel_stack.h +9 -7
- data/src/core/lib/channel/channel_stack_builder_impl.cc +1 -1
- data/src/core/lib/channel/channel_stack_builder_impl.h +2 -7
- data/src/core/lib/channel/promise_based_filter.cc +15 -25
- data/src/core/lib/channel/promise_based_filter.h +11 -10
- data/src/core/lib/debug/trace_impl.h +0 -1
- data/src/core/lib/event_engine/ares_resolver.cc +165 -46
- data/src/core/lib/event_engine/ares_resolver.h +51 -3
- data/src/core/lib/event_engine/cf_engine/cf_engine.cc +12 -6
- data/src/core/lib/event_engine/cf_engine/cf_engine.h +2 -4
- data/src/core/lib/event_engine/cf_engine/cfsocket_listener.cc +263 -0
- data/src/core/lib/event_engine/cf_engine/cfsocket_listener.h +107 -0
- data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.cc +31 -3
- data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.h +14 -6
- data/src/core/lib/event_engine/endpoint_channel_arg_wrapper.cc +40 -0
- data/src/core/lib/event_engine/endpoint_channel_arg_wrapper.h +60 -0
- data/src/core/lib/event_engine/event_engine.cc +7 -0
- data/src/core/lib/event_engine/extensions/channelz.h +10 -6
- data/src/core/lib/event_engine/grpc_polled_fd.h +5 -0
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +139 -169
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h +17 -19
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +90 -131
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.h +13 -13
- data/src/core/lib/event_engine/posix_engine/event_poller.h +18 -23
- data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +11 -23
- data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.h +3 -2
- data/src/core/lib/event_engine/posix_engine/file_descriptor_collection.cc +124 -0
- data/src/core/lib/event_engine/posix_engine/file_descriptor_collection.h +243 -0
- data/src/core/lib/event_engine/posix_engine/grpc_polled_fd_posix.h +30 -19
- data/src/core/lib/event_engine/posix_engine/internal_errqueue.cc +6 -2
- data/src/core/lib/event_engine/posix_engine/internal_errqueue.h +6 -1
- data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +4 -4
- data/src/core/lib/event_engine/posix_engine/lockfree_event.h +3 -4
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +147 -94
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +9 -19
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +435 -229
- data/src/core/lib/event_engine/posix_engine/posix_engine.h +78 -50
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +46 -38
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +6 -4
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +32 -142
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.h +6 -5
- data/src/core/lib/event_engine/posix_engine/posix_interface.h +211 -0
- data/src/core/lib/event_engine/posix_engine/posix_interface_posix.cc +1083 -0
- data/src/core/lib/event_engine/posix_engine/posix_interface_windows.cc +281 -0
- data/src/core/lib/event_engine/posix_engine/posix_write_event_sink.cc +154 -0
- data/src/core/lib/event_engine/posix_engine/posix_write_event_sink.h +174 -0
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +3 -719
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +11 -171
- data/src/core/lib/event_engine/posix_engine/timer_manager.cc +33 -22
- data/src/core/lib/event_engine/posix_engine/timer_manager.h +13 -11
- data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +117 -151
- data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +26 -94
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.cc +26 -25
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.h +6 -2
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.cc +36 -62
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.h +6 -2
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h +7 -6
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.cc +12 -6
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h +3 -1
- data/src/core/lib/event_engine/shim.cc +9 -0
- data/src/core/lib/event_engine/shim.h +3 -0
- data/src/core/lib/event_engine/thread_pool/thread_pool.h +7 -3
- data/src/core/lib/event_engine/thread_pool/thread_pool_factory.cc +0 -17
- data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +4 -2
- data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h +3 -2
- data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc +6 -1
- data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.h +4 -0
- data/src/core/lib/event_engine/windows/windows_endpoint.h +2 -6
- data/src/core/lib/event_engine/windows/windows_engine.cc +0 -1
- data/src/core/lib/event_engine/windows/windows_engine.h +1 -3
- data/src/core/lib/event_engine/windows/windows_listener.cc +14 -2
- data/src/core/lib/experiments/experiments.cc +165 -99
- data/src/core/lib/experiments/experiments.h +65 -52
- data/src/core/lib/iomgr/combiner.cc +1 -1
- data/src/core/lib/iomgr/endpoint.cc +4 -3
- data/src/core/lib/iomgr/endpoint.h +7 -4
- data/src/core/lib/iomgr/endpoint_cfstream.cc +3 -2
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +7 -2
- data/src/core/lib/iomgr/ev_poll_posix.cc +7 -2
- data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +4 -6
- data/src/core/lib/iomgr/exec_ctx.h +3 -9
- data/src/core/lib/iomgr/socket_mutator.cc +1 -1
- data/src/core/lib/iomgr/socket_utils_posix.cc +1 -1
- data/src/core/lib/iomgr/socket_utils_posix.h +1 -1
- data/src/core/lib/iomgr/tcp_client_posix.cc +1 -1
- data/src/core/lib/iomgr/tcp_posix.cc +15 -9
- data/src/core/lib/iomgr/tcp_windows.cc +3 -2
- data/src/core/lib/promise/activity.h +3 -2
- data/src/core/lib/promise/arena_promise.h +23 -7
- data/src/core/lib/promise/detail/promise_factory.h +10 -0
- data/src/core/lib/promise/detail/promise_like.h +118 -11
- data/src/core/lib/promise/detail/promise_variant.h +50 -0
- data/src/core/lib/promise/detail/seq_state.h +687 -548
- data/src/core/lib/promise/if.h +20 -0
- data/src/core/lib/promise/inter_activity_latch.h +147 -0
- data/src/core/lib/promise/inter_activity_mutex.h +547 -0
- data/src/core/lib/promise/loop.h +65 -3
- data/src/core/lib/promise/map.h +24 -0
- data/src/core/lib/promise/match_promise.h +103 -0
- data/src/core/lib/promise/mpsc.cc +425 -0
- data/src/core/lib/promise/mpsc.h +490 -0
- data/src/core/lib/promise/party.cc +55 -6
- data/src/core/lib/promise/party.h +68 -3
- data/src/core/lib/promise/poll.h +10 -0
- data/src/core/lib/promise/race.h +31 -0
- data/src/core/lib/promise/seq.h +4 -1
- data/src/core/lib/promise/status_flag.h +7 -0
- data/src/core/lib/promise/try_seq.h +4 -1
- data/src/core/lib/promise/wait_set.cc +28 -0
- data/src/core/lib/promise/wait_set.h +86 -0
- data/src/core/lib/resource_quota/arena.h +19 -0
- data/src/core/lib/resource_quota/memory_quota.cc +90 -3
- data/src/core/lib/resource_quota/memory_quota.h +20 -9
- data/src/core/lib/resource_quota/periodic_update.cc +14 -0
- data/src/core/lib/resource_quota/periodic_update.h +8 -0
- data/src/core/lib/resource_quota/resource_quota.cc +15 -4
- data/src/core/lib/resource_quota/resource_quota.h +3 -0
- data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +1 -2
- data/src/core/lib/slice/slice.h +5 -0
- data/src/core/lib/surface/call.cc +5 -5
- data/src/core/lib/surface/call.h +6 -5
- data/src/core/lib/surface/channel_create.cc +88 -13
- data/src/core/lib/surface/channel_create.h +4 -0
- data/src/core/lib/surface/channel_init.cc +164 -47
- data/src/core/lib/surface/channel_init.h +64 -1
- data/src/core/lib/surface/completion_queue.cc +2 -4
- data/src/core/lib/surface/filter_stack_call.cc +19 -10
- data/src/core/lib/surface/init.cc +6 -15
- data/src/core/lib/surface/legacy_channel.cc +3 -5
- data/src/core/lib/surface/legacy_channel.h +3 -1
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/promise_endpoint.cc +110 -0
- data/src/core/lib/transport/promise_endpoint.h +307 -0
- data/src/core/load_balancing/child_policy_handler.cc +2 -4
- data/src/core/load_balancing/delegating_helper.h +2 -3
- data/src/core/load_balancing/endpoint_list.cc +29 -2
- data/src/core/load_balancing/grpclb/client_load_reporting_filter.cc +3 -3
- data/src/core/load_balancing/grpclb/client_load_reporting_filter.h +1 -1
- data/src/core/load_balancing/health_check_client.cc +1 -5
- data/src/core/load_balancing/lb_policy.h +1 -3
- data/src/core/load_balancing/oob_backend_metric.cc +1 -5
- data/src/core/load_balancing/pick_first/pick_first.cc +15 -5
- data/src/core/load_balancing/xds/cds.cc +10 -1
- data/src/core/load_balancing/xds/xds_cluster_impl.cc +5 -3
- data/src/core/net/socket_mutator.cc +19 -0
- data/src/core/net/socket_mutator.h +25 -0
- data/src/core/plugin_registry/grpc_plugin_registry.cc +6 -0
- data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +2 -0
- data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver.h +6 -1
- data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +2 -1
- data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.cc +8 -5
- data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.h +2 -1
- data/src/core/resolver/xds/xds_config.cc +6 -3
- data/src/core/resolver/xds/xds_config.h +9 -4
- data/src/core/resolver/xds/xds_dependency_manager.cc +22 -7
- data/src/core/resolver/xds/xds_dependency_manager.h +2 -1
- data/src/core/resolver/xds/xds_resolver.cc +31 -11
- data/src/core/server/server.cc +84 -13
- data/src/core/server/server.h +21 -2
- data/src/core/server/server_call_tracer_filter.cc +0 -66
- data/src/core/server/server_call_tracer_filter.h +64 -0
- data/src/core/server/server_config_selector_filter.cc +1 -1
- data/src/core/server/xds_server_config_fetcher.cc +63 -25
- data/src/core/service_config/service_config.h +1 -1
- data/src/core/service_config/service_config_channel_arg_filter.cc +3 -60
- data/src/core/service_config/service_config_channel_arg_filter.h +82 -0
- data/src/core/service_config/service_config_impl.h +1 -1
- data/src/core/telemetry/call_tracer.cc +20 -14
- data/src/core/telemetry/call_tracer.h +22 -17
- data/src/core/telemetry/context_list_entry.cc +38 -0
- data/src/core/telemetry/context_list_entry.h +42 -12
- data/src/core/telemetry/metrics.h +8 -8
- data/src/core/telemetry/stats_data.cc +369 -343
- data/src/core/telemetry/stats_data.h +341 -244
- data/src/core/telemetry/tcp_tracer.h +1 -1
- data/src/core/transport/auth_context.cc +20 -0
- data/src/core/transport/auth_context.h +4 -0
- data/src/core/transport/auth_context_comparator_registry.h +69 -0
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +2 -3
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +11 -3
- data/src/core/tsi/fake_transport_security.cc +17 -0
- data/src/core/tsi/ssl_transport_security.cc +205 -32
- data/src/core/tsi/ssl_transport_security.h +19 -10
- data/src/core/tsi/ssl_transport_security_utils.cc +21 -0
- data/src/core/tsi/ssl_transport_security_utils.h +4 -0
- data/src/core/tsi/transport_security_grpc.cc +8 -0
- data/src/core/tsi/transport_security_grpc.h +15 -0
- data/src/core/util/backoff.cc +1 -5
- data/src/core/util/backoff.h +1 -0
- data/src/core/util/down_cast.h +1 -1
- data/src/core/util/function_signature.h +15 -1
- data/src/core/util/http_client/httpcli.cc +12 -5
- data/src/core/util/http_client/httpcli.h +4 -1
- data/src/core/util/http_client/httpcli_security_connector.cc +3 -1
- data/src/core/util/latent_see.cc +178 -146
- data/src/core/util/latent_see.h +249 -189
- data/src/core/util/log.cc +4 -0
- data/src/core/util/memory_usage.h +268 -0
- data/src/core/util/per_cpu.cc +2 -0
- data/src/core/util/per_cpu.h +7 -0
- data/src/core/util/shared_bit_gen.h +20 -0
- data/src/core/util/single_set_ptr.h +7 -4
- data/src/core/util/upb_utils.h +42 -0
- data/src/core/util/uri.cc +3 -2
- data/src/core/util/useful.h +144 -2
- data/src/core/util/wait_for_single_owner.cc +31 -0
- data/src/core/util/wait_for_single_owner.h +24 -0
- data/src/core/util/windows/directory_reader.cc +1 -0
- data/src/core/util/windows/thd.cc +1 -3
- data/src/core/util/work_serializer.cc +1 -1
- data/src/core/xds/grpc/file_watcher_certificate_provider_factory.cc +32 -5
- data/src/core/xds/grpc/file_watcher_certificate_provider_factory.h +5 -0
- data/src/core/xds/grpc/xds_bootstrap_grpc.cc +2 -0
- data/src/core/xds/grpc/xds_bootstrap_grpc.h +5 -0
- data/src/core/xds/grpc/xds_certificate_provider.cc +5 -6
- data/src/core/xds/grpc/xds_client_grpc.cc +6 -2
- data/src/core/xds/grpc/xds_common_types_parser.cc +138 -50
- data/src/core/xds/grpc/xds_common_types_parser.h +12 -0
- data/src/core/xds/grpc/xds_http_filter.h +7 -0
- data/src/core/xds/grpc/xds_http_gcp_authn_filter.cc +22 -0
- data/src/core/xds/grpc/xds_http_gcp_authn_filter.h +3 -0
- data/src/core/xds/grpc/xds_route_config_parser.cc +15 -38
- data/src/core/xds/grpc/xds_server_grpc.cc +63 -13
- data/src/core/xds/grpc/xds_server_grpc.h +10 -2
- data/src/core/xds/grpc/xds_server_grpc_interface.h +4 -0
- data/src/core/xds/grpc/xds_transport_grpc.cc +18 -0
- data/src/core/xds/xds_client/xds_bootstrap.h +2 -0
- data/src/core/xds/xds_client/xds_client.cc +26 -5
- data/src/ruby/ext/grpc/extconf.rb +2 -0
- data/src/ruby/ext/grpc/rb_call.c +1 -8
- data/src/ruby/ext/grpc/rb_channel.c +70 -557
- data/src/ruby/ext/grpc/rb_channel.h +0 -3
- data/src/ruby/ext/grpc/rb_completion_queue.c +26 -14
- data/src/ruby/ext/grpc/rb_completion_queue.h +1 -7
- data/src/ruby/ext/grpc/rb_grpc.c +9 -5
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +2 -2
- data/src/ruby/ext/grpc/rb_loader.c +0 -4
- data/src/ruby/ext/grpc/rb_server.c +31 -50
- data/src/ruby/lib/grpc/generic/client_stub.rb +4 -4
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/spec/core_spec.rb +22 -0
- data/src/ruby/spec/generic/active_call_spec.rb +1 -1
- data/third_party/abseil-cpp/absl/algorithm/container.h +2 -19
- data/third_party/abseil-cpp/absl/base/attributes.h +76 -7
- data/third_party/abseil-cpp/absl/base/call_once.h +11 -12
- data/third_party/abseil-cpp/absl/base/config.h +20 -129
- data/third_party/abseil-cpp/absl/base/{internal/fast_type_id.h → fast_type_id.h} +11 -16
- data/third_party/abseil-cpp/absl/base/internal/cycleclock.cc +0 -5
- data/third_party/abseil-cpp/absl/base/internal/cycleclock_config.h +7 -7
- data/third_party/abseil-cpp/absl/base/internal/endian.h +34 -38
- data/third_party/abseil-cpp/absl/base/internal/iterator_traits.h +71 -0
- data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +6 -5
- data/third_party/abseil-cpp/absl/base/internal/{nullability_impl.h → nullability_deprecated.h} +45 -8
- data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +0 -9
- data/third_party/abseil-cpp/absl/base/internal/spinlock.h +3 -13
- data/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +6 -6
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +8 -3
- data/third_party/abseil-cpp/absl/base/no_destructor.h +11 -32
- data/third_party/abseil-cpp/absl/base/nullability.h +84 -72
- data/third_party/abseil-cpp/absl/base/options.h +3 -80
- data/third_party/abseil-cpp/absl/base/policy_checks.h +7 -7
- data/third_party/abseil-cpp/absl/cleanup/cleanup.h +1 -3
- data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +3 -4
- data/third_party/abseil-cpp/absl/container/btree_map.h +4 -2
- data/third_party/abseil-cpp/absl/container/btree_set.h +4 -2
- data/third_party/abseil-cpp/absl/container/fixed_array.h +7 -14
- data/third_party/abseil-cpp/absl/container/flat_hash_map.h +5 -0
- data/third_party/abseil-cpp/absl/container/flat_hash_set.h +6 -1
- data/third_party/abseil-cpp/absl/container/inlined_vector.h +8 -5
- data/third_party/abseil-cpp/absl/container/internal/btree.h +132 -29
- data/third_party/abseil-cpp/absl/container/internal/btree_container.h +175 -71
- data/third_party/abseil-cpp/absl/container/internal/common.h +43 -0
- data/third_party/abseil-cpp/absl/container/internal/common_policy_traits.h +1 -2
- data/third_party/abseil-cpp/absl/container/internal/container_memory.h +9 -10
- data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +1 -8
- data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +0 -4
- data/third_party/abseil-cpp/absl/container/internal/hashtable_control_bytes.h +527 -0
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +20 -4
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +31 -12
- data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +2 -7
- data/third_party/abseil-cpp/absl/container/internal/layout.h +26 -42
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +199 -68
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +1354 -183
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +881 -1424
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set_resize_impl.h +80 -0
- data/third_party/abseil-cpp/absl/crc/crc32c.cc +0 -4
- data/third_party/abseil-cpp/absl/crc/crc32c.h +7 -5
- data/third_party/abseil-cpp/absl/crc/internal/crc32_x86_arm_combined_simd.h +0 -22
- data/third_party/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc +45 -74
- data/third_party/abseil-cpp/absl/debugging/internal/addresses.h +57 -0
- data/third_party/abseil-cpp/absl/debugging/internal/decode_rust_punycode.cc +1 -1
- data/third_party/abseil-cpp/absl/debugging/internal/decode_rust_punycode.h +5 -5
- data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +8 -35
- data/third_party/abseil-cpp/absl/debugging/internal/demangle_rust.cc +16 -16
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +40 -37
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +16 -7
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_emscripten-inl.inc +14 -5
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +10 -4
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +27 -16
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +13 -4
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_unimplemented-inl.inc +4 -3
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_win32-inl.inc +15 -28
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +19 -9
- data/third_party/abseil-cpp/absl/debugging/stacktrace.cc +144 -27
- data/third_party/abseil-cpp/absl/debugging/stacktrace.h +73 -5
- data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +19 -9
- data/third_party/abseil-cpp/absl/debugging/symbolize_emscripten.inc +3 -2
- data/third_party/abseil-cpp/absl/debugging/symbolize_win32.inc +25 -6
- data/third_party/abseil-cpp/absl/flags/commandlineflag.h +2 -2
- data/third_party/abseil-cpp/absl/flags/flag.h +4 -3
- data/third_party/abseil-cpp/absl/flags/internal/commandlineflag.h +2 -2
- data/third_party/abseil-cpp/absl/flags/internal/flag.cc +2 -1
- data/third_party/abseil-cpp/absl/flags/internal/flag.h +7 -6
- data/third_party/abseil-cpp/absl/flags/internal/registry.h +4 -3
- data/third_party/abseil-cpp/absl/flags/reflection.cc +2 -3
- data/third_party/abseil-cpp/absl/functional/any_invocable.h +8 -10
- data/third_party/abseil-cpp/absl/functional/function_ref.h +2 -9
- data/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +110 -226
- data/third_party/abseil-cpp/absl/functional/internal/front_binder.h +10 -12
- data/third_party/abseil-cpp/absl/functional/internal/function_ref.h +2 -5
- data/third_party/abseil-cpp/absl/hash/hash.h +18 -0
- data/third_party/abseil-cpp/absl/hash/internal/hash.cc +1 -5
- data/third_party/abseil-cpp/absl/hash/internal/hash.h +86 -61
- data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.cc +25 -68
- data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.h +2 -6
- data/third_party/abseil-cpp/absl/hash/internal/weakly_mixed_integer.h +38 -0
- data/third_party/abseil-cpp/absl/log/check.h +2 -1
- data/third_party/abseil-cpp/absl/log/globals.h +4 -5
- data/third_party/abseil-cpp/absl/log/internal/append_truncated.h +28 -0
- data/third_party/abseil-cpp/absl/log/internal/check_op.cc +22 -22
- data/third_party/abseil-cpp/absl/log/internal/check_op.h +65 -62
- data/third_party/abseil-cpp/absl/log/internal/conditions.cc +5 -3
- data/third_party/abseil-cpp/absl/log/internal/conditions.h +7 -2
- data/third_party/abseil-cpp/absl/log/internal/log_message.cc +85 -43
- data/third_party/abseil-cpp/absl/log/internal/log_message.h +84 -59
- data/third_party/abseil-cpp/absl/log/internal/nullstream.h +1 -0
- data/third_party/abseil-cpp/absl/log/internal/proto.cc +3 -2
- data/third_party/abseil-cpp/absl/log/internal/proto.h +3 -3
- data/third_party/abseil-cpp/absl/log/internal/strip.h +4 -12
- data/third_party/abseil-cpp/absl/log/internal/vlog_config.h +8 -6
- data/third_party/abseil-cpp/absl/log/internal/voidify.h +10 -4
- data/third_party/abseil-cpp/absl/log/log.h +48 -35
- data/third_party/abseil-cpp/absl/log/log_sink_registry.h +2 -2
- data/third_party/abseil-cpp/absl/meta/type_traits.h +46 -175
- data/third_party/abseil-cpp/absl/numeric/bits.h +68 -2
- data/third_party/abseil-cpp/absl/numeric/int128.cc +0 -52
- data/third_party/abseil-cpp/absl/numeric/internal/bits.h +7 -3
- data/third_party/abseil-cpp/absl/profiling/internal/exponential_biased.cc +1 -1
- data/third_party/abseil-cpp/absl/random/bit_gen_ref.h +10 -11
- data/third_party/abseil-cpp/absl/random/distributions.h +6 -8
- data/third_party/abseil-cpp/absl/random/gaussian_distribution.h +1 -1
- data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +5 -6
- data/third_party/abseil-cpp/absl/random/internal/{pool_urbg.cc → entropy_pool.cc} +22 -90
- data/third_party/abseil-cpp/absl/random/internal/entropy_pool.h +35 -0
- data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +5 -6
- data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +1 -1
- data/third_party/abseil-cpp/absl/random/internal/seed_material.cc +20 -12
- data/third_party/abseil-cpp/absl/random/internal/seed_material.h +5 -5
- data/third_party/abseil-cpp/absl/random/random.h +88 -53
- data/third_party/abseil-cpp/absl/random/seed_sequences.cc +6 -2
- data/third_party/abseil-cpp/absl/status/internal/status_internal.cc +3 -4
- data/third_party/abseil-cpp/absl/status/internal/status_internal.h +3 -4
- data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +4 -3
- data/third_party/abseil-cpp/absl/status/status.cc +4 -8
- data/third_party/abseil-cpp/absl/status/status.h +8 -8
- data/third_party/abseil-cpp/absl/status/status_payload_printer.h +2 -2
- data/third_party/abseil-cpp/absl/status/statusor.cc +2 -2
- data/third_party/abseil-cpp/absl/status/statusor.h +6 -6
- data/third_party/abseil-cpp/absl/strings/ascii.cc +9 -9
- data/third_party/abseil-cpp/absl/strings/ascii.h +18 -18
- data/third_party/abseil-cpp/absl/strings/charconv.cc +21 -22
- data/third_party/abseil-cpp/absl/strings/charconv.h +5 -5
- data/third_party/abseil-cpp/absl/strings/cord.cc +54 -58
- data/third_party/abseil-cpp/absl/strings/cord.h +94 -83
- data/third_party/abseil-cpp/absl/strings/cord_analysis.cc +11 -11
- data/third_party/abseil-cpp/absl/strings/cord_analysis.h +3 -3
- data/third_party/abseil-cpp/absl/strings/escaping.cc +130 -149
- data/third_party/abseil-cpp/absl/strings/escaping.h +9 -10
- data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.cc +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +6 -8
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +0 -4
- data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +0 -4
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +7 -63
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +1 -11
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +0 -22
- data/third_party/abseil-cpp/absl/strings/internal/str_format/output.cc +5 -3
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +4 -2
- data/third_party/abseil-cpp/absl/strings/internal/str_join_internal.h +3 -3
- data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +0 -5
- data/third_party/abseil-cpp/absl/strings/internal/utf8.cc +96 -1
- data/third_party/abseil-cpp/absl/strings/internal/utf8.h +15 -1
- data/third_party/abseil-cpp/absl/strings/numbers.cc +53 -32
- data/third_party/abseil-cpp/absl/strings/numbers.h +87 -58
- data/third_party/abseil-cpp/absl/strings/str_cat.cc +6 -7
- data/third_party/abseil-cpp/absl/strings/str_cat.h +32 -32
- data/third_party/abseil-cpp/absl/strings/str_format.h +18 -18
- data/third_party/abseil-cpp/absl/strings/str_replace.cc +3 -3
- data/third_party/abseil-cpp/absl/strings/str_replace.h +6 -6
- data/third_party/abseil-cpp/absl/strings/string_view.cc +4 -9
- data/third_party/abseil-cpp/absl/strings/string_view.h +27 -32
- data/third_party/abseil-cpp/absl/strings/strip.h +4 -4
- data/third_party/abseil-cpp/absl/strings/substitute.cc +5 -4
- data/third_party/abseil-cpp/absl/strings/substitute.h +66 -64
- data/third_party/abseil-cpp/absl/synchronization/internal/futex_waiter.cc +0 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.cc +0 -5
- data/third_party/abseil-cpp/absl/synchronization/internal/pthread_waiter.cc +0 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/sem_waiter.cc +0 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/stdcpp_waiter.cc +0 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter_base.cc +0 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/win32_waiter.cc +0 -4
- data/third_party/abseil-cpp/absl/synchronization/mutex.cc +1 -1
- data/third_party/abseil-cpp/absl/synchronization/mutex.h +97 -69
- data/third_party/abseil-cpp/absl/synchronization/notification.h +1 -1
- data/third_party/abseil-cpp/absl/time/civil_time.cc +1 -0
- data/third_party/abseil-cpp/absl/time/duration.cc +12 -7
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +1 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +90 -111
- data/third_party/abseil-cpp/absl/time/time.h +20 -15
- data/third_party/abseil-cpp/absl/types/optional.h +7 -747
- data/third_party/abseil-cpp/absl/types/span.h +13 -11
- data/third_party/abseil-cpp/absl/types/variant.h +5 -784
- data/third_party/abseil-cpp/absl/utility/utility.h +10 -185
- data/third_party/cares/cares/include/ares.h +925 -460
- data/third_party/cares/cares/include/ares_dns.h +86 -71
- data/third_party/cares/cares/include/ares_dns_record.h +1118 -0
- data/third_party/cares/cares/include/ares_nameser.h +215 -189
- data/third_party/cares/cares/include/ares_version.h +37 -14
- data/third_party/cares/cares/src/lib/ares_addrinfo2hostent.c +305 -0
- data/third_party/cares/cares/src/lib/ares_addrinfo_localhost.c +245 -0
- data/third_party/cares/cares/src/lib/ares_android.c +216 -164
- data/third_party/cares/cares/src/lib/ares_android.h +25 -14
- data/third_party/cares/cares/src/lib/ares_cancel.c +68 -44
- data/third_party/cares/cares/src/lib/ares_close_sockets.c +137 -0
- data/third_party/cares/cares/src/lib/ares_conn.c +511 -0
- data/third_party/cares/cares/src/lib/ares_conn.h +196 -0
- data/third_party/cares/cares/src/lib/ares_cookie.c +461 -0
- data/third_party/cares/cares/src/lib/ares_data.c +93 -181
- data/third_party/cares/cares/src/lib/ares_data.h +50 -39
- data/third_party/cares/cares/src/lib/ares_destroy.c +127 -89
- data/third_party/cares/cares/src/lib/ares_free_hostent.c +35 -24
- data/third_party/cares/cares/src/lib/ares_free_string.c +24 -16
- data/third_party/cares/cares/src/lib/ares_freeaddrinfo.c +45 -38
- data/third_party/cares/cares/src/lib/ares_getaddrinfo.c +549 -663
- data/third_party/cares/cares/src/lib/ares_getenv.c +25 -15
- data/third_party/cares/cares/src/lib/ares_getenv.h +26 -18
- data/third_party/cares/cares/src/lib/ares_gethostbyaddr.c +163 -221
- data/third_party/cares/cares/src/lib/ares_gethostbyname.c +222 -223
- data/third_party/cares/cares/src/lib/ares_getnameinfo.c +328 -338
- data/third_party/cares/cares/src/lib/ares_hosts_file.c +952 -0
- data/third_party/cares/cares/src/lib/ares_inet_net_pton.h +25 -19
- data/third_party/cares/cares/src/lib/ares_init.c +425 -2091
- data/third_party/cares/cares/src/lib/ares_ipv6.h +63 -33
- data/third_party/cares/cares/src/lib/ares_library_init.c +110 -54
- data/third_party/cares/cares/src/lib/ares_metrics.c +261 -0
- data/third_party/cares/cares/src/lib/ares_options.c +418 -332
- data/third_party/cares/cares/src/lib/ares_parse_into_addrinfo.c +179 -0
- data/third_party/cares/cares/src/lib/ares_private.h +558 -356
- data/third_party/cares/cares/src/lib/ares_process.c +1224 -1369
- data/third_party/cares/cares/src/lib/ares_qcache.c +430 -0
- data/third_party/cares/cares/src/lib/ares_query.c +126 -121
- data/third_party/cares/cares/src/lib/ares_search.c +564 -262
- data/third_party/cares/cares/src/lib/ares_send.c +264 -93
- data/third_party/cares/cares/src/lib/ares_set_socket_functions.c +588 -0
- data/third_party/cares/cares/src/lib/ares_setup.h +115 -111
- data/third_party/cares/cares/src/lib/ares_socket.c +425 -0
- data/third_party/cares/cares/src/lib/ares_socket.h +163 -0
- data/third_party/cares/cares/src/lib/ares_sortaddrinfo.c +447 -0
- data/third_party/cares/cares/src/lib/ares_strerror.c +83 -48
- data/third_party/cares/cares/src/lib/ares_sysconfig.c +639 -0
- data/third_party/cares/cares/src/lib/ares_sysconfig_files.c +839 -0
- data/third_party/cares/cares/src/lib/ares_sysconfig_mac.c +373 -0
- data/third_party/cares/cares/src/lib/ares_sysconfig_win.c +621 -0
- data/third_party/cares/cares/src/lib/ares_timeout.c +136 -73
- data/third_party/cares/cares/src/lib/ares_update_servers.c +1362 -0
- data/third_party/cares/cares/src/lib/ares_version.c +29 -4
- data/third_party/cares/cares/src/lib/config-dos.h +88 -89
- data/third_party/cares/cares/src/lib/config-win32.h +122 -77
- data/third_party/cares/cares/src/lib/dsa/ares_array.c +394 -0
- data/third_party/cares/cares/src/lib/dsa/ares_htable.c +447 -0
- data/third_party/cares/cares/src/lib/dsa/ares_htable.h +174 -0
- data/third_party/cares/cares/src/lib/dsa/ares_htable_asvp.c +224 -0
- data/third_party/cares/cares/src/lib/dsa/ares_htable_dict.c +228 -0
- data/third_party/cares/cares/src/lib/dsa/ares_htable_strvp.c +210 -0
- data/third_party/cares/cares/src/lib/dsa/ares_htable_szvp.c +188 -0
- data/third_party/cares/cares/src/lib/dsa/ares_htable_vpstr.c +186 -0
- data/third_party/cares/cares/src/lib/dsa/ares_htable_vpvp.c +194 -0
- data/third_party/cares/cares/src/lib/dsa/ares_llist.c +382 -0
- data/third_party/cares/cares/src/lib/dsa/ares_slist.c +479 -0
- data/third_party/cares/cares/src/lib/dsa/ares_slist.h +207 -0
- data/third_party/cares/cares/src/lib/event/ares_event.h +191 -0
- data/third_party/cares/cares/src/lib/event/ares_event_configchg.c +743 -0
- data/third_party/cares/cares/src/lib/event/ares_event_epoll.c +192 -0
- data/third_party/cares/cares/src/lib/event/ares_event_kqueue.c +248 -0
- data/third_party/cares/cares/src/lib/event/ares_event_poll.c +140 -0
- data/third_party/cares/cares/src/lib/event/ares_event_select.c +159 -0
- data/third_party/cares/cares/src/lib/event/ares_event_thread.c +567 -0
- data/third_party/cares/cares/src/lib/event/ares_event_wake_pipe.c +166 -0
- data/third_party/cares/cares/src/lib/event/ares_event_win32.c +978 -0
- data/third_party/cares/cares/src/lib/event/ares_event_win32.h +161 -0
- data/third_party/cares/cares/src/lib/include/ares_array.h +276 -0
- data/third_party/cares/cares/src/lib/include/ares_buf.h +732 -0
- data/third_party/cares/cares/src/lib/include/ares_htable_asvp.h +130 -0
- data/third_party/cares/cares/src/lib/include/ares_htable_dict.h +123 -0
- data/third_party/cares/cares/src/lib/include/ares_htable_strvp.h +130 -0
- data/third_party/cares/cares/src/lib/include/ares_htable_szvp.h +118 -0
- data/third_party/cares/cares/src/lib/include/ares_htable_vpstr.h +111 -0
- data/third_party/cares/cares/src/lib/include/ares_htable_vpvp.h +128 -0
- data/third_party/cares/cares/src/lib/include/ares_llist.h +239 -0
- data/third_party/cares/cares/src/lib/include/ares_mem.h +38 -0
- data/third_party/cares/cares/src/lib/include/ares_str.h +244 -0
- data/third_party/cares/cares/src/lib/inet_net_pton.c +202 -157
- data/third_party/cares/cares/src/lib/inet_ntop.c +87 -69
- data/third_party/cares/cares/src/lib/legacy/ares_create_query.c +78 -0
- data/third_party/cares/cares/src/lib/legacy/ares_expand_name.c +99 -0
- data/third_party/cares/cares/src/lib/legacy/ares_expand_string.c +107 -0
- data/third_party/cares/cares/src/lib/legacy/ares_fds.c +80 -0
- data/third_party/cares/cares/src/lib/legacy/ares_getsock.c +85 -0
- data/third_party/cares/cares/src/lib/legacy/ares_parse_a_reply.c +107 -0
- data/third_party/cares/cares/src/lib/legacy/ares_parse_aaaa_reply.c +109 -0
- data/third_party/cares/cares/src/lib/legacy/ares_parse_caa_reply.c +137 -0
- data/third_party/cares/cares/src/lib/legacy/ares_parse_mx_reply.c +110 -0
- data/third_party/cares/cares/src/lib/legacy/ares_parse_naptr_reply.c +132 -0
- data/third_party/cares/cares/src/lib/legacy/ares_parse_ns_reply.c +154 -0
- data/third_party/cares/cares/src/lib/legacy/ares_parse_ptr_reply.c +213 -0
- data/third_party/cares/cares/src/lib/legacy/ares_parse_soa_reply.c +115 -0
- data/third_party/cares/cares/src/lib/legacy/ares_parse_srv_reply.c +114 -0
- data/third_party/cares/cares/src/lib/legacy/ares_parse_txt_reply.c +144 -0
- data/third_party/cares/cares/src/lib/legacy/ares_parse_uri_reply.c +113 -0
- data/third_party/cares/cares/src/lib/record/ares_dns_mapping.c +982 -0
- data/third_party/cares/cares/src/lib/record/ares_dns_multistring.c +307 -0
- data/third_party/cares/cares/src/lib/record/ares_dns_multistring.h +72 -0
- data/third_party/cares/cares/src/lib/record/ares_dns_name.c +673 -0
- data/third_party/cares/cares/src/lib/record/ares_dns_parse.c +1329 -0
- data/third_party/cares/cares/src/lib/record/ares_dns_private.h +273 -0
- data/third_party/cares/cares/src/lib/record/ares_dns_record.c +1661 -0
- data/third_party/cares/cares/src/lib/record/ares_dns_write.c +1229 -0
- data/third_party/cares/cares/src/lib/str/ares_buf.c +1498 -0
- data/third_party/cares/cares/src/lib/str/ares_str.c +508 -0
- data/third_party/cares/cares/src/lib/str/ares_strsplit.c +90 -0
- data/third_party/cares/cares/src/lib/str/ares_strsplit.h +51 -0
- data/third_party/cares/cares/src/lib/thirdparty/apple/dnsinfo.h +122 -0
- data/third_party/cares/cares/src/lib/util/ares_iface_ips.c +628 -0
- data/third_party/cares/cares/src/lib/util/ares_iface_ips.h +139 -0
- data/third_party/cares/cares/src/lib/util/ares_math.c +158 -0
- data/third_party/cares/cares/src/lib/util/ares_math.h +45 -0
- data/third_party/cares/cares/src/lib/util/ares_rand.c +389 -0
- data/third_party/cares/cares/src/lib/util/ares_rand.h +36 -0
- data/third_party/cares/cares/src/lib/util/ares_threads.c +614 -0
- data/third_party/cares/cares/src/lib/util/ares_threads.h +60 -0
- data/third_party/cares/cares/src/lib/util/ares_time.h +48 -0
- data/third_party/cares/cares/src/lib/util/ares_timeval.c +95 -0
- data/third_party/cares/cares/src/lib/util/ares_uri.c +1626 -0
- data/third_party/cares/cares/src/lib/util/ares_uri.h +252 -0
- data/third_party/cares/cares/src/lib/windows_port.c +16 -9
- metadata +192 -68
- data/src/core/lib/event_engine/forkable.cc +0 -105
- data/src/core/lib/event_engine/forkable.h +0 -67
- data/src/core/lib/iomgr/python_util.h +0 -46
- data/src/core/util/ring_buffer.h +0 -122
- data/third_party/abseil-cpp/absl/base/internal/inline_variable.h +0 -108
- data/third_party/abseil-cpp/absl/base/internal/invoke.h +0 -241
- data/third_party/abseil-cpp/absl/log/log_entry.cc +0 -41
- data/third_party/abseil-cpp/absl/random/internal/pool_urbg.h +0 -131
- data/third_party/abseil-cpp/absl/types/bad_optional_access.cc +0 -66
- data/third_party/abseil-cpp/absl/types/bad_optional_access.h +0 -78
- data/third_party/abseil-cpp/absl/types/bad_variant_access.cc +0 -82
- data/third_party/abseil-cpp/absl/types/bad_variant_access.h +0 -82
- data/third_party/abseil-cpp/absl/types/internal/optional.h +0 -352
- data/third_party/abseil-cpp/absl/types/internal/variant.h +0 -1622
- data/third_party/cares/cares/include/ares_rules.h +0 -125
- data/third_party/cares/cares/src/lib/ares__addrinfo2hostent.c +0 -266
- data/third_party/cares/cares/src/lib/ares__addrinfo_localhost.c +0 -240
- data/third_party/cares/cares/src/lib/ares__close_sockets.c +0 -61
- data/third_party/cares/cares/src/lib/ares__get_hostent.c +0 -260
- data/third_party/cares/cares/src/lib/ares__parse_into_addrinfo.c +0 -229
- data/third_party/cares/cares/src/lib/ares__read_line.c +0 -73
- data/third_party/cares/cares/src/lib/ares__readaddrinfo.c +0 -258
- data/third_party/cares/cares/src/lib/ares__sortaddrinfo.c +0 -507
- data/third_party/cares/cares/src/lib/ares__timeval.c +0 -111
- data/third_party/cares/cares/src/lib/ares_create_query.c +0 -197
- data/third_party/cares/cares/src/lib/ares_expand_name.c +0 -311
- data/third_party/cares/cares/src/lib/ares_expand_string.c +0 -67
- data/third_party/cares/cares/src/lib/ares_fds.c +0 -59
- data/third_party/cares/cares/src/lib/ares_getsock.c +0 -66
- data/third_party/cares/cares/src/lib/ares_iphlpapi.h +0 -221
- data/third_party/cares/cares/src/lib/ares_llist.c +0 -63
- data/third_party/cares/cares/src/lib/ares_llist.h +0 -39
- data/third_party/cares/cares/src/lib/ares_mkquery.c +0 -24
- data/third_party/cares/cares/src/lib/ares_nowarn.c +0 -260
- data/third_party/cares/cares/src/lib/ares_nowarn.h +0 -61
- data/third_party/cares/cares/src/lib/ares_parse_a_reply.c +0 -90
- data/third_party/cares/cares/src/lib/ares_parse_aaaa_reply.c +0 -92
- data/third_party/cares/cares/src/lib/ares_parse_caa_reply.c +0 -199
- data/third_party/cares/cares/src/lib/ares_parse_mx_reply.c +0 -164
- data/third_party/cares/cares/src/lib/ares_parse_naptr_reply.c +0 -183
- data/third_party/cares/cares/src/lib/ares_parse_ns_reply.c +0 -177
- data/third_party/cares/cares/src/lib/ares_parse_ptr_reply.c +0 -228
- data/third_party/cares/cares/src/lib/ares_parse_soa_reply.c +0 -179
- data/third_party/cares/cares/src/lib/ares_parse_srv_reply.c +0 -168
- data/third_party/cares/cares/src/lib/ares_parse_txt_reply.c +0 -214
- data/third_party/cares/cares/src/lib/ares_parse_uri_reply.c +0 -184
- data/third_party/cares/cares/src/lib/ares_platform.c +0 -11042
- data/third_party/cares/cares/src/lib/ares_platform.h +0 -43
- data/third_party/cares/cares/src/lib/ares_rand.c +0 -279
- data/third_party/cares/cares/src/lib/ares_strcasecmp.c +0 -66
- data/third_party/cares/cares/src/lib/ares_strcasecmp.h +0 -30
- data/third_party/cares/cares/src/lib/ares_strdup.c +0 -42
- data/third_party/cares/cares/src/lib/ares_strdup.h +0 -24
- data/third_party/cares/cares/src/lib/ares_strsplit.c +0 -94
- data/third_party/cares/cares/src/lib/ares_strsplit.h +0 -42
- data/third_party/cares/cares/src/lib/ares_writev.c +0 -79
- data/third_party/cares/cares/src/lib/ares_writev.h +0 -36
- data/third_party/cares/cares/src/lib/bitncmp.c +0 -59
- data/third_party/cares/cares/src/lib/bitncmp.h +0 -26
- data/third_party/cares/cares/src/lib/setup_once.h +0 -554
- data/third_party/cares/cares/src/tools/ares_getopt.h +0 -53
@@ -32,6 +32,7 @@
|
|
32
32
|
#include <optional>
|
33
33
|
#include <set>
|
34
34
|
#include <string>
|
35
|
+
#include <type_traits>
|
35
36
|
#include <utility>
|
36
37
|
|
37
38
|
#include "absl/base/thread_annotations.h"
|
@@ -50,6 +51,7 @@
|
|
50
51
|
#include "src/core/util/time.h"
|
51
52
|
#include "src/core/util/time_precise.h"
|
52
53
|
#include "src/core/util/useful.h"
|
54
|
+
#include "src/proto/grpc/channelz/v2/channelz.upb.h"
|
53
55
|
|
54
56
|
// Channel arg key for channelz node.
|
55
57
|
#define GRPC_ARG_CHANNELZ_CHANNEL_NODE \
|
@@ -80,6 +82,8 @@ namespace channelz {
|
|
80
82
|
class SocketNode;
|
81
83
|
class ListenSocketNode;
|
82
84
|
class DataSource;
|
85
|
+
class DataSink;
|
86
|
+
class PropertyList;
|
83
87
|
class ZTrace;
|
84
88
|
|
85
89
|
namespace testing {
|
@@ -101,6 +105,7 @@ class BaseNode : public DualRefCounted<BaseNode> {
|
|
101
105
|
kListenSocket,
|
102
106
|
kSocket,
|
103
107
|
kCall,
|
108
|
+
kResourceQuota,
|
104
109
|
};
|
105
110
|
|
106
111
|
static absl::string_view EntityTypeString(EntityType type) {
|
@@ -119,12 +124,51 @@ class BaseNode : public DualRefCounted<BaseNode> {
|
|
119
124
|
return "socket";
|
120
125
|
case EntityType::kCall:
|
121
126
|
return "call";
|
127
|
+
case EntityType::kResourceQuota:
|
128
|
+
return "resource_quota";
|
122
129
|
}
|
123
130
|
return "unknown";
|
124
131
|
}
|
125
132
|
|
133
|
+
static absl::string_view EntityTypeToKind(EntityType type) {
|
134
|
+
switch (type) {
|
135
|
+
case EntityType::kTopLevelChannel:
|
136
|
+
return "channel";
|
137
|
+
case EntityType::kInternalChannel:
|
138
|
+
return "internal_channel";
|
139
|
+
case EntityType::kSubchannel:
|
140
|
+
return "subchannel";
|
141
|
+
case EntityType::kServer:
|
142
|
+
return "server";
|
143
|
+
case EntityType::kListenSocket:
|
144
|
+
return "listen_socket";
|
145
|
+
case EntityType::kSocket:
|
146
|
+
return "socket";
|
147
|
+
case EntityType::kCall:
|
148
|
+
return "call";
|
149
|
+
case EntityType::kResourceQuota:
|
150
|
+
return "resource_quota";
|
151
|
+
}
|
152
|
+
}
|
153
|
+
|
154
|
+
static std::optional<EntityType> KindToEntityType(absl::string_view kind) {
|
155
|
+
if (kind == "channel") return EntityType::kTopLevelChannel;
|
156
|
+
if (kind == "internal_channel") return EntityType::kInternalChannel;
|
157
|
+
if (kind == "subchannel") return EntityType::kSubchannel;
|
158
|
+
if (kind == "server") return EntityType::kServer;
|
159
|
+
if (kind == "listen_socket") return EntityType::kListenSocket;
|
160
|
+
if (kind == "socket") return EntityType::kSocket;
|
161
|
+
if (kind == "call") return EntityType::kCall;
|
162
|
+
if (kind == "resource_quota") return EntityType::kResourceQuota;
|
163
|
+
return std::nullopt;
|
164
|
+
}
|
165
|
+
|
126
166
|
protected:
|
127
|
-
BaseNode(EntityType type, std::string name);
|
167
|
+
BaseNode(EntityType type, size_t max_trace_memory, std::string name);
|
168
|
+
|
169
|
+
// Leaf derived types should call NodeConstructed() in their constructors
|
170
|
+
// to complete the initialization.
|
171
|
+
void NodeConstructed();
|
128
172
|
|
129
173
|
public:
|
130
174
|
void Orphaned() override;
|
@@ -173,8 +217,25 @@ class BaseNode : public DualRefCounted<BaseNode> {
|
|
173
217
|
absl::AnyInvocable<void(Json output)> callback);
|
174
218
|
Json::Object AdditionalInfo();
|
175
219
|
|
220
|
+
const ChannelTrace& trace() const { return trace_; }
|
221
|
+
template <typename... Args>
|
222
|
+
ChannelTrace::Node NewTraceNode(Args&&... args) {
|
223
|
+
return trace_.NewNode(std::forward<Args>(args)...);
|
224
|
+
}
|
225
|
+
ChannelTrace& mutable_trace() { return trace_; }
|
226
|
+
|
227
|
+
void SerializeEntity(grpc_channelz_v2_Entity* entity, upb_Arena* arena);
|
228
|
+
|
229
|
+
std::string SerializeEntityToString();
|
230
|
+
|
176
231
|
protected:
|
177
232
|
void PopulateJsonFromDataSources(Json::Object& json);
|
233
|
+
// V2: Add any node-specific data to the sink.
|
234
|
+
// This is information that used to be provided by overloaded RenderJson
|
235
|
+
// methods.
|
236
|
+
// Over time the hope is that we can eliminate this method and move all
|
237
|
+
// functionality into data sources.
|
238
|
+
virtual void AddNodeSpecificData(DataSink sink);
|
178
239
|
|
179
240
|
private:
|
180
241
|
// to allow the ChannelzRegistry to set uuid_ under its lock.
|
@@ -188,6 +249,7 @@ class BaseNode : public DualRefCounted<BaseNode> {
|
|
188
249
|
intptr_t UuidSlow();
|
189
250
|
|
190
251
|
const EntityType type_;
|
252
|
+
bool node_constructed_called_ = false;
|
191
253
|
uint64_t orphaned_index_ = 0; // updated by registry
|
192
254
|
std::atomic<intptr_t> uuid_;
|
193
255
|
std::string name_;
|
@@ -198,8 +260,22 @@ class BaseNode : public DualRefCounted<BaseNode> {
|
|
198
260
|
BaseNode* next_; // updated by registry
|
199
261
|
mutable Mutex parent_mu_;
|
200
262
|
ParentSet parents_ ABSL_GUARDED_BY(parent_mu_);
|
263
|
+
ChannelTrace trace_;
|
201
264
|
};
|
202
265
|
|
266
|
+
namespace detail {
|
267
|
+
inline ChannelTrace* LogOutputFrom(BaseNode* n) {
|
268
|
+
if (n == nullptr) return nullptr;
|
269
|
+
return LogOutputFrom(n->mutable_trace());
|
270
|
+
}
|
271
|
+
|
272
|
+
template <typename N>
|
273
|
+
inline std::enable_if_t<std::is_base_of_v<BaseNode, N>, ChannelTrace*>
|
274
|
+
LogOutputFrom(const RefCountedPtr<N>& n) {
|
275
|
+
return LogOutputFrom(n.get());
|
276
|
+
}
|
277
|
+
} // namespace detail
|
278
|
+
|
203
279
|
class ZTrace {
|
204
280
|
public:
|
205
281
|
virtual ~ZTrace() = default;
|
@@ -209,15 +285,79 @@ class ZTrace {
|
|
209
285
|
absl::AnyInvocable<void(Json)>) = 0;
|
210
286
|
};
|
211
287
|
|
288
|
+
// This class is used to collect additional information about the channelz
|
289
|
+
// node. It's the backing implementation for DataSink. channelz users should
|
290
|
+
// use DataSink instead of this class directly.
|
291
|
+
// We form a shared_ptr<> around this class during collection.
|
292
|
+
// In DataSink we use a weak_ptr<> to allow rapid resource reclamation once
|
293
|
+
// the collection is complete (or has timed out).
|
294
|
+
class DataSinkImplementation {
|
295
|
+
public:
|
296
|
+
class Data {
|
297
|
+
public:
|
298
|
+
virtual ~Data() = default;
|
299
|
+
virtual Json::Object ToJson() = 0;
|
300
|
+
virtual void FillProto(google_protobuf_Any* any, upb_Arena* arena) = 0;
|
301
|
+
};
|
302
|
+
|
303
|
+
void AddData(absl::string_view name, std::unique_ptr<Data> data);
|
304
|
+
Json::Object Finalize(bool timed_out);
|
305
|
+
void Finalize(bool timed_out, grpc_channelz_v2_Entity* entity,
|
306
|
+
upb_Arena* arena);
|
307
|
+
|
308
|
+
private:
|
309
|
+
Mutex mu_;
|
310
|
+
std::map<std::string, std::unique_ptr<Data>> additional_info_
|
311
|
+
ABSL_GUARDED_BY(mu_);
|
312
|
+
};
|
313
|
+
|
314
|
+
// Wrapper around absl::AnyInvocable<void()> that is used to notify when the
|
315
|
+
// DataSink has completed.
|
316
|
+
// We hold a shared_ptr<> around this class in DataSink to keep knowledge of
|
317
|
+
// when the DataSink has completed.
|
318
|
+
class DataSinkCompletionNotification {
|
319
|
+
public:
|
320
|
+
explicit DataSinkCompletionNotification(absl::AnyInvocable<void()> callback)
|
321
|
+
: callback_(std::move(callback)) {}
|
322
|
+
~DataSinkCompletionNotification() { callback_(); }
|
323
|
+
|
324
|
+
private:
|
325
|
+
absl::AnyInvocable<void()> callback_;
|
326
|
+
};
|
327
|
+
|
212
328
|
class DataSink {
|
213
329
|
public:
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
330
|
+
DataSink(std::shared_ptr<DataSinkImplementation> impl,
|
331
|
+
std::shared_ptr<DataSinkCompletionNotification> notification)
|
332
|
+
: impl_(impl), notification_(std::move(notification)) {}
|
333
|
+
|
334
|
+
template <typename T>
|
335
|
+
std::void_t<decltype(std::declval<T>().TakeJsonObject())> AddData(
|
336
|
+
absl::string_view name, T value) {
|
337
|
+
class DataImpl final : public DataSinkImplementation::Data {
|
338
|
+
public:
|
339
|
+
explicit DataImpl(T value) : value_(std::move(value)) {}
|
340
|
+
Json::Object ToJson() override { return value_.TakeJsonObject(); }
|
341
|
+
void FillProto(google_protobuf_Any* any, upb_Arena* arena) override {
|
342
|
+
value_.FillAny(any, arena);
|
343
|
+
}
|
344
|
+
|
345
|
+
private:
|
346
|
+
T value_;
|
347
|
+
};
|
348
|
+
AddData(name, std::make_unique<DataImpl>(std::move(value)));
|
349
|
+
}
|
218
350
|
|
219
|
-
|
220
|
-
|
351
|
+
private:
|
352
|
+
void AddData(absl::string_view name,
|
353
|
+
std::unique_ptr<DataSinkImplementation::Data> data) {
|
354
|
+
auto impl = impl_.lock();
|
355
|
+
if (impl == nullptr) return;
|
356
|
+
impl->AddData(name, std::move(data));
|
357
|
+
}
|
358
|
+
|
359
|
+
std::weak_ptr<DataSinkImplementation> impl_;
|
360
|
+
std::shared_ptr<DataSinkCompletionNotification> notification_;
|
221
361
|
};
|
222
362
|
|
223
363
|
class DataSource {
|
@@ -227,7 +367,7 @@ class DataSource {
|
|
227
367
|
// Add any relevant json fragments to the output.
|
228
368
|
// This method must not cause the DataSource to be deleted, or else there will
|
229
369
|
// be a deadlock.
|
230
|
-
virtual void AddData(DataSink
|
370
|
+
virtual void AddData(DataSink) {}
|
231
371
|
|
232
372
|
// If this data source exports some ztrace, return it here.
|
233
373
|
virtual std::unique_ptr<ZTrace> GetZTrace(absl::string_view /*name*/) {
|
@@ -237,12 +377,17 @@ class DataSource {
|
|
237
377
|
protected:
|
238
378
|
~DataSource();
|
239
379
|
RefCountedPtr<BaseNode> channelz_node() { return node_; }
|
380
|
+
const BaseNode* channelz_node() const { return node_.get(); }
|
381
|
+
|
382
|
+
// This method must be called in the most derived class's constructor.
|
383
|
+
// It adds this data source to the node's list of data sources.
|
384
|
+
void SourceConstructed();
|
240
385
|
|
241
386
|
// This method must be called in the most derived class's destructor.
|
242
387
|
// It removes this data source from the node's list of data sources.
|
243
388
|
// If it is not called, then the AddData() function pointer may be invalid
|
244
389
|
// when the node is queried.
|
245
|
-
void
|
390
|
+
void SourceDestructing();
|
246
391
|
|
247
392
|
private:
|
248
393
|
RefCountedPtr<BaseNode> node_;
|
@@ -260,6 +405,7 @@ struct CallCounts {
|
|
260
405
|
}
|
261
406
|
|
262
407
|
void PopulateJson(Json::Object& json) const;
|
408
|
+
PropertyList ToPropertyList() const;
|
263
409
|
};
|
264
410
|
|
265
411
|
// This class is a helper class for channelz entities that deal with Channels,
|
@@ -319,11 +465,15 @@ class PerCpuCallCountingHelper final {
|
|
319
465
|
// Handles channelz bookkeeping for channels
|
320
466
|
class ChannelNode final : public BaseNode {
|
321
467
|
public:
|
322
|
-
ChannelNode(std::string target, size_t
|
468
|
+
ChannelNode(std::string target, size_t max_trace_memory,
|
323
469
|
bool is_internal_channel);
|
324
470
|
|
325
471
|
void Orphaned() override {
|
326
|
-
|
472
|
+
ChannelArgs to_destroy;
|
473
|
+
{
|
474
|
+
MutexLock lock(&channel_args_mu_);
|
475
|
+
std::swap(channel_args_, to_destroy);
|
476
|
+
}
|
327
477
|
BaseNode::Orphaned();
|
328
478
|
}
|
329
479
|
|
@@ -341,16 +491,10 @@ class ChannelNode final : public BaseNode {
|
|
341
491
|
Json RenderJson() override;
|
342
492
|
|
343
493
|
// proxy methods to composed classes.
|
344
|
-
void AddTraceEvent(ChannelTrace::Severity severity, const grpc_slice& data) {
|
345
|
-
trace_.AddTraceEvent(severity, data);
|
346
|
-
}
|
347
|
-
void AddTraceEventWithReference(ChannelTrace::Severity severity,
|
348
|
-
const grpc_slice& data,
|
349
|
-
RefCountedPtr<BaseNode> referenced_channel) {
|
350
|
-
trace_.AddTraceEventWithReference(severity, data,
|
351
|
-
std::move(referenced_channel));
|
352
|
-
}
|
353
494
|
void SetChannelArgs(const ChannelArgs& channel_args) {
|
495
|
+
ChannelArgs to_destroy;
|
496
|
+
MutexLock lock(&channel_args_mu_);
|
497
|
+
std::swap(channel_args_, to_destroy);
|
354
498
|
channel_args_ = channel_args;
|
355
499
|
}
|
356
500
|
void RecordCallStarted() { call_counter_.RecordCallStarted(); }
|
@@ -364,18 +508,21 @@ class ChannelNode final : public BaseNode {
|
|
364
508
|
CallCounts GetCallCounts() const { return call_counter_.GetCallCounts(); }
|
365
509
|
std::set<intptr_t> child_channels() const;
|
366
510
|
std::set<intptr_t> child_subchannels() const;
|
367
|
-
|
368
|
-
|
511
|
+
ChannelArgs channel_args() const {
|
512
|
+
MutexLock lock(&channel_args_mu_);
|
513
|
+
return channel_args_;
|
514
|
+
}
|
369
515
|
|
370
516
|
private:
|
371
517
|
void PopulateChildRefs(Json::Object* json);
|
518
|
+
void AddNodeSpecificData(DataSink sink) override;
|
372
519
|
|
373
520
|
std::string target_;
|
374
521
|
CallCountingHelper call_counter_;
|
375
|
-
ChannelTrace trace_;
|
376
522
|
// TODO(ctiller): keeping channel args here can create odd circular references
|
377
523
|
// that are hard to reason about. Consider moving this to a DataSource.
|
378
|
-
|
524
|
+
mutable Mutex channel_args_mu_;
|
525
|
+
ChannelArgs channel_args_ ABSL_GUARDED_BY(channel_args_mu_);
|
379
526
|
|
380
527
|
// Least significant bit indicates whether the value is set. Remaining
|
381
528
|
// bits are a grpc_connectivity_state value.
|
@@ -385,37 +532,30 @@ class ChannelNode final : public BaseNode {
|
|
385
532
|
// Handles channelz bookkeeping for subchannels
|
386
533
|
class SubchannelNode final : public BaseNode {
|
387
534
|
public:
|
388
|
-
SubchannelNode(std::string target_address, size_t
|
535
|
+
SubchannelNode(std::string target_address, size_t max_trace_memory);
|
389
536
|
~SubchannelNode() override;
|
390
537
|
|
391
538
|
void Orphaned() override {
|
392
|
-
|
539
|
+
ChannelArgs to_destroy;
|
540
|
+
{
|
541
|
+
MutexLock lock(&channel_args_mu_);
|
542
|
+
std::swap(channel_args_, to_destroy);
|
543
|
+
}
|
393
544
|
BaseNode::Orphaned();
|
394
545
|
}
|
395
546
|
|
396
547
|
// Sets the subchannel's connectivity state without health checking.
|
397
548
|
void UpdateConnectivityState(grpc_connectivity_state state);
|
398
549
|
|
399
|
-
// Used when the subchannel's child socket changes. This should be set when
|
400
|
-
// the subchannel's transport is created and set to nullptr when the
|
401
|
-
// subchannel unrefs the transport.
|
402
|
-
void SetChildSocket(RefCountedPtr<SocketNode> socket);
|
403
|
-
|
404
550
|
Json RenderJson() override;
|
405
551
|
|
406
552
|
// proxy methods to composed classes.
|
407
|
-
void AddTraceEvent(ChannelTrace::Severity severity, const grpc_slice& data) {
|
408
|
-
trace_.AddTraceEvent(severity, data);
|
409
|
-
}
|
410
553
|
void SetChannelArgs(const ChannelArgs& channel_args) {
|
554
|
+
ChannelArgs to_destroy;
|
555
|
+
MutexLock lock(&channel_args_mu_);
|
556
|
+
std::swap(channel_args_, to_destroy);
|
411
557
|
channel_args_ = channel_args;
|
412
558
|
}
|
413
|
-
void AddTraceEventWithReference(ChannelTrace::Severity severity,
|
414
|
-
const grpc_slice& data,
|
415
|
-
RefCountedPtr<BaseNode> referenced_channel) {
|
416
|
-
trace_.AddTraceEventWithReference(severity, data,
|
417
|
-
std::move(referenced_channel));
|
418
|
-
}
|
419
559
|
void RecordCallStarted() { call_counter_.RecordCallStarted(); }
|
420
560
|
void RecordCallFailed() { call_counter_.RecordCallFailed(); }
|
421
561
|
void RecordCallSucceeded() { call_counter_.RecordCallSucceeded(); }
|
@@ -423,37 +563,39 @@ class SubchannelNode final : public BaseNode {
|
|
423
563
|
const std::string& target() const { return target_; }
|
424
564
|
std::string connectivity_state() const;
|
425
565
|
CallCounts GetCallCounts() const { return call_counter_.GetCallCounts(); }
|
426
|
-
|
427
|
-
MutexLock lock(&
|
428
|
-
return
|
566
|
+
ChannelArgs channel_args() const {
|
567
|
+
MutexLock lock(&channel_args_mu_);
|
568
|
+
return channel_args_;
|
429
569
|
}
|
430
|
-
const ChannelTrace& trace() const { return trace_; }
|
431
|
-
const ChannelArgs& channel_args() const { return channel_args_; }
|
432
570
|
|
433
571
|
private:
|
572
|
+
void AddNodeSpecificData(DataSink sink) override;
|
573
|
+
|
434
574
|
// Allows the channel trace test to access trace_.
|
435
575
|
friend class testing::SubchannelNodePeer;
|
436
576
|
|
437
577
|
std::atomic<grpc_connectivity_state> connectivity_state_{GRPC_CHANNEL_IDLE};
|
438
|
-
mutable Mutex socket_mu_;
|
439
|
-
RefCountedPtr<SocketNode> child_socket_ ABSL_GUARDED_BY(socket_mu_);
|
440
578
|
std::string target_;
|
441
579
|
CallCountingHelper call_counter_;
|
442
|
-
ChannelTrace trace_;
|
443
580
|
// TODO(ctiller): keeping channel args here can create odd circular references
|
444
581
|
// that are hard to reason about. Consider moving this to a DataSource.
|
445
|
-
|
582
|
+
mutable Mutex channel_args_mu_;
|
583
|
+
ChannelArgs channel_args_ ABSL_GUARDED_BY(channel_args_mu_);
|
446
584
|
};
|
447
585
|
|
448
586
|
// Handles channelz bookkeeping for servers
|
449
587
|
class ServerNode final : public BaseNode {
|
450
588
|
public:
|
451
|
-
explicit ServerNode(size_t
|
589
|
+
explicit ServerNode(size_t max_trace_memory);
|
452
590
|
|
453
591
|
~ServerNode() override;
|
454
592
|
|
455
593
|
void Orphaned() override {
|
456
|
-
|
594
|
+
ChannelArgs to_destroy;
|
595
|
+
{
|
596
|
+
MutexLock lock(&channel_args_mu_);
|
597
|
+
std::swap(channel_args_, to_destroy);
|
598
|
+
}
|
457
599
|
BaseNode::Orphaned();
|
458
600
|
}
|
459
601
|
|
@@ -463,16 +605,10 @@ class ServerNode final : public BaseNode {
|
|
463
605
|
intptr_t max_results);
|
464
606
|
|
465
607
|
// proxy methods to composed classes.
|
466
|
-
void AddTraceEvent(ChannelTrace::Severity severity, const grpc_slice& data) {
|
467
|
-
trace_.AddTraceEvent(severity, data);
|
468
|
-
}
|
469
|
-
void AddTraceEventWithReference(ChannelTrace::Severity severity,
|
470
|
-
const grpc_slice& data,
|
471
|
-
RefCountedPtr<BaseNode> referenced_channel) {
|
472
|
-
trace_.AddTraceEventWithReference(severity, data,
|
473
|
-
std::move(referenced_channel));
|
474
|
-
}
|
475
608
|
void SetChannelArgs(const ChannelArgs& channel_args) {
|
609
|
+
ChannelArgs to_destroy;
|
610
|
+
MutexLock lock(&channel_args_mu_);
|
611
|
+
std::swap(channel_args_, to_destroy);
|
476
612
|
channel_args_ = channel_args;
|
477
613
|
}
|
478
614
|
void RecordCallStarted() { call_counter_.RecordCallStarted(); }
|
@@ -481,19 +617,23 @@ class ServerNode final : public BaseNode {
|
|
481
617
|
|
482
618
|
CallCounts GetCallCounts() const { return call_counter_.GetCallCounts(); }
|
483
619
|
|
484
|
-
std::map<intptr_t,
|
620
|
+
std::map<intptr_t, WeakRefCountedPtr<ListenSocketNode>> child_listen_sockets()
|
485
621
|
const;
|
486
|
-
std::map<intptr_t,
|
622
|
+
std::map<intptr_t, WeakRefCountedPtr<SocketNode>> child_sockets() const;
|
487
623
|
|
488
|
-
|
489
|
-
|
624
|
+
ChannelArgs channel_args() const {
|
625
|
+
MutexLock lock(&channel_args_mu_);
|
626
|
+
return channel_args_;
|
627
|
+
}
|
490
628
|
|
491
629
|
private:
|
630
|
+
void AddNodeSpecificData(DataSink sink) override;
|
631
|
+
|
492
632
|
PerCpuCallCountingHelper call_counter_;
|
493
|
-
ChannelTrace trace_;
|
494
633
|
// TODO(ctiller): keeping channel args here can create odd circular references
|
495
634
|
// that are hard to reason about. Consider moving this to a DataSource.
|
496
|
-
|
635
|
+
mutable Mutex channel_args_mu_;
|
636
|
+
ChannelArgs channel_args_ ABSL_GUARDED_BY(channel_args_mu_);
|
497
637
|
};
|
498
638
|
|
499
639
|
#define GRPC_ARG_CHANNELZ_SECURITY "grpc.internal.channelz_security"
|
@@ -514,6 +654,7 @@ class SocketNode final : public BaseNode {
|
|
514
654
|
std::string remote_certificate;
|
515
655
|
|
516
656
|
Json RenderJson();
|
657
|
+
PropertyList ToPropertyList() const;
|
517
658
|
};
|
518
659
|
enum class ModelType { kUnset = 0, kTls = 1, kOther = 2 };
|
519
660
|
ModelType type = ModelType::kUnset;
|
@@ -521,6 +662,7 @@ class SocketNode final : public BaseNode {
|
|
521
662
|
std::optional<Json> other;
|
522
663
|
|
523
664
|
Json RenderJson();
|
665
|
+
PropertyList ToPropertyList() const;
|
524
666
|
|
525
667
|
static absl::string_view ChannelArgName() {
|
526
668
|
return GRPC_ARG_CHANNELZ_SECURITY;
|
@@ -529,11 +671,6 @@ class SocketNode final : public BaseNode {
|
|
529
671
|
static int ChannelArgsCompare(const Security* a, const Security* b) {
|
530
672
|
return QsortCompare(a, b);
|
531
673
|
}
|
532
|
-
|
533
|
-
grpc_arg MakeChannelArg() const;
|
534
|
-
|
535
|
-
static RefCountedPtr<Security> GetFromChannelArgs(
|
536
|
-
const grpc_channel_args* args);
|
537
674
|
};
|
538
675
|
|
539
676
|
SocketNode(std::string local, std::string remote, std::string name,
|
@@ -602,6 +739,7 @@ class SocketNode final : public BaseNode {
|
|
602
739
|
gpr_cycle_counter cycle_counter) const {
|
603
740
|
return gpr_format_timespec(gpr_cycle_counter_to_time(cycle_counter));
|
604
741
|
}
|
742
|
+
void AddNodeSpecificData(DataSink sink) override;
|
605
743
|
|
606
744
|
std::atomic<int64_t> streams_started_{0};
|
607
745
|
std::atomic<int64_t> streams_succeeded_{0};
|
@@ -627,17 +765,31 @@ class ListenSocketNode final : public BaseNode {
|
|
627
765
|
Json RenderJson() override;
|
628
766
|
|
629
767
|
private:
|
768
|
+
void AddNodeSpecificData(DataSink sink) override;
|
769
|
+
|
630
770
|
std::string local_addr_;
|
631
771
|
};
|
632
772
|
|
633
773
|
class CallNode final : public BaseNode {
|
634
774
|
public:
|
635
775
|
explicit CallNode(std::string name)
|
636
|
-
: BaseNode(EntityType::kCall, std::move(name)) {
|
776
|
+
: BaseNode(EntityType::kCall, 0, std::move(name)) {
|
777
|
+
NodeConstructed();
|
778
|
+
}
|
637
779
|
|
638
780
|
Json RenderJson() override;
|
639
781
|
};
|
640
782
|
|
783
|
+
class ResourceQuotaNode final : public BaseNode {
|
784
|
+
public:
|
785
|
+
explicit ResourceQuotaNode(std::string name)
|
786
|
+
: BaseNode(EntityType::kResourceQuota, 0, std::move(name)) {
|
787
|
+
NodeConstructed();
|
788
|
+
}
|
789
|
+
|
790
|
+
Json RenderJson() override { return Json::FromString("ResourceQuota"); }
|
791
|
+
};
|
792
|
+
|
641
793
|
} // namespace channelz
|
642
794
|
} // namespace grpc_core
|
643
795
|
|