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
@@ -30,22 +30,28 @@
|
|
30
30
|
#include <string>
|
31
31
|
#include <tuple>
|
32
32
|
|
33
|
+
#include "absl/cleanup/cleanup.h"
|
33
34
|
#include "absl/log/check.h"
|
34
35
|
#include "absl/status/statusor.h"
|
35
36
|
#include "absl/strings/escaping.h"
|
36
37
|
#include "absl/strings/str_cat.h"
|
37
38
|
#include "absl/strings/strip.h"
|
38
39
|
#include "src/core/channelz/channelz_registry.h"
|
40
|
+
#include "src/core/channelz/property_list.h"
|
39
41
|
#include "src/core/lib/address_utils/parse_address.h"
|
40
42
|
#include "src/core/lib/address_utils/sockaddr_utils.h"
|
41
43
|
#include "src/core/lib/channel/channel_args.h"
|
42
44
|
#include "src/core/lib/iomgr/resolved_address.h"
|
43
45
|
#include "src/core/lib/transport/connectivity_state.h"
|
44
46
|
#include "src/core/util/json/json_writer.h"
|
47
|
+
#include "src/core/util/notification.h"
|
45
48
|
#include "src/core/util/string.h"
|
46
49
|
#include "src/core/util/time.h"
|
50
|
+
#include "src/core/util/time_precise.h"
|
51
|
+
#include "src/core/util/upb_utils.h"
|
47
52
|
#include "src/core/util/uri.h"
|
48
53
|
#include "src/core/util/useful.h"
|
54
|
+
#include "src/proto/grpc/channelz/v2/channelz.upb.h"
|
49
55
|
|
50
56
|
namespace grpc_core {
|
51
57
|
namespace channelz {
|
@@ -54,123 +60,54 @@ namespace channelz {
|
|
54
60
|
// DataSink
|
55
61
|
//
|
56
62
|
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
}
|
63
|
-
|
64
|
-
void Add(std::vector<RefCountedPtr<BaseNode>> nodes) {
|
65
|
-
for (auto& node : nodes) Add(std::move(node));
|
66
|
-
}
|
67
|
-
|
68
|
-
// Calls AddAdditionalInfo to export the collected child objects.
|
69
|
-
void Finalize(DataSink& sink) {
|
70
|
-
if (child_objects_.empty()) return;
|
71
|
-
Json::Object subobjects;
|
72
|
-
for (const auto& [type, child_objects] : child_objects_) {
|
73
|
-
std::string key;
|
74
|
-
switch (type) {
|
75
|
-
case BaseNode::EntityType::kTopLevelChannel:
|
76
|
-
case BaseNode::EntityType::kSubchannel:
|
77
|
-
case BaseNode::EntityType::kListenSocket:
|
78
|
-
case BaseNode::EntityType::kServer:
|
79
|
-
case BaseNode::EntityType::kInternalChannel: {
|
80
|
-
LOG(ERROR)
|
81
|
-
<< "Nodes of type " << BaseNode::EntityTypeString(type)
|
82
|
-
<< " not supported for child object collection in DataSink";
|
83
|
-
continue;
|
84
|
-
}
|
85
|
-
case BaseNode::EntityType::kSocket:
|
86
|
-
key = "subSockets";
|
87
|
-
break;
|
88
|
-
case BaseNode::EntityType::kCall:
|
89
|
-
key = "calls";
|
90
|
-
break;
|
91
|
-
}
|
92
|
-
Json::Array uuids;
|
93
|
-
uuids.reserve(child_objects.size());
|
94
|
-
for (int64_t uuid : child_objects) {
|
95
|
-
uuids.push_back(Json::FromNumber(uuid));
|
96
|
-
}
|
97
|
-
subobjects[key] = Json::FromArray(std::move(uuids));
|
98
|
-
}
|
99
|
-
sink.AddAdditionalInfo("childObjects", std::move(subobjects));
|
100
|
-
}
|
101
|
-
|
102
|
-
private:
|
103
|
-
std::map<BaseNode::EntityType, std::set<int64_t>> child_objects_;
|
104
|
-
};
|
105
|
-
|
106
|
-
class JsonDataSink final : public DataSink {
|
107
|
-
public:
|
108
|
-
explicit JsonDataSink(Json::Object& output) : output_(output) {
|
109
|
-
CHECK(output_.find("additionalInfo") == output_.end());
|
110
|
-
}
|
111
|
-
~JsonDataSink() {
|
112
|
-
collector_.Finalize(*this);
|
113
|
-
if (additional_info_ != nullptr) {
|
114
|
-
output_["additionalInfo"] =
|
115
|
-
Json::FromObject(std::move(*additional_info_));
|
116
|
-
}
|
117
|
-
}
|
118
|
-
|
119
|
-
void AddAdditionalInfo(absl::string_view name,
|
120
|
-
Json::Object additional_info) override {
|
121
|
-
if (additional_info_ == nullptr) {
|
122
|
-
additional_info_ = std::make_unique<Json::Object>();
|
123
|
-
}
|
124
|
-
additional_info_->emplace(name,
|
125
|
-
Json::FromObject(std::move(additional_info)));
|
126
|
-
}
|
127
|
-
|
128
|
-
void AddChildObjects(
|
129
|
-
std::vector<RefCountedPtr<BaseNode>> child_objects) override {
|
130
|
-
collector_.Add(std::move(child_objects));
|
131
|
-
}
|
132
|
-
|
133
|
-
private:
|
134
|
-
Json::Object& output_;
|
135
|
-
std::unique_ptr<Json::Object> additional_info_;
|
136
|
-
ChildObjectCollector collector_;
|
137
|
-
};
|
138
|
-
|
139
|
-
class ExplicitJsonDataSink final : public DataSink {
|
140
|
-
public:
|
141
|
-
void AddAdditionalInfo(absl::string_view name,
|
142
|
-
Json::Object additional_info) override {
|
143
|
-
additional_info_.emplace(name,
|
144
|
-
Json::FromObject(std::move(additional_info)));
|
145
|
-
}
|
63
|
+
void DataSinkImplementation::AddData(absl::string_view name,
|
64
|
+
std::unique_ptr<Data> data) {
|
65
|
+
MutexLock lock(&mu_);
|
66
|
+
additional_info_.emplace(name, std::move(data));
|
67
|
+
}
|
146
68
|
|
147
|
-
|
148
|
-
|
149
|
-
|
69
|
+
Json::Object DataSinkImplementation::Finalize(bool) {
|
70
|
+
MutexLock lock(&mu_);
|
71
|
+
Json::Object out;
|
72
|
+
for (auto& [name, additional_info] : additional_info_) {
|
73
|
+
out[name] = Json::FromObject(additional_info->ToJson());
|
150
74
|
}
|
75
|
+
return out;
|
76
|
+
}
|
151
77
|
|
152
|
-
|
153
|
-
|
154
|
-
|
78
|
+
void DataSinkImplementation::Finalize(bool timed_out,
|
79
|
+
grpc_channelz_v2_Entity* entity,
|
80
|
+
upb_Arena* arena) {
|
81
|
+
MutexLock lock(&mu_);
|
82
|
+
grpc_channelz_v2_Entity_set_timed_out(entity, timed_out);
|
83
|
+
for (auto& [name, additional_info] : additional_info_) {
|
84
|
+
auto* staple = grpc_channelz_v2_Entity_add_data(entity, arena);
|
85
|
+
grpc_channelz_v2_Data_set_name(staple,
|
86
|
+
CopyStdStringToUpbString(name, arena));
|
87
|
+
additional_info->FillProto(
|
88
|
+
grpc_channelz_v2_Data_mutable_value(staple, arena), arena);
|
155
89
|
}
|
156
|
-
|
157
|
-
private:
|
158
|
-
Json::Object additional_info_;
|
159
|
-
ChildObjectCollector collector_;
|
160
|
-
};
|
161
|
-
} // namespace
|
90
|
+
}
|
162
91
|
|
163
92
|
//
|
164
93
|
// BaseNode
|
165
94
|
//
|
166
95
|
|
167
|
-
BaseNode::BaseNode(EntityType type, std::string name)
|
168
|
-
: type_(type),
|
169
|
-
|
96
|
+
BaseNode::BaseNode(EntityType type, size_t max_trace_memory, std::string name)
|
97
|
+
: type_(type),
|
98
|
+
uuid_(-1),
|
99
|
+
name_(std::move(name)),
|
100
|
+
trace_(max_trace_memory) {}
|
101
|
+
|
102
|
+
void BaseNode::NodeConstructed() {
|
103
|
+
node_constructed_called_ = true;
|
170
104
|
ChannelzRegistry::Register(this);
|
171
105
|
}
|
172
106
|
|
173
|
-
void BaseNode::Orphaned() {
|
107
|
+
void BaseNode::Orphaned() {
|
108
|
+
DCHECK(node_constructed_called_);
|
109
|
+
ChannelzRegistry::Unregister(this);
|
110
|
+
}
|
174
111
|
|
175
112
|
intptr_t BaseNode::UuidSlow() { return ChannelzRegistry::NumberNode(this); }
|
176
113
|
|
@@ -180,20 +117,25 @@ std::string BaseNode::RenderJsonString() {
|
|
180
117
|
}
|
181
118
|
|
182
119
|
void BaseNode::PopulateJsonFromDataSources(Json::Object& json) {
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
data_source->AddData(sink);
|
187
|
-
}
|
120
|
+
auto info = AdditionalInfo();
|
121
|
+
if (info.empty()) return;
|
122
|
+
json["additionalInfo"] = Json::FromObject(std::move(info));
|
188
123
|
}
|
189
124
|
|
190
125
|
Json::Object BaseNode::AdditionalInfo() {
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
126
|
+
auto done = std::make_shared<Notification>();
|
127
|
+
auto sink_impl = std::make_shared<DataSinkImplementation>();
|
128
|
+
{
|
129
|
+
MutexLock lock(&data_sources_mu_);
|
130
|
+
auto done_notifier = std::make_shared<DataSinkCompletionNotification>(
|
131
|
+
[done]() { done->Notify(); });
|
132
|
+
for (DataSource* data_source : data_sources_) {
|
133
|
+
data_source->AddData(DataSink(sink_impl, done_notifier));
|
134
|
+
}
|
195
135
|
}
|
196
|
-
|
136
|
+
bool completed =
|
137
|
+
done->WaitForNotificationWithTimeout(absl::Milliseconds(100));
|
138
|
+
return sink_impl->Finalize(!completed);
|
197
139
|
}
|
198
140
|
|
199
141
|
void BaseNode::RunZTrace(
|
@@ -235,28 +177,88 @@ void BaseNode::RunZTrace(
|
|
235
177
|
ztrace->Run(deadline, std::move(args), event_engine, std::move(callback));
|
236
178
|
}
|
237
179
|
|
180
|
+
void BaseNode::SerializeEntity(grpc_channelz_v2_Entity* entity,
|
181
|
+
upb_Arena* arena) {
|
182
|
+
grpc_channelz_v2_Entity_set_id(entity, uuid());
|
183
|
+
grpc_channelz_v2_Entity_set_kind(
|
184
|
+
entity, StdStringToUpbString(EntityTypeToKind(type_)));
|
185
|
+
{
|
186
|
+
MutexLock lock(&parent_mu_);
|
187
|
+
auto* parents =
|
188
|
+
grpc_channelz_v2_Entity_resize_parents(entity, parents_.size(), arena);
|
189
|
+
for (const auto& parent : parents_) {
|
190
|
+
*parents++ = parent->uuid();
|
191
|
+
}
|
192
|
+
}
|
193
|
+
grpc_channelz_v2_Entity_set_orphaned(entity, orphaned_index_ != 0);
|
194
|
+
|
195
|
+
auto done = std::make_shared<Notification>();
|
196
|
+
auto sink_impl = std::make_shared<DataSinkImplementation>();
|
197
|
+
auto done_notifier = std::make_shared<DataSinkCompletionNotification>(
|
198
|
+
[done]() { done->Notify(); });
|
199
|
+
auto make_data_sink = [sink_impl, done_notifier]() {
|
200
|
+
return DataSink(sink_impl, done_notifier);
|
201
|
+
};
|
202
|
+
AddNodeSpecificData(make_data_sink());
|
203
|
+
{
|
204
|
+
MutexLock lock(&data_sources_mu_);
|
205
|
+
for (DataSource* data_source : data_sources_) {
|
206
|
+
data_source->AddData(make_data_sink());
|
207
|
+
}
|
208
|
+
}
|
209
|
+
make_data_sink().AddData("v1_compatibility",
|
210
|
+
PropertyList().Set("name", name()));
|
211
|
+
bool completed =
|
212
|
+
done->WaitForNotificationWithTimeout(absl::Milliseconds(100));
|
213
|
+
sink_impl->Finalize(!completed, entity, arena);
|
214
|
+
|
215
|
+
trace_.Render(entity, arena);
|
216
|
+
}
|
217
|
+
|
218
|
+
void BaseNode::AddNodeSpecificData(DataSink) {
|
219
|
+
// Default implementation does nothing.
|
220
|
+
}
|
221
|
+
|
222
|
+
std::string BaseNode::SerializeEntityToString() {
|
223
|
+
upb_Arena* arena = upb_Arena_New();
|
224
|
+
auto cleanup = absl::MakeCleanup([arena]() { upb_Arena_Free(arena); });
|
225
|
+
grpc_channelz_v2_Entity* entity = grpc_channelz_v2_Entity_new(arena);
|
226
|
+
SerializeEntity(entity, arena);
|
227
|
+
size_t length;
|
228
|
+
auto* bytes = grpc_channelz_v2_Entity_serialize(entity, arena, &length);
|
229
|
+
return std::string(bytes, length);
|
230
|
+
}
|
231
|
+
|
238
232
|
//
|
239
233
|
// DataSource
|
240
234
|
//
|
241
235
|
|
242
|
-
DataSource::DataSource(RefCountedPtr<BaseNode> node) : node_(std::move(node)) {
|
243
|
-
if (node_ == nullptr) return;
|
244
|
-
MutexLock lock(&node_->data_sources_mu_);
|
245
|
-
node_->data_sources_.push_back(this);
|
246
|
-
}
|
236
|
+
DataSource::DataSource(RefCountedPtr<BaseNode> node) : node_(std::move(node)) {}
|
247
237
|
|
248
238
|
DataSource::~DataSource() {
|
249
239
|
DCHECK(node_ == nullptr) << "DataSource must be ResetDataSource()'d in the "
|
250
240
|
"most derived class before destruction";
|
251
241
|
}
|
252
242
|
|
253
|
-
void DataSource::
|
243
|
+
void DataSource::SourceConstructed() {
|
244
|
+
if (node_ == nullptr) return;
|
245
|
+
MutexLock lock(&node_->data_sources_mu_);
|
246
|
+
node_->data_sources_.push_back(this);
|
247
|
+
}
|
248
|
+
|
249
|
+
void DataSource::SourceDestructing() {
|
254
250
|
RefCountedPtr<BaseNode> node = std::move(node_);
|
255
251
|
if (node == nullptr) return;
|
256
252
|
MutexLock lock(&node->data_sources_mu_);
|
257
|
-
node->data_sources_.
|
258
|
-
|
259
|
-
node->data_sources_.
|
253
|
+
for (size_t i = 0; i < node->data_sources_.size(); ++i) {
|
254
|
+
if (node->data_sources_[i] == this) {
|
255
|
+
std::swap(node->data_sources_[i], node->data_sources_.back());
|
256
|
+
node->data_sources_.pop_back();
|
257
|
+
return;
|
258
|
+
}
|
259
|
+
}
|
260
|
+
LOG(DFATAL) << "DataSource not found in node's data sources -- probably "
|
261
|
+
"SourceConstructed was not called";
|
260
262
|
}
|
261
263
|
|
262
264
|
//
|
@@ -295,6 +297,17 @@ void CallCounts::PopulateJson(Json::Object& json) const {
|
|
295
297
|
}
|
296
298
|
}
|
297
299
|
|
300
|
+
PropertyList CallCounts::ToPropertyList() const {
|
301
|
+
return PropertyList()
|
302
|
+
.Set("calls_started", calls_started)
|
303
|
+
.Set("calls_succeeded", calls_succeeded)
|
304
|
+
.Set("calls_failed", calls_failed)
|
305
|
+
.Set("last_call_started_timestamp", [this]() -> std::optional<Timestamp> {
|
306
|
+
if (last_call_started_cycle == 0) return std::nullopt;
|
307
|
+
return Timestamp::FromCycleCounterRoundDown(last_call_started_cycle);
|
308
|
+
}());
|
309
|
+
}
|
310
|
+
|
298
311
|
//
|
299
312
|
// PerCpuCallCountingHelper
|
300
313
|
//
|
@@ -335,13 +348,14 @@ CallCounts PerCpuCallCountingHelper::GetCallCounts() const {
|
|
335
348
|
// ChannelNode
|
336
349
|
//
|
337
350
|
|
338
|
-
ChannelNode::ChannelNode(std::string target, size_t
|
351
|
+
ChannelNode::ChannelNode(std::string target, size_t max_trace_memory,
|
339
352
|
bool is_internal_channel)
|
340
353
|
: BaseNode(is_internal_channel ? EntityType::kInternalChannel
|
341
354
|
: EntityType::kTopLevelChannel,
|
342
|
-
target),
|
343
|
-
target_(std::move(target))
|
344
|
-
|
355
|
+
max_trace_memory, target),
|
356
|
+
target_(std::move(target)) {
|
357
|
+
NodeConstructed();
|
358
|
+
}
|
345
359
|
|
346
360
|
const char* ChannelNode::GetChannelConnectivityStateChangeString(
|
347
361
|
grpc_connectivity_state state) {
|
@@ -405,7 +419,7 @@ Json ChannelNode::RenderJson() {
|
|
405
419
|
});
|
406
420
|
}
|
407
421
|
// Fill in the channel trace if applicable.
|
408
|
-
Json trace_json =
|
422
|
+
Json trace_json = trace().RenderJson();
|
409
423
|
if (trace_json.type() != Json::Type::kNull) {
|
410
424
|
data["trace"] = std::move(trace_json);
|
411
425
|
}
|
@@ -425,6 +439,14 @@ Json ChannelNode::RenderJson() {
|
|
425
439
|
return Json::FromObject(std::move(json));
|
426
440
|
}
|
427
441
|
|
442
|
+
void ChannelNode::AddNodeSpecificData(DataSink sink) {
|
443
|
+
sink.AddData("channel", PropertyList()
|
444
|
+
.Set("target", target_)
|
445
|
+
.Set("connectivity_state", connectivity_state()));
|
446
|
+
sink.AddData("call_counts", call_counter_.GetCallCounts().ToPropertyList());
|
447
|
+
sink.AddData("channel_args", channel_args().ToPropertyList());
|
448
|
+
}
|
449
|
+
|
428
450
|
void ChannelNode::PopulateChildRefs(Json::Object* json) {
|
429
451
|
auto child_subchannels = this->child_subchannels();
|
430
452
|
auto child_channels = this->child_channels();
|
@@ -459,10 +481,11 @@ void ChannelNode::SetConnectivityState(grpc_connectivity_state state) {
|
|
459
481
|
//
|
460
482
|
|
461
483
|
SubchannelNode::SubchannelNode(std::string target_address,
|
462
|
-
size_t
|
463
|
-
: BaseNode(EntityType::kSubchannel, target_address),
|
464
|
-
target_(std::move(target_address))
|
465
|
-
|
484
|
+
size_t max_trace_memory)
|
485
|
+
: BaseNode(EntityType::kSubchannel, max_trace_memory, target_address),
|
486
|
+
target_(std::move(target_address)) {
|
487
|
+
NodeConstructed();
|
488
|
+
}
|
466
489
|
|
467
490
|
SubchannelNode::~SubchannelNode() {}
|
468
491
|
|
@@ -470,11 +493,6 @@ void SubchannelNode::UpdateConnectivityState(grpc_connectivity_state state) {
|
|
470
493
|
connectivity_state_.store(state, std::memory_order_relaxed);
|
471
494
|
}
|
472
495
|
|
473
|
-
void SubchannelNode::SetChildSocket(RefCountedPtr<SocketNode> socket) {
|
474
|
-
MutexLock lock(&socket_mu_);
|
475
|
-
child_socket_ = std::move(socket);
|
476
|
-
}
|
477
|
-
|
478
496
|
std::string SubchannelNode::connectivity_state() const {
|
479
497
|
grpc_connectivity_state state =
|
480
498
|
connectivity_state_.load(std::memory_order_relaxed);
|
@@ -490,7 +508,7 @@ Json SubchannelNode::RenderJson() {
|
|
490
508
|
{"target", Json::FromString(target_)},
|
491
509
|
};
|
492
510
|
// Fill in the channel trace if applicable
|
493
|
-
Json trace_json =
|
511
|
+
Json trace_json = trace().RenderJson();
|
494
512
|
if (trace_json.type() != Json::Type::kNull) {
|
495
513
|
data["trace"] = std::move(trace_json);
|
496
514
|
}
|
@@ -504,16 +522,13 @@ Json SubchannelNode::RenderJson() {
|
|
504
522
|
{"data", Json::FromObject(std::move(data))},
|
505
523
|
};
|
506
524
|
// Populate the child socket.
|
507
|
-
|
508
|
-
|
509
|
-
|
510
|
-
child_socket = child_socket_;
|
511
|
-
}
|
512
|
-
if (child_socket != nullptr && child_socket->uuid() != 0) {
|
525
|
+
auto [children, _] = ChannelzRegistry::GetChildrenOfType(
|
526
|
+
0, this, BaseNode::EntityType::kSocket, 1);
|
527
|
+
if (!children.empty()) {
|
513
528
|
object["socketRef"] = Json::FromArray({
|
514
529
|
Json::FromObject({
|
515
|
-
{"socketId", Json::FromString(absl::StrCat(
|
516
|
-
{"name", Json::FromString(
|
530
|
+
{"socketId", Json::FromString(absl::StrCat(children[0]->uuid()))},
|
531
|
+
{"name", Json::FromString(children[0]->name())},
|
517
532
|
}),
|
518
533
|
});
|
519
534
|
}
|
@@ -521,12 +536,22 @@ Json SubchannelNode::RenderJson() {
|
|
521
536
|
return Json::FromObject(std::move(object));
|
522
537
|
}
|
523
538
|
|
539
|
+
void SubchannelNode::AddNodeSpecificData(DataSink sink) {
|
540
|
+
sink.AddData("channel", PropertyList()
|
541
|
+
.Set("target", target_)
|
542
|
+
.Set("connectivity_state", connectivity_state()));
|
543
|
+
sink.AddData("call_counts", call_counter_.GetCallCounts().ToPropertyList());
|
544
|
+
sink.AddData("channel_args", channel_args().ToPropertyList());
|
545
|
+
}
|
546
|
+
|
524
547
|
//
|
525
548
|
// ServerNode
|
526
549
|
//
|
527
550
|
|
528
|
-
ServerNode::ServerNode(size_t
|
529
|
-
: BaseNode(EntityType::kServer, "")
|
551
|
+
ServerNode::ServerNode(size_t max_trace_memory)
|
552
|
+
: BaseNode(EntityType::kServer, max_trace_memory, "") {
|
553
|
+
NodeConstructed();
|
554
|
+
}
|
530
555
|
|
531
556
|
ServerNode::~ServerNode() {}
|
532
557
|
|
@@ -555,7 +580,7 @@ std::string ServerNode::RenderServerSockets(intptr_t start_socket_id,
|
|
555
580
|
Json ServerNode::RenderJson() {
|
556
581
|
Json::Object data;
|
557
582
|
// Fill in the channel trace if applicable.
|
558
|
-
Json trace_json =
|
583
|
+
Json trace_json = trace().RenderJson();
|
559
584
|
if (trace_json.type() != Json::Type::kNull) {
|
560
585
|
data["trace"] = std::move(trace_json);
|
561
586
|
}
|
@@ -586,26 +611,31 @@ Json ServerNode::RenderJson() {
|
|
586
611
|
return Json::FromObject(std::move(object));
|
587
612
|
}
|
588
613
|
|
589
|
-
|
614
|
+
void ServerNode::AddNodeSpecificData(DataSink sink) {
|
615
|
+
sink.AddData("call_counts", call_counter_.GetCallCounts().ToPropertyList());
|
616
|
+
sink.AddData("channel_args", channel_args().ToPropertyList());
|
617
|
+
}
|
618
|
+
|
619
|
+
std::map<intptr_t, WeakRefCountedPtr<ListenSocketNode>>
|
590
620
|
ServerNode::child_listen_sockets() const {
|
591
|
-
std::map<intptr_t,
|
621
|
+
std::map<intptr_t, WeakRefCountedPtr<ListenSocketNode>> result;
|
592
622
|
auto [children, _] = ChannelzRegistry::GetChildrenOfType(
|
593
623
|
0, this, BaseNode::EntityType::kListenSocket,
|
594
624
|
std::numeric_limits<size_t>::max());
|
595
625
|
for (const auto& child : children) {
|
596
|
-
result[child->uuid()] = child->
|
626
|
+
result[child->uuid()] = child->WeakRefAsSubclass<ListenSocketNode>();
|
597
627
|
}
|
598
628
|
return result;
|
599
629
|
}
|
600
630
|
|
601
|
-
std::map<intptr_t,
|
631
|
+
std::map<intptr_t, WeakRefCountedPtr<SocketNode>> ServerNode::child_sockets()
|
602
632
|
const {
|
603
|
-
std::map<intptr_t,
|
633
|
+
std::map<intptr_t, WeakRefCountedPtr<SocketNode>> result;
|
604
634
|
auto [children, _] = ChannelzRegistry::GetChildrenOfType(
|
605
635
|
0, this, BaseNode::EntityType::kSocket,
|
606
636
|
std::numeric_limits<size_t>::max());
|
607
637
|
for (const auto& child : children) {
|
608
|
-
result[child->uuid()] = child->
|
638
|
+
result[child->uuid()] = child->WeakRefAsSubclass<SocketNode>();
|
609
639
|
}
|
610
640
|
return result;
|
611
641
|
}
|
@@ -632,6 +662,27 @@ Json SocketNode::Security::Tls::RenderJson() {
|
|
632
662
|
return Json::FromObject(std::move(data));
|
633
663
|
}
|
634
664
|
|
665
|
+
PropertyList SocketNode::Security::Tls::ToPropertyList() const {
|
666
|
+
PropertyList result;
|
667
|
+
switch (type) {
|
668
|
+
case NameType::kUnset:
|
669
|
+
break;
|
670
|
+
case NameType::kStandardName:
|
671
|
+
result.Set("standard_name", name);
|
672
|
+
break;
|
673
|
+
case NameType::kOtherName:
|
674
|
+
result.Set("other_name", name);
|
675
|
+
break;
|
676
|
+
}
|
677
|
+
if (!local_certificate.empty()) {
|
678
|
+
result.Set("local_certificate", absl::Base64Escape(local_certificate));
|
679
|
+
}
|
680
|
+
if (!remote_certificate.empty()) {
|
681
|
+
result.Set("remote_certificate", absl::Base64Escape(remote_certificate));
|
682
|
+
}
|
683
|
+
return result;
|
684
|
+
}
|
685
|
+
|
635
686
|
//
|
636
687
|
// SocketNode::Security
|
637
688
|
//
|
@@ -655,38 +706,22 @@ Json SocketNode::Security::RenderJson() {
|
|
655
706
|
return Json::FromObject(std::move(data));
|
656
707
|
}
|
657
708
|
|
658
|
-
|
659
|
-
|
660
|
-
|
661
|
-
|
662
|
-
|
663
|
-
|
664
|
-
|
665
|
-
|
666
|
-
|
667
|
-
|
668
|
-
|
669
|
-
|
670
|
-
}
|
671
|
-
|
672
|
-
|
673
|
-
|
674
|
-
const grpc_arg_pointer_vtable kChannelArgVtable = {
|
675
|
-
SecurityArgCopy, SecurityArgDestroy, SecurityArgCmp};
|
676
|
-
|
677
|
-
} // namespace
|
678
|
-
|
679
|
-
grpc_arg SocketNode::Security::MakeChannelArg() const {
|
680
|
-
return grpc_channel_arg_pointer_create(
|
681
|
-
const_cast<char*>(GRPC_ARG_CHANNELZ_SECURITY),
|
682
|
-
const_cast<SocketNode::Security*>(this), &kChannelArgVtable);
|
683
|
-
}
|
684
|
-
|
685
|
-
RefCountedPtr<SocketNode::Security> SocketNode::Security::GetFromChannelArgs(
|
686
|
-
const grpc_channel_args* args) {
|
687
|
-
Security* security = grpc_channel_args_find_pointer<Security>(
|
688
|
-
args, GRPC_ARG_CHANNELZ_SECURITY);
|
689
|
-
return security != nullptr ? security->Ref() : nullptr;
|
709
|
+
PropertyList SocketNode::Security::ToPropertyList() const {
|
710
|
+
switch (type) {
|
711
|
+
case ModelType::kUnset:
|
712
|
+
break;
|
713
|
+
case ModelType::kTls:
|
714
|
+
if (tls) {
|
715
|
+
return tls->ToPropertyList();
|
716
|
+
}
|
717
|
+
break;
|
718
|
+
case ModelType::kOther:
|
719
|
+
if (other.has_value()) {
|
720
|
+
return PropertyList().Set("other", JsonDump(*other));
|
721
|
+
}
|
722
|
+
break;
|
723
|
+
}
|
724
|
+
return PropertyList();
|
690
725
|
}
|
691
726
|
|
692
727
|
//
|
@@ -736,10 +771,12 @@ void PopulateSocketAddressJson(Json::Object* json, const char* name,
|
|
736
771
|
|
737
772
|
SocketNode::SocketNode(std::string local, std::string remote, std::string name,
|
738
773
|
RefCountedPtr<Security> security)
|
739
|
-
: BaseNode(EntityType::kSocket, std::move(name)),
|
774
|
+
: BaseNode(EntityType::kSocket, 0, std::move(name)),
|
740
775
|
local_(std::move(local)),
|
741
776
|
remote_(std::move(remote)),
|
742
|
-
security_(std::move(security)) {
|
777
|
+
security_(std::move(security)) {
|
778
|
+
NodeConstructed();
|
779
|
+
}
|
743
780
|
|
744
781
|
void SocketNode::RecordStreamStartedFromLocal() {
|
745
782
|
streams_started_.fetch_add(1, std::memory_order_relaxed);
|
@@ -845,13 +882,54 @@ Json SocketNode::RenderJson() {
|
|
845
882
|
return Json::FromObject(std::move(object));
|
846
883
|
}
|
847
884
|
|
885
|
+
void SocketNode::AddNodeSpecificData(DataSink sink) {
|
886
|
+
auto convert_cycle_counter =
|
887
|
+
[](gpr_cycle_counter cycle_counter) -> std::optional<Timestamp> {
|
888
|
+
if (cycle_counter == 0) return std::nullopt;
|
889
|
+
return Timestamp::FromCycleCounterRoundDown(cycle_counter);
|
890
|
+
};
|
891
|
+
sink.AddData("socket",
|
892
|
+
PropertyList().Set("local", local_).Set("remote", remote_));
|
893
|
+
sink.AddData(
|
894
|
+
"call_counts",
|
895
|
+
PropertyList()
|
896
|
+
.Set("streams_started",
|
897
|
+
streams_started_.load(std::memory_order_relaxed))
|
898
|
+
.Set("streams_succeeded",
|
899
|
+
streams_succeeded_.load(std::memory_order_relaxed))
|
900
|
+
.Set("streams_failed",
|
901
|
+
streams_failed_.load(std::memory_order_relaxed))
|
902
|
+
.Set("messages_sent", messages_sent_.load(std::memory_order_relaxed))
|
903
|
+
.Set("messages_received",
|
904
|
+
messages_received_.load(std::memory_order_relaxed))
|
905
|
+
.Set("keepalives_sent",
|
906
|
+
keepalives_sent_.load(std::memory_order_relaxed))
|
907
|
+
.Set("last_local_stream_created_timestamp",
|
908
|
+
convert_cycle_counter(last_local_stream_created_cycle_.load(
|
909
|
+
std::memory_order_relaxed)))
|
910
|
+
.Set("last_remote_stream_created_timestamp",
|
911
|
+
convert_cycle_counter(last_remote_stream_created_cycle_.load(
|
912
|
+
std::memory_order_relaxed)))
|
913
|
+
.Set("last_message_sent_timestamp",
|
914
|
+
convert_cycle_counter(
|
915
|
+
last_message_sent_cycle_.load(std::memory_order_relaxed)))
|
916
|
+
.Set("last_message_received_timestamp",
|
917
|
+
convert_cycle_counter(last_message_received_cycle_.load(
|
918
|
+
std::memory_order_relaxed))));
|
919
|
+
if (security_ != nullptr) {
|
920
|
+
sink.AddData("security", security_->ToPropertyList());
|
921
|
+
}
|
922
|
+
}
|
923
|
+
|
848
924
|
//
|
849
925
|
// ListenSocketNode
|
850
926
|
//
|
851
927
|
|
852
928
|
ListenSocketNode::ListenSocketNode(std::string local_addr, std::string name)
|
853
|
-
: BaseNode(EntityType::kListenSocket, std::move(name)),
|
854
|
-
local_addr_(std::move(local_addr)) {
|
929
|
+
: BaseNode(EntityType::kListenSocket, 0, std::move(name)),
|
930
|
+
local_addr_(std::move(local_addr)) {
|
931
|
+
NodeConstructed();
|
932
|
+
}
|
855
933
|
|
856
934
|
Json ListenSocketNode::RenderJson() {
|
857
935
|
Json::Object object = {
|
@@ -865,6 +943,10 @@ Json ListenSocketNode::RenderJson() {
|
|
865
943
|
return Json::FromObject(std::move(object));
|
866
944
|
}
|
867
945
|
|
946
|
+
void ListenSocketNode::AddNodeSpecificData(DataSink sink) {
|
947
|
+
sink.AddData("listen_socket", PropertyList().Set("local", local_addr_));
|
948
|
+
}
|
949
|
+
|
868
950
|
//
|
869
951
|
// CallNode
|
870
952
|
//
|