grpc 1.64.3 → 1.65.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 +57 -58
- data/include/grpc/event_engine/event_engine.h +13 -6
- data/include/grpc/impl/channel_arg_names.h +7 -3
- data/include/grpc/module.modulemap +1 -0
- data/include/grpc/passive_listener.h +62 -0
- data/include/grpc/support/log.h +7 -17
- data/include/grpc/support/port_platform.h +3 -0
- data/src/core/channelz/channel_trace.cc +1 -1
- data/src/core/channelz/channel_trace.h +1 -1
- data/src/core/channelz/channelz.cc +3 -3
- data/src/core/channelz/channelz.h +7 -7
- data/src/core/channelz/channelz_registry.cc +4 -3
- data/src/core/client_channel/backup_poller.cc +4 -5
- data/src/core/client_channel/client_channel.cc +1324 -0
- data/src/core/client_channel/client_channel.h +243 -0
- data/src/core/client_channel/client_channel_filter.cc +266 -709
- data/src/core/client_channel/client_channel_filter.h +11 -64
- data/src/core/client_channel/client_channel_internal.h +16 -5
- data/src/core/client_channel/client_channel_plugin.cc +1 -14
- data/src/core/client_channel/client_channel_service_config.h +3 -3
- data/src/core/client_channel/config_selector.cc +1 -1
- data/src/core/client_channel/config_selector.h +1 -1
- data/src/core/client_channel/dynamic_filters.cc +3 -3
- data/src/core/client_channel/dynamic_filters.h +1 -3
- data/src/core/client_channel/load_balanced_call_destination.cc +336 -0
- data/src/core/client_channel/load_balanced_call_destination.h +49 -0
- data/src/core/client_channel/retry_filter.cc +2 -9
- data/src/core/client_channel/retry_filter.h +2 -7
- data/src/core/client_channel/retry_filter_legacy_call_data.cc +65 -72
- data/src/core/client_channel/retry_filter_legacy_call_data.h +0 -2
- data/src/core/client_channel/retry_service_config.cc +4 -5
- data/src/core/client_channel/retry_service_config.h +3 -3
- data/src/core/client_channel/subchannel.cc +220 -112
- data/src/core/client_channel/subchannel.h +31 -18
- data/src/core/client_channel/subchannel_pool_interface.cc +0 -2
- data/src/core/client_channel/subchannel_pool_interface.h +2 -4
- data/src/core/client_channel/subchannel_stream_client.cc +36 -49
- data/src/core/client_channel/subchannel_stream_client.h +2 -4
- data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +7 -10
- data/src/core/ext/filters/backend_metrics/backend_metric_filter.h +1 -0
- data/src/core/ext/filters/backend_metrics/backend_metric_provider.h +7 -0
- data/src/core/ext/filters/census/grpc_context.cc +2 -4
- data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc +8 -15
- data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.h +2 -0
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +3 -7
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +1 -0
- data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.h +3 -3
- data/src/core/ext/filters/http/client/http_client_filter.cc +1 -0
- data/src/core/ext/filters/http/client/http_client_filter.h +1 -0
- data/src/core/ext/filters/http/client_authority_filter.cc +1 -0
- data/src/core/ext/filters/http/client_authority_filter.h +1 -0
- data/src/core/ext/filters/http/message_compress/compression_filter.cc +10 -15
- data/src/core/ext/filters/http/message_compress/compression_filter.h +2 -0
- data/src/core/ext/filters/http/server/http_server_filter.cc +2 -2
- data/src/core/ext/filters/http/server/http_server_filter.h +1 -0
- data/src/core/ext/filters/message_size/message_size_filter.cc +6 -9
- data/src/core/ext/filters/message_size/message_size_filter.h +6 -6
- data/src/core/ext/filters/rbac/rbac_filter.cc +2 -5
- data/src/core/ext/filters/rbac/rbac_filter.h +1 -0
- data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +2 -2
- data/src/core/ext/filters/rbac/rbac_service_config_parser.h +1 -1
- data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +2 -6
- data/src/core/ext/filters/stateful_session/stateful_session_filter.h +1 -0
- data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.h +3 -3
- data/src/core/ext/transport/chttp2/alpn/alpn.cc +1 -1
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +8 -25
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +0 -5
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +223 -148
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +33 -0
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +131 -107
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +8 -8
- data/src/core/ext/transport/chttp2/transport/context_list_entry.h +1 -1
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +2 -4
- data/src/core/ext/transport/chttp2/transport/flow_control.h +0 -2
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +4 -6
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +1 -2
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +9 -5
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +5 -4
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +9 -2
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +32 -43
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +1 -3
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +3 -8
- data/src/core/ext/transport/chttp2/transport/http2_settings.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/http2_settings.h +1 -1
- data/src/core/ext/transport/chttp2/transport/internal.h +29 -19
- data/src/core/ext/transport/chttp2/transport/parsing.cc +15 -25
- data/src/core/ext/transport/chttp2/transport/ping_callbacks.cc +0 -2
- data/src/core/ext/transport/chttp2/transport/ping_callbacks.h +0 -2
- data/src/core/ext/transport/chttp2/transport/ping_rate_policy.cc +29 -13
- data/src/core/ext/transport/chttp2/transport/ping_rate_policy.h +5 -4
- data/src/core/ext/transport/chttp2/transport/stream_lists.cc +3 -5
- data/src/core/ext/transport/chttp2/transport/writing.cc +24 -25
- data/src/core/ext/transport/inproc/inproc_transport.cc +56 -32
- data/src/core/ext/transport/inproc/inproc_transport.h +1 -3
- data/src/core/ext/transport/inproc/legacy_inproc_transport.cc +13 -15
- data/src/core/ext/transport/inproc/legacy_inproc_transport.h +0 -2
- data/src/core/handshaker/handshaker.cc +6 -14
- data/src/core/handshaker/http_connect/http_connect_handshaker.cc +9 -17
- data/src/core/handshaker/http_connect/http_proxy_mapper.cc +3 -2
- data/src/core/handshaker/security/secure_endpoint.cc +38 -32
- data/src/core/handshaker/security/secure_endpoint.h +0 -2
- data/src/core/handshaker/security/security_handshaker.cc +25 -37
- data/src/core/handshaker/tcp_connect/tcp_connect_handshaker.cc +2 -1
- data/src/core/lib/address_utils/parse_address.cc +27 -39
- data/src/core/lib/address_utils/sockaddr_utils.cc +5 -6
- data/src/core/lib/avl/avl.h +1 -1
- data/src/core/lib/channel/channel_args.cc +13 -17
- data/src/core/lib/channel/channel_args.h +19 -8
- data/src/core/lib/channel/channel_stack.cc +5 -63
- data/src/core/lib/channel/channel_stack.h +13 -37
- data/src/core/lib/channel/channel_stack_builder.h +0 -5
- data/src/core/lib/channel/channel_stack_builder_impl.cc +0 -142
- data/src/core/lib/channel/channel_stack_builder_impl.h +0 -2
- data/src/core/lib/channel/connected_channel.cc +37 -676
- data/src/core/lib/channel/promise_based_filter.cc +41 -47
- data/src/core/lib/channel/promise_based_filter.h +124 -477
- data/src/core/lib/channel/status_util.cc +1 -1
- data/src/core/lib/compression/compression.cc +1 -1
- data/src/core/lib/compression/message_compress.cc +6 -6
- data/src/core/lib/config/config_vars.cc +3 -8
- data/src/core/lib/config/config_vars.h +1 -5
- data/src/core/lib/debug/event_log.h +1 -1
- data/src/core/lib/debug/trace.cc +43 -59
- data/src/core/lib/debug/trace.h +2 -97
- data/src/core/lib/debug/trace_flags.cc +255 -0
- data/src/core/lib/debug/trace_flags.h +133 -0
- data/src/core/lib/debug/trace_impl.h +115 -0
- data/src/core/lib/event_engine/ares_resolver.cc +5 -7
- data/src/core/lib/event_engine/ares_resolver.h +1 -3
- data/src/core/lib/event_engine/cf_engine/cf_engine.cc +1 -1
- data/src/core/lib/event_engine/cf_engine/dns_service_resolver.cc +17 -22
- data/src/core/lib/event_engine/event_engine.cc +29 -4
- data/src/core/lib/event_engine/extensions/supports_fd.h +7 -0
- data/src/core/lib/event_engine/extensions/tcp_trace.h +43 -0
- data/src/core/lib/event_engine/forkable.cc +4 -5
- data/src/core/lib/event_engine/forkable.h +0 -11
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +10 -11
- data/src/core/lib/event_engine/posix_engine/internal_errqueue.cc +4 -3
- data/src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.cc +1 -1
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +19 -33
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +3 -2
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +24 -7
- data/src/core/lib/event_engine/posix_engine/posix_engine.h +2 -0
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +14 -16
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +18 -22
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +13 -17
- data/src/core/lib/event_engine/posix_engine/timer.cc +1 -1
- data/src/core/lib/event_engine/posix_engine/timer_manager.cc +4 -6
- data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +2 -1
- data/src/core/lib/event_engine/shim.cc +1 -1
- data/src/core/lib/event_engine/tcp_socket_utils.cc +6 -8
- data/src/core/lib/event_engine/thread_local.h +1 -1
- data/src/core/lib/event_engine/thread_pool/thread_count.h +1 -1
- data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +19 -21
- data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h +3 -6
- data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.cc +14 -13
- data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.h +4 -3
- data/src/core/lib/event_engine/trace.h +6 -17
- data/src/core/lib/event_engine/windows/iocp.h +1 -1
- data/src/core/lib/event_engine/windows/win_socket.cc +23 -17
- data/src/core/lib/event_engine/windows/win_socket.h +4 -5
- data/src/core/lib/event_engine/windows/windows_endpoint.cc +6 -9
- data/src/core/lib/event_engine/windows/windows_engine.cc +201 -87
- data/src/core/lib/event_engine/windows/windows_engine.h +136 -25
- data/src/core/lib/event_engine/windows/windows_listener.cc +12 -23
- data/src/core/lib/experiments/experiments.cc +35 -151
- data/src/core/lib/experiments/experiments.h +12 -45
- data/src/core/lib/gprpp/bitset.h +1 -1
- data/src/core/lib/gprpp/crash.cc +2 -3
- data/src/core/lib/gprpp/dual_ref_counted.h +45 -33
- data/src/core/lib/gprpp/dump_args.cc +54 -0
- data/src/core/lib/gprpp/dump_args.h +69 -0
- data/src/core/lib/gprpp/glob.cc +70 -0
- data/src/core/lib/gprpp/glob.h +29 -0
- data/src/core/lib/gprpp/per_cpu.cc +1 -1
- data/src/core/lib/gprpp/posix/stat.cc +3 -4
- data/src/core/lib/gprpp/posix/thd.cc +8 -9
- data/src/core/lib/gprpp/ref_counted.h +30 -22
- data/src/core/lib/gprpp/single_set_ptr.h +5 -3
- data/src/core/lib/gprpp/status_helper.cc +11 -30
- data/src/core/lib/gprpp/status_helper.h +3 -31
- data/src/core/lib/gprpp/time.cc +3 -4
- data/src/core/lib/gprpp/time.h +3 -2
- data/src/core/lib/gprpp/unique_type_name.h +1 -1
- data/src/core/lib/gprpp/validation_errors.cc +10 -1
- data/src/core/lib/gprpp/validation_errors.h +11 -0
- data/src/core/lib/gprpp/windows/stat.cc +3 -4
- data/src/core/lib/gprpp/windows/thd.cc +3 -2
- data/src/core/lib/gprpp/work_serializer.cc +48 -57
- data/src/core/lib/iomgr/buffer_list.cc +4 -2
- data/src/core/lib/iomgr/call_combiner.cc +18 -27
- data/src/core/lib/iomgr/call_combiner.h +1 -3
- data/src/core/lib/iomgr/cfstream_handle.cc +4 -6
- data/src/core/lib/iomgr/closure.h +2 -4
- data/src/core/lib/iomgr/combiner.cc +6 -8
- data/src/core/lib/iomgr/combiner.h +0 -2
- data/src/core/lib/iomgr/endpoint.cc +0 -6
- data/src/core/lib/iomgr/endpoint.h +0 -2
- data/src/core/lib/iomgr/endpoint_cfstream.cc +19 -41
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +1 -1
- data/src/core/lib/iomgr/endpoint_pair_windows.cc +5 -6
- data/src/core/lib/iomgr/error.cc +13 -21
- data/src/core/lib/iomgr/error.h +1 -1
- data/src/core/lib/iomgr/ev_apple.cc +3 -5
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +43 -42
- data/src/core/lib/iomgr/ev_poll_posix.cc +38 -29
- data/src/core/lib/iomgr/ev_posix.cc +8 -9
- data/src/core/lib/iomgr/ev_posix.h +10 -7
- data/src/core/lib/iomgr/event_engine_shims/closure.cc +2 -2
- data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +14 -28
- data/src/core/lib/iomgr/exec_ctx.cc +2 -2
- data/src/core/lib/iomgr/exec_ctx.h +1 -1
- data/src/core/lib/iomgr/executor.cc +6 -15
- data/src/core/lib/iomgr/executor.h +1 -1
- data/src/core/lib/iomgr/fork_posix.cc +8 -10
- data/src/core/lib/iomgr/fork_windows.cc +3 -1
- data/src/core/lib/iomgr/grpc_if_nametoindex_posix.cc +2 -3
- data/src/core/lib/iomgr/grpc_if_nametoindex_unsupported.cc +3 -5
- data/src/core/lib/iomgr/internal_errqueue.cc +4 -2
- data/src/core/lib/iomgr/iocp_windows.cc +4 -3
- data/src/core/lib/iomgr/iomgr.cc +13 -17
- data/src/core/lib/iomgr/lockfree_event.cc +3 -5
- data/src/core/lib/iomgr/pollset.h +0 -2
- data/src/core/lib/iomgr/pollset_windows.cc +0 -2
- data/src/core/lib/iomgr/resolve_address_posix.cc +7 -14
- data/src/core/lib/iomgr/resolve_address_windows.cc +1 -1
- data/src/core/lib/iomgr/socket_factory_posix.cc +1 -1
- data/src/core/lib/iomgr/socket_mutator.cc +1 -1
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +11 -17
- data/src/core/lib/iomgr/socket_windows.cc +4 -6
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +3 -5
- data/src/core/lib/iomgr/tcp_client_posix.cc +9 -15
- data/src/core/lib/iomgr/tcp_client_windows.cc +2 -4
- data/src/core/lib/iomgr/tcp_posix.cc +57 -84
- data/src/core/lib/iomgr/tcp_posix.h +0 -2
- data/src/core/lib/iomgr/tcp_server_posix.cc +3 -3
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +4 -6
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +7 -7
- data/src/core/lib/iomgr/tcp_server_windows.cc +10 -16
- data/src/core/lib/iomgr/tcp_windows.cc +25 -41
- data/src/core/lib/iomgr/timer_generic.cc +17 -20
- data/src/core/lib/iomgr/timer_heap.cc +1 -1
- data/src/core/lib/iomgr/timer_manager.cc +17 -30
- data/src/core/lib/iomgr/unix_sockets_posix.cc +1 -1
- data/src/core/lib/iomgr/vsock.cc +1 -1
- data/src/core/lib/iomgr/wakeup_fd_pipe.cc +3 -3
- data/src/core/lib/promise/activity.h +27 -4
- data/src/core/lib/promise/cancel_callback.h +24 -0
- data/src/core/lib/promise/context.h +11 -0
- data/src/core/lib/promise/detail/basic_seq.h +1 -2
- data/src/core/lib/promise/detail/join_state.h +354 -398
- data/src/core/lib/promise/detail/promise_like.h +6 -5
- data/src/core/lib/promise/detail/seq_state.h +1178 -1178
- data/src/core/lib/promise/for_each.h +6 -6
- data/src/core/lib/promise/interceptor_list.h +6 -7
- data/src/core/lib/promise/latch.h +9 -9
- data/src/core/lib/promise/map.h +17 -0
- data/src/core/lib/promise/observable.h +182 -0
- data/src/core/lib/promise/party.cc +7 -8
- data/src/core/lib/promise/party.h +10 -8
- data/src/core/lib/promise/pipe.h +16 -35
- data/src/core/lib/promise/promise.h +1 -0
- data/src/core/lib/promise/status_flag.h +2 -0
- data/src/core/lib/resource_quota/arena.cc +56 -79
- data/src/core/lib/resource_quota/arena.h +118 -209
- data/src/core/lib/resource_quota/memory_quota.cc +12 -13
- data/src/core/lib/resource_quota/memory_quota.h +2 -3
- data/src/core/lib/resource_quota/periodic_update.cc +1 -1
- data/src/core/lib/resource_quota/resource_quota.h +1 -1
- data/src/core/lib/security/authorization/authorization_policy_provider.h +1 -1
- data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +1 -1
- data/src/core/lib/security/authorization/evaluate_args.cc +6 -8
- data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +5 -6
- data/src/core/lib/security/authorization/grpc_server_authz_filter.h +1 -0
- data/src/core/lib/security/authorization/matchers.cc +3 -3
- data/src/core/lib/security/certificate_provider/certificate_provider_factory.h +2 -2
- data/src/core/lib/security/certificate_provider/certificate_provider_registry.cc +2 -3
- data/src/core/lib/security/context/security_context.cc +12 -13
- data/src/core/lib/security/context/security_context.h +31 -8
- data/src/core/lib/security/credentials/alts/alts_credentials.h +1 -1
- data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +3 -1
- data/src/core/lib/security/credentials/alts/check_gcp_environment_no_op.cc +2 -3
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc +5 -5
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.cc +3 -3
- data/src/core/lib/security/credentials/call_creds_util.cc +2 -1
- data/src/core/lib/security/credentials/channel_creds_registry.h +2 -2
- data/src/core/lib/security/credentials/channel_creds_registry_init.cc +5 -3
- data/src/core/lib/security/credentials/composite/composite_credentials.h +1 -1
- data/src/core/lib/security/credentials/credentials.cc +6 -6
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +4 -4
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +2 -2
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +9 -11
- data/src/core/lib/security/credentials/external/external_account_credentials.h +3 -3
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +2 -2
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +4 -4
- data/src/core/lib/security/credentials/external/url_external_account_credentials.h +1 -1
- data/src/core/lib/security/credentials/fake/fake_credentials.h +1 -1
- data/src/core/lib/security/credentials/google_default/credentials_generic.cc +3 -3
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +11 -11
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +1 -1
- data/src/core/lib/security/credentials/iam/iam_credentials.h +1 -1
- data/src/core/lib/security/credentials/jwt/json_token.cc +14 -15
- data/src/core/lib/security/credentials/jwt/json_token.h +1 -1
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +6 -5
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +1 -1
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +50 -54
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +1 -1
- data/src/core/lib/security/credentials/local/local_credentials.h +1 -1
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +12 -11
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +4 -4
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +6 -7
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +1 -3
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +15 -21
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +1 -1
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +21 -30
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +1 -1
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +1 -1
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +4 -4
- data/src/core/lib/security/credentials/tls/grpc_tls_crl_provider.cc +3 -5
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +14 -16
- data/src/core/lib/security/credentials/tls/tls_utils.cc +4 -4
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +1 -1
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +13 -16
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +15 -12
- data/src/core/lib/security/security_connector/load_system_roots_supported.cc +6 -6
- data/src/core/lib/security/security_connector/load_system_roots_windows.cc +1 -1
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +8 -12
- data/src/core/lib/security/security_connector/security_connector.cc +1 -4
- data/src/core/lib/security/security_connector/security_connector.h +1 -3
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +17 -19
- data/src/core/lib/security/security_connector/ssl_utils.cc +19 -21
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +29 -40
- data/src/core/lib/security/transport/auth_filters.h +1 -0
- data/src/core/lib/security/transport/client_auth_filter.cc +7 -13
- data/src/core/lib/security/transport/server_auth_filter.cc +3 -8
- data/src/core/lib/security/util/json_util.h +1 -1
- data/src/core/lib/slice/slice.h +1 -1
- data/src/core/lib/slice/slice_refcount.h +2 -4
- data/src/core/lib/slice/slice_string_helpers.cc +1 -1
- data/src/core/lib/surface/api_trace.h +1 -3
- data/src/core/lib/surface/call.cc +64 -3738
- data/src/core/lib/surface/call.h +41 -143
- data/src/core/lib/surface/call_log_batch.cc +1 -1
- data/src/core/lib/surface/call_utils.cc +276 -0
- data/src/core/lib/surface/call_utils.h +449 -0
- data/src/core/lib/surface/channel.cc +8 -3
- data/src/core/lib/surface/channel.h +10 -7
- data/src/core/lib/surface/channel_create.cc +14 -6
- data/src/core/lib/surface/channel_create.h +3 -2
- data/src/core/lib/surface/channel_init.cc +21 -77
- data/src/core/lib/surface/channel_init.h +19 -97
- data/src/core/lib/surface/client_call.cc +419 -0
- data/src/core/lib/surface/client_call.h +180 -0
- data/src/core/lib/surface/completion_queue.cc +28 -33
- data/src/core/lib/surface/completion_queue.h +0 -8
- data/src/core/lib/surface/filter_stack_call.cc +1157 -0
- data/src/core/lib/surface/filter_stack_call.h +369 -0
- data/src/core/lib/surface/init.cc +7 -6
- data/src/core/lib/surface/lame_client.cc +1 -1
- data/src/core/lib/surface/legacy_channel.cc +40 -27
- data/src/core/lib/surface/legacy_channel.h +9 -18
- data/src/core/lib/surface/server_call.cc +222 -0
- data/src/core/lib/surface/server_call.h +167 -0
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/bdp_estimator.cc +3 -5
- data/src/core/lib/transport/bdp_estimator.h +2 -4
- data/src/core/lib/transport/call_arena_allocator.h +9 -7
- data/src/core/lib/transport/call_destination.h +76 -0
- data/src/core/lib/transport/call_filters.cc +28 -10
- data/src/core/lib/transport/call_filters.h +128 -22
- data/src/core/lib/transport/call_spine.cc +5 -6
- data/src/core/lib/transport/call_spine.h +159 -334
- data/src/core/lib/transport/connectivity_state.cc +8 -10
- data/src/core/lib/transport/connectivity_state.h +0 -2
- data/src/core/lib/transport/interception_chain.cc +155 -0
- data/src/core/lib/transport/interception_chain.h +236 -0
- data/src/core/lib/transport/metadata_batch.h +10 -1
- data/src/core/lib/transport/metadata_info.h +1 -1
- data/src/core/lib/transport/transport.cc +3 -6
- data/src/core/lib/transport/transport.h +43 -40
- data/src/core/load_balancing/child_policy_handler.cc +8 -8
- data/src/core/load_balancing/endpoint_list.cc +5 -5
- data/src/core/load_balancing/endpoint_list.h +1 -1
- data/src/core/load_balancing/grpclb/client_load_reporting_filter.cc +1 -0
- data/src/core/load_balancing/grpclb/client_load_reporting_filter.h +1 -0
- data/src/core/load_balancing/grpclb/grpclb.cc +25 -29
- data/src/core/load_balancing/grpclb/grpclb_balancer_addresses.cc +1 -1
- data/src/core/load_balancing/grpclb/load_balancer_api.cc +3 -4
- data/src/core/load_balancing/health_check_client.cc +10 -13
- data/src/core/load_balancing/lb_policy.cc +5 -8
- data/src/core/load_balancing/lb_policy.h +19 -3
- data/src/core/load_balancing/lb_policy_factory.h +1 -1
- data/src/core/load_balancing/lb_policy_registry.cc +2 -3
- data/src/core/load_balancing/lb_policy_registry.h +1 -1
- data/src/core/load_balancing/oob_backend_metric.cc +2 -4
- data/src/core/load_balancing/outlier_detection/outlier_detection.cc +33 -35
- data/src/core/load_balancing/outlier_detection/outlier_detection.h +3 -3
- data/src/core/load_balancing/pick_first/pick_first.cc +65 -65
- data/src/core/load_balancing/priority/priority.cc +26 -28
- data/src/core/load_balancing/ring_hash/ring_hash.cc +11 -13
- data/src/core/load_balancing/ring_hash/ring_hash.h +3 -3
- data/src/core/load_balancing/rls/rls.cc +82 -82
- data/src/core/load_balancing/round_robin/round_robin.cc +17 -20
- data/src/core/load_balancing/weighted_round_robin/weighted_round_robin.cc +54 -43
- data/src/core/load_balancing/weighted_target/weighted_target.cc +21 -24
- data/src/core/load_balancing/xds/cds.cc +14 -16
- data/src/core/load_balancing/xds/xds_cluster_impl.cc +16 -18
- data/src/core/load_balancing/xds/xds_cluster_manager.cc +15 -17
- data/src/core/load_balancing/xds/xds_override_host.cc +40 -41
- data/src/core/load_balancing/xds/xds_override_host.h +3 -3
- data/src/core/load_balancing/xds/xds_wrr_locality.cc +10 -12
- data/src/core/plugin_registry/grpc_plugin_registry.cc +5 -1
- data/src/core/resolver/binder/binder_resolver.cc +3 -2
- data/src/core/resolver/dns/c_ares/dns_resolver_ares.cc +3 -2
- data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +1 -1
- data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.cc +7 -14
- data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.h +1 -5
- data/src/core/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +1 -1
- data/src/core/resolver/dns/dns_resolver_plugin.cc +6 -5
- data/src/core/resolver/dns/event_engine/event_engine_client_channel_resolver.cc +4 -9
- data/src/core/resolver/dns/event_engine/service_config_helper.cc +5 -5
- data/src/core/resolver/dns/native/dns_resolver.cc +8 -9
- data/src/core/resolver/endpoint_addresses.cc +1 -1
- data/src/core/resolver/fake/fake_resolver.cc +1 -1
- data/src/core/resolver/fake/fake_resolver.h +1 -1
- data/src/core/resolver/google_c2p/google_c2p_resolver.cc +13 -14
- data/src/core/resolver/polling_resolver.cc +30 -35
- data/src/core/resolver/resolver.cc +2 -6
- data/src/core/resolver/resolver.h +0 -2
- data/src/core/resolver/resolver_registry.cc +6 -8
- data/src/core/resolver/sockaddr/sockaddr_resolver.cc +3 -3
- data/src/core/resolver/xds/xds_dependency_manager.cc +22 -23
- data/src/core/resolver/xds/xds_resolver.cc +13 -15
- data/src/core/server/server.cc +269 -389
- data/src/core/server/server.h +37 -19
- data/src/core/server/server_call_tracer_filter.cc +7 -14
- data/src/core/server/server_config_selector.h +1 -1
- data/src/core/server/server_config_selector_filter.cc +3 -3
- data/src/core/server/server_interface.h +2 -0
- data/src/core/server/xds_channel_stack_modifier.cc +1 -1
- data/src/core/server/xds_channel_stack_modifier.h +1 -1
- data/src/core/server/xds_server_config_fetcher.cc +1 -4
- data/src/core/service_config/service_config.h +1 -1
- data/src/core/service_config/service_config_call_data.h +13 -11
- data/src/core/service_config/service_config_channel_arg_filter.cc +6 -4
- data/src/core/service_config/service_config_impl.cc +5 -5
- data/src/core/service_config/service_config_impl.h +1 -1
- data/src/core/service_config/service_config_parser.cc +3 -6
- data/src/core/service_config/service_config_parser.h +1 -1
- data/src/core/{lib/channel → telemetry}/call_tracer.cc +20 -30
- data/src/core/{lib/channel → telemetry}/call_tracer.h +32 -9
- data/src/core/{lib/debug → telemetry}/histogram_view.cc +1 -1
- data/src/core/{lib/debug → telemetry}/histogram_view.h +3 -3
- data/src/core/telemetry/metrics.cc +178 -0
- data/src/core/telemetry/metrics.h +562 -0
- data/src/core/{lib/debug → telemetry}/stats.cc +1 -1
- data/src/core/{lib/debug → telemetry}/stats.h +5 -5
- data/src/core/{lib/debug → telemetry}/stats_data.cc +1 -1
- data/src/core/{lib/debug → telemetry}/stats_data.h +4 -4
- data/src/core/{lib/channel → telemetry}/tcp_tracer.h +3 -3
- data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +12 -13
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +25 -27
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +32 -33
- data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +2 -1
- data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +2 -1
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +5 -4
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.cc +5 -3
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +1 -1
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +4 -3
- data/src/core/tsi/fake_transport_security.cc +14 -17
- data/src/core/tsi/local_transport_security.cc +6 -5
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +4 -4
- data/src/core/tsi/ssl_transport_security.cc +76 -81
- data/src/core/tsi/ssl_transport_security_utils.cc +74 -18
- data/src/core/tsi/ssl_transport_security_utils.h +11 -0
- data/src/core/tsi/transport_security.cc +0 -4
- data/src/core/tsi/transport_security.h +0 -2
- data/src/core/tsi/transport_security_interface.h +0 -4
- data/src/core/{lib/gpr → util}/alloc.h +3 -3
- data/src/core/{lib/gpr → util}/android/log.cc +0 -19
- data/src/core/{lib/gpr → util}/atm.cc +1 -1
- data/src/core/{ext/gcp/metadata_query.cc → util/gcp_metadata_query.cc} +25 -26
- data/src/core/{ext/gcp/metadata_query.h → util/gcp_metadata_query.h} +11 -11
- data/src/core/{lib/http → util/http_client}/format_request.cc +4 -3
- data/src/core/{lib/http → util/http_client}/format_request.h +6 -5
- data/src/core/{lib/http → util/http_client}/httpcli.cc +9 -10
- data/src/core/{lib/http → util/http_client}/httpcli.h +6 -5
- data/src/core/{lib/http → util/http_client}/httpcli_security_connector.cc +9 -9
- data/src/core/{lib/http → util/http_client}/httpcli_ssl_credentials.h +5 -4
- data/src/core/{lib/http → util/http_client}/parser.cc +4 -5
- data/src/core/{lib/http → util/http_client}/parser.h +5 -6
- data/src/core/{lib → util}/json/json.h +5 -4
- data/src/core/{lib → util}/json/json_args.h +5 -5
- data/src/core/{lib → util}/json/json_channel_args.h +6 -6
- data/src/core/{lib → util}/json/json_object_loader.cc +3 -2
- data/src/core/{lib → util}/json/json_object_loader.h +7 -7
- data/src/core/{lib → util}/json/json_reader.cc +3 -2
- data/src/core/{lib → util}/json/json_reader.h +6 -6
- data/src/core/{lib → util}/json/json_util.cc +4 -4
- data/src/core/{lib → util}/json/json_util.h +6 -6
- data/src/core/{lib → util}/json/json_writer.cc +3 -3
- data/src/core/{lib → util}/json/json_writer.h +6 -6
- data/src/core/{lib/gpr → util}/linux/log.cc +0 -45
- data/src/core/util/log.cc +165 -0
- data/src/core/{lib/gpr → util}/msys/tmpfile.cc +2 -2
- data/src/core/{lib/gpr → util}/posix/cpu.cc +1 -1
- data/src/core/{lib/gpr → util}/posix/log.cc +0 -42
- data/src/core/{lib/gpr → util}/posix/time.cc +1 -1
- data/src/core/{lib/gpr → util}/posix/tmpfile.cc +2 -2
- data/src/core/{lib/gpr → util}/spinlock.h +3 -3
- data/src/core/{lib/gpr → util}/string.cc +2 -2
- data/src/core/{lib/gpr → util}/string.h +3 -3
- data/src/core/{lib/gpr → util}/time_precise.cc +1 -1
- data/src/core/{lib/gpr → util}/time_precise.h +3 -3
- data/src/core/{lib/gpr → util}/tmpfile.h +3 -3
- data/src/core/{lib/gpr → util}/useful.h +3 -3
- data/src/core/{lib/gpr → util}/windows/log.cc +1 -44
- data/src/core/{lib/gpr → util}/windows/string.cc +1 -1
- data/src/core/{lib/gpr → util}/windows/string_util.cc +1 -1
- data/src/core/{lib/gpr → util}/windows/time.cc +1 -1
- data/src/core/{lib/gpr → util}/windows/tmpfile.cc +1 -1
- data/src/core/xds/grpc/certificate_provider_store.cc +3 -3
- data/src/core/xds/grpc/certificate_provider_store.h +4 -4
- data/src/core/xds/grpc/file_watcher_certificate_provider_factory.cc +3 -3
- data/src/core/xds/grpc/file_watcher_certificate_provider_factory.h +3 -3
- data/src/core/xds/grpc/xds_audit_logger_registry.h +1 -1
- data/src/core/xds/grpc/xds_bootstrap_grpc.cc +5 -5
- data/src/core/xds/grpc/xds_bootstrap_grpc.h +3 -3
- data/src/core/xds/grpc/xds_certificate_provider.h +1 -1
- data/src/core/xds/grpc/xds_client_grpc.cc +27 -23
- data/src/core/xds/grpc/xds_client_grpc.h +2 -2
- data/src/core/xds/grpc/xds_cluster.cc +4 -5
- data/src/core/xds/grpc/xds_cluster.h +1 -1
- data/src/core/xds/grpc/xds_cluster_specifier_plugin.cc +2 -2
- data/src/core/xds/grpc/xds_cluster_specifier_plugin.h +1 -1
- data/src/core/xds/grpc/xds_common_types.cc +1 -1
- data/src/core/xds/grpc/xds_common_types.h +1 -1
- data/src/core/xds/grpc/xds_endpoint.cc +4 -5
- data/src/core/xds/grpc/xds_http_fault_filter.cc +2 -2
- data/src/core/xds/grpc/xds_http_filters.h +2 -2
- data/src/core/xds/grpc/xds_http_rbac_filter.cc +3 -3
- data/src/core/xds/grpc/xds_http_stateful_session_filter.cc +2 -2
- data/src/core/xds/grpc/xds_lb_policy_registry.h +1 -1
- data/src/core/xds/grpc/xds_listener.cc +4 -6
- data/src/core/xds/grpc/xds_route_config.cc +7 -8
- data/src/core/xds/grpc/xds_transport_grpc.cc +2 -2
- data/src/core/xds/grpc/xds_transport_grpc.h +1 -1
- data/src/core/xds/xds_client/xds_api.cc +5 -9
- data/src/core/xds/xds_client/xds_bootstrap.cc +1 -1
- data/src/core/xds/xds_client/xds_bootstrap.h +1 -1
- data/src/core/xds/xds_client/xds_client.cc +39 -45
- data/src/core/xds/xds_client/xds_client.h +0 -3
- data/src/core/xds/xds_client/xds_client_stats.cc +6 -6
- data/src/core/xds/xds_client/xds_client_stats.h +2 -2
- data/src/ruby/bin/math_pb.rb +1 -22
- data/src/ruby/ext/grpc/rb_call.c +8 -1
- data/src/ruby/ext/grpc/rb_completion_queue.c +15 -32
- data/src/ruby/ext/grpc/rb_completion_queue.h +7 -1
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +2 -2
- data/src/ruby/ext/grpc/rb_server.c +39 -22
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/grpc/health/v1/health_pb.rb +1 -22
- data/src/ruby/pb/grpc/testing/duplicate/echo_duplicate_services_pb.rb +5 -5
- data/src/ruby/pb/grpc/testing/metrics_pb.rb +10 -19
- data/src/ruby/pb/grpc/testing/metrics_services_pb.rb +5 -5
- data/src/ruby/pb/src/proto/grpc/testing/empty_pb.rb +1 -22
- data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +1 -22
- data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +1 -22
- data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +12 -12
- data/third_party/boringssl-with-bazel/src/crypto/conf/conf.c +66 -41
- data/third_party/boringssl-with-bazel/src/crypto/dilithium/dilithium.c +1497 -0
- data/third_party/boringssl-with-bazel/src/crypto/dilithium/internal.h +58 -0
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +10 -3
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa_asn1.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/dsa/internal.h +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/exponentiation.c +45 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +33 -23
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/fips_shared_support.c +3 -6
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/internal.h +9 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +6 -0
- data/third_party/boringssl-with-bazel/src/crypto/internal.h +7 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +0 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/v3_utl.c +49 -16
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +0 -10
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +7 -17
- data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +8 -6
- data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +3 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/experimental/dilithium.h +125 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +0 -23
- data/third_party/boringssl-with-bazel/src/ssl/dtls_method.cc +1 -1
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +4 -10
- metadata +103 -93
- data/src/core/ext/transport/chttp2/transport/http_trace.cc +0 -19
- data/src/core/ext/transport/chttp2/transport/http_trace.h +0 -24
- data/src/core/ext/transport/inproc/inproc_plugin.cc +0 -23
- data/src/core/handshaker/security/tsi_error.cc +0 -31
- data/src/core/handshaker/security/tsi_error.h +0 -30
- data/src/core/lib/channel/channel_stack_trace.cc +0 -19
- data/src/core/lib/channel/channel_stack_trace.h +0 -24
- data/src/core/lib/channel/context.h +0 -105
- data/src/core/lib/channel/metrics.cc +0 -334
- data/src/core/lib/channel/metrics.h +0 -365
- data/src/core/lib/event_engine/trace.cc +0 -25
- data/src/core/lib/gpr/log.cc +0 -166
- data/src/core/lib/iomgr/ev_windows.cc +0 -30
- data/src/core/lib/promise/trace.cc +0 -20
- data/src/core/lib/promise/trace.h +0 -24
- data/src/core/lib/resource_quota/trace.cc +0 -19
- data/src/core/lib/resource_quota/trace.h +0 -24
- data/src/core/lib/slice/slice_refcount.cc +0 -20
- data/src/core/lib/surface/api_trace.cc +0 -25
- data/src/core/lib/surface/call_trace.h +0 -24
- data/src/core/lib/surface/wait_for_cq_end_op.cc +0 -75
- data/src/core/lib/surface/wait_for_cq_end_op.h +0 -72
- data/src/core/lib/transport/batch_builder.cc +0 -172
- data/src/core/lib/transport/batch_builder.h +0 -474
- data/src/core/resolver/xds/xds_resolver_trace.cc +0 -25
- data/src/core/resolver/xds/xds_resolver_trace.h +0 -30
- data/third_party/boringssl-with-bazel/src/crypto/conf/conf_def.h +0 -122
- /data/src/core/{lib/gpr → util}/alloc.cc +0 -0
- /data/src/core/{lib/gpr → util}/iphone/cpu.cc +0 -0
- /data/src/core/{lib/gpr → util}/linux/cpu.cc +0 -0
- /data/src/core/{lib/gpr → util}/posix/string.cc +0 -0
- /data/src/core/{lib/gpr → util}/posix/sync.cc +0 -0
- /data/src/core/{lib/gpr → util}/sync.cc +0 -0
- /data/src/core/{lib/gpr → util}/sync_abseil.cc +0 -0
- /data/src/core/{lib/gpr → util}/time.cc +0 -0
- /data/src/core/{lib/gpr → util}/windows/cpu.cc +0 -0
- /data/src/core/{lib/gpr → util}/windows/sync.cc +0 -0
@@ -41,6 +41,7 @@
|
|
41
41
|
#include <string>
|
42
42
|
#include <vector>
|
43
43
|
|
44
|
+
#include "absl/log/log.h"
|
44
45
|
#include "absl/strings/str_cat.h"
|
45
46
|
#include "absl/strings/str_format.h"
|
46
47
|
#include "absl/strings/str_join.h"
|
@@ -48,10 +49,6 @@
|
|
48
49
|
#include <grpc/support/alloc.h>
|
49
50
|
#include <grpc/support/cpu.h>
|
50
51
|
|
51
|
-
#include "src/core/lib/debug/stats.h"
|
52
|
-
#include "src/core/lib/debug/stats_data.h"
|
53
|
-
#include "src/core/lib/gpr/string.h"
|
54
|
-
#include "src/core/lib/gpr/useful.h"
|
55
52
|
#include "src/core/lib/gprpp/manual_constructor.h"
|
56
53
|
#include "src/core/lib/gprpp/strerror.h"
|
57
54
|
#include "src/core/lib/iomgr/block_annotate.h"
|
@@ -60,6 +57,10 @@
|
|
60
57
|
#include "src/core/lib/iomgr/iomgr_internal.h"
|
61
58
|
#include "src/core/lib/iomgr/lockfree_event.h"
|
62
59
|
#include "src/core/lib/iomgr/wakeup_fd_posix.h"
|
60
|
+
#include "src/core/telemetry/stats.h"
|
61
|
+
#include "src/core/telemetry/stats_data.h"
|
62
|
+
#include "src/core/util/string.h"
|
63
|
+
#include "src/core/util/useful.h"
|
63
64
|
|
64
65
|
static grpc_wakeup_fd global_wakeup_fd;
|
65
66
|
static bool g_is_shutdown = true;
|
@@ -100,14 +101,14 @@ static int epoll_create_and_cloexec() {
|
|
100
101
|
#ifdef GRPC_LINUX_EPOLL_CREATE1
|
101
102
|
int fd = epoll_create1(EPOLL_CLOEXEC);
|
102
103
|
if (fd < 0) {
|
103
|
-
|
104
|
+
LOG(ERROR) << "epoll_create1 unavailable";
|
104
105
|
}
|
105
106
|
#else
|
106
107
|
int fd = epoll_create(MAX_EPOLL_EVENTS);
|
107
108
|
if (fd < 0) {
|
108
|
-
|
109
|
+
LOG(ERROR) << "epoll_create unavailable";
|
109
110
|
} else if (fcntl(fd, F_SETFD, FD_CLOEXEC) != 0) {
|
110
|
-
|
111
|
+
LOG(ERROR) << "fcntl following epoll_create failed";
|
111
112
|
return -1;
|
112
113
|
}
|
113
114
|
#endif
|
@@ -361,7 +362,7 @@ static grpc_fd* fd_create(int fd, const char* name, bool track_err) {
|
|
361
362
|
grpc_iomgr_register_object(&new_fd->iomgr_object, fd_name.c_str());
|
362
363
|
fork_fd_list_add_grpc_fd(new_fd);
|
363
364
|
#ifndef NDEBUG
|
364
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
365
|
+
if (GRPC_TRACE_FLAG_ENABLED(fd_refcount)) {
|
365
366
|
gpr_log(GPR_DEBUG, "FD %d %p create %s", fd, new_fd, fd_name.c_str());
|
366
367
|
}
|
367
368
|
#endif
|
@@ -730,7 +731,7 @@ static grpc_error_handle do_epoll_wait(grpc_pollset* ps,
|
|
730
731
|
|
731
732
|
if (r < 0) return GRPC_OS_ERROR(errno, "epoll_wait");
|
732
733
|
|
733
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
734
|
+
if (GRPC_TRACE_FLAG_ENABLED(polling)) {
|
734
735
|
gpr_log(GPR_INFO, "ps: %p poll got %d events", ps, r);
|
735
736
|
}
|
736
737
|
|
@@ -749,7 +750,7 @@ static bool begin_worker(grpc_pollset* pollset, grpc_pollset_worker* worker,
|
|
749
750
|
worker->schedule_on_end_work = (grpc_closure_list)GRPC_CLOSURE_LIST_INIT;
|
750
751
|
pollset->begin_refs++;
|
751
752
|
|
752
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
753
|
+
if (GRPC_TRACE_FLAG_ENABLED(polling)) {
|
753
754
|
gpr_log(GPR_INFO, "PS:%p BEGIN_STARTS:%p", pollset, worker);
|
754
755
|
}
|
755
756
|
|
@@ -768,7 +769,7 @@ static bool begin_worker(grpc_pollset* pollset, grpc_pollset_worker* worker,
|
|
768
769
|
retry_lock_neighborhood:
|
769
770
|
gpr_mu_lock(&neighborhood->mu);
|
770
771
|
gpr_mu_lock(&pollset->mu);
|
771
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
772
|
+
if (GRPC_TRACE_FLAG_ENABLED(polling)) {
|
772
773
|
gpr_log(GPR_INFO, "PS:%p BEGIN_REORG:%p kick_state=%s is_reassigning=%d",
|
773
774
|
pollset, worker, kick_state_string(worker->state),
|
774
775
|
is_reassigning);
|
@@ -821,7 +822,7 @@ static bool begin_worker(grpc_pollset* pollset, grpc_pollset_worker* worker,
|
|
821
822
|
worker->initialized_cv = true;
|
822
823
|
gpr_cv_init(&worker->cv);
|
823
824
|
while (worker->state == UNKICKED && !pollset->shutting_down) {
|
824
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
825
|
+
if (GRPC_TRACE_FLAG_ENABLED(polling)) {
|
825
826
|
gpr_log(GPR_INFO, "PS:%p BEGIN_WAIT:%p kick_state=%s shutdown=%d",
|
826
827
|
pollset, worker, kick_state_string(worker->state),
|
827
828
|
pollset->shutting_down);
|
@@ -838,7 +839,7 @@ static bool begin_worker(grpc_pollset* pollset, grpc_pollset_worker* worker,
|
|
838
839
|
grpc_core::ExecCtx::Get()->InvalidateNow();
|
839
840
|
}
|
840
841
|
|
841
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
842
|
+
if (GRPC_TRACE_FLAG_ENABLED(polling)) {
|
842
843
|
gpr_log(GPR_INFO,
|
843
844
|
"PS:%p BEGIN_DONE:%p kick_state=%s shutdown=%d "
|
844
845
|
"kicked_without_poller: %d",
|
@@ -881,7 +882,7 @@ static bool check_neighborhood_for_available_poller(
|
|
881
882
|
if (gpr_atm_no_barrier_cas(
|
882
883
|
&g_active_poller, 0,
|
883
884
|
reinterpret_cast<gpr_atm>(inspect_worker))) {
|
884
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
885
|
+
if (GRPC_TRACE_FLAG_ENABLED(polling)) {
|
885
886
|
gpr_log(GPR_INFO, " .. choose next poller to be %p",
|
886
887
|
inspect_worker);
|
887
888
|
}
|
@@ -890,8 +891,8 @@ static bool check_neighborhood_for_available_poller(
|
|
890
891
|
gpr_cv_signal(&inspect_worker->cv);
|
891
892
|
}
|
892
893
|
} else {
|
893
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
894
|
-
|
894
|
+
if (GRPC_TRACE_FLAG_ENABLED(polling)) {
|
895
|
+
LOG(INFO) << " .. beaten to choose next poller";
|
895
896
|
}
|
896
897
|
}
|
897
898
|
// even if we didn't win the cas, there's a worker, we can stop
|
@@ -908,7 +909,7 @@ static bool check_neighborhood_for_available_poller(
|
|
908
909
|
} while (!found_worker && inspect_worker != inspect->root_worker);
|
909
910
|
}
|
910
911
|
if (!found_worker) {
|
911
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
912
|
+
if (GRPC_TRACE_FLAG_ENABLED(polling)) {
|
912
913
|
gpr_log(GPR_INFO, " .. mark pollset %p inactive", inspect);
|
913
914
|
}
|
914
915
|
inspect->seen_inactive = true;
|
@@ -927,7 +928,7 @@ static bool check_neighborhood_for_available_poller(
|
|
927
928
|
|
928
929
|
static void end_worker(grpc_pollset* pollset, grpc_pollset_worker* worker,
|
929
930
|
grpc_pollset_worker** worker_hdl) {
|
930
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
931
|
+
if (GRPC_TRACE_FLAG_ENABLED(polling)) {
|
931
932
|
gpr_log(GPR_INFO, "PS:%p END_WORKER:%p", pollset, worker);
|
932
933
|
}
|
933
934
|
if (worker_hdl != nullptr) *worker_hdl = nullptr;
|
@@ -938,7 +939,7 @@ static void end_worker(grpc_pollset* pollset, grpc_pollset_worker* worker,
|
|
938
939
|
if (gpr_atm_no_barrier_load(&g_active_poller) ==
|
939
940
|
reinterpret_cast<gpr_atm>(worker)) {
|
940
941
|
if (worker->next != worker && worker->next->state == UNKICKED) {
|
941
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
942
|
+
if (GRPC_TRACE_FLAG_ENABLED(polling)) {
|
942
943
|
gpr_log(GPR_INFO, " .. choose next poller to be peer %p", worker);
|
943
944
|
}
|
944
945
|
CHECK(worker->next->initialized_cv);
|
@@ -989,8 +990,8 @@ static void end_worker(grpc_pollset* pollset, grpc_pollset_worker* worker,
|
|
989
990
|
if (worker->initialized_cv) {
|
990
991
|
gpr_cv_destroy(&worker->cv);
|
991
992
|
}
|
992
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
993
|
-
|
993
|
+
if (GRPC_TRACE_FLAG_ENABLED(polling)) {
|
994
|
+
LOG(INFO) << " .. remove worker";
|
994
995
|
}
|
995
996
|
if (EMPTIED == worker_remove(pollset, worker)) {
|
996
997
|
pollset_maybe_finish_shutdown(pollset);
|
@@ -1055,7 +1056,7 @@ static grpc_error_handle pollset_work(grpc_pollset* ps,
|
|
1055
1056
|
static grpc_error_handle pollset_kick(grpc_pollset* pollset,
|
1056
1057
|
grpc_pollset_worker* specific_worker) {
|
1057
1058
|
grpc_error_handle ret_err;
|
1058
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1059
|
+
if (GRPC_TRACE_FLAG_ENABLED(polling)) {
|
1059
1060
|
std::vector<std::string> log;
|
1060
1061
|
log.push_back(absl::StrFormat(
|
1061
1062
|
"PS:%p KICK:%p curps=%p curworker=%p root=%p", pollset, specific_worker,
|
@@ -1080,20 +1081,20 @@ static grpc_error_handle pollset_kick(grpc_pollset* pollset,
|
|
1080
1081
|
grpc_pollset_worker* root_worker = pollset->root_worker;
|
1081
1082
|
if (root_worker == nullptr) {
|
1082
1083
|
pollset->kicked_without_poller = true;
|
1083
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1084
|
-
|
1084
|
+
if (GRPC_TRACE_FLAG_ENABLED(polling)) {
|
1085
|
+
LOG(INFO) << " .. kicked_without_poller";
|
1085
1086
|
}
|
1086
1087
|
goto done;
|
1087
1088
|
}
|
1088
1089
|
grpc_pollset_worker* next_worker = root_worker->next;
|
1089
1090
|
if (root_worker->state == KICKED) {
|
1090
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1091
|
+
if (GRPC_TRACE_FLAG_ENABLED(polling)) {
|
1091
1092
|
gpr_log(GPR_INFO, " .. already kicked %p", root_worker);
|
1092
1093
|
}
|
1093
1094
|
SET_KICK_STATE(root_worker, KICKED);
|
1094
1095
|
goto done;
|
1095
1096
|
} else if (next_worker->state == KICKED) {
|
1096
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1097
|
+
if (GRPC_TRACE_FLAG_ENABLED(polling)) {
|
1097
1098
|
gpr_log(GPR_INFO, " .. already kicked %p", next_worker);
|
1098
1099
|
}
|
1099
1100
|
SET_KICK_STATE(next_worker, KICKED);
|
@@ -1103,14 +1104,14 @@ static grpc_error_handle pollset_kick(grpc_pollset* pollset,
|
|
1103
1104
|
root_worker ==
|
1104
1105
|
reinterpret_cast<grpc_pollset_worker*>(
|
1105
1106
|
gpr_atm_no_barrier_load(&g_active_poller))) {
|
1106
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1107
|
+
if (GRPC_TRACE_FLAG_ENABLED(polling)) {
|
1107
1108
|
gpr_log(GPR_INFO, " .. kicked %p", root_worker);
|
1108
1109
|
}
|
1109
1110
|
SET_KICK_STATE(root_worker, KICKED);
|
1110
1111
|
ret_err = grpc_wakeup_fd_wakeup(&global_wakeup_fd);
|
1111
1112
|
goto done;
|
1112
1113
|
} else if (next_worker->state == UNKICKED) {
|
1113
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1114
|
+
if (GRPC_TRACE_FLAG_ENABLED(polling)) {
|
1114
1115
|
gpr_log(GPR_INFO, " .. kicked %p", next_worker);
|
1115
1116
|
}
|
1116
1117
|
CHECK(next_worker->initialized_cv);
|
@@ -1119,7 +1120,7 @@ static grpc_error_handle pollset_kick(grpc_pollset* pollset,
|
|
1119
1120
|
goto done;
|
1120
1121
|
} else if (next_worker->state == DESIGNATED_POLLER) {
|
1121
1122
|
if (root_worker->state != DESIGNATED_POLLER) {
|
1122
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1123
|
+
if (GRPC_TRACE_FLAG_ENABLED(polling)) {
|
1123
1124
|
gpr_log(
|
1124
1125
|
GPR_INFO,
|
1125
1126
|
" .. kicked root non-poller %p (initialized_cv=%d) (poller=%p)",
|
@@ -1131,7 +1132,7 @@ static grpc_error_handle pollset_kick(grpc_pollset* pollset,
|
|
1131
1132
|
}
|
1132
1133
|
goto done;
|
1133
1134
|
} else {
|
1134
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1135
|
+
if (GRPC_TRACE_FLAG_ENABLED(polling)) {
|
1135
1136
|
gpr_log(GPR_INFO, " .. non-root poller %p (root=%p)", next_worker,
|
1136
1137
|
root_worker);
|
1137
1138
|
}
|
@@ -1145,8 +1146,8 @@ static grpc_error_handle pollset_kick(grpc_pollset* pollset,
|
|
1145
1146
|
goto done;
|
1146
1147
|
}
|
1147
1148
|
} else {
|
1148
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1149
|
-
|
1149
|
+
if (GRPC_TRACE_FLAG_ENABLED(polling)) {
|
1150
|
+
LOG(INFO) << " .. kicked while waking up";
|
1150
1151
|
}
|
1151
1152
|
goto done;
|
1152
1153
|
}
|
@@ -1155,12 +1156,12 @@ static grpc_error_handle pollset_kick(grpc_pollset* pollset,
|
|
1155
1156
|
}
|
1156
1157
|
|
1157
1158
|
if (specific_worker->state == KICKED) {
|
1158
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1159
|
-
|
1159
|
+
if (GRPC_TRACE_FLAG_ENABLED(polling)) {
|
1160
|
+
LOG(INFO) << " .. specific worker already kicked";
|
1160
1161
|
}
|
1161
1162
|
goto done;
|
1162
1163
|
} else if (g_current_thread_worker == specific_worker) {
|
1163
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1164
|
+
if (GRPC_TRACE_FLAG_ENABLED(polling)) {
|
1164
1165
|
gpr_log(GPR_INFO, " .. mark %p kicked", specific_worker);
|
1165
1166
|
}
|
1166
1167
|
SET_KICK_STATE(specific_worker, KICKED);
|
@@ -1168,22 +1169,22 @@ static grpc_error_handle pollset_kick(grpc_pollset* pollset,
|
|
1168
1169
|
} else if (specific_worker ==
|
1169
1170
|
reinterpret_cast<grpc_pollset_worker*>(
|
1170
1171
|
gpr_atm_no_barrier_load(&g_active_poller))) {
|
1171
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1172
|
-
|
1172
|
+
if (GRPC_TRACE_FLAG_ENABLED(polling)) {
|
1173
|
+
LOG(INFO) << " .. kick active poller";
|
1173
1174
|
}
|
1174
1175
|
SET_KICK_STATE(specific_worker, KICKED);
|
1175
1176
|
ret_err = grpc_wakeup_fd_wakeup(&global_wakeup_fd);
|
1176
1177
|
goto done;
|
1177
1178
|
} else if (specific_worker->initialized_cv) {
|
1178
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1179
|
-
|
1179
|
+
if (GRPC_TRACE_FLAG_ENABLED(polling)) {
|
1180
|
+
LOG(INFO) << " .. kick waiting worker";
|
1180
1181
|
}
|
1181
1182
|
SET_KICK_STATE(specific_worker, KICKED);
|
1182
1183
|
gpr_cv_signal(&specific_worker->cv);
|
1183
1184
|
goto done;
|
1184
1185
|
} else {
|
1185
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1186
|
-
|
1186
|
+
if (GRPC_TRACE_FLAG_ENABLED(polling)) {
|
1187
|
+
LOG(INFO) << " .. kick non-waiting worker";
|
1187
1188
|
}
|
1188
1189
|
SET_KICK_STATE(specific_worker, KICKED);
|
1189
1190
|
goto done;
|
@@ -1311,7 +1312,7 @@ static void reset_event_manager_on_fork() {
|
|
1311
1312
|
static bool init_epoll1_linux() {
|
1312
1313
|
if (!g_is_shutdown) return true;
|
1313
1314
|
if (!grpc_has_wakeup_fd()) {
|
1314
|
-
|
1315
|
+
LOG(ERROR) << "Skipping epoll1 because of no wakeup fd.";
|
1315
1316
|
return false;
|
1316
1317
|
}
|
1317
1318
|
|
@@ -34,21 +34,22 @@
|
|
34
34
|
#include <string>
|
35
35
|
|
36
36
|
#include "absl/log/check.h"
|
37
|
+
#include "absl/log/log.h"
|
37
38
|
#include "absl/strings/str_cat.h"
|
38
39
|
#include "absl/strings/str_format.h"
|
39
40
|
|
40
41
|
#include <grpc/support/alloc.h>
|
41
42
|
#include <grpc/support/log.h>
|
42
43
|
|
43
|
-
#include "src/core/lib/debug/stats.h"
|
44
|
-
#include "src/core/lib/debug/stats_data.h"
|
45
|
-
#include "src/core/lib/gpr/useful.h"
|
46
44
|
#include "src/core/lib/gprpp/crash.h"
|
47
45
|
#include "src/core/lib/gprpp/thd.h"
|
48
46
|
#include "src/core/lib/iomgr/block_annotate.h"
|
49
47
|
#include "src/core/lib/iomgr/ev_poll_posix.h"
|
50
48
|
#include "src/core/lib/iomgr/iomgr_internal.h"
|
51
49
|
#include "src/core/lib/iomgr/wakeup_fd_posix.h"
|
50
|
+
#include "src/core/telemetry/stats.h"
|
51
|
+
#include "src/core/telemetry/stats_data.h"
|
52
|
+
#include "src/core/util/useful.h"
|
52
53
|
|
53
54
|
#define GRPC_POLLSET_KICK_BROADCAST ((grpc_pollset_worker*)1)
|
54
55
|
|
@@ -266,19 +267,29 @@ struct grpc_pollset_set {
|
|
266
267
|
//
|
267
268
|
|
268
269
|
static void fork_fd_list_remove_node(grpc_fork_fd_list* node) {
|
270
|
+
gpr_mu_lock(&fork_fd_list_mu);
|
271
|
+
if (fork_fd_list_head == node) {
|
272
|
+
fork_fd_list_head = node->next;
|
273
|
+
}
|
274
|
+
if (node->prev != nullptr) {
|
275
|
+
node->prev->next = node->next;
|
276
|
+
}
|
277
|
+
if (node->next != nullptr) {
|
278
|
+
node->next->prev = node->prev;
|
279
|
+
}
|
280
|
+
gpr_free(node);
|
281
|
+
gpr_mu_unlock(&fork_fd_list_mu);
|
282
|
+
}
|
283
|
+
|
284
|
+
static void fork_fd_list_remove_grpc_fd(grpc_fd* fd) {
|
269
285
|
if (track_fds_for_fork) {
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
if (node->next != nullptr) {
|
278
|
-
node->next->prev = node->prev;
|
279
|
-
}
|
280
|
-
gpr_free(node);
|
281
|
-
gpr_mu_unlock(&fork_fd_list_mu);
|
286
|
+
fork_fd_list_remove_node(fd->fork_fd_list);
|
287
|
+
}
|
288
|
+
}
|
289
|
+
|
290
|
+
static void fork_fd_list_remove_wakeup_fd(grpc_cached_wakeup_fd* fd) {
|
291
|
+
if (track_fds_for_fork) {
|
292
|
+
fork_fd_list_remove_node(fd->fork_fd_list);
|
282
293
|
}
|
283
294
|
}
|
284
295
|
|
@@ -322,7 +333,7 @@ static void fork_fd_list_add_wakeup_fd(grpc_cached_wakeup_fd* fd) {
|
|
322
333
|
#define UNREF_BY(fd, n, reason) unref_by(fd, n, reason, __FILE__, __LINE__)
|
323
334
|
static void ref_by(grpc_fd* fd, int n, const char* reason, const char* file,
|
324
335
|
int line) {
|
325
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
336
|
+
if (GRPC_TRACE_FLAG_ENABLED(fd_refcount)) {
|
326
337
|
gpr_log(GPR_DEBUG,
|
327
338
|
"FD %d %p ref %d %" PRIdPTR " -> %" PRIdPTR " [%s; %s:%d]",
|
328
339
|
fd->fd, fd, n, gpr_atm_no_barrier_load(&fd->refst),
|
@@ -347,7 +358,7 @@ static void ref_by(grpc_fd* fd, int n) {
|
|
347
358
|
#ifndef NDEBUG
|
348
359
|
static void unref_by(grpc_fd* fd, int n, const char* reason, const char* file,
|
349
360
|
int line) {
|
350
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
361
|
+
if (GRPC_TRACE_FLAG_ENABLED(fd_refcount)) {
|
351
362
|
gpr_log(GPR_DEBUG,
|
352
363
|
"FD %d %p unref %d %" PRIdPTR " -> %" PRIdPTR " [%s; %s:%d]",
|
353
364
|
fd->fd, fd, n, gpr_atm_no_barrier_load(&fd->refst),
|
@@ -360,7 +371,7 @@ static void unref_by(grpc_fd* fd, int n) {
|
|
360
371
|
if (old == n) {
|
361
372
|
gpr_mu_destroy(&fd->mu);
|
362
373
|
grpc_iomgr_unregister_object(&fd->iomgr_object);
|
363
|
-
|
374
|
+
fork_fd_list_remove_grpc_fd(fd);
|
364
375
|
if (fd->shutdown) {
|
365
376
|
}
|
366
377
|
fd->shutdown_error.~Status();
|
@@ -582,9 +593,8 @@ static void fd_notify_on_write(grpc_fd* fd, grpc_closure* closure) {
|
|
582
593
|
}
|
583
594
|
|
584
595
|
static void fd_notify_on_error(grpc_fd* /*fd*/, grpc_closure* closure) {
|
585
|
-
|
586
|
-
|
587
|
-
}
|
596
|
+
GRPC_TRACE_LOG(polling, ERROR)
|
597
|
+
<< "Polling engine does not support tracking errors.";
|
588
598
|
grpc_core::ExecCtx::Run(DEBUG_LOCATION, closure, absl::CancelledError());
|
589
599
|
}
|
590
600
|
|
@@ -601,9 +611,8 @@ static void fd_set_writable(grpc_fd* fd) {
|
|
601
611
|
}
|
602
612
|
|
603
613
|
static void fd_set_error(grpc_fd* /*fd*/) {
|
604
|
-
|
605
|
-
|
606
|
-
}
|
614
|
+
GRPC_TRACE_LOG(polling, ERROR)
|
615
|
+
<< "Polling engine does not support tracking errors.";
|
607
616
|
}
|
608
617
|
|
609
618
|
static uint32_t fd_begin_poll(grpc_fd* fd, grpc_pollset* pollset,
|
@@ -859,7 +868,7 @@ static void pollset_destroy(grpc_pollset* pollset) {
|
|
859
868
|
CHECK(!pollset_has_workers(pollset));
|
860
869
|
while (pollset->local_wakeup_cache) {
|
861
870
|
grpc_cached_wakeup_fd* next = pollset->local_wakeup_cache->next;
|
862
|
-
|
871
|
+
fork_fd_list_remove_wakeup_fd(pollset->local_wakeup_cache);
|
863
872
|
grpc_wakeup_fd_destroy(&pollset->local_wakeup_cache->fd);
|
864
873
|
gpr_free(pollset->local_wakeup_cache);
|
865
874
|
pollset->local_wakeup_cache = next;
|
@@ -1020,7 +1029,7 @@ static grpc_error_handle pollset_work(grpc_pollset* pollset,
|
|
1020
1029
|
r = grpc_poll_function(pfds, pfd_count, timeout);
|
1021
1030
|
GRPC_SCHEDULING_END_BLOCKING_REGION;
|
1022
1031
|
|
1023
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1032
|
+
if (GRPC_TRACE_FLAG_ENABLED(polling)) {
|
1024
1033
|
gpr_log(GPR_INFO, "%p poll=%d", pollset, r);
|
1025
1034
|
}
|
1026
1035
|
|
@@ -1044,7 +1053,7 @@ static grpc_error_handle pollset_work(grpc_pollset* pollset,
|
|
1044
1053
|
}
|
1045
1054
|
} else {
|
1046
1055
|
if (pfds[0].revents & POLLIN_CHECK) {
|
1047
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1056
|
+
if (GRPC_TRACE_FLAG_ENABLED(polling)) {
|
1048
1057
|
gpr_log(GPR_INFO, "%p: got_wakeup", pollset);
|
1049
1058
|
}
|
1050
1059
|
work_combine_error(
|
@@ -1058,7 +1067,7 @@ static grpc_error_handle pollset_work(grpc_pollset* pollset,
|
|
1058
1067
|
}
|
1059
1068
|
fd_end_poll(&watchers[i], 0, 0);
|
1060
1069
|
} else {
|
1061
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1070
|
+
if (GRPC_TRACE_FLAG_ENABLED(polling)) {
|
1062
1071
|
gpr_log(GPR_INFO, "%p got_event: %d r:%d w:%d [%d]", pollset,
|
1063
1072
|
pfds[i].fd, (pfds[i].revents & POLLIN_CHECK) != 0,
|
1064
1073
|
(pfds[i].revents & POLLOUT_CHECK) != 0, pfds[i].revents);
|
@@ -1397,7 +1406,7 @@ const grpc_event_engine_vtable grpc_ev_poll_posix = {
|
|
1397
1406
|
// check_engine_available =
|
1398
1407
|
[](bool) {
|
1399
1408
|
if (!grpc_has_wakeup_fd()) {
|
1400
|
-
|
1409
|
+
LOG(ERROR) << "Skipping poll because of no wakeup fd.";
|
1401
1410
|
return false;
|
1402
1411
|
}
|
1403
1412
|
if (!GRPC_LOG_IF_ERROR("pollset_global_init", pollset_global_init())) {
|
@@ -25,6 +25,7 @@
|
|
25
25
|
|
26
26
|
#include <string.h>
|
27
27
|
|
28
|
+
#include "absl/log/log.h"
|
28
29
|
#include "absl/strings/str_format.h"
|
29
30
|
#include "absl/strings/str_split.h"
|
30
31
|
|
@@ -34,25 +35,19 @@
|
|
34
35
|
|
35
36
|
#include "src/core/lib/config/config_vars.h"
|
36
37
|
#include "src/core/lib/debug/trace.h"
|
37
|
-
#include "src/core/lib/gpr/useful.h"
|
38
38
|
#include "src/core/lib/gprpp/crash.h"
|
39
39
|
#include "src/core/lib/iomgr/ev_epoll1_linux.h"
|
40
40
|
#include "src/core/lib/iomgr/ev_poll_posix.h"
|
41
41
|
#include "src/core/lib/iomgr/ev_posix.h"
|
42
42
|
#include "src/core/lib/iomgr/internal_errqueue.h"
|
43
|
-
|
44
|
-
grpc_core::DebugOnlyTraceFlag grpc_polling_trace(
|
45
|
-
false, "polling"); // Disabled by default
|
43
|
+
#include "src/core/util/useful.h"
|
46
44
|
|
47
45
|
// Traces fd create/close operations
|
48
|
-
grpc_core::DebugOnlyTraceFlag grpc_fd_trace(false, "fd_trace");
|
49
|
-
grpc_core::DebugOnlyTraceFlag grpc_trace_fd_refcount(false, "fd_refcount");
|
50
|
-
grpc_core::DebugOnlyTraceFlag grpc_polling_api_trace(false, "polling_api");
|
51
46
|
|
52
47
|
// Polling API trace only enabled in debug builds
|
53
48
|
#ifndef NDEBUG
|
54
49
|
#define GRPC_POLLING_API_TRACE(format, ...) \
|
55
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
50
|
+
if (GRPC_TRACE_FLAG_ENABLED(polling_api)) { \
|
56
51
|
gpr_log(GPR_INFO, "(polling-api) " format, __VA_ARGS__); \
|
57
52
|
}
|
58
53
|
#else
|
@@ -109,7 +104,7 @@ static void try_engine(absl::string_view engine) {
|
|
109
104
|
if (g_vtables[i] != nullptr && is(engine, g_vtables[i]->name) &&
|
110
105
|
g_vtables[i]->check_engine_available(engine == g_vtables[i]->name)) {
|
111
106
|
g_event_engine = g_vtables[i];
|
112
|
-
|
107
|
+
VLOG(2) << "Using polling engine: " << g_event_engine->name;
|
113
108
|
return;
|
114
109
|
}
|
115
110
|
}
|
@@ -339,4 +334,8 @@ void grpc_shutdown_background_closure(void) {
|
|
339
334
|
g_event_engine->shutdown_background_closure();
|
340
335
|
}
|
341
336
|
|
337
|
+
#else // GRPC_POSIX_SOCKET_EV
|
338
|
+
|
339
|
+
const char* grpc_get_poll_strategy_name() { return ""; }
|
340
|
+
|
342
341
|
#endif // GRPC_POSIX_SOCKET_EV
|
@@ -19,6 +19,10 @@
|
|
19
19
|
#ifndef GRPC_SRC_CORE_LIB_IOMGR_EV_POSIX_H
|
20
20
|
#define GRPC_SRC_CORE_LIB_IOMGR_EV_POSIX_H
|
21
21
|
|
22
|
+
#include "src/core/lib/iomgr/port.h"
|
23
|
+
|
24
|
+
#ifdef GRPC_POSIX_SOCKET_EV
|
25
|
+
|
22
26
|
#include <poll.h>
|
23
27
|
|
24
28
|
#include <grpc/support/port_platform.h>
|
@@ -29,11 +33,8 @@
|
|
29
33
|
#include "src/core/lib/iomgr/pollset_set.h"
|
30
34
|
#include "src/core/lib/iomgr/wakeup_fd_posix.h"
|
31
35
|
|
32
|
-
extern grpc_core::DebugOnlyTraceFlag grpc_fd_trace; // Disabled by default
|
33
|
-
extern grpc_core::DebugOnlyTraceFlag grpc_polling_trace; // Disabled by default
|
34
|
-
|
35
36
|
#define GRPC_FD_TRACE(format, ...) \
|
36
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
37
|
+
if (GRPC_TRACE_FLAG_ENABLED(fd_trace)) { \
|
37
38
|
gpr_log(GPR_INFO, "(fd-trace) " format, __VA_ARGS__); \
|
38
39
|
}
|
39
40
|
|
@@ -99,9 +100,6 @@ void grpc_register_event_engine_factory(const grpc_event_engine_vtable* vtable,
|
|
99
100
|
void grpc_event_engine_init(void);
|
100
101
|
void grpc_event_engine_shutdown(void);
|
101
102
|
|
102
|
-
// Return the name of the poll strategy
|
103
|
-
const char* grpc_get_poll_strategy_name();
|
104
|
-
|
105
103
|
// Returns true if polling engine can track errors separately, false otherwise.
|
106
104
|
// If this is true, fd can be created with track_err set. After this, error
|
107
105
|
// events will be reported using fd_notify_on_error. If it is not set, errors
|
@@ -207,4 +205,9 @@ void grpc_shutdown_background_closure();
|
|
207
205
|
typedef int (*grpc_poll_function_type)(struct pollfd*, nfds_t, int);
|
208
206
|
extern grpc_poll_function_type grpc_poll_function;
|
209
207
|
|
208
|
+
#endif // GRPC_POSIX_SOCKET_EV
|
209
|
+
|
210
|
+
// Return the name of the poll strategy
|
211
|
+
const char* grpc_get_poll_strategy_name();
|
212
|
+
|
210
213
|
#endif // GRPC_SRC_CORE_LIB_IOMGR_EV_POSIX_H
|
@@ -34,7 +34,7 @@ void RunEventEngineClosure(grpc_closure* closure, grpc_error_handle error) {
|
|
34
34
|
grpc_core::ExecCtx exec_ctx;
|
35
35
|
#ifndef NDEBUG
|
36
36
|
closure->scheduled = false;
|
37
|
-
if (
|
37
|
+
if (GRPC_TRACE_FLAG_ENABLED(closure)) {
|
38
38
|
gpr_log(GPR_DEBUG,
|
39
39
|
"EventEngine: running closure %p: created [%s:%d]: %s [%s:%d]",
|
40
40
|
closure, closure->file_created, closure->line_created,
|
@@ -44,7 +44,7 @@ void RunEventEngineClosure(grpc_closure* closure, grpc_error_handle error) {
|
|
44
44
|
#endif
|
45
45
|
closure->cb(closure->cb_arg, error);
|
46
46
|
#ifndef NDEBUG
|
47
|
-
if (
|
47
|
+
if (GRPC_TRACE_FLAG_ENABLED(closure)) {
|
48
48
|
gpr_log(GPR_DEBUG, "EventEngine: closure %p finished", closure);
|
49
49
|
}
|
50
50
|
#endif
|