grpc 1.47.0 → 1.48.0.pre1
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +105 -47
- data/include/grpc/compression.h +1 -1
- data/include/grpc/event_engine/event_engine.h +20 -11
- data/include/grpc/event_engine/slice_buffer.h +8 -2
- data/include/grpc/grpc.h +3 -3
- data/include/grpc/impl/codegen/compression_types.h +2 -1
- data/include/grpc/impl/codegen/connectivity_state.h +2 -1
- data/include/grpc/impl/codegen/gpr_types.h +2 -1
- data/include/grpc/impl/codegen/grpc_types.h +2 -1
- data/include/grpc/impl/codegen/port_platform.h +6 -3
- data/src/core/ext/filters/census/grpc_context.cc +3 -0
- data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +17 -5
- data/src/core/ext/filters/channel_idle/channel_idle_filter.h +16 -0
- data/src/core/ext/filters/channel_idle/idle_filter_state.h +2 -0
- data/src/core/ext/filters/client_channel/backup_poller.cc +3 -1
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +2 -2
- data/src/core/ext/filters/client_channel/client_channel.cc +51 -65
- data/src/core/ext/filters/client_channel/client_channel.h +19 -4
- data/src/core/ext/filters/client_channel/config_selector.h +1 -1
- data/src/core/ext/filters/client_channel/connector.h +1 -1
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +6 -4
- data/src/core/ext/filters/client_channel/dynamic_filters.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +2 -2
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h +1 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +73 -43
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +0 -1
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +33 -35
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +106 -112
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +91 -42
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +177 -138
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +4 -1
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +47 -44
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +118 -103
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +83 -78
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +57 -67
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +2 -2
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +5 -7
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +13 -17
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +3 -3
- data/src/core/ext/filters/client_channel/lb_policy.h +0 -7
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +3 -5
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +0 -1
- data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +3 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +6 -6
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +5 -5
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +10 -5
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +12 -3
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +5 -5
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +3 -4
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +1 -0
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +24 -15
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +3 -1
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +7 -7
- data/src/core/ext/filters/client_channel/retry_filter.cc +35 -36
- data/src/core/ext/filters/client_channel/retry_filter.h +1 -0
- data/src/core/ext/filters/client_channel/retry_service_config.cc +4 -4
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +2 -1
- data/src/core/ext/filters/client_channel/subchannel.cc +53 -50
- data/src/core/ext/filters/client_channel/subchannel.h +6 -22
- data/src/core/ext/filters/client_channel/subchannel_interface.h +10 -18
- data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +12 -97
- data/src/core/ext/filters/client_channel/subchannel_stream_client.h +5 -9
- data/src/core/ext/filters/deadline/deadline_filter.cc +12 -7
- data/src/core/ext/filters/deadline/deadline_filter.h +8 -1
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +21 -2
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +8 -3
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +7 -4
- data/src/core/ext/filters/fault_injection/service_config_parser.h +17 -3
- data/src/core/ext/filters/http/client/http_client_filter.cc +16 -5
- data/src/core/ext/filters/http/client/http_client_filter.h +8 -1
- data/src/core/ext/filters/http/client_authority_filter.cc +11 -10
- data/src/core/ext/filters/http/client_authority_filter.h +5 -2
- data/src/core/ext/filters/http/http_filters_plugin.cc +9 -1
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +64 -187
- data/src/core/ext/filters/http/message_compress/message_compress_filter.h +1 -2
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +42 -106
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.h +1 -0
- data/src/core/ext/filters/http/server/http_server_filter.cc +16 -9
- data/src/core/ext/filters/http/server/http_server_filter.h +6 -1
- data/src/core/ext/filters/message_size/message_size_filter.cc +25 -15
- data/src/core/ext/filters/message_size/message_size_filter.h +13 -0
- data/src/core/ext/filters/rbac/rbac_filter.cc +14 -3
- data/src/core/ext/filters/rbac/rbac_filter.h +8 -0
- data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +13 -2
- data/src/core/ext/filters/rbac/rbac_service_config_parser.h +14 -2
- data/src/core/ext/filters/server_config_selector/server_config_selector.cc +1 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector.h +9 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +22 -2
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.h +1 -0
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +4 -4
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +15 -15
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +196 -476
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +1 -1
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +141 -261
- data/src/core/ext/transport/chttp2/transport/flow_control.h +176 -289
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +57 -215
- data/src/core/ext/transport/chttp2/transport/frame_data.h +10 -36
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +0 -41
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +7 -12
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +7 -6
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +0 -2
- data/src/core/ext/transport/chttp2/transport/internal.h +9 -111
- data/src/core/ext/transport/chttp2/transport/parsing.cc +51 -38
- data/src/core/ext/transport/chttp2/transport/stream_lists.cc +0 -4
- data/src/core/ext/transport/chttp2/transport/writing.cc +18 -21
- data/src/core/ext/transport/inproc/inproc_plugin.cc +0 -1
- data/src/core/ext/transport/inproc/inproc_transport.cc +85 -81
- data/src/core/ext/transport/inproc/inproc_transport.h +3 -1
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.c +52 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +164 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.c +46 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.h +94 -0
- data/src/core/ext/xds/certificate_provider_factory.h +6 -1
- data/src/core/ext/xds/certificate_provider_registry.cc +8 -8
- data/src/core/ext/xds/certificate_provider_registry.h +3 -1
- data/src/core/ext/xds/certificate_provider_store.cc +2 -0
- data/src/core/ext/xds/certificate_provider_store.h +9 -0
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +9 -0
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +8 -0
- data/src/core/ext/xds/upb_utils.h +1 -2
- data/src/core/ext/xds/xds_api.cc +16 -18
- data/src/core/ext/xds/xds_api.h +12 -5
- data/src/core/ext/xds/xds_bootstrap.cc +37 -24
- data/src/core/ext/xds/xds_bootstrap.h +9 -11
- data/src/core/ext/xds/xds_certificate_provider.cc +12 -3
- data/src/core/ext/xds/xds_certificate_provider.h +16 -1
- data/src/core/ext/xds/xds_channel_stack_modifier.cc +9 -0
- data/src/core/ext/xds/xds_channel_stack_modifier.h +5 -1
- data/src/core/ext/xds/xds_client.cc +71 -22
- data/src/core/ext/xds/xds_client.h +17 -3
- data/src/core/ext/xds/xds_client_stats.cc +3 -4
- data/src/core/ext/xds/xds_client_stats.h +4 -3
- data/src/core/ext/xds/xds_cluster.cc +21 -10
- data/src/core/ext/xds/xds_cluster.h +9 -1
- data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +16 -7
- data/src/core/ext/xds/xds_cluster_specifier_plugin.h +1 -8
- data/src/core/ext/xds/xds_common_types.cc +36 -22
- data/src/core/ext/xds/xds_common_types.h +12 -4
- data/src/core/ext/xds/xds_endpoint.cc +25 -15
- data/src/core/ext/xds/xds_endpoint.h +13 -5
- data/src/core/ext/xds/xds_http_fault_filter.cc +7 -5
- data/src/core/ext/xds/xds_http_fault_filter.h +3 -1
- data/src/core/ext/xds/xds_http_filters.cc +7 -0
- data/src/core/ext/xds/xds_http_filters.h +3 -3
- data/src/core/ext/xds/xds_http_rbac_filter.cc +16 -0
- data/src/core/ext/xds/xds_http_rbac_filter.h +7 -0
- data/src/core/ext/xds/xds_lb_policy_registry.cc +291 -0
- data/src/core/ext/xds/xds_lb_policy_registry.h +72 -0
- data/src/core/ext/xds/xds_listener.cc +51 -33
- data/src/core/ext/xds/xds_listener.h +10 -1
- data/src/core/ext/xds/xds_resource_type.h +3 -3
- data/src/core/ext/xds/xds_resource_type_impl.h +7 -3
- data/src/core/ext/xds/xds_route_config.cc +56 -28
- data/src/core/ext/xds/xds_route_config.h +11 -2
- data/src/core/ext/xds/xds_routing.cc +16 -0
- data/src/core/ext/xds/xds_routing.h +7 -2
- data/src/core/ext/xds/xds_server_config_fetcher.cc +54 -6
- data/src/core/lib/address_utils/parse_address.cc +5 -8
- data/src/core/lib/address_utils/parse_address.h +3 -2
- data/src/core/lib/address_utils/sockaddr_utils.cc +8 -7
- data/src/core/lib/address_utils/sockaddr_utils.h +2 -0
- data/src/core/lib/avl/avl.h +3 -3
- data/src/core/lib/backoff/backoff.cc +1 -1
- data/src/core/lib/backoff/backoff.h +1 -1
- data/src/core/lib/channel/call_tracer.h +3 -3
- data/src/core/lib/channel/channel_args.h +1 -0
- data/src/core/lib/channel/channel_args_preconditioning.cc +1 -0
- data/src/core/lib/channel/channel_fwd.h +26 -0
- data/src/core/lib/channel/channel_stack.cc +4 -4
- data/src/core/lib/channel/channel_stack.h +1 -11
- data/src/core/lib/channel/channel_stack_builder.h +2 -5
- data/src/core/lib/channel/channel_stack_builder_impl.cc +1 -1
- data/src/core/lib/channel/channel_stack_builder_impl.h +1 -0
- data/src/core/lib/channel/channelz.cc +2 -1
- data/src/core/lib/channel/channelz.h +2 -3
- data/src/core/lib/channel/channelz_registry.cc +4 -5
- data/src/core/lib/channel/connected_channel.cc +1 -0
- data/src/core/lib/channel/connected_channel.h +1 -0
- data/src/core/lib/channel/promise_based_filter.cc +11 -5
- data/src/core/lib/channel/promise_based_filter.h +2 -0
- data/src/core/lib/compression/compression.cc +6 -1
- data/src/core/lib/compression/compression_internal.cc +3 -6
- data/src/core/lib/compression/compression_internal.h +3 -2
- data/src/core/lib/compression/message_compress.cc +3 -1
- data/src/core/lib/compression/message_compress.h +2 -3
- data/src/core/lib/debug/stats.cc +9 -9
- data/src/core/lib/debug/stats.h +2 -1
- data/src/core/lib/debug/stats_data.cc +2 -1
- data/src/core/lib/debug/stats_data.h +0 -4
- data/src/core/lib/debug/trace.h +13 -12
- data/src/core/lib/event_engine/default_event_engine_factory.cc +1 -1
- data/src/core/lib/event_engine/event_engine.cc +24 -19
- data/src/core/lib/event_engine/event_engine_factory.h +2 -2
- data/src/core/lib/event_engine/{iomgr_engine.cc → iomgr_engine/iomgr_engine.cc} +44 -91
- data/src/core/lib/event_engine/{iomgr_engine.h → iomgr_engine/iomgr_engine.h} +20 -16
- data/src/core/lib/event_engine/iomgr_engine/thread_pool.cc +123 -0
- data/src/core/lib/event_engine/iomgr_engine/thread_pool.h +70 -0
- data/src/core/lib/event_engine/iomgr_engine/time_averaged_stats.cc +62 -0
- data/src/core/lib/event_engine/iomgr_engine/time_averaged_stats.h +81 -0
- data/src/core/lib/event_engine/iomgr_engine/timer.cc +312 -0
- data/src/core/lib/event_engine/iomgr_engine/timer.h +193 -0
- data/src/core/lib/event_engine/iomgr_engine/timer_heap.cc +107 -0
- data/src/core/lib/event_engine/iomgr_engine/timer_heap.h +56 -0
- data/src/core/lib/event_engine/iomgr_engine/timer_manager.cc +254 -0
- data/src/core/lib/event_engine/iomgr_engine/timer_manager.h +111 -0
- data/src/core/lib/event_engine/promise.h +69 -0
- data/src/core/lib/gpr/time_posix.cc +6 -9
- data/src/core/lib/gpr/time_windows.cc +10 -7
- data/src/core/lib/gprpp/manual_constructor.h +0 -67
- data/src/core/lib/gprpp/status_helper.cc +44 -30
- data/src/core/lib/gprpp/time.cc +8 -0
- data/src/core/lib/gprpp/time.h +4 -0
- data/src/core/lib/http/format_request.cc +5 -4
- data/src/core/lib/http/format_request.h +1 -1
- data/src/core/lib/http/httpcli.cc +18 -12
- data/src/core/lib/http/httpcli.h +19 -3
- data/src/core/lib/http/httpcli_security_connector.cc +16 -4
- data/src/core/lib/http/httpcli_ssl_credentials.h +3 -1
- data/src/core/lib/http/parser.cc +6 -7
- data/src/core/lib/http/parser.h +3 -0
- data/src/core/lib/iomgr/call_combiner.cc +2 -2
- data/src/core/lib/iomgr/endpoint.h +1 -1
- data/src/core/lib/iomgr/endpoint_cfstream.cc +2 -2
- data/src/core/lib/iomgr/error.cc +11 -9
- data/src/core/lib/iomgr/error.h +9 -5
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +57 -18
- data/src/core/lib/iomgr/ev_epoll1_linux.h +1 -1
- data/src/core/lib/iomgr/ev_poll_posix.cc +77 -52
- data/src/core/lib/iomgr/ev_poll_posix.h +2 -2
- data/src/core/lib/iomgr/ev_posix.cc +54 -92
- data/src/core/lib/iomgr/ev_posix.h +5 -3
- data/src/core/lib/iomgr/fork_posix.cc +1 -1
- data/src/core/lib/iomgr/iomgr.cc +7 -0
- data/src/core/lib/iomgr/iomgr_posix.cc +1 -0
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +1 -0
- data/src/core/lib/iomgr/load_file.cc +1 -1
- data/src/core/lib/iomgr/resolve_address_posix.cc +1 -1
- data/src/core/lib/iomgr/resolve_address_windows.cc +1 -1
- data/src/core/lib/iomgr/tcp_client.cc +12 -7
- data/src/core/lib/iomgr/tcp_client.h +24 -13
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +15 -9
- data/src/core/lib/iomgr/tcp_client_posix.cc +143 -25
- data/src/core/lib/iomgr/tcp_client_posix.h +1 -1
- data/src/core/lib/iomgr/tcp_client_windows.cc +14 -10
- data/src/core/lib/iomgr/tcp_posix.cc +91 -29
- data/src/core/lib/iomgr/tcp_server_posix.cc +7 -7
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +12 -12
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +2 -2
- data/src/core/lib/iomgr/tcp_server_windows.cc +7 -7
- data/src/core/lib/iomgr/tcp_windows.cc +5 -5
- data/src/core/lib/iomgr/unix_sockets_posix.cc +2 -2
- data/src/core/lib/iomgr/wakeup_fd_pipe.cc +2 -2
- data/src/core/lib/iomgr/wakeup_fd_posix.cc +15 -12
- data/src/core/lib/iomgr/wakeup_fd_posix.h +0 -2
- data/src/core/lib/iomgr/work_serializer.h +2 -3
- data/src/core/lib/matchers/matchers.cc +6 -3
- data/src/core/lib/matchers/matchers.h +2 -0
- data/src/core/lib/promise/activity.cc +0 -1
- data/src/core/lib/promise/activity.h +7 -13
- data/src/core/lib/promise/loop.h +1 -0
- data/src/core/lib/promise/promise.h +1 -0
- data/src/core/lib/promise/sleep.cc +36 -31
- data/src/core/lib/promise/sleep.h +25 -25
- data/src/core/lib/resolver/resolver.cc +5 -0
- data/src/core/lib/resolver/resolver.h +3 -0
- data/src/core/lib/resolver/resolver_factory.h +5 -2
- data/src/core/lib/resolver/resolver_registry.cc +2 -9
- data/src/core/lib/resolver/resolver_registry.h +12 -1
- data/src/core/lib/resolver/server_address.cc +8 -0
- data/src/core/lib/resolver/server_address.h +9 -2
- data/src/core/lib/resource_quota/memory_quota.cc +18 -60
- data/src/core/lib/resource_quota/memory_quota.h +11 -25
- data/src/core/lib/security/authorization/authorization_policy_provider.h +7 -0
- data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +4 -0
- data/src/core/lib/security/authorization/evaluate_args.cc +9 -3
- data/src/core/lib/security/authorization/evaluate_args.h +6 -3
- data/src/core/lib/security/authorization/grpc_authorization_engine.cc +6 -0
- data/src/core/lib/security/authorization/grpc_authorization_engine.h +7 -0
- data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +12 -0
- data/src/core/lib/security/authorization/grpc_server_authz_filter.h +12 -1
- data/src/core/lib/security/authorization/matchers.cc +9 -1
- data/src/core/lib/security/authorization/matchers.h +7 -0
- data/src/core/lib/security/authorization/rbac_policy.cc +5 -0
- data/src/core/lib/security/authorization/rbac_policy.h +7 -0
- data/src/core/lib/security/context/security_context.cc +5 -2
- data/src/core/lib/security/context/security_context.h +14 -2
- data/src/core/lib/security/credentials/alts/alts_credentials.cc +4 -2
- data/src/core/lib/security/credentials/alts/alts_credentials.h +6 -1
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc +1 -3
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc +1 -4
- data/src/core/lib/security/credentials/call_creds_util.cc +8 -0
- data/src/core/lib/security/credentials/call_creds_util.h +1 -0
- data/src/core/lib/security/credentials/channel_creds_registry.h +6 -1
- data/src/core/lib/security/credentials/channel_creds_registry_init.cc +10 -0
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +4 -4
- data/src/core/lib/security/credentials/composite/composite_credentials.h +16 -2
- data/src/core/lib/security/credentials/credentials.cc +4 -8
- data/src/core/lib/security/credentials/credentials.h +10 -8
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +28 -10
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +10 -0
- data/src/core/lib/security/credentials/external/aws_request_signer.cc +9 -0
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +24 -9
- data/src/core/lib/security/credentials/external/external_account_credentials.h +11 -0
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +12 -4
- data/src/core/lib/security/credentials/external/file_external_account_credentials.h +6 -0
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +20 -4
- data/src/core/lib/security/credentials/external/url_external_account_credentials.h +10 -0
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +8 -6
- data/src/core/lib/security/credentials/fake/fake_credentials.h +13 -1
- data/src/core/lib/security/credentials/google_default/credentials_generic.cc +1 -0
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +27 -10
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +10 -1
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +9 -3
- data/src/core/lib/security/credentials/iam/iam_credentials.h +10 -0
- data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +4 -0
- data/src/core/lib/security/credentials/insecure/insecure_credentials.h +5 -0
- data/src/core/lib/security/credentials/jwt/json_token.cc +5 -2
- data/src/core/lib/security/credentials/jwt/json_token.h +2 -2
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +11 -5
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +14 -0
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +28 -3
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +4 -2
- data/src/core/lib/security/credentials/local/local_credentials.cc +4 -3
- data/src/core/lib/security/credentials/local/local_credentials.h +7 -0
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +26 -13
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +20 -0
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +8 -7
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +24 -0
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +5 -0
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +13 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +6 -6
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +9 -3
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +29 -10
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +9 -4
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +9 -2
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +6 -7
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +4 -5
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +7 -2
- data/src/core/lib/security/credentials/tls/tls_credentials.h +5 -1
- data/src/core/lib/security/credentials/tls/tls_utils.cc +2 -0
- data/src/core/lib/security/credentials/tls/tls_utils.h +1 -1
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +8 -1
- data/src/core/lib/security/credentials/xds/xds_credentials.h +14 -0
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +22 -2
- data/src/core/lib/security/security_connector/alts/alts_security_connector.h +6 -3
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +17 -1
- data/src/core/lib/security/security_connector/fake/fake_security_connector.h +2 -2
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +9 -0
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +17 -2
- data/src/core/lib/security/security_connector/load_system_roots_fallback.cc +5 -3
- data/src/core/lib/security/security_connector/{load_system_roots_linux.cc → load_system_roots_supported.cc} +27 -19
- data/src/core/lib/security/security_connector/{load_system_roots_linux.h → load_system_roots_supported.h} +5 -5
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +22 -3
- data/src/core/lib/security/security_connector/local/local_security_connector.h +6 -2
- data/src/core/lib/security/security_connector/security_connector.cc +20 -18
- data/src/core/lib/security/security_connector/security_connector.h +18 -6
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +18 -6
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +4 -2
- data/src/core/lib/security/security_connector/ssl_utils.cc +12 -2
- data/src/core/lib/security/security_connector/ssl_utils.h +10 -7
- data/src/core/lib/security/security_connector/ssl_utils_config.h +1 -1
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +21 -13
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +23 -3
- data/src/core/lib/security/transport/auth_filters.h +7 -0
- data/src/core/lib/security/transport/client_auth_filter.cc +18 -9
- data/src/core/lib/security/transport/secure_endpoint.cc +63 -13
- data/src/core/lib/security/transport/secure_endpoint.h +4 -3
- data/src/core/lib/security/transport/security_handshaker.cc +44 -11
- data/src/core/lib/security/transport/security_handshaker.h +4 -0
- data/src/core/lib/security/transport/server_auth_filter.cc +26 -4
- data/src/core/lib/security/util/json_util.cc +3 -2
- data/src/core/lib/security/util/json_util.h +0 -2
- data/src/core/lib/service_config/service_config_call_data.h +2 -1
- data/src/core/lib/service_config/service_config_impl.cc +6 -6
- data/src/core/lib/service_config/service_config_impl.h +1 -3
- data/src/core/lib/service_config/service_config_parser.cc +2 -4
- data/src/core/lib/slice/slice_buffer.cc +30 -1
- data/src/core/lib/slice/slice_buffer.h +37 -6
- data/src/core/lib/slice/slice_string_helpers.cc +0 -20
- data/src/core/lib/slice/slice_string_helpers.h +0 -4
- data/src/core/lib/surface/call.cc +53 -115
- data/src/core/lib/surface/call.h +5 -1
- data/src/core/lib/surface/channel.h +2 -0
- data/src/core/lib/surface/channel_ping.cc +1 -1
- data/src/core/lib/surface/completion_queue.cc +15 -14
- data/src/core/lib/surface/completion_queue.h +2 -1
- data/src/core/lib/surface/init.cc +0 -1
- data/src/core/lib/surface/lame_client.cc +1 -1
- data/src/core/lib/surface/lame_client.h +1 -1
- data/src/core/lib/surface/server.cc +14 -8
- data/src/core/lib/surface/server.h +4 -1
- data/src/core/lib/surface/validate_metadata.cc +1 -1
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/error_utils.cc +13 -7
- data/src/core/lib/transport/handshaker.cc +3 -3
- data/src/core/lib/transport/http_connect_handshaker.cc +4 -4
- data/src/core/lib/transport/tcp_connect_handshaker.cc +2 -2
- data/src/core/lib/transport/transport.cc +0 -3
- data/src/core/lib/transport/transport.h +20 -14
- data/src/core/lib/transport/transport_fwd.h +20 -0
- data/src/core/lib/transport/transport_impl.h +1 -0
- data/src/core/lib/transport/transport_op_string.cc +9 -9
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +1 -1
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +9 -1
- data/src/core/tsi/fake_transport_security.cc +13 -1
- data/src/core/tsi/fake_transport_security.h +6 -0
- data/src/core/tsi/ssl_transport_security.cc +1 -1
- data/src/core/tsi/transport_security_grpc.cc +3 -2
- data/src/core/tsi/transport_security_grpc.h +5 -2
- data/src/ruby/ext/grpc/ext-export-truffleruby.clang +2 -0
- data/src/ruby/ext/grpc/ext-export-truffleruby.gcc +7 -0
- data/src/ruby/ext/grpc/ext-export.clang +1 -0
- data/src/ruby/ext/grpc/ext-export.gcc +1 -0
- data/src/ruby/ext/grpc/extconf.rb +49 -18
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +1 -1
- data/src/ruby/lib/grpc/errors.rb +1 -1
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/spec/generic/client_stub_spec.rb +23 -23
- data/third_party/abseil-cpp/absl/algorithm/container.h +1 -1
- data/third_party/abseil-cpp/absl/base/attributes.h +49 -22
- data/third_party/abseil-cpp/absl/base/casts.h +61 -68
- data/third_party/abseil-cpp/absl/base/config.h +182 -41
- data/third_party/abseil-cpp/absl/base/internal/cycleclock.cc +12 -42
- data/third_party/abseil-cpp/absl/base/internal/cycleclock.h +67 -2
- data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +3 -3
- data/third_party/abseil-cpp/absl/base/internal/endian.h +17 -62
- data/third_party/abseil-cpp/absl/base/internal/fast_type_id.h +2 -0
- data/third_party/abseil-cpp/absl/base/internal/invoke.h +54 -0
- data/third_party/abseil-cpp/absl/base/internal/prefetch.h +138 -0
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +29 -22
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +13 -12
- data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +3 -0
- data/third_party/abseil-cpp/absl/base/internal/spinlock.h +8 -0
- data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +2 -5
- data/third_party/abseil-cpp/absl/base/internal/strerror.cc +88 -0
- data/third_party/abseil-cpp/absl/base/internal/strerror.h +39 -0
- data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +0 -1
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +2 -1
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +6 -7
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +12 -3
- data/third_party/abseil-cpp/absl/base/log_severity.cc +28 -0
- data/third_party/abseil-cpp/absl/base/log_severity.h +51 -0
- data/third_party/abseil-cpp/absl/base/optimization.h +19 -11
- data/third_party/abseil-cpp/absl/base/options.h +1 -1
- data/third_party/abseil-cpp/absl/base/thread_annotations.h +2 -2
- data/third_party/abseil-cpp/absl/container/fixed_array.h +2 -0
- data/third_party/abseil-cpp/absl/container/flat_hash_map.h +11 -4
- data/third_party/abseil-cpp/absl/container/flat_hash_set.h +15 -9
- data/third_party/abseil-cpp/absl/container/inlined_vector.h +20 -9
- data/third_party/abseil-cpp/absl/container/internal/common.h +6 -5
- data/third_party/abseil-cpp/absl/container/internal/container_memory.h +10 -28
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +68 -20
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +29 -11
- data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +59 -38
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +4 -0
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +515 -184
- data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc +45 -88
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +4 -0
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +3 -2
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +8 -3
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +8 -3
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +2 -1
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +8 -3
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +20 -18
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +8 -3
- data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +15 -2
- data/third_party/abseil-cpp/absl/debugging/symbolize.cc +6 -1
- data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +46 -7
- data/third_party/abseil-cpp/absl/functional/bind_front.h +10 -1
- data/third_party/abseil-cpp/absl/functional/function_ref.h +2 -1
- data/third_party/abseil-cpp/absl/hash/hash.h +82 -8
- data/third_party/abseil-cpp/absl/hash/internal/hash.h +218 -23
- data/third_party/abseil-cpp/absl/numeric/bits.h +2 -1
- data/third_party/abseil-cpp/absl/numeric/int128.cc +4 -2
- data/third_party/abseil-cpp/absl/numeric/int128.h +2 -2
- data/third_party/abseil-cpp/absl/profiling/internal/sample_recorder.h +21 -6
- data/third_party/abseil-cpp/absl/random/bernoulli_distribution.h +4 -4
- data/third_party/abseil-cpp/absl/random/distributions.h +3 -3
- data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +3 -0
- data/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +2 -1
- data/third_party/abseil-cpp/absl/random/internal/generate_real.h +2 -2
- data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +59 -48
- data/third_party/abseil-cpp/absl/random/internal/pcg_engine.h +1 -1
- data/third_party/abseil-cpp/absl/random/internal/randen.h +5 -11
- data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +6 -2
- data/third_party/abseil-cpp/absl/random/internal/randen_engine.h +48 -23
- data/third_party/abseil-cpp/absl/random/internal/salted_seed_seq.h +24 -26
- data/third_party/abseil-cpp/absl/random/internal/traits.h +53 -5
- data/third_party/abseil-cpp/absl/random/internal/uniform_helper.h +5 -5
- data/third_party/abseil-cpp/absl/random/internal/wide_multiply.h +33 -48
- data/third_party/abseil-cpp/absl/random/log_uniform_int_distribution.h +9 -10
- data/third_party/abseil-cpp/absl/random/poisson_distribution.h +7 -4
- data/third_party/abseil-cpp/absl/random/seed_sequences.h +1 -0
- data/third_party/abseil-cpp/absl/random/uniform_int_distribution.h +2 -2
- data/third_party/abseil-cpp/absl/random/uniform_real_distribution.h +1 -1
- data/third_party/abseil-cpp/absl/random/zipf_distribution.h +4 -3
- data/third_party/abseil-cpp/absl/status/internal/status_internal.h +17 -0
- data/third_party/abseil-cpp/absl/status/status.cc +174 -2
- data/third_party/abseil-cpp/absl/status/status.h +22 -12
- data/third_party/abseil-cpp/absl/status/statusor.h +9 -3
- data/third_party/abseil-cpp/absl/strings/ascii.h +4 -4
- data/third_party/abseil-cpp/absl/strings/cord.cc +194 -913
- data/third_party/abseil-cpp/absl/strings/cord.h +202 -81
- data/third_party/abseil-cpp/absl/strings/cord_analysis.cc +188 -0
- data/third_party/abseil-cpp/absl/strings/cord_analysis.h +44 -0
- data/third_party/abseil-cpp/absl/strings/cord_buffer.cc +30 -0
- data/third_party/abseil-cpp/absl/strings/cord_buffer.h +572 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_data_edge.h +63 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +20 -32
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +123 -88
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +149 -49
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.h +44 -59
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.cc +3 -1
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.h +4 -2
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.cc +3 -2
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.h +5 -4
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.cc +7 -74
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.cc +54 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.h +102 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +58 -17
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +13 -11
- data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +11 -38
- data/third_party/abseil-cpp/absl/strings/internal/cordz_statistics.h +1 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_update_tracker.h +4 -2
- data/third_party/abseil-cpp/absl/strings/internal/escaping.cc +6 -5
- data/third_party/abseil-cpp/absl/strings/internal/ostringstream.cc +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +38 -7
- data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +7 -2
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +4 -5
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +5 -2
- data/third_party/abseil-cpp/absl/strings/internal/str_format/output.h +2 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +4 -2
- data/third_party/abseil-cpp/absl/strings/internal/str_join_internal.h +9 -6
- data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +10 -2
- data/third_party/abseil-cpp/absl/strings/internal/utf8.cc +9 -9
- data/third_party/abseil-cpp/absl/strings/numbers.cc +8 -8
- data/third_party/abseil-cpp/absl/strings/numbers.h +26 -23
- data/third_party/abseil-cpp/absl/strings/str_cat.h +20 -13
- data/third_party/abseil-cpp/absl/strings/str_join.h +9 -15
- data/third_party/abseil-cpp/absl/strings/str_split.h +1 -2
- data/third_party/abseil-cpp/absl/strings/string_view.cc +2 -13
- data/third_party/abseil-cpp/absl/strings/string_view.h +3 -2
- data/third_party/abseil-cpp/absl/strings/strip.h +8 -6
- data/third_party/abseil-cpp/absl/strings/substitute.h +10 -2
- data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +9 -6
- data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.h +0 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +0 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +1 -6
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +0 -25
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +10 -4
- data/third_party/abseil-cpp/absl/synchronization/mutex.cc +75 -40
- data/third_party/abseil-cpp/absl/synchronization/mutex.h +17 -9
- data/third_party/abseil-cpp/absl/synchronization/notification.h +3 -2
- data/third_party/abseil-cpp/absl/time/duration.cc +5 -4
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +11 -7
- data/third_party/abseil-cpp/absl/time/time.h +16 -12
- data/third_party/abseil-cpp/absl/types/internal/optional.h +8 -0
- data/third_party/abseil-cpp/absl/types/internal/variant.h +3 -3
- data/third_party/abseil-cpp/absl/types/optional.h +17 -14
- data/third_party/abseil-cpp/absl/types/span.h +2 -1
- metadata +39 -15
- data/src/core/lib/slice/slice_split.cc +0 -103
- data/src/core/lib/slice/slice_split.h +0 -36
- data/src/core/lib/transport/byte_stream.cc +0 -165
- data/src/core/lib/transport/byte_stream.h +0 -170
- data/third_party/abseil-cpp/absl/cleanup/cleanup.h +0 -140
- data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +0 -100
- data/third_party/abseil-cpp/absl/container/internal/have_sse.h +0 -50
@@ -29,6 +29,7 @@
|
|
29
29
|
#include "absl/status/status.h"
|
30
30
|
#include "absl/types/optional.h"
|
31
31
|
|
32
|
+
#include <grpc/event_engine/event_engine.h>
|
32
33
|
#include <grpc/impl/codegen/connectivity_state.h>
|
33
34
|
#include <grpc/impl/codegen/grpc_types.h>
|
34
35
|
|
@@ -36,7 +37,7 @@
|
|
36
37
|
#include "src/core/ext/filters/client_channel/connector.h"
|
37
38
|
#include "src/core/ext/filters/client_channel/subchannel_pool_interface.h"
|
38
39
|
#include "src/core/lib/backoff/backoff.h"
|
39
|
-
#include "src/core/lib/channel/
|
40
|
+
#include "src/core/lib/channel/channel_fwd.h"
|
40
41
|
#include "src/core/lib/channel/context.h"
|
41
42
|
#include "src/core/lib/gpr/time_precise.h"
|
42
43
|
#include "src/core/lib/gprpp/debug_location.h"
|
@@ -53,7 +54,6 @@
|
|
53
54
|
#include "src/core/lib/iomgr/iomgr_fwd.h"
|
54
55
|
#include "src/core/lib/iomgr/polling_entity.h"
|
55
56
|
#include "src/core/lib/iomgr/resolved_address.h"
|
56
|
-
#include "src/core/lib/iomgr/timer.h"
|
57
57
|
#include "src/core/lib/resource_quota/arena.h"
|
58
58
|
#include "src/core/lib/slice/slice.h"
|
59
59
|
#include "src/core/lib/transport/connectivity_state.h"
|
@@ -242,24 +242,13 @@ class Subchannel : public DualRefCounted<Subchannel> {
|
|
242
242
|
|
243
243
|
channelz::SubchannelNode* channelz_node();
|
244
244
|
|
245
|
-
// Returns the current connectivity state of the subchannel.
|
246
|
-
// If health_check_service_name is non-null, the returned connectivity
|
247
|
-
// state will be based on the state reported by the backend for that
|
248
|
-
// service name.
|
249
|
-
grpc_connectivity_state CheckConnectivityState(
|
250
|
-
const absl::optional<std::string>& health_check_service_name)
|
251
|
-
ABSL_LOCKS_EXCLUDED(mu_);
|
252
|
-
|
253
245
|
// Starts watching the subchannel's connectivity state.
|
254
|
-
// The first callback to the watcher will be delivered
|
255
|
-
// subchannel's connectivity state becomes a value other than
|
256
|
-
// initial_state, which may happen immediately.
|
246
|
+
// The first callback to the watcher will be delivered ~immediately.
|
257
247
|
// Subsequent callbacks will be delivered as the subchannel's state
|
258
248
|
// changes.
|
259
249
|
// The watcher will be destroyed either when the subchannel is
|
260
250
|
// destroyed or when CancelConnectivityStateWatch() is called.
|
261
251
|
void WatchConnectivityState(
|
262
|
-
grpc_connectivity_state initial_state,
|
263
252
|
const absl::optional<std::string>& health_check_service_name,
|
264
253
|
RefCountedPtr<ConnectivityStateWatcherInterface> watcher)
|
265
254
|
ABSL_LOCKS_EXCLUDED(mu_);
|
@@ -336,7 +325,6 @@ class Subchannel : public DualRefCounted<Subchannel> {
|
|
336
325
|
public:
|
337
326
|
void AddWatcherLocked(
|
338
327
|
WeakRefCountedPtr<Subchannel> subchannel,
|
339
|
-
grpc_connectivity_state initial_state,
|
340
328
|
const std::string& health_check_service_name,
|
341
329
|
RefCountedPtr<ConnectivityStateWatcherInterface> watcher);
|
342
330
|
void RemoveWatcherLocked(const std::string& health_check_service_name,
|
@@ -367,8 +355,7 @@ class Subchannel : public DualRefCounted<Subchannel> {
|
|
367
355
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_);
|
368
356
|
|
369
357
|
// Methods for connection.
|
370
|
-
|
371
|
-
ABSL_LOCKS_EXCLUDED(mu_);
|
358
|
+
void OnRetryTimer() ABSL_LOCKS_EXCLUDED(mu_);
|
372
359
|
void OnRetryTimerLocked() ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_);
|
373
360
|
void StartConnectingLocked() ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_);
|
374
361
|
static void OnConnectingFinished(void* arg, grpc_error_handle error)
|
@@ -403,9 +390,6 @@ class Subchannel : public DualRefCounted<Subchannel> {
|
|
403
390
|
|
404
391
|
bool shutdown_ ABSL_GUARDED_BY(mu_) = false;
|
405
392
|
|
406
|
-
// Records if RequestConnection() was called while in backoff.
|
407
|
-
bool connection_requested_ ABSL_GUARDED_BY(mu_) = false;
|
408
|
-
|
409
393
|
// Connectivity state tracking.
|
410
394
|
// Note that the connectivity state implies the state of the
|
411
395
|
// Subchannel object:
|
@@ -426,8 +410,8 @@ class Subchannel : public DualRefCounted<Subchannel> {
|
|
426
410
|
// Backoff state.
|
427
411
|
BackOff backoff_ ABSL_GUARDED_BY(mu_);
|
428
412
|
Timestamp next_attempt_time_ ABSL_GUARDED_BY(mu_);
|
429
|
-
|
430
|
-
|
413
|
+
grpc_event_engine::experimental::EventEngine::TaskHandle retry_timer_handle_
|
414
|
+
ABSL_GUARDED_BY(mu_);
|
431
415
|
|
432
416
|
// Keepalive time period (-1 for unset)
|
433
417
|
int keepalive_time_ ABSL_GUARDED_BY(mu_) = -1;
|
@@ -22,6 +22,8 @@
|
|
22
22
|
#include <memory>
|
23
23
|
#include <utility>
|
24
24
|
|
25
|
+
#include "absl/status/status.h"
|
26
|
+
|
25
27
|
#include <grpc/impl/codegen/connectivity_state.h>
|
26
28
|
#include <grpc/impl/codegen/grpc_types.h>
|
27
29
|
|
@@ -38,11 +40,12 @@ class SubchannelInterface : public RefCounted<SubchannelInterface> {
|
|
38
40
|
public:
|
39
41
|
virtual ~ConnectivityStateWatcherInterface() = default;
|
40
42
|
|
41
|
-
// Will be invoked whenever the subchannel's connectivity state
|
42
|
-
//
|
43
|
-
//
|
44
|
-
|
45
|
-
|
43
|
+
// Will be invoked whenever the subchannel's connectivity state changes.
|
44
|
+
// If the new state is TRANSIENT_FAILURE, status indicates the reason
|
45
|
+
// for the failure. There will be only one invocation of this method
|
46
|
+
// on a given watcher instance at any given time.
|
47
|
+
virtual void OnConnectivityStateChange(grpc_connectivity_state new_state,
|
48
|
+
absl::Status status) = 0;
|
46
49
|
|
47
50
|
// TODO(roth): Remove this as soon as we move to EventManager-based
|
48
51
|
// polling.
|
@@ -61,13 +64,8 @@ class SubchannelInterface : public RefCounted<SubchannelInterface> {
|
|
61
64
|
|
62
65
|
~SubchannelInterface() override = default;
|
63
66
|
|
64
|
-
// Returns the current connectivity state of the subchannel.
|
65
|
-
virtual grpc_connectivity_state CheckConnectivityState() = 0;
|
66
|
-
|
67
67
|
// Starts watching the subchannel's connectivity state.
|
68
|
-
// The first callback to the watcher will be delivered
|
69
|
-
// subchannel's connectivity state becomes a value other than
|
70
|
-
// initial_state, which may happen immediately.
|
68
|
+
// The first callback to the watcher will be delivered ~immediately.
|
71
69
|
// Subsequent callbacks will be delivered as the subchannel's state
|
72
70
|
// changes.
|
73
71
|
// The watcher will be destroyed either when the subchannel is
|
@@ -76,7 +74,6 @@ class SubchannelInterface : public RefCounted<SubchannelInterface> {
|
|
76
74
|
// valid to call this method a second time without first cancelling
|
77
75
|
// the previous watcher using CancelConnectivityStateWatch().
|
78
76
|
virtual void WatchConnectivityState(
|
79
|
-
grpc_connectivity_state initial_state,
|
80
77
|
std::unique_ptr<ConnectivityStateWatcherInterface> watcher) = 0;
|
81
78
|
|
82
79
|
// Cancels a connectivity state watch.
|
@@ -115,14 +112,9 @@ class DelegatingSubchannel : public SubchannelInterface {
|
|
115
112
|
return wrapped_subchannel_;
|
116
113
|
}
|
117
114
|
|
118
|
-
grpc_connectivity_state CheckConnectivityState() override {
|
119
|
-
return wrapped_subchannel_->CheckConnectivityState();
|
120
|
-
}
|
121
115
|
void WatchConnectivityState(
|
122
|
-
grpc_connectivity_state initial_state,
|
123
116
|
std::unique_ptr<ConnectivityStateWatcherInterface> watcher) override {
|
124
|
-
return wrapped_subchannel_->WatchConnectivityState(
|
125
|
-
std::move(watcher));
|
117
|
+
return wrapped_subchannel_->WatchConnectivityState(std::move(watcher));
|
126
118
|
}
|
127
119
|
void CancelConnectivityStateWatch(
|
128
120
|
ConnectivityStateWatcherInterface* watcher) override {
|
@@ -20,15 +20,11 @@
|
|
20
20
|
|
21
21
|
#include <inttypes.h>
|
22
22
|
#include <stdio.h>
|
23
|
-
#include <string.h>
|
24
23
|
|
25
|
-
#include <cstdint>
|
26
24
|
#include <string>
|
27
25
|
#include <utility>
|
28
26
|
|
29
|
-
#include <grpc/slice_buffer.h>
|
30
27
|
#include <grpc/status.h>
|
31
|
-
#include <grpc/support/alloc.h>
|
32
28
|
#include <grpc/support/log.h>
|
33
29
|
|
34
30
|
#include "src/core/lib/gpr/time_precise.h"
|
@@ -38,7 +34,6 @@
|
|
38
34
|
#include "src/core/lib/iomgr/exec_ctx.h"
|
39
35
|
#include "src/core/lib/resource_quota/api.h"
|
40
36
|
#include "src/core/lib/resource_quota/resource_quota.h"
|
41
|
-
#include "src/core/lib/slice/slice_internal.h"
|
42
37
|
#include "src/core/lib/transport/error_utils.h"
|
43
38
|
|
44
39
|
#define SUBCHANNEL_STREAM_INITIAL_CONNECT_BACKOFF_SECONDS 1
|
@@ -151,7 +146,7 @@ void SubchannelStreamClient::OnRetryTimer(void* arg, grpc_error_handle error) {
|
|
151
146
|
{
|
152
147
|
MutexLock lock(&self->mu_);
|
153
148
|
self->retry_timer_callback_pending_ = false;
|
154
|
-
if (self->event_handler_ != nullptr && error
|
149
|
+
if (self->event_handler_ != nullptr && GRPC_ERROR_IS_NONE(error) &&
|
155
150
|
self->call_state_ == nullptr) {
|
156
151
|
if (GPR_UNLIKELY(self->tracer_ != nullptr)) {
|
157
152
|
gpr_log(GPR_INFO,
|
@@ -223,7 +218,7 @@ void SubchannelStreamClient::CallState::StartCallLocked() {
|
|
223
218
|
this, grpc_schedule_on_exec_ctx);
|
224
219
|
call_->SetAfterCallStackDestroy(&after_call_stack_destruction_);
|
225
220
|
// Check if creation failed.
|
226
|
-
if (error
|
221
|
+
if (!GRPC_ERROR_IS_NONE(error) ||
|
227
222
|
subchannel_stream_client_->event_handler_ == nullptr) {
|
228
223
|
gpr_log(GPR_ERROR,
|
229
224
|
"SubchannelStreamClient %p CallState %p: error creating "
|
@@ -245,21 +240,16 @@ void SubchannelStreamClient::CallState::StartCallLocked() {
|
|
245
240
|
send_initial_metadata_.Set(
|
246
241
|
HttpPathMetadata(),
|
247
242
|
subchannel_stream_client_->event_handler_->GetPathLocked());
|
248
|
-
GPR_ASSERT(error
|
243
|
+
GPR_ASSERT(GRPC_ERROR_IS_NONE(error));
|
249
244
|
payload_.send_initial_metadata.send_initial_metadata =
|
250
245
|
&send_initial_metadata_;
|
251
246
|
payload_.send_initial_metadata.send_initial_metadata_flags = 0;
|
252
247
|
payload_.send_initial_metadata.peer_string = nullptr;
|
253
248
|
batch_.send_initial_metadata = true;
|
254
249
|
// Add send_message op.
|
255
|
-
|
256
|
-
subchannel_stream_client_->event_handler_->EncodeSendMessageLocked();
|
257
|
-
|
258
|
-
grpc_slice_buffer_init(&slice_buffer);
|
259
|
-
grpc_slice_buffer_add(&slice_buffer, request_slice);
|
260
|
-
send_message_.emplace(&slice_buffer, 0);
|
261
|
-
grpc_slice_buffer_destroy_internal(&slice_buffer);
|
262
|
-
payload_.send_message.send_message.reset(&*send_message_);
|
250
|
+
send_message_.Append(Slice(
|
251
|
+
subchannel_stream_client_->event_handler_->EncodeSendMessageLocked()));
|
252
|
+
payload_.send_message.send_message = &send_message_;
|
263
253
|
batch_.send_message = true;
|
264
254
|
// Add send_trailing_metadata op.
|
265
255
|
payload_.send_trailing_metadata.send_trailing_metadata =
|
@@ -374,42 +364,18 @@ void SubchannelStreamClient::CallState::RecvInitialMetadataReady(
|
|
374
364
|
self->call_->Unref(DEBUG_LOCATION, "recv_initial_metadata_ready");
|
375
365
|
}
|
376
366
|
|
377
|
-
void SubchannelStreamClient::CallState::
|
378
|
-
|
379
|
-
recv_message_.reset();
|
380
|
-
if (error != GRPC_ERROR_NONE) {
|
381
|
-
GRPC_ERROR_UNREF(error);
|
382
|
-
Cancel();
|
383
|
-
grpc_slice_buffer_destroy_internal(&recv_message_buffer_);
|
367
|
+
void SubchannelStreamClient::CallState::RecvMessageReady() {
|
368
|
+
if (!recv_message_.has_value()) {
|
384
369
|
call_->Unref(DEBUG_LOCATION, "recv_message_ready");
|
385
370
|
return;
|
386
371
|
}
|
387
|
-
// Concatenate the slices to form a single string.
|
388
|
-
std::unique_ptr<uint8_t> recv_message_deleter;
|
389
|
-
uint8_t* recv_message;
|
390
|
-
if (recv_message_buffer_.count == 1) {
|
391
|
-
recv_message = GRPC_SLICE_START_PTR(recv_message_buffer_.slices[0]);
|
392
|
-
} else {
|
393
|
-
recv_message =
|
394
|
-
static_cast<uint8_t*>(gpr_malloc(recv_message_buffer_.length));
|
395
|
-
recv_message_deleter.reset(recv_message);
|
396
|
-
size_t offset = 0;
|
397
|
-
for (size_t i = 0; i < recv_message_buffer_.count; ++i) {
|
398
|
-
memcpy(recv_message + offset,
|
399
|
-
GRPC_SLICE_START_PTR(recv_message_buffer_.slices[i]),
|
400
|
-
GRPC_SLICE_LENGTH(recv_message_buffer_.slices[i]));
|
401
|
-
offset += GRPC_SLICE_LENGTH(recv_message_buffer_.slices[i]);
|
402
|
-
}
|
403
|
-
}
|
404
372
|
// Report payload.
|
405
373
|
{
|
406
374
|
MutexLock lock(&subchannel_stream_client_->mu_);
|
407
375
|
if (subchannel_stream_client_->event_handler_ != nullptr) {
|
408
|
-
absl::string_view serialized_message(
|
409
|
-
reinterpret_cast<char*>(recv_message), recv_message_buffer_.length);
|
410
376
|
absl::Status status =
|
411
377
|
subchannel_stream_client_->event_handler_->RecvMessageReadyLocked(
|
412
|
-
subchannel_stream_client_.get(),
|
378
|
+
subchannel_stream_client_.get(), recv_message_->JoinIntoString());
|
413
379
|
if (!status.ok()) {
|
414
380
|
if (GPR_UNLIKELY(subchannel_stream_client_->tracer_ != nullptr)) {
|
415
381
|
gpr_log(GPR_INFO,
|
@@ -424,7 +390,7 @@ void SubchannelStreamClient::CallState::DoneReadingRecvMessage(
|
|
424
390
|
}
|
425
391
|
}
|
426
392
|
seen_response_.store(true, std::memory_order_release);
|
427
|
-
|
393
|
+
recv_message_.reset();
|
428
394
|
// Start another recv_message batch.
|
429
395
|
// This re-uses the ref we're holding.
|
430
396
|
// Note: Can't just reuse batch_ here, since we don't know that all
|
@@ -438,62 +404,11 @@ void SubchannelStreamClient::CallState::DoneReadingRecvMessage(
|
|
438
404
|
StartBatch(&recv_message_batch_);
|
439
405
|
}
|
440
406
|
|
441
|
-
grpc_error_handle
|
442
|
-
SubchannelStreamClient::CallState::PullSliceFromRecvMessage() {
|
443
|
-
grpc_slice slice;
|
444
|
-
grpc_error_handle error = recv_message_->Pull(&slice);
|
445
|
-
if (error == GRPC_ERROR_NONE) {
|
446
|
-
grpc_slice_buffer_add(&recv_message_buffer_, slice);
|
447
|
-
}
|
448
|
-
return error;
|
449
|
-
}
|
450
|
-
|
451
|
-
void SubchannelStreamClient::CallState::ContinueReadingRecvMessage() {
|
452
|
-
while (recv_message_->Next(SIZE_MAX, &recv_message_ready_)) {
|
453
|
-
grpc_error_handle error = PullSliceFromRecvMessage();
|
454
|
-
if (error != GRPC_ERROR_NONE) {
|
455
|
-
DoneReadingRecvMessage(error);
|
456
|
-
return;
|
457
|
-
}
|
458
|
-
if (recv_message_buffer_.length == recv_message_->length()) {
|
459
|
-
DoneReadingRecvMessage(GRPC_ERROR_NONE);
|
460
|
-
break;
|
461
|
-
}
|
462
|
-
}
|
463
|
-
}
|
464
|
-
|
465
|
-
void SubchannelStreamClient::CallState::OnByteStreamNext(
|
466
|
-
void* arg, grpc_error_handle error) {
|
467
|
-
auto* self = static_cast<SubchannelStreamClient::CallState*>(arg);
|
468
|
-
if (error != GRPC_ERROR_NONE) {
|
469
|
-
self->DoneReadingRecvMessage(GRPC_ERROR_REF(error));
|
470
|
-
return;
|
471
|
-
}
|
472
|
-
error = self->PullSliceFromRecvMessage();
|
473
|
-
if (error != GRPC_ERROR_NONE) {
|
474
|
-
self->DoneReadingRecvMessage(error);
|
475
|
-
return;
|
476
|
-
}
|
477
|
-
if (self->recv_message_buffer_.length == self->recv_message_->length()) {
|
478
|
-
self->DoneReadingRecvMessage(GRPC_ERROR_NONE);
|
479
|
-
} else {
|
480
|
-
self->ContinueReadingRecvMessage();
|
481
|
-
}
|
482
|
-
}
|
483
|
-
|
484
407
|
void SubchannelStreamClient::CallState::RecvMessageReady(
|
485
408
|
void* arg, grpc_error_handle /*error*/) {
|
486
409
|
auto* self = static_cast<SubchannelStreamClient::CallState*>(arg);
|
487
410
|
GRPC_CALL_COMBINER_STOP(&self->call_combiner_, "recv_message_ready");
|
488
|
-
|
489
|
-
self->call_->Unref(DEBUG_LOCATION, "recv_message_ready");
|
490
|
-
return;
|
491
|
-
}
|
492
|
-
grpc_slice_buffer_init(&self->recv_message_buffer_);
|
493
|
-
GRPC_CLOSURE_INIT(&self->recv_message_ready_, OnByteStreamNext, self,
|
494
|
-
grpc_schedule_on_exec_ctx);
|
495
|
-
self->ContinueReadingRecvMessage();
|
496
|
-
// Ref will continue to be held until we finish draining the byte stream.
|
411
|
+
self->RecvMessageReady();
|
497
412
|
}
|
498
413
|
|
499
414
|
void SubchannelStreamClient::CallState::RecvTrailingMetadataReady(
|
@@ -505,7 +420,7 @@ void SubchannelStreamClient::CallState::RecvTrailingMetadataReady(
|
|
505
420
|
grpc_status_code status =
|
506
421
|
self->recv_trailing_metadata_.get(GrpcStatusMetadata())
|
507
422
|
.value_or(GRPC_STATUS_UNKNOWN);
|
508
|
-
if (error
|
423
|
+
if (!GRPC_ERROR_IS_NONE(error)) {
|
509
424
|
grpc_error_get_status(error, Timestamp::InfFuture(), &status,
|
510
425
|
nullptr /* slice */, nullptr /* http_error */,
|
511
426
|
nullptr /* error_string */);
|
@@ -46,7 +46,7 @@
|
|
46
46
|
#include "src/core/lib/resource_quota/arena.h"
|
47
47
|
#include "src/core/lib/resource_quota/memory_quota.h"
|
48
48
|
#include "src/core/lib/slice/slice.h"
|
49
|
-
#include "src/core/lib/
|
49
|
+
#include "src/core/lib/slice/slice_buffer.h"
|
50
50
|
#include "src/core/lib/transport/metadata_batch.h"
|
51
51
|
#include "src/core/lib/transport/transport.h"
|
52
52
|
|
@@ -132,6 +132,8 @@ class SubchannelStreamClient
|
|
132
132
|
void CallEndedLocked(bool retry)
|
133
133
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&subchannel_stream_client_->mu_);
|
134
134
|
|
135
|
+
void RecvMessageReady();
|
136
|
+
|
135
137
|
static void OnComplete(void* arg, grpc_error_handle error);
|
136
138
|
static void RecvInitialMetadataReady(void* arg, grpc_error_handle error);
|
137
139
|
static void RecvMessageReady(void* arg, grpc_error_handle error);
|
@@ -139,11 +141,6 @@ class SubchannelStreamClient
|
|
139
141
|
static void StartCancel(void* arg, grpc_error_handle error);
|
140
142
|
static void OnCancelComplete(void* arg, grpc_error_handle error);
|
141
143
|
|
142
|
-
static void OnByteStreamNext(void* arg, grpc_error_handle error);
|
143
|
-
void ContinueReadingRecvMessage();
|
144
|
-
grpc_error_handle PullSliceFromRecvMessage();
|
145
|
-
void DoneReadingRecvMessage(grpc_error_handle error);
|
146
|
-
|
147
144
|
static void AfterCallStackDestruction(void* arg, grpc_error_handle error);
|
148
145
|
|
149
146
|
RefCountedPtr<SubchannelStreamClient> subchannel_stream_client_;
|
@@ -169,7 +166,7 @@ class SubchannelStreamClient
|
|
169
166
|
grpc_metadata_batch send_initial_metadata_;
|
170
167
|
|
171
168
|
// send_message
|
172
|
-
|
169
|
+
SliceBuffer send_message_;
|
173
170
|
|
174
171
|
// send_trailing_metadata
|
175
172
|
grpc_metadata_batch send_trailing_metadata_;
|
@@ -179,9 +176,8 @@ class SubchannelStreamClient
|
|
179
176
|
grpc_closure recv_initial_metadata_ready_;
|
180
177
|
|
181
178
|
// recv_message
|
182
|
-
|
179
|
+
absl::optional<SliceBuffer> recv_message_;
|
183
180
|
grpc_closure recv_message_ready_;
|
184
|
-
grpc_slice_buffer recv_message_buffer_;
|
185
181
|
std::atomic<bool> seen_response_{false};
|
186
182
|
|
187
183
|
// True if the cancel_stream batch has been started.
|
@@ -18,19 +18,24 @@
|
|
18
18
|
|
19
19
|
#include "src/core/ext/filters/deadline/deadline_filter.h"
|
20
20
|
|
21
|
-
#include <
|
22
|
-
#include <string.h>
|
21
|
+
#include <new>
|
23
22
|
|
24
|
-
#include
|
23
|
+
#include "absl/status/status.h"
|
24
|
+
#include "absl/types/optional.h"
|
25
|
+
|
26
|
+
#include <grpc/status.h>
|
25
27
|
#include <grpc/support/log.h>
|
26
|
-
#include <grpc/support/sync.h>
|
27
|
-
#include <grpc/support/time.h>
|
28
28
|
|
29
|
+
#include "src/core/lib/channel/channel_args.h"
|
29
30
|
#include "src/core/lib/channel/channel_stack_builder.h"
|
30
31
|
#include "src/core/lib/config/core_configuration.h"
|
31
|
-
#include "src/core/lib/gprpp/
|
32
|
+
#include "src/core/lib/gprpp/debug_location.h"
|
33
|
+
#include "src/core/lib/iomgr/error.h"
|
34
|
+
#include "src/core/lib/iomgr/exec_ctx.h"
|
32
35
|
#include "src/core/lib/iomgr/timer.h"
|
33
|
-
#include "src/core/lib/
|
36
|
+
#include "src/core/lib/surface/channel_init.h"
|
37
|
+
#include "src/core/lib/surface/channel_stack_type.h"
|
38
|
+
#include "src/core/lib/transport/metadata_batch.h"
|
34
39
|
|
35
40
|
namespace grpc_core {
|
36
41
|
|
@@ -19,8 +19,15 @@
|
|
19
19
|
|
20
20
|
#include <grpc/support/port_platform.h>
|
21
21
|
|
22
|
+
#include <grpc/impl/codegen/grpc_types.h>
|
23
|
+
|
24
|
+
#include "src/core/lib/channel/channel_fwd.h"
|
22
25
|
#include "src/core/lib/channel/channel_stack.h"
|
23
|
-
#include "src/core/lib/
|
26
|
+
#include "src/core/lib/gprpp/time.h"
|
27
|
+
#include "src/core/lib/iomgr/call_combiner.h"
|
28
|
+
#include "src/core/lib/iomgr/closure.h"
|
29
|
+
#include "src/core/lib/resource_quota/arena.h"
|
30
|
+
#include "src/core/lib/transport/transport.h"
|
24
31
|
|
25
32
|
namespace grpc_core {
|
26
33
|
class TimerState;
|
@@ -18,21 +18,40 @@
|
|
18
18
|
|
19
19
|
#include "src/core/ext/filters/fault_injection/fault_injection_filter.h"
|
20
20
|
|
21
|
+
#include <stdint.h>
|
22
|
+
#include <stdlib.h>
|
23
|
+
|
24
|
+
#include <algorithm>
|
21
25
|
#include <atomic>
|
26
|
+
#include <functional>
|
27
|
+
#include <string>
|
28
|
+
#include <type_traits>
|
29
|
+
#include <utility>
|
22
30
|
|
31
|
+
#include "absl/status/status.h"
|
23
32
|
#include "absl/strings/numbers.h"
|
33
|
+
#include "absl/strings/str_cat.h"
|
34
|
+
#include "absl/strings/string_view.h"
|
35
|
+
#include "absl/types/optional.h"
|
36
|
+
#include "absl/utility/utility.h"
|
24
37
|
|
25
38
|
#include <grpc/status.h>
|
26
|
-
#include <grpc/support/alloc.h>
|
27
39
|
#include <grpc/support/log.h>
|
28
40
|
|
29
41
|
#include "src/core/ext/filters/fault_injection/service_config_parser.h"
|
30
42
|
#include "src/core/lib/channel/channel_stack.h"
|
43
|
+
#include "src/core/lib/channel/context.h"
|
31
44
|
#include "src/core/lib/channel/status_util.h"
|
45
|
+
#include "src/core/lib/config/core_configuration.h"
|
46
|
+
#include "src/core/lib/debug/trace.h"
|
47
|
+
#include "src/core/lib/gprpp/time.h"
|
48
|
+
#include "src/core/lib/iomgr/exec_ctx.h"
|
49
|
+
#include "src/core/lib/promise/context.h"
|
50
|
+
#include "src/core/lib/promise/poll.h"
|
32
51
|
#include "src/core/lib/promise/sleep.h"
|
33
52
|
#include "src/core/lib/promise/try_seq.h"
|
34
53
|
#include "src/core/lib/service_config/service_config_call_data.h"
|
35
|
-
#include "src/core/lib/transport/
|
54
|
+
#include "src/core/lib/transport/metadata_batch.h"
|
36
55
|
#include "src/core/lib/transport/transport.h"
|
37
56
|
|
38
57
|
namespace grpc_core {
|
@@ -19,9 +19,14 @@
|
|
19
19
|
|
20
20
|
#include <grpc/support/port_platform.h>
|
21
21
|
|
22
|
-
#include
|
23
|
-
|
22
|
+
#include <stddef.h>
|
23
|
+
|
24
|
+
#include "absl/status/statusor.h"
|
25
|
+
|
26
|
+
#include "src/core/lib/channel/channel_args.h"
|
27
|
+
#include "src/core/lib/channel/channel_fwd.h"
|
24
28
|
#include "src/core/lib/channel/promise_based_filter.h"
|
29
|
+
#include "src/core/lib/promise/arena_promise.h"
|
25
30
|
#include "src/core/lib/transport/transport.h"
|
26
31
|
|
27
32
|
// Channel arg key for enabling parsing fault injection via method config.
|
@@ -53,7 +58,7 @@ class FaultInjectionFilter : public ChannelFilter {
|
|
53
58
|
const ClientMetadataHandle& initial_metadata);
|
54
59
|
|
55
60
|
// The relative index of instances of the same filter.
|
56
|
-
|
61
|
+
size_t index_;
|
57
62
|
const size_t service_config_parser_index_;
|
58
63
|
};
|
59
64
|
|
@@ -18,15 +18,18 @@
|
|
18
18
|
|
19
19
|
#include "src/core/ext/filters/fault_injection/service_config_parser.h"
|
20
20
|
|
21
|
+
#include <algorithm>
|
22
|
+
#include <type_traits>
|
21
23
|
#include <vector>
|
22
24
|
|
25
|
+
#include "absl/memory/memory.h"
|
23
26
|
#include "absl/strings/str_cat.h"
|
24
|
-
|
27
|
+
|
28
|
+
#include <grpc/support/log.h>
|
25
29
|
|
26
30
|
#include "src/core/ext/filters/fault_injection/fault_injection_filter.h"
|
27
31
|
#include "src/core/lib/channel/channel_args.h"
|
28
32
|
#include "src/core/lib/channel/status_util.h"
|
29
|
-
#include "src/core/lib/gpr/string.h"
|
30
33
|
#include "src/core/lib/json/json_util.h"
|
31
34
|
|
32
35
|
namespace grpc_core {
|
@@ -141,7 +144,7 @@ ParseFaultInjectionPolicy(const Json::Array& policies_json_array,
|
|
141
144
|
std::unique_ptr<ServiceConfigParser::ParsedConfig>
|
142
145
|
FaultInjectionServiceConfigParser::ParsePerMethodParams(
|
143
146
|
const grpc_channel_args* args, const Json& json, grpc_error_handle* error) {
|
144
|
-
GPR_DEBUG_ASSERT(error != nullptr && *error
|
147
|
+
GPR_DEBUG_ASSERT(error != nullptr && GRPC_ERROR_IS_NONE(*error));
|
145
148
|
// Only parse fault injection policy if the following channel arg is present.
|
146
149
|
if (!grpc_channel_args_find_bool(
|
147
150
|
args, GRPC_ARG_PARSE_FAULT_INJECTION_METHOD_CONFIG, false)) {
|
@@ -158,7 +161,7 @@ FaultInjectionServiceConfigParser::ParsePerMethodParams(
|
|
158
161
|
ParseFaultInjectionPolicy(*policies_json_array, &error_list);
|
159
162
|
}
|
160
163
|
*error = GRPC_ERROR_CREATE_FROM_VECTOR("Fault injection parser", &error_list);
|
161
|
-
if (*error
|
164
|
+
if (!GRPC_ERROR_IS_NONE(*error) || fault_injection_policies.empty()) {
|
162
165
|
return nullptr;
|
163
166
|
}
|
164
167
|
return absl::make_unique<FaultInjectionMethodParsedConfig>(
|
@@ -19,10 +19,24 @@
|
|
19
19
|
|
20
20
|
#include <grpc/support/port_platform.h>
|
21
21
|
|
22
|
+
#include <stddef.h>
|
23
|
+
#include <stdint.h>
|
24
|
+
|
25
|
+
#include <limits>
|
26
|
+
#include <memory>
|
27
|
+
#include <string>
|
28
|
+
#include <utility>
|
22
29
|
#include <vector>
|
23
30
|
|
31
|
+
#include "absl/strings/string_view.h"
|
32
|
+
|
33
|
+
#include <grpc/impl/codegen/grpc_types.h>
|
34
|
+
#include <grpc/status.h>
|
35
|
+
|
24
36
|
#include "src/core/lib/config/core_configuration.h"
|
25
|
-
#include "src/core/lib/
|
37
|
+
#include "src/core/lib/gprpp/time.h"
|
38
|
+
#include "src/core/lib/iomgr/error.h"
|
39
|
+
#include "src/core/lib/json/json.h"
|
26
40
|
#include "src/core/lib/service_config/service_config_parser.h"
|
27
41
|
|
28
42
|
namespace grpc_core {
|
@@ -58,8 +72,8 @@ class FaultInjectionMethodParsedConfig
|
|
58
72
|
// keep track of their relative positions. The FaultInjectionFilter uses this
|
59
73
|
// method to access the parsed fault injection policy in service config,
|
60
74
|
// whether it came from xDS resolver or directly from service config
|
61
|
-
const FaultInjectionPolicy* fault_injection_policy(
|
62
|
-
if (
|
75
|
+
const FaultInjectionPolicy* fault_injection_policy(size_t index) const {
|
76
|
+
if (index >= fault_injection_policies_.size()) {
|
63
77
|
return nullptr;
|
64
78
|
}
|
65
79
|
return &fault_injection_policies_[index];
|
@@ -19,25 +19,36 @@
|
|
19
19
|
|
20
20
|
#include "src/core/ext/filters/http/client/http_client_filter.h"
|
21
21
|
|
22
|
-
#include <
|
23
|
-
#include <
|
24
|
-
|
22
|
+
#include <algorithm>
|
23
|
+
#include <functional>
|
25
24
|
#include <string>
|
25
|
+
#include <utility>
|
26
26
|
#include <vector>
|
27
27
|
|
28
|
+
#include "absl/status/status.h"
|
28
29
|
#include "absl/strings/str_cat.h"
|
29
30
|
#include "absl/strings/str_format.h"
|
30
31
|
#include "absl/strings/str_join.h"
|
32
|
+
#include "absl/strings/string_view.h"
|
33
|
+
#include "absl/types/optional.h"
|
34
|
+
#include "absl/utility/utility.h"
|
31
35
|
|
32
36
|
#include <grpc/grpc.h>
|
33
|
-
#include <grpc/
|
34
|
-
#include <grpc/
|
37
|
+
#include <grpc/impl/codegen/grpc_types.h>
|
38
|
+
#include <grpc/status.h>
|
35
39
|
|
36
40
|
#include "src/core/lib/channel/channel_args.h"
|
41
|
+
#include "src/core/lib/channel/channel_stack.h"
|
37
42
|
#include "src/core/lib/promise/call_push_pull.h"
|
43
|
+
#include "src/core/lib/promise/context.h"
|
44
|
+
#include "src/core/lib/promise/detail/basic_seq.h"
|
45
|
+
#include "src/core/lib/promise/latch.h"
|
46
|
+
#include "src/core/lib/promise/poll.h"
|
38
47
|
#include "src/core/lib/promise/seq.h"
|
48
|
+
#include "src/core/lib/resource_quota/arena.h"
|
39
49
|
#include "src/core/lib/slice/percent_encoding.h"
|
40
50
|
#include "src/core/lib/transport/status_conversion.h"
|
51
|
+
#include "src/core/lib/transport/transport_fwd.h"
|
41
52
|
#include "src/core/lib/transport/transport_impl.h"
|
42
53
|
|
43
54
|
namespace grpc_core {
|
@@ -20,8 +20,15 @@
|
|
20
20
|
|
21
21
|
#include <grpc/support/port_platform.h>
|
22
22
|
|
23
|
-
#include "
|
23
|
+
#include "absl/status/statusor.h"
|
24
|
+
|
25
|
+
#include "src/core/lib/channel/channel_args.h"
|
26
|
+
#include "src/core/lib/channel/channel_fwd.h"
|
24
27
|
#include "src/core/lib/channel/promise_based_filter.h"
|
28
|
+
#include "src/core/lib/promise/arena_promise.h"
|
29
|
+
#include "src/core/lib/slice/slice.h"
|
30
|
+
#include "src/core/lib/transport/metadata_batch.h"
|
31
|
+
#include "src/core/lib/transport/transport.h"
|
25
32
|
|
26
33
|
namespace grpc_core {
|
27
34
|
|