grpc 1.46.3-x86_64-linux → 1.47.0-x86_64-linux
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.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +49 -97
- data/include/grpc/event_engine/event_engine.h +42 -7
- data/include/grpc/event_engine/memory_allocator.h +0 -15
- data/include/grpc/event_engine/port.h +1 -1
- data/include/grpc/event_engine/slice.h +286 -0
- data/include/grpc/event_engine/slice_buffer.h +112 -0
- data/include/grpc/grpc_security.h +11 -0
- data/include/grpc/impl/codegen/port_platform.h +100 -36
- data/include/grpc/impl/codegen/slice.h +1 -1
- data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +18 -30
- data/src/core/ext/filters/channel_idle/channel_idle_filter.h +4 -1
- data/src/core/ext/filters/client_channel/backend_metric.cc +17 -12
- data/src/core/ext/filters/client_channel/backend_metric.h +19 -9
- data/src/core/ext/filters/client_channel/backup_poller.cc +5 -5
- data/src/core/ext/filters/client_channel/backup_poller.h +2 -4
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +42 -20
- data/src/core/ext/filters/client_channel/client_channel.cc +60 -17
- data/src/core/ext/filters/client_channel/client_channel.h +26 -6
- data/src/core/ext/filters/client_channel/client_channel_channelz.cc +3 -5
- data/src/core/ext/filters/client_channel/client_channel_channelz.h +12 -2
- data/src/core/ext/filters/client_channel/client_channel_factory.cc +5 -0
- data/src/core/ext/filters/client_channel/client_channel_factory.h +8 -0
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +4 -13
- data/src/core/ext/filters/client_channel/config_selector.cc +1 -0
- data/src/core/ext/filters/client_channel/config_selector.h +7 -5
- data/src/core/ext/filters/client_channel/connector.h +8 -2
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +13 -2
- data/src/core/ext/filters/client_channel/dynamic_filters.h +11 -1
- data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +2 -0
- data/src/core/ext/filters/client_channel/global_subchannel_pool.h +3 -0
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +14 -1
- data/src/core/ext/filters/client_channel/health/health_check_client.h +2 -0
- data/src/core/ext/filters/client_channel/http_proxy.cc +10 -2
- data/src/core/ext/filters/client_channel/http_proxy.h +3 -0
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +6 -2
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +1 -0
- data/src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h +49 -0
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +12 -0
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +5 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +9 -3
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +59 -19
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +4 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +6 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +10 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +6 -3
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +408 -0
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.h +57 -0
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +1038 -0
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +54 -0
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +60 -52
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +102 -60
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +157 -96
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +2 -0
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +45 -10
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +182 -171
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +39 -36
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +30 -5
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +99 -23
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +6 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +30 -4
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +23 -3
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +75 -11
- data/src/core/ext/filters/client_channel/lb_policy.cc +4 -2
- data/src/core/ext/filters/client_channel/lb_policy.h +18 -24
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +2 -0
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +8 -1
- data/src/core/ext/filters/client_channel/lb_policy_registry.h +6 -1
- data/src/core/ext/filters/client_channel/local_subchannel_pool.cc +4 -0
- data/src/core/ext/filters/client_channel/local_subchannel_pool.h +1 -0
- data/src/core/ext/filters/client_channel/proxy_mapper.h +1 -1
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +2 -0
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.h +5 -0
- data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +23 -5
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +134 -43
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +8 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +10 -8
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +26 -9
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +13 -4
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +2 -1
- data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.cc +2 -0
- data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.h +2 -1
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +30 -7
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +13 -14
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +5 -2
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +59 -13
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +13 -1
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +8 -1
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +15 -11
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +89 -33
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +5 -11
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +11 -5
- data/src/core/ext/filters/client_channel/retry_filter.cc +42 -2
- data/src/core/ext/filters/client_channel/retry_service_config.cc +8 -9
- data/src/core/ext/filters/client_channel/retry_service_config.h +10 -1
- data/src/core/ext/filters/client_channel/retry_throttle.cc +1 -8
- data/src/core/ext/filters/client_channel/retry_throttle.h +7 -1
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +22 -5
- data/src/core/ext/filters/client_channel/subchannel.cc +156 -160
- data/src/core/ext/filters/client_channel/subchannel.h +80 -20
- data/src/core/ext/filters/client_channel/subchannel_interface.h +41 -23
- data/src/core/ext/filters/client_channel/subchannel_interface_internal.h +38 -0
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +12 -2
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +6 -3
- data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +16 -2
- data/src/core/ext/filters/client_channel/subchannel_stream_client.h +12 -0
- data/src/core/ext/filters/deadline/deadline_filter.cc +6 -2
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +1 -4
- data/src/core/ext/filters/http/client/http_client_filter.cc +14 -5
- data/src/core/ext/filters/http/client/http_client_filter.h +7 -1
- data/src/core/ext/filters/http/client_authority_filter.cc +5 -10
- data/src/core/ext/filters/http/http_filters_plugin.cc +7 -8
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +1 -0
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +3 -1
- data/src/core/ext/filters/http/server/http_server_filter.cc +80 -247
- data/src/core/ext/filters/http/server/http_server_filter.h +31 -2
- data/src/core/ext/filters/message_size/message_size_filter.cc +20 -26
- data/src/core/ext/filters/message_size/message_size_filter.h +2 -2
- data/src/core/ext/filters/rbac/rbac_filter.cc +1 -0
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +101 -135
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +9 -7
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +44 -15
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +2 -0
- data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +3 -3
- data/src/core/ext/transport/chttp2/transport/bin_decoder.h +2 -1
- data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +1 -0
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +69 -20
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +5 -0
- data/src/core/ext/transport/chttp2/transport/context_list.cc +4 -0
- data/src/core/ext/transport/chttp2/transport/context_list.h +4 -1
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +6 -2
- data/src/core/ext/transport/chttp2/transport/flow_control.h +6 -2
- data/src/core/ext/transport/chttp2/transport/frame.h +0 -4
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +7 -1
- data/src/core/ext/transport/chttp2/transport/frame_data.h +4 -1
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +3 -0
- data/src/core/ext/transport/chttp2/transport/frame_goaway.h +3 -1
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +5 -0
- data/src/core/ext/transport/chttp2/transport/frame_ping.h +3 -0
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +6 -2
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +3 -0
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +12 -3
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +4 -0
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +4 -1
- data/src/core/ext/transport/chttp2/transport/frame_window_update.h +3 -0
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +14 -12
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +15 -2
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +3 -0
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +3 -0
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +25 -7
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +8 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +55 -37
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +38 -21
- data/src/core/ext/transport/chttp2/transport/http2_settings.h +0 -1
- data/src/core/ext/transport/chttp2/transport/internal.h +24 -3
- data/src/core/ext/transport/chttp2/transport/parsing.cc +27 -6
- data/src/core/ext/transport/chttp2/transport/stream_lists.cc +13 -9
- data/src/core/ext/transport/chttp2/transport/stream_map.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/stream_map.h +1 -0
- data/src/core/ext/transport/chttp2/transport/varint.h +2 -0
- data/src/core/ext/transport/chttp2/transport/writing.cc +38 -2
- data/src/core/ext/transport/inproc/inproc_transport.cc +8 -5
- data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.c +47 -0
- data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.h +109 -0
- data/src/core/ext/xds/certificate_provider_store.cc +4 -2
- data/src/core/ext/xds/certificate_provider_store.h +1 -1
- data/src/core/ext/xds/xds_certificate_provider.cc +4 -1
- data/src/core/ext/xds/xds_certificate_provider.h +1 -1
- data/src/core/ext/xds/xds_channel_stack_modifier.cc +5 -5
- data/src/core/ext/xds/xds_client.cc +46 -22
- data/src/core/ext/xds/xds_cluster.cc +106 -16
- data/src/core/ext/xds/xds_cluster.h +3 -0
- data/src/core/ext/xds/xds_http_fault_filter.cc +3 -3
- data/src/core/ext/xds/xds_listener.cc +19 -9
- data/src/core/ext/xds/xds_server_config_fetcher.cc +2 -1
- data/src/core/lib/address_utils/sockaddr_utils.cc +56 -23
- data/src/core/lib/address_utils/sockaddr_utils.h +7 -4
- data/src/core/lib/avl/avl.h +3 -1
- data/src/core/lib/channel/call_finalization.h +4 -0
- data/src/core/lib/channel/call_tracer.h +8 -2
- data/src/core/lib/channel/channel_args.cc +41 -22
- data/src/core/lib/channel/channel_args.h +33 -3
- data/src/core/lib/channel/channel_args_preconditioning.cc +3 -3
- data/src/core/lib/channel/channel_args_preconditioning.h +3 -2
- data/src/core/lib/channel/channel_stack.cc +41 -3
- data/src/core/lib/channel/channel_stack.h +49 -3
- data/src/core/lib/channel/channel_stack_builder.cc +9 -19
- data/src/core/lib/channel/channel_stack_builder.h +15 -27
- data/src/core/lib/channel/channel_stack_builder_impl.cc +36 -41
- data/src/core/lib/channel/channel_stack_builder_impl.h +3 -6
- data/src/core/lib/channel/channel_trace.cc +8 -13
- data/src/core/lib/channel/channel_trace.h +6 -3
- data/src/core/lib/channel/channelz.cc +8 -13
- data/src/core/lib/channel/channelz.h +13 -4
- data/src/core/lib/channel/channelz_registry.cc +7 -14
- data/src/core/lib/channel/channelz_registry.h +10 -9
- data/src/core/lib/channel/connected_channel.cc +21 -31
- data/src/core/lib/channel/connected_channel.h +1 -0
- data/src/core/lib/channel/promise_based_filter.cc +444 -189
- data/src/core/lib/channel/promise_based_filter.h +160 -27
- data/src/core/lib/channel/status_util.cc +2 -0
- data/src/core/lib/channel/status_util.h +0 -3
- data/src/core/lib/compression/compression_internal.cc +45 -10
- data/src/core/lib/compression/compression_internal.h +1 -1
- data/src/core/lib/config/core_configuration.cc +3 -0
- data/src/core/lib/config/core_configuration.h +2 -1
- data/src/core/lib/event_engine/channel_args_endpoint_config.cc +4 -2
- data/src/core/lib/event_engine/channel_args_endpoint_config.h +3 -2
- data/src/core/lib/event_engine/default_event_engine_factory.cc +8 -2
- data/src/core/lib/event_engine/event_engine.cc +12 -2
- data/src/core/lib/event_engine/event_engine_factory.h +5 -0
- data/src/core/lib/event_engine/handle_containers.h +67 -0
- data/src/core/lib/event_engine/iomgr_engine.cc +206 -0
- data/src/core/lib/event_engine/iomgr_engine.h +118 -0
- data/src/core/lib/event_engine/memory_allocator.cc +12 -4
- data/src/core/lib/event_engine/resolved_address.cc +4 -2
- data/src/core/lib/event_engine/slice.cc +102 -0
- data/src/core/lib/event_engine/slice_buffer.cc +50 -0
- data/src/core/lib/{iomgr/event_engine/pollset.h → event_engine/trace.cc} +3 -10
- data/src/core/lib/{iomgr/endpoint_pair_event_engine.cc → event_engine/trace.h} +12 -14
- data/src/core/lib/gpr/log.cc +5 -0
- data/src/core/lib/gpr/tls.h +3 -5
- data/src/core/lib/gprpp/bitset.h +5 -1
- data/src/core/lib/gprpp/chunked_vector.h +4 -0
- data/src/core/lib/gprpp/construct_destruct.h +1 -0
- data/src/core/lib/gprpp/dual_ref_counted.h +1 -4
- data/src/core/lib/gprpp/examine_stack.h +0 -1
- data/src/core/lib/gprpp/fork.cc +3 -6
- data/src/core/lib/gprpp/global_config.h +2 -4
- data/src/core/lib/gprpp/global_config_env.cc +3 -2
- data/src/core/lib/gprpp/global_config_env.h +3 -1
- data/src/core/lib/gprpp/global_config_generic.h +0 -4
- data/src/core/lib/gprpp/host_port.cc +2 -0
- data/src/core/lib/gprpp/manual_constructor.h +0 -1
- data/src/core/lib/gprpp/match.h +2 -0
- data/src/core/lib/gprpp/memory.h +1 -5
- data/src/core/lib/gprpp/orphanable.h +1 -4
- data/src/core/lib/gprpp/ref_counted.h +1 -3
- data/src/core/lib/gprpp/ref_counted_ptr.h +1 -1
- data/src/core/lib/gprpp/stat.h +0 -2
- data/src/core/lib/gprpp/stat_posix.cc +7 -2
- data/src/core/lib/gprpp/status_helper.cc +8 -4
- data/src/core/lib/gprpp/status_helper.h +4 -0
- data/src/core/lib/gprpp/sync.h +3 -1
- data/src/core/lib/gprpp/table.h +10 -0
- data/src/core/lib/gprpp/thd.h +2 -5
- data/src/core/lib/gprpp/thd_posix.cc +4 -2
- data/src/core/lib/gprpp/thd_windows.cc +2 -0
- data/src/core/lib/gprpp/time.cc +8 -0
- data/src/core/lib/gprpp/time.h +6 -1
- data/src/core/lib/gprpp/time_util.cc +4 -0
- data/src/core/lib/gprpp/time_util.h +1 -1
- data/src/core/lib/gprpp/unique_type_name.h +104 -0
- data/src/core/lib/http/format_request.cc +29 -0
- data/src/core/lib/http/format_request.h +2 -0
- data/src/core/lib/http/httpcli.cc +88 -81
- data/src/core/lib/http/httpcli.h +39 -7
- data/src/core/lib/http/httpcli_security_connector.cc +3 -4
- data/src/core/lib/iomgr/endpoint.cc +4 -4
- data/src/core/lib/iomgr/endpoint.h +6 -4
- data/src/core/lib/iomgr/endpoint_cfstream.cc +7 -4
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +2 -1
- data/src/core/lib/iomgr/ev_posix.cc +1 -4
- data/src/core/lib/iomgr/exec_ctx.h +1 -2
- data/src/core/lib/iomgr/internal_errqueue.cc +38 -47
- data/src/core/lib/iomgr/internal_errqueue.h +1 -6
- data/src/core/lib/iomgr/iomgr.cc +0 -1
- data/src/core/{ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_event_engine.cc → lib/iomgr/iomgr_fwd.h} +9 -12
- data/src/core/lib/iomgr/pollset_set.h +1 -2
- data/src/core/lib/iomgr/port.h +25 -6
- data/src/core/lib/iomgr/resolve_address.cc +8 -0
- data/src/core/lib/iomgr/resolve_address.h +21 -14
- data/src/core/lib/iomgr/resolve_address_impl.h +2 -3
- data/src/core/lib/iomgr/resolve_address_posix.cc +8 -14
- data/src/core/lib/iomgr/resolve_address_posix.h +5 -2
- data/src/core/lib/iomgr/resolve_address_windows.cc +7 -14
- data/src/core/lib/iomgr/resolve_address_windows.h +5 -2
- data/src/core/lib/iomgr/sockaddr.h +2 -3
- data/src/core/lib/iomgr/sockaddr_posix.h +2 -0
- data/src/core/lib/iomgr/sockaddr_windows.h +2 -0
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +3 -2
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +10 -2
- data/src/core/lib/iomgr/tcp_client_posix.cc +12 -5
- data/src/core/lib/iomgr/tcp_client_windows.cc +13 -6
- data/src/core/lib/iomgr/tcp_posix.cc +9 -27
- data/src/core/lib/iomgr/tcp_server_posix.cc +26 -12
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +30 -27
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +7 -4
- data/src/core/lib/iomgr/tcp_server_windows.cc +13 -5
- data/src/core/lib/iomgr/tcp_windows.cc +7 -4
- data/src/core/lib/json/json.h +1 -2
- data/src/core/lib/json/json_reader.cc +9 -1
- data/src/core/lib/json/json_util.cc +7 -0
- data/src/core/lib/json/json_util.h +10 -1
- data/src/core/lib/json/json_writer.cc +6 -1
- data/src/core/lib/promise/activity.cc +1 -1
- data/src/core/lib/promise/activity.h +6 -6
- data/src/core/lib/promise/arena_promise.h +11 -1
- data/src/core/lib/promise/call_push_pull.h +4 -0
- data/src/core/lib/promise/context.h +1 -1
- data/src/core/lib/promise/detail/basic_seq.h +2 -2
- data/src/core/lib/promise/detail/promise_factory.h +0 -1
- data/src/core/lib/promise/latch.h +0 -1
- data/src/core/lib/promise/loop.h +1 -0
- data/src/core/lib/promise/race.h +0 -1
- data/src/core/lib/promise/seq.h +0 -2
- data/src/core/lib/promise/sleep.cc +2 -0
- data/src/core/lib/promise/sleep.h +10 -0
- data/src/core/lib/promise/try_seq.h +2 -2
- data/src/core/lib/resolver/resolver_factory.h +1 -2
- data/src/core/lib/resolver/server_address.cc +9 -3
- data/src/core/lib/resolver/server_address.h +4 -4
- data/src/core/lib/resource_quota/api.cc +14 -1
- data/src/core/lib/resource_quota/api.h +4 -1
- data/src/core/lib/resource_quota/arena.cc +0 -6
- data/src/core/lib/resource_quota/arena.h +1 -2
- data/src/core/lib/resource_quota/memory_quota.cc +47 -5
- data/src/core/lib/resource_quota/memory_quota.h +24 -5
- data/src/core/lib/resource_quota/resource_quota.h +8 -0
- data/src/core/lib/resource_quota/thread_quota.cc +2 -0
- data/src/core/lib/resource_quota/thread_quota.h +4 -0
- data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +3 -0
- data/src/core/lib/security/credentials/alts/alts_credentials.cc +8 -2
- data/src/core/lib/security/credentials/alts/alts_credentials.h +2 -2
- data/src/core/lib/security/credentials/call_creds_util.cc +2 -0
- data/src/core/lib/security/credentials/channel_creds_registry.h +1 -0
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +7 -3
- data/src/core/lib/security/credentials/composite/composite_credentials.h +5 -4
- data/src/core/lib/security/credentials/credentials.h +17 -10
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +81 -0
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +8 -0
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +3 -0
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +2 -0
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +13 -3
- data/src/core/lib/security/credentials/fake/fake_credentials.h +2 -2
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +25 -15
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +2 -2
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +4 -1
- data/src/core/lib/security/credentials/iam/iam_credentials.h +2 -2
- data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +8 -2
- data/src/core/lib/security/credentials/insecure/insecure_credentials.h +4 -4
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +3 -2
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +2 -2
- data/src/core/lib/security/credentials/local/local_credentials.cc +8 -2
- data/src/core/lib/security/credentials/local/local_credentials.h +2 -2
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +10 -6
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +4 -4
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +4 -1
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +1 -1
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +8 -2
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +4 -4
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +10 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +5 -7
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +26 -1
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +28 -4
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +10 -0
- data/src/core/lib/security/credentials/tls/tls_credentials.h +2 -2
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +12 -3
- data/src/core/lib/security/credentials/xds/xds_credentials.h +5 -5
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +1 -1
- data/src/core/lib/security/security_connector/fake/fake_security_connector.h +1 -1
- data/src/core/lib/security/security_connector/security_connector.cc +1 -1
- data/src/core/lib/security/security_connector/security_connector.h +1 -1
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +1 -1
- data/src/core/lib/security/transport/client_auth_filter.cc +6 -8
- data/src/core/lib/security/transport/secure_endpoint.cc +23 -12
- data/src/core/lib/security/transport/security_handshaker.cc +5 -5
- data/src/core/lib/security/transport/security_handshaker.h +1 -1
- data/src/core/lib/security/transport/server_auth_filter.cc +3 -2
- data/src/core/lib/service_config/service_config.h +4 -8
- data/src/core/lib/service_config/service_config_call_data.h +4 -1
- data/src/core/lib/service_config/service_config_impl.cc +7 -0
- data/src/core/lib/service_config/service_config_impl.h +9 -2
- data/src/core/lib/service_config/service_config_parser.cc +8 -0
- data/src/core/lib/service_config/service_config_parser.h +7 -0
- data/src/core/lib/slice/b64.cc +1 -1
- data/src/core/lib/slice/b64.h +2 -0
- data/src/core/lib/slice/percent_encoding.cc +4 -1
- data/src/core/lib/slice/percent_encoding.h +0 -6
- data/src/core/lib/slice/slice.cc +2 -1
- data/src/core/lib/slice/slice.h +10 -5
- data/src/core/lib/slice/slice_api.cc +1 -1
- data/src/core/lib/slice/slice_buffer.cc +50 -23
- data/src/core/lib/slice/slice_buffer.h +106 -0
- data/src/core/lib/slice/slice_buffer_api.cc +35 -0
- data/src/core/lib/slice/slice_internal.h +4 -3
- data/src/core/lib/slice/slice_refcount.h +2 -3
- data/src/core/lib/slice/slice_refcount_base.h +2 -3
- data/src/core/lib/slice/slice_split.cc +3 -0
- data/src/core/lib/slice/slice_split.h +0 -4
- data/src/core/lib/slice/slice_string_helpers.cc +4 -0
- data/src/core/lib/slice/slice_string_helpers.h +1 -4
- data/src/core/lib/surface/builtins.cc +7 -2
- data/src/core/lib/surface/byte_buffer.cc +7 -1
- data/src/core/lib/surface/byte_buffer_reader.cc +4 -4
- data/src/core/lib/surface/call.cc +41 -26
- data/src/core/lib/surface/call.h +16 -2
- data/src/core/lib/surface/call_details.cc +4 -4
- data/src/core/lib/surface/call_log_batch.cc +7 -1
- data/src/core/lib/surface/call_test_only.h +4 -1
- data/src/core/lib/surface/channel.cc +179 -242
- data/src/core/lib/surface/channel.h +94 -57
- data/src/core/lib/surface/channel_init.h +2 -0
- data/src/core/lib/surface/channel_ping.cc +8 -2
- data/src/core/lib/surface/channel_stack_type.cc +0 -2
- data/src/core/lib/surface/channel_stack_type.h +0 -2
- data/src/core/lib/surface/completion_queue.cc +14 -6
- data/src/core/lib/surface/completion_queue.h +5 -1
- data/src/core/lib/surface/completion_queue_factory.cc +1 -0
- data/src/core/lib/surface/completion_queue_factory.h +1 -3
- data/src/core/lib/surface/event_string.cc +1 -7
- data/src/core/lib/surface/event_string.h +1 -1
- data/src/core/lib/surface/init.cc +17 -45
- data/src/core/lib/surface/init.h +0 -8
- data/src/core/lib/surface/lame_client.cc +64 -110
- data/src/core/lib/surface/lame_client.h +40 -2
- data/src/core/lib/surface/metadata_array.cc +2 -0
- data/src/core/lib/surface/server.cc +69 -56
- data/src/core/lib/surface/server.h +39 -9
- data/src/core/lib/surface/validate_metadata.cc +2 -5
- data/src/core/lib/surface/validate_metadata.h +3 -0
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/bdp_estimator.cc +3 -1
- data/src/core/lib/transport/bdp_estimator.h +2 -3
- data/src/core/lib/transport/byte_stream.cc +4 -3
- data/src/core/lib/transport/byte_stream.h +5 -1
- data/src/core/lib/transport/connectivity_state.cc +6 -4
- data/src/core/lib/transport/connectivity_state.h +2 -3
- data/src/core/lib/transport/error_utils.cc +4 -2
- data/src/core/lib/transport/error_utils.h +5 -1
- data/src/core/lib/{channel → transport}/handshaker.cc +9 -4
- data/src/core/lib/{channel → transport}/handshaker.h +13 -6
- data/src/core/lib/{channel → transport}/handshaker_factory.h +9 -10
- data/src/core/lib/{channel → transport}/handshaker_registry.cc +5 -1
- data/src/core/lib/{channel → transport}/handshaker_registry.h +5 -4
- data/src/core/{ext/filters/client_channel → lib/transport}/http_connect_handshaker.cc +24 -10
- data/src/core/{ext/filters/client_channel → lib/transport}/http_connect_handshaker.h +3 -3
- data/src/core/lib/transport/metadata_batch.cc +287 -0
- data/src/core/lib/transport/metadata_batch.h +133 -264
- data/src/core/lib/transport/parsed_metadata.cc +2 -0
- data/src/core/lib/transport/parsed_metadata.h +10 -3
- data/src/core/lib/transport/status_conversion.cc +2 -0
- data/src/core/lib/transport/status_conversion.h +2 -2
- data/src/core/lib/transport/tcp_connect_handshaker.cc +253 -0
- data/src/core/lib/transport/tcp_connect_handshaker.h +39 -0
- data/src/core/lib/transport/timeout_encoding.cc +2 -6
- data/src/core/lib/transport/timeout_encoding.h +5 -1
- data/src/core/lib/transport/transport.cc +18 -17
- data/src/core/lib/transport/transport.h +28 -2
- data/src/core/lib/transport/transport_impl.h +10 -0
- data/src/core/lib/transport/transport_op_string.cc +9 -10
- data/src/core/lib/uri/uri_parser.cc +11 -3
- data/src/core/lib/uri/uri_parser.h +0 -2
- data/src/core/plugin_registry/grpc_plugin_registry.cc +11 -0
- data/src/core/tsi/ssl/session_cache/ssl_session.h +2 -0
- data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +2 -0
- data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +2 -0
- data/src/ruby/ext/grpc/extconf.rb +2 -2
- data/src/ruby/lib/grpc/2.5/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/2.6/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/2.7/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/3.0/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/3.1/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/third_party/abseil-cpp/absl/cleanup/cleanup.h +140 -0
- data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +100 -0
- data/third_party/abseil-cpp/absl/container/flat_hash_set.h +504 -0
- metadata +36 -29
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_event_engine.cc +0 -31
- data/src/core/lib/event_engine/sockaddr.cc +0 -40
- data/src/core/lib/event_engine/sockaddr.h +0 -44
- data/src/core/lib/gprpp/capture.h +0 -76
- data/src/core/lib/iomgr/event_engine/closure.cc +0 -77
- data/src/core/lib/iomgr/event_engine/closure.h +0 -42
- data/src/core/lib/iomgr/event_engine/endpoint.cc +0 -172
- data/src/core/lib/iomgr/event_engine/endpoint.h +0 -52
- data/src/core/lib/iomgr/event_engine/iomgr.cc +0 -85
- data/src/core/lib/iomgr/event_engine/pollset.cc +0 -87
- data/src/core/lib/iomgr/event_engine/promise.h +0 -51
- data/src/core/lib/iomgr/event_engine/resolved_address_internal.cc +0 -47
- data/src/core/lib/iomgr/event_engine/resolved_address_internal.h +0 -37
- data/src/core/lib/iomgr/event_engine/resolver.cc +0 -133
- data/src/core/lib/iomgr/event_engine/resolver.h +0 -56
- data/src/core/lib/iomgr/event_engine/tcp.cc +0 -296
- data/src/core/lib/iomgr/event_engine/timer.cc +0 -62
@@ -1,31 +1,33 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
*
|
17
|
-
*/
|
1
|
+
//
|
2
|
+
// Copyright 2019 gRPC authors.
|
3
|
+
//
|
4
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
// you may not use this file except in compliance with the License.
|
6
|
+
// You may obtain a copy of the License at
|
7
|
+
//
|
8
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
//
|
10
|
+
// Unless required by applicable law or agreed to in writing, software
|
11
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
// See the License for the specific language governing permissions and
|
14
|
+
// limitations under the License.
|
15
|
+
//
|
18
16
|
|
19
17
|
#ifndef GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_SUBCHANNEL_INTERFACE_H
|
20
18
|
#define GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_SUBCHANNEL_INTERFACE_H
|
21
19
|
|
22
20
|
#include <grpc/support/port_platform.h>
|
23
21
|
|
22
|
+
#include <memory>
|
23
|
+
#include <utility>
|
24
|
+
|
24
25
|
#include <grpc/impl/codegen/connectivity_state.h>
|
25
26
|
#include <grpc/impl/codegen/grpc_types.h>
|
26
27
|
|
27
28
|
#include "src/core/lib/gprpp/ref_counted.h"
|
28
|
-
#include "src/core/lib/
|
29
|
+
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
30
|
+
#include "src/core/lib/iomgr/iomgr_fwd.h"
|
29
31
|
|
30
32
|
namespace grpc_core {
|
31
33
|
|
@@ -47,6 +49,13 @@ class SubchannelInterface : public RefCounted<SubchannelInterface> {
|
|
47
49
|
virtual grpc_pollset_set* interested_parties() = 0;
|
48
50
|
};
|
49
51
|
|
52
|
+
// Opaque interface for watching data of a particular type for this
|
53
|
+
// subchannel.
|
54
|
+
class DataWatcherInterface {
|
55
|
+
public:
|
56
|
+
virtual ~DataWatcherInterface() = default;
|
57
|
+
};
|
58
|
+
|
50
59
|
explicit SubchannelInterface(const char* trace = nullptr)
|
51
60
|
: RefCounted<SubchannelInterface>(trace) {}
|
52
61
|
|
@@ -79,14 +88,18 @@ class SubchannelInterface : public RefCounted<SubchannelInterface> {
|
|
79
88
|
// If the subchannel is currently in backoff delay due to a previously
|
80
89
|
// failed attempt, the new connection attempt will not start until the
|
81
90
|
// backoff delay has elapsed.
|
82
|
-
virtual void
|
91
|
+
virtual void RequestConnection() = 0;
|
83
92
|
|
84
|
-
// Resets the subchannel's connection backoff state. If
|
93
|
+
// Resets the subchannel's connection backoff state. If RequestConnection()
|
85
94
|
// has been called since the subchannel entered TRANSIENT_FAILURE state,
|
86
95
|
// starts a new connection attempt immediately; otherwise, a new connection
|
87
|
-
// attempt will be started as soon as
|
96
|
+
// attempt will be started as soon as RequestConnection() is called.
|
88
97
|
virtual void ResetBackoff() = 0;
|
89
98
|
|
99
|
+
// Registers a new data watcher.
|
100
|
+
virtual void AddDataWatcher(
|
101
|
+
std::unique_ptr<DataWatcherInterface> watcher) = 0;
|
102
|
+
|
90
103
|
// TODO(roth): Need a better non-grpc-specific abstraction here.
|
91
104
|
virtual const grpc_channel_args* channel_args() = 0;
|
92
105
|
};
|
@@ -115,11 +128,16 @@ class DelegatingSubchannel : public SubchannelInterface {
|
|
115
128
|
ConnectivityStateWatcherInterface* watcher) override {
|
116
129
|
return wrapped_subchannel_->CancelConnectivityStateWatch(watcher);
|
117
130
|
}
|
118
|
-
void
|
131
|
+
void RequestConnection() override {
|
132
|
+
wrapped_subchannel_->RequestConnection();
|
133
|
+
}
|
119
134
|
void ResetBackoff() override { wrapped_subchannel_->ResetBackoff(); }
|
120
135
|
const grpc_channel_args* channel_args() override {
|
121
136
|
return wrapped_subchannel_->channel_args();
|
122
137
|
}
|
138
|
+
void AddDataWatcher(std::unique_ptr<DataWatcherInterface> watcher) override {
|
139
|
+
wrapped_subchannel_->AddDataWatcher(std::move(watcher));
|
140
|
+
}
|
123
141
|
|
124
142
|
private:
|
125
143
|
RefCountedPtr<SubchannelInterface> wrapped_subchannel_;
|
@@ -127,4 +145,4 @@ class DelegatingSubchannel : public SubchannelInterface {
|
|
127
145
|
|
128
146
|
} // namespace grpc_core
|
129
147
|
|
130
|
-
#endif
|
148
|
+
#endif // GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_SUBCHANNEL_INTERFACE_H
|
@@ -0,0 +1,38 @@
|
|
1
|
+
//
|
2
|
+
// Copyright 2022 gRPC authors.
|
3
|
+
//
|
4
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
// you may not use this file except in compliance with the License.
|
6
|
+
// You may obtain a copy of the License at
|
7
|
+
//
|
8
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
//
|
10
|
+
// Unless required by applicable law or agreed to in writing, software
|
11
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
// See the License for the specific language governing permissions and
|
14
|
+
// limitations under the License.
|
15
|
+
//
|
16
|
+
|
17
|
+
#ifndef GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_SUBCHANNEL_INTERFACE_INTERNAL_H
|
18
|
+
#define GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_SUBCHANNEL_INTERFACE_INTERNAL_H
|
19
|
+
|
20
|
+
#include <grpc/support/port_platform.h>
|
21
|
+
|
22
|
+
#include "src/core/ext/filters/client_channel/subchannel.h"
|
23
|
+
#include "src/core/ext/filters/client_channel/subchannel_interface.h"
|
24
|
+
|
25
|
+
namespace grpc_core {
|
26
|
+
|
27
|
+
// Internal interface for watching data of a particular type for this
|
28
|
+
// subchannel.
|
29
|
+
class InternalSubchannelDataWatcherInterface
|
30
|
+
: public SubchannelInterface::DataWatcherInterface {
|
31
|
+
public:
|
32
|
+
// Tells the watcher which subchannel to register itself with.
|
33
|
+
virtual void SetSubchannel(Subchannel* subchannel) = 0;
|
34
|
+
};
|
35
|
+
|
36
|
+
} // namespace grpc_core
|
37
|
+
|
38
|
+
#endif // GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_SUBCHANNEL_INTERFACE_INTERNAL_H
|
@@ -20,7 +20,14 @@
|
|
20
20
|
|
21
21
|
#include "src/core/ext/filters/client_channel/subchannel_pool_interface.h"
|
22
22
|
|
23
|
+
#include <string.h>
|
24
|
+
|
25
|
+
#include "absl/status/status.h"
|
26
|
+
#include "absl/status/statusor.h"
|
27
|
+
#include "absl/strings/str_cat.h"
|
28
|
+
|
23
29
|
#include "src/core/lib/address_utils/sockaddr_utils.h"
|
30
|
+
#include "src/core/lib/channel/channel_args.h"
|
24
31
|
#include "src/core/lib/gpr/useful.h"
|
25
32
|
|
26
33
|
// The subchannel pool to reuse subchannels.
|
@@ -84,8 +91,11 @@ void SubchannelKey::Init(
|
|
84
91
|
}
|
85
92
|
|
86
93
|
std::string SubchannelKey::ToString() const {
|
87
|
-
|
88
|
-
|
94
|
+
auto addr_uri = grpc_sockaddr_to_uri(&address_);
|
95
|
+
return absl::StrCat(
|
96
|
+
"{address=",
|
97
|
+
addr_uri.ok() ? addr_uri.value() : addr_uri.status().ToString(),
|
98
|
+
", args=", grpc_channel_args_string(args_), "}");
|
89
99
|
}
|
90
100
|
|
91
101
|
namespace {
|
@@ -21,11 +21,14 @@
|
|
21
21
|
|
22
22
|
#include <grpc/support/port_platform.h>
|
23
23
|
|
24
|
-
#include
|
25
|
-
|
24
|
+
#include <string>
|
25
|
+
|
26
|
+
#include <grpc/impl/codegen/grpc_types.h>
|
27
|
+
|
26
28
|
#include "src/core/lib/debug/trace.h"
|
27
29
|
#include "src/core/lib/gprpp/ref_counted.h"
|
28
|
-
#include "src/core/lib/
|
30
|
+
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
31
|
+
#include "src/core/lib/iomgr/resolved_address.h"
|
29
32
|
|
30
33
|
namespace grpc_core {
|
31
34
|
|
@@ -18,13 +18,26 @@
|
|
18
18
|
|
19
19
|
#include "src/core/ext/filters/client_channel/subchannel_stream_client.h"
|
20
20
|
|
21
|
-
#include <
|
21
|
+
#include <inttypes.h>
|
22
22
|
#include <stdio.h>
|
23
|
+
#include <string.h>
|
23
24
|
|
25
|
+
#include <cstdint>
|
26
|
+
#include <string>
|
27
|
+
#include <utility>
|
28
|
+
|
29
|
+
#include <grpc/slice_buffer.h>
|
24
30
|
#include <grpc/status.h>
|
31
|
+
#include <grpc/support/alloc.h>
|
32
|
+
#include <grpc/support/log.h>
|
25
33
|
|
34
|
+
#include "src/core/lib/gpr/time_precise.h"
|
35
|
+
#include "src/core/lib/gprpp/debug_location.h"
|
26
36
|
#include "src/core/lib/gprpp/sync.h"
|
37
|
+
#include "src/core/lib/gprpp/time.h"
|
38
|
+
#include "src/core/lib/iomgr/exec_ctx.h"
|
27
39
|
#include "src/core/lib/resource_quota/api.h"
|
40
|
+
#include "src/core/lib/resource_quota/resource_quota.h"
|
28
41
|
#include "src/core/lib/slice/slice_internal.h"
|
29
42
|
#include "src/core/lib/transport/error_utils.h"
|
30
43
|
|
@@ -50,7 +63,8 @@ SubchannelStreamClient::SubchannelStreamClient(
|
|
50
63
|
call_allocator_(
|
51
64
|
ResourceQuotaFromChannelArgs(connected_subchannel_->args())
|
52
65
|
->memory_quota()
|
53
|
-
->CreateMemoryAllocator(
|
66
|
+
->CreateMemoryAllocator(
|
67
|
+
(tracer != nullptr) ? tracer : "SubchannelStreamClient")),
|
54
68
|
event_handler_(std::move(event_handler)),
|
55
69
|
retry_backoff_(
|
56
70
|
BackOff::Options()
|
@@ -20,20 +20,32 @@
|
|
20
20
|
#include <grpc/support/port_platform.h>
|
21
21
|
|
22
22
|
#include <atomic>
|
23
|
+
#include <memory>
|
23
24
|
|
25
|
+
#include "absl/base/thread_annotations.h"
|
24
26
|
#include "absl/status/status.h"
|
25
27
|
#include "absl/strings/string_view.h"
|
28
|
+
#include "absl/types/optional.h"
|
29
|
+
|
30
|
+
#include <grpc/event_engine/memory_allocator.h>
|
31
|
+
#include <grpc/slice.h>
|
32
|
+
#include <grpc/status.h>
|
26
33
|
|
27
34
|
#include "src/core/ext/filters/client_channel/subchannel.h"
|
28
35
|
#include "src/core/lib/backoff/backoff.h"
|
36
|
+
#include "src/core/lib/channel/context.h"
|
29
37
|
#include "src/core/lib/gprpp/orphanable.h"
|
30
38
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
31
39
|
#include "src/core/lib/gprpp/sync.h"
|
32
40
|
#include "src/core/lib/iomgr/call_combiner.h"
|
33
41
|
#include "src/core/lib/iomgr/closure.h"
|
42
|
+
#include "src/core/lib/iomgr/error.h"
|
43
|
+
#include "src/core/lib/iomgr/iomgr_fwd.h"
|
34
44
|
#include "src/core/lib/iomgr/polling_entity.h"
|
35
45
|
#include "src/core/lib/iomgr/timer.h"
|
36
46
|
#include "src/core/lib/resource_quota/arena.h"
|
47
|
+
#include "src/core/lib/resource_quota/memory_quota.h"
|
48
|
+
#include "src/core/lib/slice/slice.h"
|
37
49
|
#include "src/core/lib/transport/byte_stream.h"
|
38
50
|
#include "src/core/lib/transport/metadata_batch.h"
|
39
51
|
#include "src/core/lib/transport/transport.h"
|
@@ -347,6 +347,7 @@ const grpc_channel_filter grpc_client_deadline_filter = {
|
|
347
347
|
deadline_destroy_call_elem,
|
348
348
|
0, // sizeof(channel_data)
|
349
349
|
deadline_init_channel_elem,
|
350
|
+
grpc_channel_stack_no_post_init,
|
350
351
|
deadline_destroy_channel_elem,
|
351
352
|
grpc_channel_next_get_info,
|
352
353
|
"deadline",
|
@@ -362,6 +363,7 @@ const grpc_channel_filter grpc_server_deadline_filter = {
|
|
362
363
|
deadline_destroy_call_elem,
|
363
364
|
0, // sizeof(channel_data)
|
364
365
|
deadline_init_channel_elem,
|
366
|
+
grpc_channel_stack_no_post_init,
|
365
367
|
deadline_destroy_channel_elem,
|
366
368
|
grpc_channel_next_get_info,
|
367
369
|
"deadline",
|
@@ -380,8 +382,10 @@ void RegisterDeadlineFilter(CoreConfiguration::Builder* builder) {
|
|
380
382
|
builder->channel_init()->RegisterStage(
|
381
383
|
type, GRPC_CHANNEL_INIT_BUILTIN_PRIORITY,
|
382
384
|
[filter](ChannelStackBuilder* builder) {
|
383
|
-
|
384
|
-
|
385
|
+
auto args = builder->channel_args();
|
386
|
+
if (args.GetBool(GRPC_ARG_ENABLE_DEADLINE_CHECKS)
|
387
|
+
.value_or(!args.WantMinimalStack())) {
|
388
|
+
builder->PrependFilter(filter);
|
385
389
|
}
|
386
390
|
return true;
|
387
391
|
});
|
@@ -29,7 +29,6 @@
|
|
29
29
|
#include "src/core/ext/filters/fault_injection/service_config_parser.h"
|
30
30
|
#include "src/core/lib/channel/channel_stack.h"
|
31
31
|
#include "src/core/lib/channel/status_util.h"
|
32
|
-
#include "src/core/lib/gprpp/capture.h"
|
33
32
|
#include "src/core/lib/promise/sleep.h"
|
34
33
|
#include "src/core/lib/promise/try_seq.h"
|
35
34
|
#include "src/core/lib/service_config/service_config_call_data.h"
|
@@ -136,9 +135,7 @@ ArenaPromise<ServerMetadataHandle> FaultInjectionFilter::MakeCallPromise(
|
|
136
135
|
auto delay = decision.DelayUntil();
|
137
136
|
return TrySeq(
|
138
137
|
Sleep(delay),
|
139
|
-
|
140
|
-
[](InjectionDecision* decision) { return decision->MaybeAbort(); },
|
141
|
-
std::move(decision)),
|
138
|
+
[decision = std::move(decision)]() { return decision.MaybeAbort(); },
|
142
139
|
next_promise_factory(std::move(call_args)));
|
143
140
|
}
|
144
141
|
|
@@ -29,6 +29,7 @@
|
|
29
29
|
#include "absl/strings/str_format.h"
|
30
30
|
#include "absl/strings/str_join.h"
|
31
31
|
|
32
|
+
#include <grpc/grpc.h>
|
32
33
|
#include <grpc/support/alloc.h>
|
33
34
|
#include <grpc/support/log.h>
|
34
35
|
|
@@ -97,7 +98,11 @@ Slice UserAgentFromArgs(const ChannelArgs& args, const char* transport_name) {
|
|
97
98
|
ArenaPromise<ServerMetadataHandle> HttpClientFilter::MakeCallPromise(
|
98
99
|
CallArgs call_args, NextPromiseFactory next_promise_factory) {
|
99
100
|
auto& md = call_args.client_initial_metadata;
|
100
|
-
|
101
|
+
if (test_only_use_put_requests_) {
|
102
|
+
md->Set(HttpMethodMetadata(), HttpMethodMetadata::kPut);
|
103
|
+
} else {
|
104
|
+
md->Set(HttpMethodMetadata(), HttpMethodMetadata::kPost);
|
105
|
+
}
|
101
106
|
md->Set(HttpSchemeMetadata(), scheme_);
|
102
107
|
md->Set(TeMetadata(), TeMetadata::kTrailers);
|
103
108
|
md->Set(ContentTypeMetadata(), ContentTypeMetadata::kApplicationGrpc);
|
@@ -125,8 +130,11 @@ ArenaPromise<ServerMetadataHandle> HttpClientFilter::MakeCallPromise(
|
|
125
130
|
}
|
126
131
|
|
127
132
|
HttpClientFilter::HttpClientFilter(HttpSchemeMetadata::ValueType scheme,
|
128
|
-
Slice user_agent
|
129
|
-
|
133
|
+
Slice user_agent,
|
134
|
+
bool test_only_use_put_requests)
|
135
|
+
: scheme_(scheme),
|
136
|
+
user_agent_(std::move(user_agent)),
|
137
|
+
test_only_use_put_requests_(test_only_use_put_requests) {}
|
130
138
|
|
131
139
|
absl::StatusOr<HttpClientFilter> HttpClientFilter::Create(ChannelArgs args,
|
132
140
|
ChannelFilter::Args) {
|
@@ -134,8 +142,9 @@ absl::StatusOr<HttpClientFilter> HttpClientFilter::Create(ChannelArgs args,
|
|
134
142
|
if (transport == nullptr) {
|
135
143
|
return absl::InvalidArgumentError("HttpClientFilter needs a transport");
|
136
144
|
}
|
137
|
-
return HttpClientFilter(
|
138
|
-
|
145
|
+
return HttpClientFilter(
|
146
|
+
SchemeFromArgs(args), UserAgentFromArgs(args, transport->vtable->name),
|
147
|
+
args.GetInt(GRPC_ARG_TEST_ONLY_USE_PUT_REQUESTS).value_or(false));
|
139
148
|
}
|
140
149
|
|
141
150
|
} // namespace grpc_core
|
@@ -37,12 +37,18 @@ class HttpClientFilter : public ChannelFilter {
|
|
37
37
|
CallArgs call_args, NextPromiseFactory next_promise_factory) override;
|
38
38
|
|
39
39
|
private:
|
40
|
-
HttpClientFilter(HttpSchemeMetadata::ValueType scheme, Slice user_agent
|
40
|
+
HttpClientFilter(HttpSchemeMetadata::ValueType scheme, Slice user_agent,
|
41
|
+
bool test_only_use_put_requests);
|
41
42
|
|
42
43
|
HttpSchemeMetadata::ValueType scheme_;
|
43
44
|
Slice user_agent_;
|
45
|
+
bool test_only_use_put_requests_;
|
44
46
|
};
|
45
47
|
|
48
|
+
// A test-only channel arg to allow testing gRPC Core server behavior on PUT
|
49
|
+
// requests.
|
50
|
+
#define GRPC_ARG_TEST_ONLY_USE_PUT_REQUESTS "grpc.testing.use_put_requests"
|
51
|
+
|
46
52
|
} // namespace grpc_core
|
47
53
|
|
48
54
|
#endif /* GRPC_CORE_EXT_FILTERS_HTTP_CLIENT_HTTP_CLIENT_FILTER_H */
|
@@ -70,17 +70,12 @@ const grpc_channel_filter ClientAuthorityFilter::kFilter =
|
|
70
70
|
|
71
71
|
namespace {
|
72
72
|
bool add_client_authority_filter(ChannelStackBuilder* builder) {
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
const bool is_client_authority_filter_disabled =
|
78
|
-
grpc_channel_arg_get_bool(disable_client_authority_filter_arg, false);
|
79
|
-
if (is_client_authority_filter_disabled) {
|
80
|
-
return true;
|
81
|
-
}
|
73
|
+
if (builder->channel_args()
|
74
|
+
.GetBool(GRPC_ARG_DISABLE_CLIENT_AUTHORITY_FILTER)
|
75
|
+
.value_or(false)) {
|
76
|
+
return true;
|
82
77
|
}
|
83
|
-
builder->PrependFilter(&ClientAuthorityFilter::kFilter
|
78
|
+
builder->PrependFilter(&ClientAuthorityFilter::kFilter);
|
84
79
|
return true;
|
85
80
|
}
|
86
81
|
} // namespace
|
@@ -46,12 +46,11 @@ void RegisterHttpFilters(CoreConfiguration::Builder* builder) {
|
|
46
46
|
[enable_in_minimal_stack, control_channel_arg,
|
47
47
|
filter](ChannelStackBuilder* builder) {
|
48
48
|
if (!is_building_http_like_transport(builder)) return true;
|
49
|
-
|
50
|
-
bool enable =
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
if (enable) builder->PrependFilter(filter, nullptr);
|
49
|
+
auto args = builder->channel_args();
|
50
|
+
const bool enable = args.GetBool(control_channel_arg)
|
51
|
+
.value_or(enable_in_minimal_stack ||
|
52
|
+
!args.WantMinimalStack());
|
53
|
+
if (enable) builder->PrependFilter(filter);
|
55
54
|
return true;
|
56
55
|
});
|
57
56
|
};
|
@@ -61,7 +60,7 @@ void RegisterHttpFilters(CoreConfiguration::Builder* builder) {
|
|
61
60
|
channel_type, GRPC_CHANNEL_INIT_BUILTIN_PRIORITY,
|
62
61
|
[filter](ChannelStackBuilder* builder) {
|
63
62
|
if (is_building_http_like_transport(builder)) {
|
64
|
-
builder->PrependFilter(filter
|
63
|
+
builder->PrependFilter(filter);
|
65
64
|
}
|
66
65
|
return true;
|
67
66
|
});
|
@@ -85,6 +84,6 @@ void RegisterHttpFilters(CoreConfiguration::Builder* builder) {
|
|
85
84
|
GRPC_ARG_ENABLE_PER_MESSAGE_DECOMPRESSION, &MessageDecompressFilter);
|
86
85
|
required(GRPC_CLIENT_SUBCHANNEL, &HttpClientFilter::kFilter);
|
87
86
|
required(GRPC_CLIENT_DIRECT_CHANNEL, &HttpClientFilter::kFilter);
|
88
|
-
required(GRPC_SERVER_CHANNEL, &
|
87
|
+
required(GRPC_SERVER_CHANNEL, &HttpServerFilter::kFilter);
|
89
88
|
}
|
90
89
|
} // namespace grpc_core
|
@@ -451,6 +451,7 @@ const grpc_channel_filter grpc_message_compress_filter = {
|
|
451
451
|
CompressDestroyCallElem,
|
452
452
|
sizeof(ChannelData),
|
453
453
|
CompressInitChannelElem,
|
454
|
+
grpc_channel_stack_no_post_init,
|
454
455
|
CompressDestroyChannelElem,
|
455
456
|
grpc_channel_next_get_info,
|
456
457
|
"message_compress"};
|
@@ -45,7 +45,8 @@ namespace {
|
|
45
45
|
class ChannelData {
|
46
46
|
public:
|
47
47
|
explicit ChannelData(const grpc_channel_element_args* args)
|
48
|
-
: max_recv_size_(GetMaxRecvSizeFromChannelArgs(
|
48
|
+
: max_recv_size_(GetMaxRecvSizeFromChannelArgs(
|
49
|
+
ChannelArgs::FromC(args->channel_args))),
|
49
50
|
message_size_service_config_parser_index_(
|
50
51
|
MessageSizeParser::ParserIndex()) {}
|
51
52
|
|
@@ -380,6 +381,7 @@ const grpc_channel_filter MessageDecompressFilter = {
|
|
380
381
|
DecompressDestroyCallElem,
|
381
382
|
sizeof(ChannelData),
|
382
383
|
DecompressInitChannelElem,
|
384
|
+
grpc_channel_stack_no_post_init,
|
383
385
|
DecompressDestroyChannelElem,
|
384
386
|
grpc_channel_next_get_info,
|
385
387
|
"message_decompress"};
|