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
@@ -21,6 +21,7 @@
|
|
21
21
|
|
22
22
|
#include <functional>
|
23
23
|
|
24
|
+
#include <grpc/passive_listener.h>
|
24
25
|
#include <grpc/support/port_platform.h>
|
25
26
|
|
26
27
|
#include "src/core/lib/channel/channel_args.h"
|
@@ -42,6 +43,38 @@ grpc_error_handle Chttp2ServerAddPort(
|
|
42
43
|
Server* server, const char* addr, const ChannelArgs& args,
|
43
44
|
Chttp2ServerArgsModifier connection_args_modifier, int* port_num);
|
44
45
|
|
46
|
+
class Chttp2ServerListener;
|
47
|
+
namespace experimental {
|
48
|
+
|
49
|
+
// An implementation of the public C++ passive listener interface.
|
50
|
+
// The server builder holds a weak_ptr to one of these objects, and the
|
51
|
+
// application owns the instance.
|
52
|
+
class PassiveListenerImpl final : public PassiveListener {
|
53
|
+
public:
|
54
|
+
absl::Status AcceptConnectedEndpoint(
|
55
|
+
std::unique_ptr<grpc_event_engine::experimental::EventEngine::Endpoint>
|
56
|
+
endpoint) override ABSL_LOCKS_EXCLUDED(mu_);
|
57
|
+
|
58
|
+
absl::Status AcceptConnectedFd(GRPC_UNUSED int fd) override
|
59
|
+
ABSL_LOCKS_EXCLUDED(mu_);
|
60
|
+
|
61
|
+
void ListenerDestroyed() ABSL_LOCKS_EXCLUDED(mu_);
|
62
|
+
|
63
|
+
private:
|
64
|
+
// note: the grpc_core::Server redundant namespace qualification is
|
65
|
+
// required for older gcc versions.
|
66
|
+
friend absl::Status(::grpc_server_add_passive_listener)(
|
67
|
+
grpc_core::Server* server, grpc_server_credentials* credentials,
|
68
|
+
std::shared_ptr<grpc_core::experimental::PassiveListenerImpl>
|
69
|
+
passive_listener);
|
70
|
+
|
71
|
+
Mutex mu_;
|
72
|
+
// Data members will be populated when initialized.
|
73
|
+
RefCountedPtr<Server> server_;
|
74
|
+
Chttp2ServerListener* listener_;
|
75
|
+
};
|
76
|
+
|
77
|
+
} // namespace experimental
|
45
78
|
} // namespace grpc_core
|
46
79
|
|
47
80
|
#endif // GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_SERVER_CHTTP2_SERVER_H
|
@@ -35,6 +35,7 @@
|
|
35
35
|
#include "absl/container/flat_hash_map.h"
|
36
36
|
#include "absl/hash/hash.h"
|
37
37
|
#include "absl/log/check.h"
|
38
|
+
#include "absl/log/log.h"
|
38
39
|
#include "absl/meta/type_traits.h"
|
39
40
|
#include "absl/random/random.h"
|
40
41
|
#include "absl/status/status.h"
|
@@ -63,7 +64,6 @@
|
|
63
64
|
#include "src/core/ext/transport/chttp2/transport/frame_rst_stream.h"
|
64
65
|
#include "src/core/ext/transport/chttp2/transport/hpack_encoder.h"
|
65
66
|
#include "src/core/ext/transport/chttp2/transport/http2_settings.h"
|
66
|
-
#include "src/core/ext/transport/chttp2/transport/http_trace.h"
|
67
67
|
#include "src/core/ext/transport/chttp2/transport/internal.h"
|
68
68
|
#include "src/core/ext/transport/chttp2/transport/legacy_frame.h"
|
69
69
|
#include "src/core/ext/transport/chttp2/transport/max_concurrent_streams_policy.h"
|
@@ -72,24 +72,21 @@
|
|
72
72
|
#include "src/core/ext/transport/chttp2/transport/ping_rate_policy.h"
|
73
73
|
#include "src/core/ext/transport/chttp2/transport/varint.h"
|
74
74
|
#include "src/core/ext/transport/chttp2/transport/write_size_policy.h"
|
75
|
-
#include "src/core/lib/channel/call_tracer.h"
|
76
75
|
#include "src/core/lib/channel/channel_args.h"
|
77
|
-
#include "src/core/lib/
|
78
|
-
#include "src/core/lib/
|
79
|
-
#include "src/core/lib/
|
80
|
-
#include "src/core/lib/debug/stats_data.h"
|
76
|
+
#include "src/core/lib/config/config_vars.h"
|
77
|
+
#include "src/core/lib/event_engine/extensions/tcp_trace.h"
|
78
|
+
#include "src/core/lib/event_engine/query_extensions.h"
|
81
79
|
#include "src/core/lib/experiments/experiments.h"
|
82
|
-
#include "src/core/lib/gpr/string.h"
|
83
|
-
#include "src/core/lib/gpr/useful.h"
|
84
80
|
#include "src/core/lib/gprpp/bitset.h"
|
85
81
|
#include "src/core/lib/gprpp/crash.h"
|
86
82
|
#include "src/core/lib/gprpp/debug_location.h"
|
87
83
|
#include "src/core/lib/gprpp/ref_counted.h"
|
88
84
|
#include "src/core/lib/gprpp/status_helper.h"
|
89
85
|
#include "src/core/lib/gprpp/time.h"
|
90
|
-
#include "src/core/lib/http/parser.h"
|
91
86
|
#include "src/core/lib/iomgr/combiner.h"
|
92
87
|
#include "src/core/lib/iomgr/error.h"
|
88
|
+
#include "src/core/lib/iomgr/ev_posix.h"
|
89
|
+
#include "src/core/lib/iomgr/event_engine_shims/endpoint.h"
|
93
90
|
#include "src/core/lib/iomgr/exec_ctx.h"
|
94
91
|
#include "src/core/lib/iomgr/iomgr_fwd.h"
|
95
92
|
#include "src/core/lib/iomgr/port.h"
|
@@ -97,7 +94,6 @@
|
|
97
94
|
#include "src/core/lib/resource_quota/arena.h"
|
98
95
|
#include "src/core/lib/resource_quota/memory_quota.h"
|
99
96
|
#include "src/core/lib/resource_quota/resource_quota.h"
|
100
|
-
#include "src/core/lib/resource_quota/trace.h"
|
101
97
|
#include "src/core/lib/slice/slice.h"
|
102
98
|
#include "src/core/lib/slice/slice_buffer.h"
|
103
99
|
#include "src/core/lib/slice/slice_internal.h"
|
@@ -109,10 +105,13 @@
|
|
109
105
|
#include "src/core/lib/transport/metadata_info.h"
|
110
106
|
#include "src/core/lib/transport/status_conversion.h"
|
111
107
|
#include "src/core/lib/transport/transport.h"
|
112
|
-
|
113
|
-
#
|
114
|
-
#include "src/core/
|
115
|
-
#
|
108
|
+
#include "src/core/telemetry/call_tracer.h"
|
109
|
+
#include "src/core/telemetry/stats.h"
|
110
|
+
#include "src/core/telemetry/stats_data.h"
|
111
|
+
#include "src/core/telemetry/tcp_tracer.h"
|
112
|
+
#include "src/core/util/http_client/parser.h"
|
113
|
+
#include "src/core/util/string.h"
|
114
|
+
#include "src/core/util/useful.h"
|
116
115
|
|
117
116
|
#define DEFAULT_CONNECTION_WINDOW_TARGET (1024 * 1024)
|
118
117
|
#define MAX_WINDOW 0x7fffffffu
|
@@ -142,9 +141,6 @@ static bool g_default_server_keepalive_permit_without_calls = false;
|
|
142
141
|
#define GRPC_ARG_HTTP_TARPIT_MAX_DURATION_MS "grpc.http.tarpit_max_duration_ms"
|
143
142
|
|
144
143
|
#define MAX_CLIENT_STREAM_ID 0x7fffffffu
|
145
|
-
grpc_core::TraceFlag grpc_keepalive_trace(false, "http_keepalive");
|
146
|
-
grpc_core::DebugOnlyTraceFlag grpc_trace_chttp2_refcount(false,
|
147
|
-
"chttp2_refcount");
|
148
144
|
|
149
145
|
// forward declarations of various callbacks that we'll build closures around
|
150
146
|
static void write_action_begin_locked(
|
@@ -228,14 +224,13 @@ namespace {
|
|
228
224
|
|
229
225
|
using TaskHandle = ::grpc_event_engine::experimental::EventEngine::TaskHandle;
|
230
226
|
|
231
|
-
grpc_core::
|
232
|
-
|
227
|
+
grpc_core::CallTracerAnnotationInterface* CallTracerIfSampled(
|
228
|
+
grpc_chttp2_stream* s) {
|
229
|
+
if (!grpc_core::IsTraceRecordCallopsEnabled()) {
|
233
230
|
return nullptr;
|
234
231
|
}
|
235
|
-
auto* call_tracer =
|
236
|
-
|
237
|
-
s->context)[GRPC_CONTEXT_CALL_TRACER_ANNOTATION_INTERFACE]
|
238
|
-
.value);
|
232
|
+
auto* call_tracer =
|
233
|
+
s->arena->GetContext<grpc_core::CallTracerAnnotationInterface>();
|
239
234
|
if (call_tracer == nullptr || !call_tracer->IsSampled()) {
|
240
235
|
return nullptr;
|
241
236
|
}
|
@@ -244,13 +239,11 @@ grpc_core::CallTracerInterface* CallTracerIfSampled(grpc_chttp2_stream* s) {
|
|
244
239
|
|
245
240
|
std::shared_ptr<grpc_core::TcpTracerInterface> TcpTracerIfSampled(
|
246
241
|
grpc_chttp2_stream* s) {
|
247
|
-
if (
|
242
|
+
if (!grpc_core::IsTraceRecordCallopsEnabled()) {
|
248
243
|
return nullptr;
|
249
244
|
}
|
250
|
-
auto* call_attempt_tracer =
|
251
|
-
|
252
|
-
s->context)[GRPC_CONTEXT_CALL_TRACER]
|
253
|
-
.value);
|
245
|
+
auto* call_attempt_tracer =
|
246
|
+
s->arena->GetContext<grpc_core::CallTracerInterface>();
|
254
247
|
if (call_attempt_tracer == nullptr || !call_attempt_tracer->IsSampled()) {
|
255
248
|
return nullptr;
|
256
249
|
}
|
@@ -385,17 +378,17 @@ grpc_chttp2_transport::~grpc_chttp2_transport() {
|
|
385
378
|
channelz_socket.reset();
|
386
379
|
}
|
387
380
|
|
388
|
-
grpc_endpoint_destroy(ep);
|
381
|
+
if (ep != nullptr) grpc_endpoint_destroy(ep);
|
389
382
|
|
390
383
|
grpc_slice_buffer_destroy(&qbuf);
|
391
384
|
|
392
385
|
grpc_error_handle error = GRPC_ERROR_CREATE("Transport destroyed");
|
393
386
|
// ContextList::Execute follows semantics of a callback function and does not
|
394
387
|
// take a ref on error
|
395
|
-
if (
|
396
|
-
grpc_core::ForEachContextListEntryExecute(
|
388
|
+
if (context_list != nullptr) {
|
389
|
+
grpc_core::ForEachContextListEntryExecute(context_list, nullptr, error);
|
397
390
|
}
|
398
|
-
|
391
|
+
context_list = nullptr;
|
399
392
|
|
400
393
|
grpc_slice_buffer_destroy(&read_buffer);
|
401
394
|
grpc_chttp2_goaway_parser_destroy(&goaway_parser);
|
@@ -592,15 +585,13 @@ static void init_keepalive_pings_if_enabled_locked(
|
|
592
585
|
}
|
593
586
|
}
|
594
587
|
|
588
|
+
using grpc_event_engine::experimental::QueryExtension;
|
589
|
+
using grpc_event_engine::experimental::TcpTraceExtension;
|
590
|
+
|
595
591
|
grpc_chttp2_transport::grpc_chttp2_transport(
|
596
592
|
const grpc_core::ChannelArgs& channel_args, grpc_endpoint* ep,
|
597
593
|
bool is_client)
|
598
|
-
:
|
599
|
-
grpc_core::NonPolymorphicRefCount>(
|
600
|
-
GRPC_TRACE_FLAG_ENABLED(grpc_trace_chttp2_refcount)
|
601
|
-
? "chttp2_refcount"
|
602
|
-
: nullptr),
|
603
|
-
ep(ep),
|
594
|
+
: ep(ep),
|
604
595
|
peer_string(
|
605
596
|
grpc_core::Slice::FromCopiedString(grpc_endpoint_get_peer(ep))),
|
606
597
|
memory_owner(channel_args.GetObject<grpc_core::ResourceQuota>()
|
@@ -623,7 +614,18 @@ grpc_chttp2_transport::grpc_chttp2_transport(
|
|
623
614
|
&memory_owner),
|
624
615
|
deframe_state(is_client ? GRPC_DTS_FH_0 : GRPC_DTS_CLIENT_PREFIX_0),
|
625
616
|
is_client(is_client) {
|
626
|
-
|
617
|
+
context_list = new grpc_core::ContextList();
|
618
|
+
|
619
|
+
if (channel_args.GetBool(GRPC_ARG_TCP_TRACING_ENABLED).value_or(false) &&
|
620
|
+
grpc_event_engine::experimental::grpc_is_event_engine_endpoint(ep)) {
|
621
|
+
auto epte = QueryExtension<TcpTraceExtension>(
|
622
|
+
grpc_event_engine::experimental::grpc_get_wrapped_event_engine_endpoint(
|
623
|
+
ep));
|
624
|
+
if (epte != nullptr) {
|
625
|
+
epte->InitializeAndReturnTcpTracer();
|
626
|
+
}
|
627
|
+
}
|
628
|
+
|
627
629
|
CHECK(strlen(GRPC_CHTTP2_CLIENT_CONNECT_STRING) ==
|
628
630
|
GRPC_CHTTP2_CLIENT_CONNECT_STRLEN);
|
629
631
|
|
@@ -759,9 +761,21 @@ static void close_transport_locked(grpc_chttp2_transport* t,
|
|
759
761
|
GRPC_CHTTP2_STREAM_UNREF(s, "chttp2_writing:close");
|
760
762
|
}
|
761
763
|
CHECK(t->write_state == GRPC_CHTTP2_WRITE_STATE_IDLE);
|
762
|
-
|
764
|
+
if (t->interested_parties_until_recv_settings != nullptr) {
|
765
|
+
grpc_endpoint_delete_from_pollset_set(
|
766
|
+
t->ep, t->interested_parties_until_recv_settings);
|
767
|
+
t->interested_parties_until_recv_settings = nullptr;
|
768
|
+
}
|
769
|
+
grpc_core::MutexLock lock(&t->ep_destroy_mu);
|
770
|
+
grpc_endpoint_destroy(t->ep);
|
771
|
+
t->ep = nullptr;
|
763
772
|
}
|
764
773
|
if (t->notify_on_receive_settings != nullptr) {
|
774
|
+
if (t->interested_parties_until_recv_settings != nullptr) {
|
775
|
+
grpc_endpoint_delete_from_pollset_set(
|
776
|
+
t->ep, t->interested_parties_until_recv_settings);
|
777
|
+
t->interested_parties_until_recv_settings = nullptr;
|
778
|
+
}
|
765
779
|
grpc_core::ExecCtx::Run(DEBUG_LOCATION, t->notify_on_receive_settings,
|
766
780
|
error);
|
767
781
|
t->notify_on_receive_settings = nullptr;
|
@@ -790,7 +804,8 @@ void grpc_chttp2_stream_unref(grpc_chttp2_stream* s) {
|
|
790
804
|
|
791
805
|
grpc_chttp2_stream::grpc_chttp2_stream(grpc_chttp2_transport* t,
|
792
806
|
grpc_stream_refcount* refcount,
|
793
|
-
const void* server_data
|
807
|
+
const void* server_data,
|
808
|
+
grpc_core::Arena* arena)
|
794
809
|
: t(t->Ref()),
|
795
810
|
refcount([refcount]() {
|
796
811
|
// We reserve one 'active stream' that's dropped when the stream is
|
@@ -804,14 +819,14 @@ grpc_chttp2_stream::grpc_chttp2_stream(grpc_chttp2_transport* t,
|
|
804
819
|
#endif
|
805
820
|
return refcount;
|
806
821
|
}()),
|
822
|
+
arena(arena),
|
807
823
|
flow_control(&t->flow_control) {
|
808
824
|
t->streams_allocated.fetch_add(1, std::memory_order_relaxed);
|
809
825
|
if (server_data) {
|
810
826
|
id = static_cast<uint32_t>(reinterpret_cast<uintptr_t>(server_data));
|
811
|
-
|
812
|
-
|
813
|
-
|
814
|
-
}
|
827
|
+
GRPC_TRACE_VLOG(http, 2)
|
828
|
+
<< "HTTP:" << t << "/" << this << " creating accept stream " << id
|
829
|
+
<< " [from " << server_data << "]";
|
815
830
|
*t->accepting_stream = this;
|
816
831
|
t->stream_map.emplace(id, this);
|
817
832
|
post_destructive_reclaimer(t);
|
@@ -861,8 +876,8 @@ grpc_chttp2_stream::~grpc_chttp2_stream() {
|
|
861
876
|
void grpc_chttp2_transport::InitStream(grpc_stream* gs,
|
862
877
|
grpc_stream_refcount* refcount,
|
863
878
|
const void* server_data,
|
864
|
-
grpc_core::Arena*) {
|
865
|
-
new (gs) grpc_chttp2_stream(this, refcount, server_data);
|
879
|
+
grpc_core::Arena* arena) {
|
880
|
+
new (gs) grpc_chttp2_stream(this, refcount, server_data, arena);
|
866
881
|
}
|
867
882
|
|
868
883
|
static void destroy_stream_locked(void* sp, grpc_error_handle /*error*/) {
|
@@ -1021,13 +1036,13 @@ static void write_action_begin_locked(
|
|
1021
1036
|
}
|
1022
1037
|
|
1023
1038
|
static void write_action(grpc_chttp2_transport* t) {
|
1024
|
-
void* cl = t->
|
1025
|
-
if (!t->
|
1039
|
+
void* cl = t->context_list;
|
1040
|
+
if (!t->context_list->empty()) {
|
1026
1041
|
// Transfer the ownership of the context list to the endpoint and create and
|
1027
1042
|
// associate a new context list with the transport.
|
1028
1043
|
// The old context list is stored in the cl local variable which is passed
|
1029
1044
|
// to the endpoint. Its upto the endpoint to manage its lifetime.
|
1030
|
-
t->
|
1045
|
+
t->context_list = new grpc_core::ContextList();
|
1031
1046
|
} else {
|
1032
1047
|
// t->cl is Empty. There is nothing to trace in this endpoint_write. set cl
|
1033
1048
|
// to nullptr.
|
@@ -1042,10 +1057,9 @@ static void write_action(grpc_chttp2_transport* t) {
|
|
1042
1057
|
if (max_frame_size == 0) {
|
1043
1058
|
max_frame_size = INT_MAX;
|
1044
1059
|
}
|
1045
|
-
|
1046
|
-
|
1047
|
-
|
1048
|
-
}
|
1060
|
+
GRPC_TRACE_LOG(http2_ping, INFO)
|
1061
|
+
<< (t->is_client ? "CLIENT" : "SERVER") << "[" << t << "]: Write "
|
1062
|
+
<< t->outbuf.Length() << " bytes";
|
1049
1063
|
t->write_size_policy.BeginWrite(t->outbuf.Length());
|
1050
1064
|
grpc_endpoint_write(t->ep, t->outbuf.c_slice_buffer(),
|
1051
1065
|
grpc_core::InitTransportClosure<write_action_end>(
|
@@ -1056,10 +1070,8 @@ static void write_action(grpc_chttp2_transport* t) {
|
|
1056
1070
|
static void write_action_end(grpc_core::RefCountedPtr<grpc_chttp2_transport> t,
|
1057
1071
|
grpc_error_handle error) {
|
1058
1072
|
auto* tp = t.get();
|
1059
|
-
|
1060
|
-
|
1061
|
-
t->is_client ? "CLIENT" : "SERVER", t.get());
|
1062
|
-
}
|
1073
|
+
GRPC_TRACE_LOG(http2_ping, INFO) << (t->is_client ? "CLIENT" : "SERVER")
|
1074
|
+
<< "[" << t.get() << "]: Finish write";
|
1063
1075
|
tp->combiner->Run(grpc_core::InitTransportClosure<write_action_end_locked>(
|
1064
1076
|
std::move(t), &tp->write_action_end_locked),
|
1065
1077
|
error);
|
@@ -1129,19 +1141,16 @@ void grpc_chttp2_add_incoming_goaway(grpc_chttp2_transport* t,
|
|
1129
1141
|
uint32_t goaway_error,
|
1130
1142
|
uint32_t last_stream_id,
|
1131
1143
|
absl::string_view goaway_text) {
|
1132
|
-
t->goaway_error =
|
1144
|
+
t->goaway_error = grpc_error_set_int(
|
1133
1145
|
grpc_error_set_int(
|
1134
|
-
|
1135
|
-
|
1136
|
-
|
1137
|
-
|
1138
|
-
|
1139
|
-
|
1140
|
-
|
1141
|
-
|
1142
|
-
static_cast<intptr_t>(goaway_error)),
|
1143
|
-
grpc_core::StatusIntProperty::kRpcStatus, GRPC_STATUS_UNAVAILABLE),
|
1144
|
-
grpc_core::StatusStrProperty::kRawBytes, goaway_text);
|
1146
|
+
grpc_core::StatusCreate(
|
1147
|
+
absl::StatusCode::kUnavailable,
|
1148
|
+
absl::StrFormat("GOAWAY received; Error code: %u; Debug Text: %s",
|
1149
|
+
goaway_error, goaway_text),
|
1150
|
+
DEBUG_LOCATION, {}),
|
1151
|
+
grpc_core::StatusIntProperty::kHttp2Error,
|
1152
|
+
static_cast<intptr_t>(goaway_error)),
|
1153
|
+
grpc_core::StatusIntProperty::kRpcStatus, GRPC_STATUS_UNAVAILABLE);
|
1145
1154
|
|
1146
1155
|
GRPC_CHTTP2_IF_TRACING(
|
1147
1156
|
gpr_log(GPR_INFO, "transport %p got goaway with last stream id %d", t,
|
@@ -1279,7 +1288,7 @@ void grpc_chttp2_complete_closure_step(grpc_chttp2_transport* t,
|
|
1279
1288
|
return;
|
1280
1289
|
}
|
1281
1290
|
closure->next_data.scratch -= CLOSURE_BARRIER_FIRST_REF_BIT;
|
1282
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1291
|
+
if (GRPC_TRACE_FLAG_ENABLED(http)) {
|
1283
1292
|
gpr_log(
|
1284
1293
|
GPR_INFO,
|
1285
1294
|
"complete_closure_step: t=%p %p refs=%d flags=0x%04x desc=%s err=%s "
|
@@ -1299,12 +1308,10 @@ void grpc_chttp2_complete_closure_step(grpc_chttp2_transport* t,
|
|
1299
1308
|
if (cl_err.ok()) {
|
1300
1309
|
cl_err = GRPC_ERROR_CREATE(absl::StrCat(
|
1301
1310
|
"Error in HTTP transport completing operation: ", desc,
|
1302
|
-
" write_state=", write_state_name(t->write_state),
|
1303
|
-
closure->next_data.scratch / CLOSURE_BARRIER_FIRST_REF_BIT,
|
1304
|
-
closure->next_data.scratch % CLOSURE_BARRIER_FIRST_REF_BIT
|
1305
|
-
|
1306
|
-
grpc_core::StatusStrProperty::kTargetAddress,
|
1307
|
-
std::string(t->peer_string.as_string_view()));
|
1311
|
+
" write_state=", write_state_name(t->write_state),
|
1312
|
+
" refs=", closure->next_data.scratch / CLOSURE_BARRIER_FIRST_REF_BIT,
|
1313
|
+
" flags=", closure->next_data.scratch % CLOSURE_BARRIER_FIRST_REF_BIT,
|
1314
|
+
" peer_address=", t->peer_string.as_string_view()));
|
1308
1315
|
}
|
1309
1316
|
cl_err = grpc_error_add_child(cl_err, error);
|
1310
1317
|
closure->error_data.error = grpc_core::internal::StatusAllocHeapPtr(cl_err);
|
@@ -1331,11 +1338,11 @@ static bool contains_non_ok_status(grpc_metadata_batch* batch) {
|
|
1331
1338
|
|
1332
1339
|
static void log_metadata(const grpc_metadata_batch* md_batch, uint32_t id,
|
1333
1340
|
bool is_client, bool is_initial) {
|
1334
|
-
|
1341
|
+
VLOG(2) << "--metadata--";
|
1335
1342
|
const std::string prefix = absl::StrCat(
|
1336
1343
|
"HTTP:", id, is_initial ? ":HDR" : ":TRL", is_client ? ":CLI:" : ":SVR:");
|
1337
1344
|
md_batch->Log([&prefix](absl::string_view key, absl::string_view value) {
|
1338
|
-
|
1345
|
+
VLOG(2) << absl::StrCat(prefix, key, ": ", value);
|
1339
1346
|
});
|
1340
1347
|
}
|
1341
1348
|
|
@@ -1348,11 +1355,10 @@ static void perform_stream_op_locked(void* stream_op,
|
|
1348
1355
|
grpc_transport_stream_op_batch_payload* op_payload = op->payload;
|
1349
1356
|
grpc_chttp2_transport* t = s->t.get();
|
1350
1357
|
|
1351
|
-
s->context = op->payload->context;
|
1352
1358
|
s->traced = op->is_traced;
|
1353
1359
|
s->call_tracer = CallTracerIfSampled(s);
|
1354
1360
|
s->tcp_tracer = TcpTracerIfSampled(s);
|
1355
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1361
|
+
if (GRPC_TRACE_FLAG_ENABLED(http)) {
|
1356
1362
|
gpr_log(GPR_INFO,
|
1357
1363
|
"perform_stream_op_locked[s=%p; op=%p]: %s; on_complete = %p", s,
|
1358
1364
|
op, grpc_transport_stream_op_batch_string(op, false).c_str(),
|
@@ -1382,7 +1388,7 @@ static void perform_stream_op_locked(void* stream_op,
|
|
1382
1388
|
}
|
1383
1389
|
|
1384
1390
|
if (op->send_initial_metadata) {
|
1385
|
-
if (s->call_tracer) {
|
1391
|
+
if (s->call_tracer != nullptr) {
|
1386
1392
|
s->call_tracer->RecordAnnotation(
|
1387
1393
|
grpc_core::HttpAnnotation(grpc_core::HttpAnnotation::Type::kStart,
|
1388
1394
|
gpr_now(GPR_CLOCK_REALTIME))
|
@@ -1619,7 +1625,7 @@ void grpc_chttp2_transport::PerformStreamOp(
|
|
1619
1625
|
}
|
1620
1626
|
}
|
1621
1627
|
|
1622
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1628
|
+
if (GRPC_TRACE_FLAG_ENABLED(http)) {
|
1623
1629
|
gpr_log(GPR_INFO, "perform_stream_op[s=%p; op=%p]: %s", s, op,
|
1624
1630
|
grpc_transport_stream_op_batch_string(op, false).c_str());
|
1625
1631
|
}
|
@@ -1963,7 +1969,7 @@ static void perform_transport_op_locked(void* stream_op,
|
|
1963
1969
|
}
|
1964
1970
|
|
1965
1971
|
void grpc_chttp2_transport::PerformOp(grpc_transport_op* op) {
|
1966
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1972
|
+
if (GRPC_TRACE_FLAG_ENABLED(http)) {
|
1967
1973
|
gpr_log(GPR_INFO, "perform_transport_op[t=%p]: %s", this,
|
1968
1974
|
grpc_transport_op_string(op).c_str());
|
1969
1975
|
}
|
@@ -2016,7 +2022,7 @@ void grpc_chttp2_maybe_complete_recv_message(grpc_chttp2_transport* t,
|
|
2016
2022
|
// Lambda is immediately invoked as a big scoped section that can be
|
2017
2023
|
// exited out of at any point by returning.
|
2018
2024
|
[&]() {
|
2019
|
-
if (
|
2025
|
+
if (GRPC_TRACE_FLAG_ENABLED(http)) {
|
2020
2026
|
gpr_log(GPR_DEBUG,
|
2021
2027
|
"maybe_complete_recv_message %p final_metadata_requested=%d "
|
2022
2028
|
"seen_error=%d",
|
@@ -2032,7 +2038,7 @@ void grpc_chttp2_maybe_complete_recv_message(grpc_chttp2_transport* t,
|
|
2032
2038
|
int64_t min_progress_size;
|
2033
2039
|
auto r = grpc_deframe_unprocessed_incoming_frames(
|
2034
2040
|
s, &min_progress_size, &**s->recv_message, s->recv_message_flags);
|
2035
|
-
if (
|
2041
|
+
if (GRPC_TRACE_FLAG_ENABLED(http)) {
|
2036
2042
|
gpr_log(GPR_DEBUG, "Deframe data frame: %s",
|
2037
2043
|
grpc_core::PollToString(r, [](absl::Status r) {
|
2038
2044
|
return r.ToString();
|
@@ -2088,7 +2094,7 @@ void grpc_chttp2_maybe_complete_recv_message(grpc_chttp2_transport* t,
|
|
2088
2094
|
void grpc_chttp2_maybe_complete_recv_trailing_metadata(grpc_chttp2_transport* t,
|
2089
2095
|
grpc_chttp2_stream* s) {
|
2090
2096
|
grpc_chttp2_maybe_complete_recv_message(t, s);
|
2091
|
-
if (
|
2097
|
+
if (GRPC_TRACE_FLAG_ENABLED(http)) {
|
2092
2098
|
gpr_log(GPR_DEBUG,
|
2093
2099
|
"maybe_complete_recv_trailing_metadata cli=%d s=%p closure=%p "
|
2094
2100
|
"read_closed=%d "
|
@@ -2299,7 +2305,7 @@ grpc_chttp2_transport::RemovedStreamHandle grpc_chttp2_mark_stream_closed(
|
|
2299
2305
|
grpc_chttp2_transport* t, grpc_chttp2_stream* s, int close_reads,
|
2300
2306
|
int close_writes, grpc_error_handle error) {
|
2301
2307
|
grpc_chttp2_transport::RemovedStreamHandle rsh;
|
2302
|
-
if (
|
2308
|
+
if (GRPC_TRACE_FLAG_ENABLED(http)) {
|
2303
2309
|
gpr_log(
|
2304
2310
|
GPR_DEBUG, "MARK_STREAM_CLOSED: t=%p s=%p(id=%d) %s [%s]", t, s, s->id,
|
2305
2311
|
(close_reads && close_writes)
|
@@ -2619,9 +2625,9 @@ static grpc_error_handle try_http_parsing(grpc_chttp2_transport* t) {
|
|
2619
2625
|
if (parse_error.ok() &&
|
2620
2626
|
(parse_error = grpc_http_parser_eof(&parser)) == absl::OkStatus()) {
|
2621
2627
|
error = grpc_error_set_int(
|
2622
|
-
|
2623
|
-
|
2624
|
-
|
2628
|
+
GRPC_ERROR_CREATE(
|
2629
|
+
absl::StrCat("Trying to connect an http1.x server (HTTP status ",
|
2630
|
+
response.status, ")")),
|
2625
2631
|
grpc_core::StatusIntProperty::kRpcStatus,
|
2626
2632
|
grpc_http2_status_to_grpc_status(response.status));
|
2627
2633
|
}
|
@@ -2730,8 +2736,8 @@ static void read_action_locked(
|
|
2730
2736
|
// got an incoming read, cancel any pending keepalive timers
|
2731
2737
|
t->keepalive_incoming_data_wanted = false;
|
2732
2738
|
if (t->keepalive_ping_timeout_handle != TaskHandle::kInvalid) {
|
2733
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
2734
|
-
GRPC_TRACE_FLAG_ENABLED(
|
2739
|
+
if (GRPC_TRACE_FLAG_ENABLED(http2_ping) ||
|
2740
|
+
GRPC_TRACE_FLAG_ENABLED(http_keepalive)) {
|
2735
2741
|
gpr_log(GPR_INFO,
|
2736
2742
|
"%s[%p]: Clear keepalive timer because data was received",
|
2737
2743
|
t->is_client ? "CLIENT" : "SERVER", t.get());
|
@@ -2784,7 +2790,7 @@ static void start_bdp_ping(grpc_core::RefCountedPtr<grpc_chttp2_transport> t,
|
|
2784
2790
|
static void start_bdp_ping_locked(
|
2785
2791
|
grpc_core::RefCountedPtr<grpc_chttp2_transport> t,
|
2786
2792
|
grpc_error_handle error) {
|
2787
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
2793
|
+
if (GRPC_TRACE_FLAG_ENABLED(http)) {
|
2788
2794
|
gpr_log(GPR_INFO, "%s: Start BDP ping err=%s",
|
2789
2795
|
std::string(t->peer_string.as_string_view()).c_str(),
|
2790
2796
|
grpc_core::StatusToString(error).c_str());
|
@@ -2811,7 +2817,7 @@ static void finish_bdp_ping(grpc_core::RefCountedPtr<grpc_chttp2_transport> t,
|
|
2811
2817
|
static void finish_bdp_ping_locked(
|
2812
2818
|
grpc_core::RefCountedPtr<grpc_chttp2_transport> t,
|
2813
2819
|
grpc_error_handle error) {
|
2814
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
2820
|
+
if (GRPC_TRACE_FLAG_ENABLED(http)) {
|
2815
2821
|
gpr_log(GPR_INFO, "%s: Complete BDP ping err=%s",
|
2816
2822
|
std::string(t->peer_string.as_string_view()).c_str(),
|
2817
2823
|
grpc_core::StatusToString(error).c_str());
|
@@ -2955,8 +2961,8 @@ static void finish_keepalive_ping_locked(
|
|
2955
2961
|
grpc_error_handle error) {
|
2956
2962
|
if (t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_PINGING) {
|
2957
2963
|
if (error.ok()) {
|
2958
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
2959
|
-
GRPC_TRACE_FLAG_ENABLED(
|
2964
|
+
if (GRPC_TRACE_FLAG_ENABLED(http) ||
|
2965
|
+
GRPC_TRACE_FLAG_ENABLED(http_keepalive)) {
|
2960
2966
|
gpr_log(GPR_INFO, "%s: Finish keepalive ping",
|
2961
2967
|
std::string(t->peer_string.as_string_view()).c_str());
|
2962
2968
|
}
|
@@ -2977,8 +2983,8 @@ static void maybe_reset_keepalive_ping_timer_locked(grpc_chttp2_transport* t) {
|
|
2977
2983
|
t->event_engine->Cancel(t->keepalive_ping_timer_handle)) {
|
2978
2984
|
// Cancel succeeds, resets the keepalive ping timer. Note that we don't
|
2979
2985
|
// need to Ref or Unref here since we still hold the Ref.
|
2980
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
2981
|
-
GRPC_TRACE_FLAG_ENABLED(
|
2986
|
+
if (GRPC_TRACE_FLAG_ENABLED(http) ||
|
2987
|
+
GRPC_TRACE_FLAG_ENABLED(http_keepalive)) {
|
2982
2988
|
gpr_log(GPR_INFO, "%s: Keepalive ping cancelled. Resetting timer.",
|
2983
2989
|
std::string(t->peer_string.as_string_view()).c_str());
|
2984
2990
|
}
|
@@ -3011,12 +3017,22 @@ static void connectivity_state_set(grpc_chttp2_transport* t,
|
|
3011
3017
|
|
3012
3018
|
void grpc_chttp2_transport::SetPollset(grpc_stream* /*gs*/,
|
3013
3019
|
grpc_pollset* pollset) {
|
3014
|
-
|
3020
|
+
// We don't want the overhead of acquiring the mutex unless we're
|
3021
|
+
// using the "poll" polling engine, which is the only one that
|
3022
|
+
// actually uses pollsets.
|
3023
|
+
if (strcmp(grpc_get_poll_strategy_name(), "poll") != 0) return;
|
3024
|
+
grpc_core::MutexLock lock(&ep_destroy_mu);
|
3025
|
+
if (ep != nullptr) grpc_endpoint_add_to_pollset(ep, pollset);
|
3015
3026
|
}
|
3016
3027
|
|
3017
3028
|
void grpc_chttp2_transport::SetPollsetSet(grpc_stream* /*gs*/,
|
3018
3029
|
grpc_pollset_set* pollset_set) {
|
3019
|
-
|
3030
|
+
// We don't want the overhead of acquiring the mutex unless we're
|
3031
|
+
// using the "poll" polling engine, which is the only one that
|
3032
|
+
// actually uses pollsets.
|
3033
|
+
if (strcmp(grpc_get_poll_strategy_name(), "poll") != 0) return;
|
3034
|
+
grpc_core::MutexLock lock(&ep_destroy_mu);
|
3035
|
+
if (ep != nullptr) grpc_endpoint_add_to_pollset_set(ep, pollset_set);
|
3020
3036
|
}
|
3021
3037
|
|
3022
3038
|
//
|
@@ -3067,7 +3083,7 @@ static void benign_reclaimer_locked(
|
|
3067
3083
|
if (error.ok() && t->stream_map.empty()) {
|
3068
3084
|
// Channel with no active streams: send a goaway to try and make it
|
3069
3085
|
// disconnect cleanly
|
3070
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
3086
|
+
if (GRPC_TRACE_FLAG_ENABLED(resource_quota)) {
|
3071
3087
|
gpr_log(GPR_INFO, "HTTP2: %s - send goaway to free memory",
|
3072
3088
|
std::string(t->peer_string.as_string_view()).c_str());
|
3073
3089
|
}
|
@@ -3076,7 +3092,7 @@ static void benign_reclaimer_locked(
|
|
3076
3092
|
grpc_core::StatusIntProperty::kHttp2Error,
|
3077
3093
|
GRPC_HTTP2_ENHANCE_YOUR_CALM),
|
3078
3094
|
/*immediate_disconnect_hint=*/true);
|
3079
|
-
} else if (error.ok() && GRPC_TRACE_FLAG_ENABLED(
|
3095
|
+
} else if (error.ok() && GRPC_TRACE_FLAG_ENABLED(resource_quota)) {
|
3080
3096
|
gpr_log(GPR_INFO,
|
3081
3097
|
"HTTP2: %s - skip benign reclamation, there are still %" PRIdPTR
|
3082
3098
|
" streams",
|
@@ -3096,7 +3112,7 @@ static void destructive_reclaimer_locked(
|
|
3096
3112
|
if (error.ok() && !t->stream_map.empty()) {
|
3097
3113
|
// As stream_map is a hash map, this selects effectively a random stream.
|
3098
3114
|
grpc_chttp2_stream* s = t->stream_map.begin()->second;
|
3099
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
3115
|
+
if (GRPC_TRACE_FLAG_ENABLED(resource_quota)) {
|
3100
3116
|
gpr_log(GPR_INFO, "HTTP2: %s - abandon stream id %d",
|
3101
3117
|
std::string(t->peer_string.as_string_view()).c_str(), s->id);
|
3102
3118
|
}
|
@@ -3174,8 +3190,6 @@ const char* grpc_chttp2_initiate_write_reason_string(
|
|
3174
3190
|
GPR_UNREACHABLE_CODE(return "unknown");
|
3175
3191
|
}
|
3176
3192
|
|
3177
|
-
grpc_endpoint* grpc_chttp2_transport::GetEndpoint() { return ep; }
|
3178
|
-
|
3179
3193
|
size_t grpc_chttp2_transport::SizeOfStream() const {
|
3180
3194
|
return sizeof(grpc_chttp2_stream);
|
3181
3195
|
}
|
@@ -3204,7 +3218,9 @@ grpc_core::Transport* grpc_create_chttp2_transport(
|
|
3204
3218
|
|
3205
3219
|
void grpc_chttp2_transport_start_reading(
|
3206
3220
|
grpc_core::Transport* transport, grpc_slice_buffer* read_buffer,
|
3207
|
-
grpc_closure* notify_on_receive_settings,
|
3221
|
+
grpc_closure* notify_on_receive_settings,
|
3222
|
+
grpc_pollset_set* interested_parties_until_recv_settings,
|
3223
|
+
grpc_closure* notify_on_close) {
|
3208
3224
|
auto t = reinterpret_cast<grpc_chttp2_transport*>(transport)->Ref();
|
3209
3225
|
if (read_buffer != nullptr) {
|
3210
3226
|
grpc_slice_buffer_move_into(read_buffer, &t->read_buffer);
|
@@ -3213,9 +3229,15 @@ void grpc_chttp2_transport_start_reading(
|
|
3213
3229
|
auto* tp = t.get();
|
3214
3230
|
tp->combiner->Run(
|
3215
3231
|
grpc_core::NewClosure([t = std::move(t), notify_on_receive_settings,
|
3232
|
+
interested_parties_until_recv_settings,
|
3216
3233
|
notify_on_close](grpc_error_handle) mutable {
|
3217
3234
|
if (!t->closed_with_error.ok()) {
|
3218
3235
|
if (notify_on_receive_settings != nullptr) {
|
3236
|
+
if (t->ep != nullptr &&
|
3237
|
+
interested_parties_until_recv_settings != nullptr) {
|
3238
|
+
grpc_endpoint_delete_from_pollset_set(
|
3239
|
+
t->ep, interested_parties_until_recv_settings);
|
3240
|
+
}
|
3219
3241
|
grpc_core::ExecCtx::Run(DEBUG_LOCATION, notify_on_receive_settings,
|
3220
3242
|
t->closed_with_error);
|
3221
3243
|
}
|
@@ -3225,6 +3247,8 @@ void grpc_chttp2_transport_start_reading(
|
|
3225
3247
|
}
|
3226
3248
|
return;
|
3227
3249
|
}
|
3250
|
+
t->interested_parties_until_recv_settings =
|
3251
|
+
interested_parties_until_recv_settings;
|
3228
3252
|
t->notify_on_receive_settings = notify_on_receive_settings;
|
3229
3253
|
t->notify_on_close = notify_on_close;
|
3230
3254
|
read_action_locked(std::move(t), absl::OkStatus());
|