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
@@ -29,8 +29,6 @@
|
|
29
29
|
|
30
30
|
namespace grpc_core {
|
31
31
|
|
32
|
-
TraceFlag grpc_connectivity_state_trace(false, "connectivity_state");
|
33
|
-
|
34
32
|
const char* ConnectivityStateName(grpc_connectivity_state state) {
|
35
33
|
switch (state) {
|
36
34
|
case GRPC_CHANNEL_IDLE:
|
@@ -73,7 +71,7 @@ class AsyncConnectivityStateWatcherInterface::Notifier {
|
|
73
71
|
private:
|
74
72
|
static void SendNotification(void* arg, grpc_error_handle /*ignored*/) {
|
75
73
|
Notifier* self = static_cast<Notifier*>(arg);
|
76
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
74
|
+
if (GRPC_TRACE_FLAG_ENABLED(connectivity_state)) {
|
77
75
|
gpr_log(GPR_INFO, "watcher %p: delivering async notification for %s (%s)",
|
78
76
|
self->watcher_.get(), ConnectivityStateName(self->state_),
|
79
77
|
self->status_.ToString().c_str());
|
@@ -104,7 +102,7 @@ ConnectivityStateTracker::~ConnectivityStateTracker() {
|
|
104
102
|
state_.load(std::memory_order_relaxed);
|
105
103
|
if (current_state == GRPC_CHANNEL_SHUTDOWN) return;
|
106
104
|
for (const auto& p : watchers_) {
|
107
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
105
|
+
if (GRPC_TRACE_FLAG_ENABLED(connectivity_state)) {
|
108
106
|
gpr_log(GPR_INFO,
|
109
107
|
"ConnectivityStateTracker %s[%p]: notifying watcher %p: %s -> %s",
|
110
108
|
name_, this, p.first, ConnectivityStateName(current_state),
|
@@ -117,14 +115,14 @@ ConnectivityStateTracker::~ConnectivityStateTracker() {
|
|
117
115
|
void ConnectivityStateTracker::AddWatcher(
|
118
116
|
grpc_connectivity_state initial_state,
|
119
117
|
OrphanablePtr<ConnectivityStateWatcherInterface> watcher) {
|
120
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
118
|
+
if (GRPC_TRACE_FLAG_ENABLED(connectivity_state)) {
|
121
119
|
gpr_log(GPR_INFO, "ConnectivityStateTracker %s[%p]: add watcher %p", name_,
|
122
120
|
this, watcher.get());
|
123
121
|
}
|
124
122
|
grpc_connectivity_state current_state =
|
125
123
|
state_.load(std::memory_order_relaxed);
|
126
124
|
if (initial_state != current_state) {
|
127
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
125
|
+
if (GRPC_TRACE_FLAG_ENABLED(connectivity_state)) {
|
128
126
|
gpr_log(GPR_INFO,
|
129
127
|
"ConnectivityStateTracker %s[%p]: notifying watcher %p: %s -> %s",
|
130
128
|
name_, this, watcher.get(), ConnectivityStateName(initial_state),
|
@@ -141,7 +139,7 @@ void ConnectivityStateTracker::AddWatcher(
|
|
141
139
|
|
142
140
|
void ConnectivityStateTracker::RemoveWatcher(
|
143
141
|
ConnectivityStateWatcherInterface* watcher) {
|
144
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
142
|
+
if (GRPC_TRACE_FLAG_ENABLED(connectivity_state)) {
|
145
143
|
gpr_log(GPR_INFO, "ConnectivityStateTracker %s[%p]: remove watcher %p",
|
146
144
|
name_, this, watcher);
|
147
145
|
}
|
@@ -154,7 +152,7 @@ void ConnectivityStateTracker::SetState(grpc_connectivity_state state,
|
|
154
152
|
grpc_connectivity_state current_state =
|
155
153
|
state_.load(std::memory_order_relaxed);
|
156
154
|
if (state == current_state) return;
|
157
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
155
|
+
if (GRPC_TRACE_FLAG_ENABLED(connectivity_state)) {
|
158
156
|
gpr_log(GPR_INFO, "ConnectivityStateTracker %s[%p]: %s -> %s (%s, %s)",
|
159
157
|
name_, this, ConnectivityStateName(current_state),
|
160
158
|
ConnectivityStateName(state), reason, status.ToString().c_str());
|
@@ -162,7 +160,7 @@ void ConnectivityStateTracker::SetState(grpc_connectivity_state state,
|
|
162
160
|
state_.store(state, std::memory_order_relaxed);
|
163
161
|
status_ = status;
|
164
162
|
for (const auto& p : watchers_) {
|
165
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
163
|
+
if (GRPC_TRACE_FLAG_ENABLED(connectivity_state)) {
|
166
164
|
gpr_log(GPR_INFO,
|
167
165
|
"ConnectivityStateTracker %s[%p]: notifying watcher %p: %s -> %s",
|
168
166
|
name_, this, p.first, ConnectivityStateName(current_state),
|
@@ -177,7 +175,7 @@ void ConnectivityStateTracker::SetState(grpc_connectivity_state state,
|
|
177
175
|
|
178
176
|
grpc_connectivity_state ConnectivityStateTracker::state() const {
|
179
177
|
grpc_connectivity_state state = state_.load(std::memory_order_relaxed);
|
180
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
178
|
+
if (GRPC_TRACE_FLAG_ENABLED(connectivity_state)) {
|
181
179
|
gpr_log(GPR_INFO, "ConnectivityStateTracker %s[%p]: get current state: %s",
|
182
180
|
name_, this, ConnectivityStateName(state));
|
183
181
|
}
|
@@ -0,0 +1,155 @@
|
|
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
|
+
#include "src/core/lib/transport/interception_chain.h"
|
16
|
+
|
17
|
+
#include <cstddef>
|
18
|
+
|
19
|
+
#include <grpc/support/port_platform.h>
|
20
|
+
|
21
|
+
#include "src/core/lib/gprpp/match.h"
|
22
|
+
#include "src/core/lib/transport/call_destination.h"
|
23
|
+
#include "src/core/lib/transport/call_filters.h"
|
24
|
+
#include "src/core/lib/transport/call_spine.h"
|
25
|
+
#include "src/core/lib/transport/metadata.h"
|
26
|
+
|
27
|
+
namespace grpc_core {
|
28
|
+
|
29
|
+
std::atomic<size_t> InterceptionChainBuilder::next_filter_id_{0};
|
30
|
+
|
31
|
+
///////////////////////////////////////////////////////////////////////////////
|
32
|
+
// HijackedCall
|
33
|
+
|
34
|
+
CallInitiator HijackedCall::MakeCall() {
|
35
|
+
auto metadata = Arena::MakePooled<ClientMetadata>();
|
36
|
+
*metadata = metadata_->Copy();
|
37
|
+
return MakeCallWithMetadata(std::move(metadata));
|
38
|
+
}
|
39
|
+
|
40
|
+
CallInitiator HijackedCall::MakeCallWithMetadata(
|
41
|
+
ClientMetadataHandle metadata) {
|
42
|
+
auto call = MakeCallPair(std::move(metadata), call_handler_.event_engine(),
|
43
|
+
call_handler_.arena()->Ref());
|
44
|
+
destination_->StartCall(std::move(call.handler));
|
45
|
+
return std::move(call.initiator);
|
46
|
+
}
|
47
|
+
|
48
|
+
namespace {
|
49
|
+
class CallStarter final : public UnstartedCallDestination {
|
50
|
+
public:
|
51
|
+
CallStarter(RefCountedPtr<CallFilters::Stack> stack,
|
52
|
+
RefCountedPtr<CallDestination> destination)
|
53
|
+
: stack_(std::move(stack)), destination_(std::move(destination)) {}
|
54
|
+
|
55
|
+
void Orphaned() override {
|
56
|
+
stack_.reset();
|
57
|
+
destination_.reset();
|
58
|
+
}
|
59
|
+
|
60
|
+
void StartCall(UnstartedCallHandler unstarted_call_handler) override {
|
61
|
+
destination_->HandleCall(unstarted_call_handler.StartCall(stack_));
|
62
|
+
}
|
63
|
+
|
64
|
+
private:
|
65
|
+
RefCountedPtr<CallFilters::Stack> stack_;
|
66
|
+
RefCountedPtr<CallDestination> destination_;
|
67
|
+
};
|
68
|
+
|
69
|
+
class TerminalInterceptor final : public UnstartedCallDestination {
|
70
|
+
public:
|
71
|
+
explicit TerminalInterceptor(
|
72
|
+
RefCountedPtr<CallFilters::Stack> stack,
|
73
|
+
RefCountedPtr<UnstartedCallDestination> destination)
|
74
|
+
: stack_(std::move(stack)), destination_(std::move(destination)) {}
|
75
|
+
|
76
|
+
void Orphaned() override {
|
77
|
+
stack_.reset();
|
78
|
+
destination_.reset();
|
79
|
+
}
|
80
|
+
|
81
|
+
void StartCall(UnstartedCallHandler unstarted_call_handler) override {
|
82
|
+
unstarted_call_handler.SpawnGuarded(
|
83
|
+
"start_call",
|
84
|
+
Map(interception_chain_detail::HijackCall(unstarted_call_handler,
|
85
|
+
destination_, stack_),
|
86
|
+
[](ValueOrFailure<HijackedCall> hijacked_call) -> StatusFlag {
|
87
|
+
if (!hijacked_call.ok()) return Failure{};
|
88
|
+
ForwardCall(hijacked_call.value().original_call_handler(),
|
89
|
+
hijacked_call.value().MakeLastCall());
|
90
|
+
return Success{};
|
91
|
+
}));
|
92
|
+
}
|
93
|
+
|
94
|
+
private:
|
95
|
+
RefCountedPtr<CallFilters::Stack> stack_;
|
96
|
+
RefCountedPtr<UnstartedCallDestination> destination_;
|
97
|
+
};
|
98
|
+
} // namespace
|
99
|
+
|
100
|
+
///////////////////////////////////////////////////////////////////////////////
|
101
|
+
// InterceptionChain::Builder
|
102
|
+
|
103
|
+
void InterceptionChainBuilder::AddInterceptor(
|
104
|
+
absl::StatusOr<RefCountedPtr<Interceptor>> interceptor) {
|
105
|
+
if (!status_.ok()) return;
|
106
|
+
if (!interceptor.ok()) {
|
107
|
+
status_ = interceptor.status();
|
108
|
+
return;
|
109
|
+
}
|
110
|
+
(*interceptor)->filter_stack_ = MakeFilterStack();
|
111
|
+
if (top_interceptor_ == nullptr) {
|
112
|
+
top_interceptor_ = std::move(*interceptor);
|
113
|
+
} else {
|
114
|
+
Interceptor* previous = top_interceptor_.get();
|
115
|
+
while (previous->wrapped_destination_ != nullptr) {
|
116
|
+
previous = DownCast<Interceptor*>(previous->wrapped_destination_.get());
|
117
|
+
}
|
118
|
+
previous->wrapped_destination_ = std::move(*interceptor);
|
119
|
+
}
|
120
|
+
}
|
121
|
+
|
122
|
+
absl::StatusOr<RefCountedPtr<UnstartedCallDestination>>
|
123
|
+
InterceptionChainBuilder::Build(FinalDestination final_destination) {
|
124
|
+
if (!status_.ok()) return status_;
|
125
|
+
// Build the final UnstartedCallDestination in the chain - what we do here
|
126
|
+
// depends on both the type of the final destination and the filters we have
|
127
|
+
// that haven't been captured into an Interceptor yet.
|
128
|
+
RefCountedPtr<UnstartedCallDestination> terminator = Match(
|
129
|
+
final_destination,
|
130
|
+
[this](RefCountedPtr<UnstartedCallDestination> final_destination)
|
131
|
+
-> RefCountedPtr<UnstartedCallDestination> {
|
132
|
+
if (stack_builder_.has_value()) {
|
133
|
+
return MakeRefCounted<TerminalInterceptor>(MakeFilterStack(),
|
134
|
+
final_destination);
|
135
|
+
}
|
136
|
+
return final_destination;
|
137
|
+
},
|
138
|
+
[this](RefCountedPtr<CallDestination> final_destination)
|
139
|
+
-> RefCountedPtr<UnstartedCallDestination> {
|
140
|
+
return MakeRefCounted<CallStarter>(MakeFilterStack(),
|
141
|
+
std::move(final_destination));
|
142
|
+
});
|
143
|
+
// Now append the terminator to the interceptor chain.
|
144
|
+
if (top_interceptor_ == nullptr) {
|
145
|
+
return std::move(terminator);
|
146
|
+
}
|
147
|
+
Interceptor* previous = top_interceptor_.get();
|
148
|
+
while (previous->wrapped_destination_ != nullptr) {
|
149
|
+
previous = DownCast<Interceptor*>(previous->wrapped_destination_.get());
|
150
|
+
}
|
151
|
+
previous->wrapped_destination_ = std::move(terminator);
|
152
|
+
return std::move(top_interceptor_);
|
153
|
+
}
|
154
|
+
|
155
|
+
} // namespace grpc_core
|
@@ -0,0 +1,236 @@
|
|
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_TRANSPORT_INTERCEPTION_CHAIN_H
|
16
|
+
#define GRPC_SRC_CORE_LIB_TRANSPORT_INTERCEPTION_CHAIN_H
|
17
|
+
|
18
|
+
#include <memory>
|
19
|
+
#include <vector>
|
20
|
+
|
21
|
+
#include <grpc/support/port_platform.h>
|
22
|
+
|
23
|
+
#include "src/core/lib/gprpp/ref_counted.h"
|
24
|
+
#include "src/core/lib/transport/call_destination.h"
|
25
|
+
#include "src/core/lib/transport/call_filters.h"
|
26
|
+
#include "src/core/lib/transport/call_spine.h"
|
27
|
+
#include "src/core/lib/transport/metadata.h"
|
28
|
+
|
29
|
+
namespace grpc_core {
|
30
|
+
|
31
|
+
class InterceptionChainBuilder;
|
32
|
+
|
33
|
+
// One hijacked call. Using this we can get access to the CallHandler for the
|
34
|
+
// call object above us, the processed metadata from any filters/interceptors
|
35
|
+
// above us, and also create new CallInterceptor objects that will be handled
|
36
|
+
// below.
|
37
|
+
class HijackedCall final {
|
38
|
+
public:
|
39
|
+
HijackedCall(ClientMetadataHandle metadata,
|
40
|
+
RefCountedPtr<UnstartedCallDestination> destination,
|
41
|
+
CallHandler call_handler)
|
42
|
+
: metadata_(std::move(metadata)),
|
43
|
+
destination_(std::move(destination)),
|
44
|
+
call_handler_(std::move(call_handler)) {}
|
45
|
+
|
46
|
+
// Create a new call and pass it down the stack.
|
47
|
+
// This can be called as many times as needed.
|
48
|
+
CallInitiator MakeCall();
|
49
|
+
// Per MakeCall(), but precludes creating further calls.
|
50
|
+
// Allows us to optimize by not copying initial metadata.
|
51
|
+
CallInitiator MakeLastCall() {
|
52
|
+
return MakeCallWithMetadata(std::move(metadata_));
|
53
|
+
}
|
54
|
+
|
55
|
+
CallHandler& original_call_handler() { return call_handler_; }
|
56
|
+
|
57
|
+
ClientMetadata& client_metadata() { return *metadata_; }
|
58
|
+
|
59
|
+
private:
|
60
|
+
CallInitiator MakeCallWithMetadata(ClientMetadataHandle metadata);
|
61
|
+
|
62
|
+
ClientMetadataHandle metadata_;
|
63
|
+
RefCountedPtr<UnstartedCallDestination> destination_;
|
64
|
+
CallHandler call_handler_;
|
65
|
+
};
|
66
|
+
|
67
|
+
namespace interception_chain_detail {
|
68
|
+
|
69
|
+
inline auto HijackCall(UnstartedCallHandler unstarted_call_handler,
|
70
|
+
RefCountedPtr<UnstartedCallDestination> destination,
|
71
|
+
RefCountedPtr<CallFilters::Stack> stack) {
|
72
|
+
auto call_handler = unstarted_call_handler.StartCall(stack);
|
73
|
+
return Map(
|
74
|
+
call_handler.PullClientInitialMetadata(),
|
75
|
+
[call_handler,
|
76
|
+
destination](ValueOrFailure<ClientMetadataHandle> metadata) mutable
|
77
|
+
-> ValueOrFailure<HijackedCall> {
|
78
|
+
if (!metadata.ok()) return Failure{};
|
79
|
+
return HijackedCall(std::move(metadata.value()), std::move(destination),
|
80
|
+
std::move(call_handler));
|
81
|
+
});
|
82
|
+
}
|
83
|
+
|
84
|
+
} // namespace interception_chain_detail
|
85
|
+
|
86
|
+
// A delegating UnstartedCallDestination for use as a hijacking filter.
|
87
|
+
// Implementations may look at the unprocessed initial metadata
|
88
|
+
// and decide to do one of two things:
|
89
|
+
//
|
90
|
+
// 1. It can hijack the call. Returns a HijackedCall object that can
|
91
|
+
// be used to start new calls with the same metadata.
|
92
|
+
//
|
93
|
+
// 2. It can consume the call by calling `Consume`.
|
94
|
+
//
|
95
|
+
// Upon the StartCall call the UnstartedCallHandler will be from the last
|
96
|
+
// *Interceptor* in the call chain (without having been processed by any
|
97
|
+
// intervening filters) -- note that this is commonly not useful (not enough
|
98
|
+
// guarantees), and so it's usually better to Hijack and examine the metadata.
|
99
|
+
class Interceptor : public UnstartedCallDestination {
|
100
|
+
protected:
|
101
|
+
// Returns a promise that resolves to a HijackedCall instance.
|
102
|
+
// Hijacking is the process of taking over a call and starting one or more new
|
103
|
+
// ones.
|
104
|
+
auto Hijack(UnstartedCallHandler unstarted_call_handler) {
|
105
|
+
return interception_chain_detail::HijackCall(
|
106
|
+
std::move(unstarted_call_handler), wrapped_destination_, filter_stack_);
|
107
|
+
}
|
108
|
+
|
109
|
+
// Consume this call - it will not be passed on to any further filters.
|
110
|
+
CallHandler Consume(UnstartedCallHandler unstarted_call_handler) {
|
111
|
+
return unstarted_call_handler.StartCall(filter_stack_);
|
112
|
+
}
|
113
|
+
|
114
|
+
// TODO(ctiller): Consider a Passthrough() method that allows the call to be
|
115
|
+
// passed on to the next filter in the chain without any interception by the
|
116
|
+
// current filter.
|
117
|
+
|
118
|
+
private:
|
119
|
+
friend class InterceptionChainBuilder;
|
120
|
+
|
121
|
+
RefCountedPtr<UnstartedCallDestination> wrapped_destination_;
|
122
|
+
RefCountedPtr<CallFilters::Stack> filter_stack_;
|
123
|
+
};
|
124
|
+
|
125
|
+
class InterceptionChainBuilder final {
|
126
|
+
public:
|
127
|
+
// The kind of destination that the chain will eventually call.
|
128
|
+
// We can bottom out in various types depending on where we're intercepting:
|
129
|
+
// - The top half of the client channel wants to terminate on a
|
130
|
+
// UnstartedCallDestination (specifically the LB call destination).
|
131
|
+
// - The bottom half of the client channel and the server code wants to
|
132
|
+
// terminate on a ClientTransport - which unlike a
|
133
|
+
// UnstartedCallDestination demands a started CallHandler.
|
134
|
+
// There's some adaption code that's needed to start filters just prior
|
135
|
+
// to the bottoming out, and some design considerations to make with that.
|
136
|
+
// One way (that's not chosen here) would be to have the caller of the
|
137
|
+
// Builder provide something that can build an adaptor
|
138
|
+
// UnstartedCallDestination with parameters supplied by this builder - that
|
139
|
+
// disperses the responsibility of building the adaptor to the caller, which
|
140
|
+
// is not ideal - we might want to adjust the way this construct is built in
|
141
|
+
// the future, and building is a builder responsibility.
|
142
|
+
// Instead, we declare a relatively closed set of destinations here, and
|
143
|
+
// hide the adaptors inside the builder at build time.
|
144
|
+
using FinalDestination =
|
145
|
+
absl::variant<RefCountedPtr<UnstartedCallDestination>,
|
146
|
+
RefCountedPtr<CallDestination>>;
|
147
|
+
|
148
|
+
explicit InterceptionChainBuilder(ChannelArgs args)
|
149
|
+
: args_(std::move(args)) {}
|
150
|
+
|
151
|
+
// Add a filter with a `Call` class as an inner member.
|
152
|
+
// Call class must be one compatible with the filters described in
|
153
|
+
// call_filters.h.
|
154
|
+
template <typename T>
|
155
|
+
absl::enable_if_t<sizeof(typename T::Call) != 0, InterceptionChainBuilder&>
|
156
|
+
Add() {
|
157
|
+
if (!status_.ok()) return *this;
|
158
|
+
auto filter = T::Create(args_, {FilterInstanceId(FilterTypeId<T>())});
|
159
|
+
if (!filter.ok()) {
|
160
|
+
status_ = filter.status();
|
161
|
+
return *this;
|
162
|
+
}
|
163
|
+
auto& sb = stack_builder();
|
164
|
+
sb.Add(filter.value().get());
|
165
|
+
sb.AddOwnedObject(std::move(filter.value()));
|
166
|
+
return *this;
|
167
|
+
};
|
168
|
+
|
169
|
+
// Add a filter that is an interceptor - one that can hijack calls.
|
170
|
+
template <typename T>
|
171
|
+
absl::enable_if_t<std::is_base_of<Interceptor, T>::value,
|
172
|
+
InterceptionChainBuilder&>
|
173
|
+
Add() {
|
174
|
+
AddInterceptor(T::Create(args_, {FilterInstanceId(FilterTypeId<T>())}));
|
175
|
+
return *this;
|
176
|
+
};
|
177
|
+
|
178
|
+
// Add a filter that just mutates client initial metadata.
|
179
|
+
template <typename F>
|
180
|
+
void AddOnClientInitialMetadata(F f) {
|
181
|
+
stack_builder().AddOnClientInitialMetadata(std::move(f));
|
182
|
+
}
|
183
|
+
|
184
|
+
// Add a filter that just mutates server trailing metadata.
|
185
|
+
template <typename F>
|
186
|
+
void AddOnServerTrailingMetadata(F f) {
|
187
|
+
stack_builder().AddOnServerTrailingMetadata(std::move(f));
|
188
|
+
}
|
189
|
+
|
190
|
+
void Fail(absl::Status status) {
|
191
|
+
CHECK(!status.ok()) << status;
|
192
|
+
if (status_.ok()) status_ = std::move(status);
|
193
|
+
}
|
194
|
+
|
195
|
+
// Build this stack
|
196
|
+
absl::StatusOr<RefCountedPtr<UnstartedCallDestination>> Build(
|
197
|
+
FinalDestination final_destination);
|
198
|
+
|
199
|
+
const ChannelArgs& channel_args() const { return args_; }
|
200
|
+
|
201
|
+
private:
|
202
|
+
CallFilters::StackBuilder& stack_builder() {
|
203
|
+
if (!stack_builder_.has_value()) stack_builder_.emplace();
|
204
|
+
return *stack_builder_;
|
205
|
+
}
|
206
|
+
|
207
|
+
RefCountedPtr<CallFilters::Stack> MakeFilterStack() {
|
208
|
+
auto stack = stack_builder().Build();
|
209
|
+
stack_builder_.reset();
|
210
|
+
return stack;
|
211
|
+
}
|
212
|
+
|
213
|
+
template <typename T>
|
214
|
+
static size_t FilterTypeId() {
|
215
|
+
static const size_t id =
|
216
|
+
next_filter_id_.fetch_add(1, std::memory_order_relaxed);
|
217
|
+
return id;
|
218
|
+
}
|
219
|
+
|
220
|
+
size_t FilterInstanceId(size_t filter_type) {
|
221
|
+
return filter_type_counts_[filter_type]++;
|
222
|
+
}
|
223
|
+
|
224
|
+
void AddInterceptor(absl::StatusOr<RefCountedPtr<Interceptor>> interceptor);
|
225
|
+
|
226
|
+
ChannelArgs args_;
|
227
|
+
absl::optional<CallFilters::StackBuilder> stack_builder_;
|
228
|
+
RefCountedPtr<Interceptor> top_interceptor_;
|
229
|
+
absl::Status status_;
|
230
|
+
std::map<size_t, size_t> filter_type_counts_;
|
231
|
+
static std::atomic<size_t> next_filter_id_;
|
232
|
+
};
|
233
|
+
|
234
|
+
} // namespace grpc_core
|
235
|
+
|
236
|
+
#endif // GRPC_SRC_CORE_LIB_TRANSPORT_INTERCEPTION_CHAIN_H
|
@@ -528,6 +528,14 @@ struct WaitForReady {
|
|
528
528
|
static std::string DisplayValue(ValueType x);
|
529
529
|
};
|
530
530
|
|
531
|
+
// Annotation added by retry code to indicate a transparent retry.
|
532
|
+
struct IsTransparentRetry {
|
533
|
+
static absl::string_view DebugKey() { return "IsTransparentRetry"; }
|
534
|
+
static constexpr bool kRepeatable = false;
|
535
|
+
using ValueType = bool;
|
536
|
+
static std::string DisplayValue(ValueType x) { return x ? "true" : "false"; }
|
537
|
+
};
|
538
|
+
|
531
539
|
// Annotation added by a transport to note that server trailing metadata
|
532
540
|
// is a Trailers-Only response.
|
533
541
|
struct GrpcTrailersOnly {
|
@@ -1536,7 +1544,8 @@ using grpc_metadata_batch_base = grpc_core::MetadataMap<
|
|
1536
1544
|
grpc_core::GrpcStreamNetworkState, grpc_core::PeerString,
|
1537
1545
|
grpc_core::GrpcStatusContext, grpc_core::GrpcStatusFromWire,
|
1538
1546
|
grpc_core::GrpcCallWasCancelled, grpc_core::WaitForReady,
|
1539
|
-
grpc_core::
|
1547
|
+
grpc_core::IsTransparentRetry, grpc_core::GrpcTrailersOnly,
|
1548
|
+
grpc_core::GrpcTarPit,
|
1540
1549
|
grpc_core::GrpcRegisteredMethod GRPC_CUSTOM_CLIENT_METADATA
|
1541
1550
|
GRPC_CUSTOM_SERVER_METADATA>;
|
1542
1551
|
|
@@ -18,9 +18,9 @@
|
|
18
18
|
#include <grpc/support/port_platform.h>
|
19
19
|
|
20
20
|
#include "src/core/ext/transport/chttp2/transport/hpack_constants.h"
|
21
|
-
#include "src/core/lib/channel/call_tracer.h"
|
22
21
|
#include "src/core/lib/channel/channel_args.h"
|
23
22
|
#include "src/core/lib/transport/metadata_batch.h"
|
23
|
+
#include "src/core/telemetry/call_tracer.h"
|
24
24
|
|
25
25
|
namespace grpc_core {
|
26
26
|
|
@@ -40,9 +40,6 @@
|
|
40
40
|
#include "src/core/lib/slice/slice.h"
|
41
41
|
#include "src/core/lib/transport/error_utils.h"
|
42
42
|
|
43
|
-
grpc_core::DebugOnlyTraceFlag grpc_trace_stream_refcount(false,
|
44
|
-
"stream_refcount");
|
45
|
-
|
46
43
|
void grpc_stream_destroy(grpc_stream_refcount* refcount) {
|
47
44
|
if ((grpc_core::ExecCtx::Get()->flags() &
|
48
45
|
GRPC_EXEC_CTX_FLAG_THREAD_RESOURCE_LOOP)) {
|
@@ -81,8 +78,8 @@ void grpc_stream_ref_init(grpc_stream_refcount* refcount, int /*initial_refs*/,
|
|
81
78
|
GRPC_CLOSURE_INIT(&refcount->destroy, cb, cb_arg, grpc_schedule_on_exec_ctx);
|
82
79
|
|
83
80
|
new (&refcount->refs) grpc_core::RefCount(
|
84
|
-
1,
|
85
|
-
|
81
|
+
1,
|
82
|
+
GRPC_TRACE_FLAG_ENABLED(stream_refcount) ? "stream_refcount" : nullptr);
|
86
83
|
}
|
87
84
|
|
88
85
|
namespace grpc_core {
|
@@ -192,7 +189,7 @@ struct made_transport_stream_op {
|
|
192
189
|
grpc_closure outer_on_complete;
|
193
190
|
grpc_closure* inner_on_complete = nullptr;
|
194
191
|
grpc_transport_stream_op_batch op;
|
195
|
-
grpc_transport_stream_op_batch_payload payload
|
192
|
+
grpc_transport_stream_op_batch_payload payload;
|
196
193
|
};
|
197
194
|
static void destroy_made_transport_stream_op(void* arg,
|
198
195
|
grpc_error_handle error) {
|