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
@@ -11,6 +11,8 @@
|
|
11
11
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
12
|
// See the License for the specific language governing permissions and
|
13
13
|
// limitations under the License.
|
14
|
+
#include "absl/strings/str_cat.h"
|
15
|
+
|
14
16
|
#include <grpc/event_engine/event_engine.h>
|
15
17
|
#include <grpc/support/port_platform.h>
|
16
18
|
|
@@ -21,24 +23,47 @@ const EventEngine::TaskHandle EventEngine::TaskHandle::kInvalid = {-1, -1};
|
|
21
23
|
const EventEngine::ConnectionHandle EventEngine::ConnectionHandle::kInvalid = {
|
22
24
|
-1, -1};
|
23
25
|
|
26
|
+
namespace {
|
27
|
+
template <typename T>
|
28
|
+
bool eq(const T& lhs, const T& rhs) {
|
29
|
+
return lhs.keys[0] == rhs.keys[0] && lhs.keys[1] == rhs.keys[1];
|
30
|
+
}
|
31
|
+
template <typename T>
|
32
|
+
std::ostream& printout(std::ostream& out, const T& handle) {
|
33
|
+
out << absl::StrCat("{", absl::Hex(handle.keys[0], absl::kZeroPad16), ",",
|
34
|
+
absl::Hex(handle.keys[1], absl::kZeroPad16), "}");
|
35
|
+
return out;
|
36
|
+
}
|
37
|
+
} // namespace
|
38
|
+
|
24
39
|
bool operator==(const EventEngine::TaskHandle& lhs,
|
25
40
|
const EventEngine::TaskHandle& rhs) {
|
26
|
-
return lhs
|
41
|
+
return eq(lhs, rhs);
|
27
42
|
}
|
28
43
|
|
29
44
|
bool operator!=(const EventEngine::TaskHandle& lhs,
|
30
45
|
const EventEngine::TaskHandle& rhs) {
|
31
|
-
return !(lhs
|
46
|
+
return !eq(lhs, rhs);
|
47
|
+
}
|
48
|
+
|
49
|
+
std::ostream& operator<<(std::ostream& out,
|
50
|
+
const EventEngine::TaskHandle& handle) {
|
51
|
+
return printout(out, handle);
|
32
52
|
}
|
33
53
|
|
34
54
|
bool operator==(const EventEngine::ConnectionHandle& lhs,
|
35
55
|
const EventEngine::ConnectionHandle& rhs) {
|
36
|
-
return lhs
|
56
|
+
return eq(lhs, rhs);
|
37
57
|
}
|
38
58
|
|
39
59
|
bool operator!=(const EventEngine::ConnectionHandle& lhs,
|
40
60
|
const EventEngine::ConnectionHandle& rhs) {
|
41
|
-
return !(lhs
|
61
|
+
return !eq(lhs, rhs);
|
62
|
+
}
|
63
|
+
|
64
|
+
std::ostream& operator<<(std::ostream& out,
|
65
|
+
const EventEngine::ConnectionHandle& handle) {
|
66
|
+
return printout(out, handle);
|
42
67
|
}
|
43
68
|
|
44
69
|
} // namespace experimental
|
@@ -112,6 +112,13 @@ class EventEngineSupportsFdExtension {
|
|
112
112
|
int fd, const EndpointConfig& config,
|
113
113
|
MemoryAllocator memory_allocator) = 0;
|
114
114
|
|
115
|
+
/// Creates an EventEngine::Endpoint from an fd which is already assumed to be
|
116
|
+
/// connected to a remote peer. See \a CreatePosixEndpointFromFd for details.
|
117
|
+
/// This has the same behavior, but the \a memory_allocator is taken from the
|
118
|
+
/// EndpointConfig's resource quota.
|
119
|
+
virtual std::unique_ptr<EventEngine::Endpoint> CreateEndpointFromFd(
|
120
|
+
int fd, const EndpointConfig& config) = 0;
|
121
|
+
|
115
122
|
/// Called when the posix listener has accepted a new client connection.
|
116
123
|
/// \a listener_fd - The listening socket fd that accepted the new client
|
117
124
|
/// connection.
|
@@ -0,0 +1,43 @@
|
|
1
|
+
// Copyright 2024 gRPC authors.
|
2
|
+
//
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
// you may not use this file except in compliance with the License.
|
5
|
+
// You may obtain a copy of the License at
|
6
|
+
//
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
//
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
// See the License for the specific language governing permissions and
|
13
|
+
// limitations under the License.
|
14
|
+
|
15
|
+
#ifndef GRPC_SRC_CORE_LIB_EVENT_ENGINE_EXTENSIONS_TCP_TRACE_H
|
16
|
+
#define GRPC_SRC_CORE_LIB_EVENT_ENGINE_EXTENSIONS_TCP_TRACE_H
|
17
|
+
|
18
|
+
#include <memory>
|
19
|
+
|
20
|
+
#include "absl/strings/string_view.h"
|
21
|
+
|
22
|
+
#include "src/core/telemetry/tcp_tracer.h"
|
23
|
+
|
24
|
+
namespace grpc_event_engine {
|
25
|
+
namespace experimental {
|
26
|
+
|
27
|
+
/** If non-zero, enable TCP tracing and stats collection. */
|
28
|
+
#define GRPC_ARG_TCP_TRACING_ENABLED "grpc.tcp_tracing_enabled"
|
29
|
+
|
30
|
+
class TcpTraceExtension {
|
31
|
+
public:
|
32
|
+
virtual ~TcpTraceExtension() = default;
|
33
|
+
static absl::string_view EndpointExtensionName() {
|
34
|
+
return "io.grpc.event_engine.extension.tcp_trace";
|
35
|
+
}
|
36
|
+
virtual std::shared_ptr<grpc_core::TcpTracerInterface>
|
37
|
+
InitializeAndReturnTcpTracer() = 0;
|
38
|
+
};
|
39
|
+
|
40
|
+
} // namespace experimental
|
41
|
+
} // namespace grpc_event_engine
|
42
|
+
|
43
|
+
#endif // GRPC_SRC_CORE_LIB_EVENT_ENGINE_EXTENSIONS_TCP_TRACE_H
|
@@ -28,12 +28,11 @@
|
|
28
28
|
#include <vector>
|
29
29
|
|
30
30
|
#include "src/core/lib/config/config_vars.h"
|
31
|
+
#include "src/core/lib/debug/trace.h"
|
31
32
|
|
32
33
|
namespace grpc_event_engine {
|
33
34
|
namespace experimental {
|
34
35
|
|
35
|
-
grpc_core::TraceFlag grpc_trace_fork(false, "fork");
|
36
|
-
|
37
36
|
namespace {
|
38
37
|
bool IsForkEnabled() {
|
39
38
|
static bool enabled = grpc_core::ConfigVars::Get().EnableForkSupport();
|
@@ -58,7 +57,7 @@ void ObjectGroupForkHandler::RegisterForkable(
|
|
58
57
|
void ObjectGroupForkHandler::Prefork() {
|
59
58
|
if (IsForkEnabled()) {
|
60
59
|
CHECK(!std::exchange(is_forking_, true));
|
61
|
-
|
60
|
+
GRPC_TRACE_LOG(fork, INFO) << "PrepareFork";
|
62
61
|
for (auto it = forkables_.begin(); it != forkables_.end();) {
|
63
62
|
auto shared = it->lock();
|
64
63
|
if (shared) {
|
@@ -74,7 +73,7 @@ void ObjectGroupForkHandler::Prefork() {
|
|
74
73
|
void ObjectGroupForkHandler::PostforkParent() {
|
75
74
|
if (IsForkEnabled()) {
|
76
75
|
CHECK(is_forking_);
|
77
|
-
|
76
|
+
GRPC_TRACE_LOG(fork, INFO) << "PostforkParent";
|
78
77
|
for (auto it = forkables_.begin(); it != forkables_.end();) {
|
79
78
|
auto shared = it->lock();
|
80
79
|
if (shared) {
|
@@ -91,7 +90,7 @@ void ObjectGroupForkHandler::PostforkParent() {
|
|
91
90
|
void ObjectGroupForkHandler::PostforkChild() {
|
92
91
|
if (IsForkEnabled()) {
|
93
92
|
CHECK(is_forking_);
|
94
|
-
|
93
|
+
GRPC_TRACE_LOG(fork, INFO) << "PostforkChild";
|
95
94
|
for (auto it = forkables_.begin(); it != forkables_.end();) {
|
96
95
|
auto shared = it->lock();
|
97
96
|
if (shared) {
|
@@ -25,17 +25,6 @@
|
|
25
25
|
namespace grpc_event_engine {
|
26
26
|
namespace experimental {
|
27
27
|
|
28
|
-
extern grpc_core::TraceFlag grpc_trace_fork;
|
29
|
-
|
30
|
-
#define GRPC_FORK_TRACE_LOG(format, ...) \
|
31
|
-
do { \
|
32
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_fork)) { \
|
33
|
-
gpr_log(GPR_DEBUG, "[fork] " format, __VA_ARGS__); \
|
34
|
-
} \
|
35
|
-
} while (0)
|
36
|
-
|
37
|
-
#define GRPC_FORK_TRACE_LOG_STRING(format) GRPC_FORK_TRACE_LOG("%s", format)
|
38
|
-
|
39
28
|
// An interface to be implemented by EventEngines that wish to have managed fork
|
40
29
|
// support. The child class must guarantee that those methods are thread-safe.
|
41
30
|
class Forkable {
|
@@ -19,13 +19,13 @@
|
|
19
19
|
#include <memory>
|
20
20
|
|
21
21
|
#include "absl/log/check.h"
|
22
|
+
#include "absl/log/log.h"
|
22
23
|
#include "absl/status/status.h"
|
23
24
|
#include "absl/status/statusor.h"
|
24
25
|
#include "absl/strings/str_format.h"
|
25
26
|
|
26
27
|
#include <grpc/event_engine/event_engine.h>
|
27
28
|
#include <grpc/status.h>
|
28
|
-
#include <grpc/support/log.h>
|
29
29
|
#include <grpc/support/port_platform.h>
|
30
30
|
#include <grpc/support/sync.h>
|
31
31
|
|
@@ -164,14 +164,14 @@ int EpollCreateAndCloexec() {
|
|
164
164
|
#ifdef GRPC_LINUX_EPOLL_CREATE1
|
165
165
|
int fd = epoll_create1(EPOLL_CLOEXEC);
|
166
166
|
if (fd < 0) {
|
167
|
-
|
167
|
+
LOG(ERROR) << "epoll_create1 unavailable";
|
168
168
|
}
|
169
169
|
#else
|
170
170
|
int fd = epoll_create(MAX_EPOLL_EVENTS);
|
171
171
|
if (fd < 0) {
|
172
|
-
|
172
|
+
LOG(ERROR) << "epoll_create unavailable";
|
173
173
|
} else if (fcntl(fd, F_SETFD, FD_CLOEXEC) != 0) {
|
174
|
-
|
174
|
+
LOG(ERROR) << "fcntl following epoll_create failed";
|
175
175
|
return -1;
|
176
176
|
}
|
177
177
|
#endif
|
@@ -297,8 +297,8 @@ void Epoll1EventHandle::OrphanHandle(PosixEngineClosure* on_done,
|
|
297
297
|
epoll_event phony_event;
|
298
298
|
if (epoll_ctl(poller_->g_epoll_set_.epfd, EPOLL_CTL_DEL, fd_,
|
299
299
|
&phony_event) != 0) {
|
300
|
-
|
301
|
-
|
300
|
+
LOG(ERROR) << "OrphanHandle: epoll_ctl failed: "
|
301
|
+
<< grpc_core::StrError(errno);
|
302
302
|
}
|
303
303
|
}
|
304
304
|
*release_fd = fd_;
|
@@ -341,8 +341,8 @@ void Epoll1EventHandle::HandleShutdownInternal(absl::Status why,
|
|
341
341
|
epoll_event phony_event;
|
342
342
|
if (epoll_ctl(poller_->g_epoll_set_.epfd, EPOLL_CTL_DEL, fd_,
|
343
343
|
&phony_event) != 0) {
|
344
|
-
|
345
|
-
|
344
|
+
LOG(ERROR) << "HandleShutdownInternal: epoll_ctl failed: "
|
345
|
+
<< grpc_core::StrError(errno);
|
346
346
|
}
|
347
347
|
}
|
348
348
|
write_closure_->SetShutdown(why);
|
@@ -356,7 +356,7 @@ Epoll1Poller::Epoll1Poller(Scheduler* scheduler)
|
|
356
356
|
wakeup_fd_ = *CreateWakeupFd();
|
357
357
|
CHECK(wakeup_fd_ != nullptr);
|
358
358
|
CHECK_GE(g_epoll_set_.epfd, 0);
|
359
|
-
|
359
|
+
LOG(INFO) << "grpc epoll fd: " << g_epoll_set_.epfd;
|
360
360
|
struct epoll_event ev;
|
361
361
|
ev.events = static_cast<uint32_t>(EPOLLIN | EPOLLET);
|
362
362
|
ev.data.ptr = wakeup_fd_.get();
|
@@ -414,8 +414,7 @@ EventHandle* Epoll1Poller::CreateHandle(int fd, absl::string_view /*name*/,
|
|
414
414
|
ev.data.ptr = reinterpret_cast<void*>(reinterpret_cast<intptr_t>(new_handle) |
|
415
415
|
(track_err ? 1 : 0));
|
416
416
|
if (epoll_ctl(g_epoll_set_.epfd, EPOLL_CTL_ADD, fd, &ev) != 0) {
|
417
|
-
|
418
|
-
grpc_core::StrError(errno).c_str());
|
417
|
+
LOG(ERROR) << "epoll_ctl failed: " << grpc_core::StrError(errno);
|
419
418
|
}
|
420
419
|
|
421
420
|
return new_handle;
|
@@ -14,7 +14,8 @@
|
|
14
14
|
|
15
15
|
#include "src/core/lib/event_engine/posix_engine/internal_errqueue.h"
|
16
16
|
|
17
|
-
#include
|
17
|
+
#include "absl/log/log.h"
|
18
|
+
|
18
19
|
#include <grpc/support/port_platform.h>
|
19
20
|
|
20
21
|
#include "src/core/lib/iomgr/port.h"
|
@@ -49,7 +50,7 @@ bool KernelSupportsErrqueue() {
|
|
49
50
|
// least 4.0.0
|
50
51
|
struct utsname buffer;
|
51
52
|
if (uname(&buffer) != 0) {
|
52
|
-
|
53
|
+
LOG(ERROR) << "uname: " << grpc_core::StrError(errno);
|
53
54
|
return false;
|
54
55
|
}
|
55
56
|
char* release = buffer.release;
|
@@ -60,7 +61,7 @@ bool KernelSupportsErrqueue() {
|
|
60
61
|
if (strtol(release, nullptr, 10) >= 4) {
|
61
62
|
return true;
|
62
63
|
} else {
|
63
|
-
|
64
|
+
VLOG(2) << "ERRQUEUE support not enabled";
|
64
65
|
}
|
65
66
|
#endif // GRPC_LINUX_ERRQUEUE
|
66
67
|
return false;
|
@@ -34,8 +34,8 @@
|
|
34
34
|
#include "absl/strings/str_format.h"
|
35
35
|
|
36
36
|
#include "src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.h"
|
37
|
-
#include "src/core/lib/gpr/useful.h"
|
38
37
|
#include "src/core/lib/gprpp/host_port.h"
|
38
|
+
#include "src/core/util/useful.h"
|
39
39
|
|
40
40
|
namespace grpc_event_engine {
|
41
41
|
namespace experimental {
|
@@ -27,6 +27,7 @@
|
|
27
27
|
|
28
28
|
#include "absl/functional/any_invocable.h"
|
29
29
|
#include "absl/log/check.h"
|
30
|
+
#include "absl/log/log.h"
|
30
31
|
#include "absl/status/status.h"
|
31
32
|
#include "absl/status/statusor.h"
|
32
33
|
#include "absl/strings/str_cat.h"
|
@@ -36,7 +37,6 @@
|
|
36
37
|
#include <grpc/event_engine/slice.h>
|
37
38
|
#include <grpc/event_engine/slice_buffer.h>
|
38
39
|
#include <grpc/status.h>
|
39
|
-
#include <grpc/support/log.h>
|
40
40
|
#include <grpc/support/port_platform.h>
|
41
41
|
|
42
42
|
#include "src/core/lib/event_engine/posix_engine/event_poller.h"
|
@@ -211,14 +211,9 @@ bool CmsgIsZeroCopy(const cmsghdr& cmsg) {
|
|
211
211
|
}
|
212
212
|
#endif // GRPC_LINUX_ERRQUEUE
|
213
213
|
|
214
|
-
absl::Status PosixOSError(int error_no,
|
215
|
-
|
216
|
-
|
217
|
-
grpc_core::StatusSetStr(&s, grpc_core::StatusStrProperty::kOsError,
|
218
|
-
grpc_core::StrError(error_no));
|
219
|
-
grpc_core::StatusSetStr(&s, grpc_core::StatusStrProperty::kSyscall,
|
220
|
-
call_name);
|
221
|
-
return s;
|
214
|
+
absl::Status PosixOSError(int error_no, absl::string_view call_name) {
|
215
|
+
return absl::UnknownError(absl::StrCat(
|
216
|
+
call_name, ": ", grpc_core::StrError(error_no), " (", error_no, ")"));
|
222
217
|
}
|
223
218
|
|
224
219
|
} // namespace
|
@@ -281,12 +276,7 @@ void PosixEndpointImpl::FinishEstimate() {
|
|
281
276
|
bytes_read_this_round_ = 0;
|
282
277
|
}
|
283
278
|
|
284
|
-
absl::Status PosixEndpointImpl::TcpAnnotateError(absl::Status src_error) {
|
285
|
-
auto peer_string = ResolvedAddressToNormalizedString(peer_address_);
|
286
|
-
|
287
|
-
grpc_core::StatusSetStr(&src_error,
|
288
|
-
grpc_core::StatusStrProperty::kTargetAddress,
|
289
|
-
peer_string.ok() ? *peer_string : "");
|
279
|
+
absl::Status PosixEndpointImpl::TcpAnnotateError(absl::Status src_error) const {
|
290
280
|
grpc_core::StatusSetInt(&src_error, grpc_core::StatusIntProperty::kFd,
|
291
281
|
handle_->WrappedFd());
|
292
282
|
grpc_core::StatusSetInt(&src_error, grpc_core::StatusIntProperty::kRpcStatus,
|
@@ -512,9 +502,7 @@ void PosixEndpointImpl::UpdateRcvLowat() {
|
|
512
502
|
if (result.ok()) {
|
513
503
|
set_rcvlowat_ = *result;
|
514
504
|
} else {
|
515
|
-
|
516
|
-
absl::StrCat("ERROR in SO_RCVLOWAT: ", result.status().message())
|
517
|
-
.c_str());
|
505
|
+
LOG(ERROR) << "ERROR in SO_RCVLOWAT: " << result.status().message();
|
518
506
|
}
|
519
507
|
}
|
520
508
|
|
@@ -718,7 +706,7 @@ bool PosixEndpointImpl::ProcessErrors() {
|
|
718
706
|
return processed_err;
|
719
707
|
}
|
720
708
|
if (GPR_UNLIKELY((msg.msg_flags & MSG_CTRUNC) != 0)) {
|
721
|
-
|
709
|
+
LOG(ERROR) << "Error message was truncated.";
|
722
710
|
}
|
723
711
|
|
724
712
|
if (msg.msg_controllen == 0) {
|
@@ -813,7 +801,7 @@ struct cmsghdr* PosixEndpointImpl::ProcessTimestamp(msghdr* msg,
|
|
813
801
|
auto serr = reinterpret_cast<struct sock_extended_err*>(CMSG_DATA(next_cmsg));
|
814
802
|
if (serr->ee_errno != ENOMSG ||
|
815
803
|
serr->ee_origin != SO_EE_ORIGIN_TIMESTAMPING) {
|
816
|
-
|
804
|
+
LOG(ERROR) << "Unexpected control message";
|
817
805
|
return cmsg;
|
818
806
|
}
|
819
807
|
traced_buffers_.ProcessTimestamp(serr, opt_stats, tss);
|
@@ -1289,29 +1277,27 @@ PosixEndpointImpl::PosixEndpointImpl(EventHandle* handle,
|
|
1289
1277
|
if (zerocopy_enabled) {
|
1290
1278
|
if (GetRLimitMemLockMax() == 0) {
|
1291
1279
|
zerocopy_enabled = false;
|
1292
|
-
|
1293
|
-
|
1294
|
-
|
1295
|
-
"not set. Consider raising its value with setrlimit().");
|
1280
|
+
LOG(ERROR) << "Tx zero-copy will not be used by gRPC since RLIMIT_MEMLOCK"
|
1281
|
+
<< " value is not set. Consider raising its value with "
|
1282
|
+
<< "setrlimit().";
|
1296
1283
|
} else if (GetUlimitHardMemLock() == 0) {
|
1297
1284
|
zerocopy_enabled = false;
|
1298
|
-
|
1299
|
-
|
1300
|
-
|
1285
|
+
LOG(ERROR) << "Tx zero-copy will not be used by gRPC since hard memlock "
|
1286
|
+
<< "ulimit value is not set. Use ulimit -l <value> to set its "
|
1287
|
+
<< "value.";
|
1301
1288
|
} else {
|
1302
1289
|
const int enable = 1;
|
1303
1290
|
if (setsockopt(fd_, SOL_SOCKET, SO_ZEROCOPY, &enable, sizeof(enable)) !=
|
1304
1291
|
0) {
|
1305
1292
|
zerocopy_enabled = false;
|
1306
|
-
|
1293
|
+
LOG(ERROR) << "Failed to set zerocopy options on the socket.";
|
1307
1294
|
}
|
1308
1295
|
}
|
1309
1296
|
|
1310
1297
|
if (zerocopy_enabled) {
|
1311
|
-
|
1312
|
-
|
1313
|
-
|
1314
|
-
GetRLimitMemLockMax(), GetUlimitHardMemLock());
|
1298
|
+
LOG(INFO) << "Tx-zero copy enabled for gRPC sends. RLIMIT_MEMLOCK value "
|
1299
|
+
<< "=" << GetRLimitMemLockMax()
|
1300
|
+
<< ",ulimit hard memlock value = " << GetUlimitHardMemLock();
|
1315
1301
|
}
|
1316
1302
|
}
|
1317
1303
|
#endif // GRPC_LINUX_ERRQUEUE
|
@@ -1323,7 +1309,7 @@ PosixEndpointImpl::PosixEndpointImpl(EventHandle* handle,
|
|
1323
1309
|
if (setsockopt(fd_, SOL_TCP, TCP_INQ, &one, sizeof(one)) == 0) {
|
1324
1310
|
inq_capable_ = true;
|
1325
1311
|
} else {
|
1326
|
-
|
1312
|
+
VLOG(2) << "cannot set inq fd=" << fd_ << " errno=" << errno;
|
1327
1313
|
inq_capable_ = false;
|
1328
1314
|
}
|
1329
1315
|
#else
|
@@ -30,6 +30,7 @@
|
|
30
30
|
#include "absl/functional/any_invocable.h"
|
31
31
|
#include "absl/hash/hash.h"
|
32
32
|
#include "absl/log/check.h"
|
33
|
+
#include "absl/log/log.h"
|
33
34
|
#include "absl/status/status.h"
|
34
35
|
#include "absl/status/statusor.h"
|
35
36
|
|
@@ -183,7 +184,7 @@ class TcpZerocopySendCtx {
|
|
183
184
|
if (send_records_ == nullptr || free_send_records_ == nullptr) {
|
184
185
|
gpr_free(send_records_);
|
185
186
|
gpr_free(free_send_records_);
|
186
|
-
|
187
|
+
LOG(INFO) << "Disabling TCP TX zerocopy due to memory pressure.\n";
|
187
188
|
memory_limited_ = true;
|
188
189
|
enabled_ = false;
|
189
190
|
} else {
|
@@ -524,7 +525,7 @@ class PosixEndpointImpl : public grpc_core::RefCounted<PosixEndpointImpl> {
|
|
524
525
|
bool WriteWithTimestamps(struct msghdr* msg, size_t sending_length,
|
525
526
|
ssize_t* sent_length, int* saved_errno,
|
526
527
|
int additional_flags);
|
527
|
-
absl::Status TcpAnnotateError(absl::Status src_error);
|
528
|
+
absl::Status TcpAnnotateError(absl::Status src_error) const;
|
528
529
|
#ifdef GRPC_LINUX_ERRQUEUE
|
529
530
|
bool ProcessErrors();
|
530
531
|
// Reads a cmsg to process zerocopy control messages.
|
@@ -26,6 +26,7 @@
|
|
26
26
|
#include "absl/cleanup/cleanup.h"
|
27
27
|
#include "absl/functional/any_invocable.h"
|
28
28
|
#include "absl/log/check.h"
|
29
|
+
#include "absl/log/log.h"
|
29
30
|
#include "absl/status/status.h"
|
30
31
|
#include "absl/strings/match.h"
|
31
32
|
#include "absl/strings/str_cat.h"
|
@@ -51,10 +52,10 @@
|
|
51
52
|
#include "src/core/lib/event_engine/tcp_socket_utils.h"
|
52
53
|
#include "src/core/lib/event_engine/trace.h"
|
53
54
|
#include "src/core/lib/event_engine/utils.h"
|
54
|
-
#include "src/core/lib/gpr/useful.h"
|
55
55
|
#include "src/core/lib/gprpp/crash.h"
|
56
56
|
#include "src/core/lib/gprpp/no_destruct.h"
|
57
57
|
#include "src/core/lib/gprpp/sync.h"
|
58
|
+
#include "src/core/util/useful.h"
|
58
59
|
|
59
60
|
#ifdef GRPC_POSIX_SOCKET_TCP
|
60
61
|
#include <errno.h> // IWYU pragma: keep
|
@@ -231,7 +232,7 @@ void AsyncConnect::OnWritable(absl::Status status)
|
|
231
232
|
// your program or another program on the same computer
|
232
233
|
// opened too many network connections. The "easy" fix:
|
233
234
|
// don't do that!
|
234
|
-
|
235
|
+
LOG(ERROR) << "kernel out of buffers";
|
235
236
|
mu_.Unlock();
|
236
237
|
fd->NotifyOnWrite(on_writable_);
|
237
238
|
// Don't run the cleanup function for this case.
|
@@ -459,7 +460,7 @@ struct PosixEventEngine::ClosureData final : public EventEngine::Closure {
|
|
459
460
|
PosixEventEngine::~PosixEventEngine() {
|
460
461
|
{
|
461
462
|
grpc_core::MutexLock lock(&mu_);
|
462
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
463
|
+
if (GRPC_TRACE_FLAG_ENABLED(event_engine)) {
|
463
464
|
for (auto handle : known_handles_) {
|
464
465
|
gpr_log(GPR_ERROR,
|
465
466
|
"(event_engine) PosixEventEngine:%p uncleared "
|
@@ -558,8 +559,8 @@ PosixEventEngine::GetDNSResolver(
|
|
558
559
|
// configuration.
|
559
560
|
if (ShouldUseAresDnsResolver()) {
|
560
561
|
#if GRPC_ARES == 1 && defined(GRPC_POSIX_SOCKET_ARES_EV_DRIVER)
|
561
|
-
|
562
|
-
|
562
|
+
GRPC_TRACE_LOG(event_engine_dns, INFO)
|
563
|
+
<< "PosixEventEngine::" << this << " creating AresResolver";
|
563
564
|
auto ares_resolver = AresResolver::CreateAresResolver(
|
564
565
|
options.dns_server,
|
565
566
|
std::make_unique<GrpcPolledFdFactoryPosix>(poller_manager_->Poller()),
|
@@ -571,8 +572,8 @@ PosixEventEngine::GetDNSResolver(
|
|
571
572
|
std::move(*ares_resolver));
|
572
573
|
#endif // GRPC_ARES == 1 && defined(GRPC_POSIX_SOCKET_ARES_EV_DRIVER)
|
573
574
|
}
|
574
|
-
|
575
|
-
"PosixEventEngine
|
575
|
+
GRPC_TRACE_LOG(event_engine_dns, INFO)
|
576
|
+
<< "PosixEventEngine::" << this << " creating NativePosixDNSResolver";
|
576
577
|
return std::make_unique<NativePosixDNSResolver>(shared_from_this());
|
577
578
|
#endif // GRPC_POSIX_SOCKET_RESOLVE_ADDRESS
|
578
579
|
}
|
@@ -677,6 +678,22 @@ PosixEventEngine::CreatePosixEndpointFromFd(int fd,
|
|
677
678
|
#endif // GRPC_PLATFORM_SUPPORTS_POSIX_POLLING
|
678
679
|
}
|
679
680
|
|
681
|
+
std::unique_ptr<EventEngine::Endpoint> PosixEventEngine::CreateEndpointFromFd(
|
682
|
+
int fd, const EndpointConfig& config) {
|
683
|
+
auto options = TcpOptionsFromEndpointConfig(config);
|
684
|
+
MemoryAllocator allocator;
|
685
|
+
if (options.memory_allocator_factory != nullptr) {
|
686
|
+
return CreatePosixEndpointFromFd(
|
687
|
+
fd, config,
|
688
|
+
options.memory_allocator_factory->CreateMemoryAllocator(
|
689
|
+
absl::StrCat("allocator:", fd)));
|
690
|
+
}
|
691
|
+
return CreatePosixEndpointFromFd(
|
692
|
+
fd, config,
|
693
|
+
options.resource_quota->memory_quota()->CreateMemoryAllocator(
|
694
|
+
absl::StrCat("allocator:", fd)));
|
695
|
+
}
|
696
|
+
|
680
697
|
absl::StatusOr<std::unique_ptr<EventEngine::Listener>>
|
681
698
|
PosixEventEngine::CreateListener(
|
682
699
|
Listener::AcceptCallback on_accept,
|
@@ -172,6 +172,8 @@ class PosixEventEngine final : public PosixEventEngineWithFdSupport,
|
|
172
172
|
std::unique_ptr<EventEngine::Endpoint> CreatePosixEndpointFromFd(
|
173
173
|
int fd, const EndpointConfig& config,
|
174
174
|
MemoryAllocator memory_allocator) override;
|
175
|
+
std::unique_ptr<EventEngine::Endpoint> CreateEndpointFromFd(
|
176
|
+
int fd, const EndpointConfig& config) override;
|
175
177
|
|
176
178
|
absl::StatusOr<std::unique_ptr<Listener>> CreateListener(
|
177
179
|
Listener::AcceptCallback on_accept,
|
@@ -32,13 +32,13 @@
|
|
32
32
|
|
33
33
|
#include "absl/functional/any_invocable.h"
|
34
34
|
#include "absl/log/check.h"
|
35
|
+
#include "absl/log/log.h"
|
35
36
|
#include "absl/status/status.h"
|
36
37
|
#include "absl/strings/str_cat.h"
|
37
38
|
#include "absl/types/optional.h"
|
38
39
|
|
39
40
|
#include <grpc/event_engine/event_engine.h>
|
40
41
|
#include <grpc/event_engine/memory_allocator.h>
|
41
|
-
#include <grpc/support/log.h>
|
42
42
|
|
43
43
|
#include "src/core/lib/event_engine/posix_engine/event_poller.h"
|
44
44
|
#include "src/core/lib/event_engine/posix_engine/posix_endpoint.h"
|
@@ -155,8 +155,8 @@ void PosixEngineListenerImpl::AsyncConnectionAcceptor::NotifyOnAccept(
|
|
155
155
|
// nothing to accept. This is not a performant code path, but if an fd
|
156
156
|
// limit has been reached, the system is likely in an unhappy state
|
157
157
|
// regardless.
|
158
|
-
|
159
|
-
|
158
|
+
LOG_EVERY_N_SEC(ERROR, 1)
|
159
|
+
<< "File descriptor limit reached. Retrying.";
|
160
160
|
handle_->NotifyOnRead(notify_on_accept_);
|
161
161
|
// Do not schedule another timer if one is already armed.
|
162
162
|
if (retry_timer_armed_.exchange(true)) return;
|
@@ -177,8 +177,8 @@ void PosixEngineListenerImpl::AsyncConnectionAcceptor::NotifyOnAccept(
|
|
177
177
|
handle_->NotifyOnRead(notify_on_accept_);
|
178
178
|
return;
|
179
179
|
default:
|
180
|
-
|
181
|
-
|
180
|
+
LOG(ERROR) << "Closing acceptor. Failed accept4: "
|
181
|
+
<< grpc_core::StrError(errno);
|
182
182
|
// Shutting down the acceptor. Unref the ref grabbed in
|
183
183
|
// AsyncConnectionAcceptor::Start().
|
184
184
|
Unref();
|
@@ -192,13 +192,12 @@ void PosixEngineListenerImpl::AsyncConnectionAcceptor::NotifyOnAccept(
|
|
192
192
|
socklen_t len = EventEngine::ResolvedAddress::MAX_SIZE_BYTES;
|
193
193
|
if (getpeername(fd, const_cast<sockaddr*>(addr.address()), &len) < 0) {
|
194
194
|
auto listener_addr_uri = ResolvedAddressToURI(socket_.addr);
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
socket_.port);
|
195
|
+
LOG(ERROR) << "Failed getpeername: " << grpc_core::StrError(errno)
|
196
|
+
<< ". Dropping the connection, and continuing "
|
197
|
+
"to listen on "
|
198
|
+
<< (listener_addr_uri.ok() ? *listener_addr_uri
|
199
|
+
: "<unknown>")
|
200
|
+
<< ":" << socket_.port;
|
202
201
|
close(fd);
|
203
202
|
handle_->NotifyOnRead(notify_on_accept_);
|
204
203
|
return;
|
@@ -211,8 +210,8 @@ void PosixEngineListenerImpl::AsyncConnectionAcceptor::NotifyOnAccept(
|
|
211
210
|
auto result = sock.ApplySocketMutatorInOptions(
|
212
211
|
GRPC_FD_SERVER_CONNECTION_USAGE, listener_->options_);
|
213
212
|
if (!result.ok()) {
|
214
|
-
|
215
|
-
|
213
|
+
LOG(ERROR) << "Closing acceptor. Failed to apply socket mutator: "
|
214
|
+
<< result;
|
216
215
|
// Shutting down the acceptor. Unref the ref grabbed in
|
217
216
|
// AsyncConnectionAcceptor::Start().
|
218
217
|
Unref();
|
@@ -222,8 +221,7 @@ void PosixEngineListenerImpl::AsyncConnectionAcceptor::NotifyOnAccept(
|
|
222
221
|
// Create an Endpoint here.
|
223
222
|
auto peer_name = ResolvedAddressToURI(addr);
|
224
223
|
if (!peer_name.ok()) {
|
225
|
-
|
226
|
-
peer_name.status().ToString().c_str());
|
224
|
+
LOG(ERROR) << "Invalid address: " << peer_name.status();
|
227
225
|
// Shutting down the acceptor. Unref the ref grabbed in
|
228
226
|
// AsyncConnectionAcceptor::Start().
|
229
227
|
Unref();
|