grpc 1.50.0-x86_64-linux → 1.51.0-x86_64-linux
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 +131 -42
- data/include/grpc/event_engine/event_engine.h +10 -3
- data/include/grpc/event_engine/slice_buffer.h +17 -0
- data/include/grpc/grpc.h +0 -10
- data/include/grpc/impl/codegen/grpc_types.h +1 -5
- data/include/grpc/impl/codegen/port_platform.h +0 -3
- data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +19 -13
- data/src/core/ext/filters/channel_idle/channel_idle_filter.h +1 -0
- data/src/core/ext/filters/client_channel/backup_poller.cc +3 -3
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +7 -5
- data/src/core/ext/filters/client_channel/client_channel.cc +120 -140
- data/src/core/ext/filters/client_channel/client_channel.h +3 -4
- data/src/core/ext/filters/client_channel/client_channel_channelz.cc +0 -2
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +1 -1
- data/src/core/ext/filters/client_channel/client_channel_service_config.cc +153 -0
- data/src/core/ext/filters/client_channel/{resolver_result_parsing.h → client_channel_service_config.h} +26 -23
- data/src/core/ext/filters/client_channel/connector.h +1 -1
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +20 -47
- data/src/core/ext/filters/client_channel/dynamic_filters.h +7 -8
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +3 -4
- data/src/core/ext/filters/client_channel/http_proxy.cc +0 -1
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +3 -4
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +5 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +8 -7
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +35 -44
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +0 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +1 -3
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +3 -4
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +41 -29
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +2 -2
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +9 -11
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +15 -12
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +8 -10
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +26 -27
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +7 -9
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +44 -26
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +17 -27
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_attributes.cc +42 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/{xds.h → xds_attributes.h} +15 -17
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +13 -7
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +48 -47
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +40 -126
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_wrr_locality.cc +364 -0
- data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +9 -9
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +23 -32
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +1 -2
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +22 -23
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +50 -52
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +2 -4
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +1 -3
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +34 -26
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +3 -4
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +4 -7
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +63 -46
- data/src/core/ext/filters/client_channel/retry_filter.cc +80 -102
- data/src/core/ext/filters/client_channel/retry_service_config.cc +192 -234
- data/src/core/ext/filters/client_channel/retry_service_config.h +20 -23
- data/src/core/ext/filters/client_channel/retry_throttle.cc +8 -8
- data/src/core/ext/filters/client_channel/retry_throttle.h +8 -7
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +2 -2
- data/src/core/ext/filters/client_channel/subchannel.cc +21 -25
- data/src/core/ext/filters/client_channel/subchannel.h +2 -2
- data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +11 -12
- data/src/core/ext/filters/deadline/deadline_filter.cc +13 -14
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +1 -1
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +0 -4
- data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.cc +118 -0
- data/src/core/ext/filters/fault_injection/{service_config_parser.h → fault_injection_service_config_parser.h} +20 -12
- data/src/core/ext/filters/http/client/http_client_filter.cc +16 -16
- data/src/core/ext/filters/http/client_authority_filter.cc +1 -1
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +13 -13
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +34 -34
- data/src/core/ext/filters/http/server/http_server_filter.cc +26 -25
- data/src/core/ext/filters/message_size/message_size_filter.cc +86 -117
- data/src/core/ext/filters/message_size/message_size_filter.h +22 -15
- data/src/core/ext/filters/rbac/rbac_filter.cc +12 -12
- data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +728 -530
- data/src/core/ext/filters/rbac/rbac_service_config_parser.h +4 -3
- data/src/core/ext/filters/server_config_selector/server_config_selector.h +1 -1
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +6 -7
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +17 -21
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +57 -72
- data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +5 -5
- data/src/core/ext/transport/chttp2/transport/bin_encoder.h +1 -1
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +212 -253
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +42 -11
- data/src/core/ext/transport/chttp2/transport/flow_control.h +4 -3
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +16 -15
- data/src/core/ext/transport/chttp2/transport/frame_data.h +1 -1
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +13 -13
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +4 -3
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +10 -7
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +15 -17
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +5 -4
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +5 -6
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +1 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +2 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +31 -39
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +7 -6
- data/src/core/ext/transport/chttp2/transport/internal.h +24 -8
- data/src/core/ext/transport/chttp2/transport/parsing.cc +51 -52
- data/src/core/ext/transport/chttp2/transport/varint.cc +2 -3
- data/src/core/ext/transport/chttp2/transport/varint.h +11 -8
- data/src/core/ext/transport/chttp2/transport/writing.cc +16 -16
- data/src/core/ext/transport/inproc/inproc_transport.cc +97 -115
- data/src/core/ext/xds/certificate_provider_store.cc +4 -4
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +4 -7
- data/src/core/ext/xds/xds_api.cc +15 -68
- data/src/core/ext/xds/xds_api.h +3 -7
- data/src/core/ext/xds/xds_bootstrap.h +0 -1
- data/src/core/ext/xds/xds_bootstrap_grpc.cc +3 -12
- data/src/core/ext/xds/xds_bootstrap_grpc.h +16 -1
- data/src/core/ext/xds/xds_certificate_provider.cc +22 -25
- data/src/core/ext/xds/xds_channel_stack_modifier.cc +0 -1
- data/src/core/ext/xds/xds_client.cc +122 -90
- data/src/core/ext/xds/xds_client.h +7 -2
- data/src/core/ext/xds/xds_client_grpc.cc +5 -24
- data/src/core/ext/xds/xds_cluster.cc +291 -183
- data/src/core/ext/xds/xds_cluster.h +11 -15
- data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +32 -29
- data/src/core/ext/xds/xds_cluster_specifier_plugin.h +35 -16
- data/src/core/ext/xds/xds_common_types.cc +208 -141
- data/src/core/ext/xds/xds_common_types.h +19 -13
- data/src/core/ext/xds/xds_endpoint.cc +214 -129
- data/src/core/ext/xds/xds_endpoint.h +4 -7
- data/src/core/ext/xds/xds_http_fault_filter.cc +56 -43
- data/src/core/ext/xds/xds_http_fault_filter.h +13 -21
- data/src/core/ext/xds/xds_http_filters.cc +60 -73
- data/src/core/ext/xds/xds_http_filters.h +67 -19
- data/src/core/ext/xds/xds_http_rbac_filter.cc +152 -207
- data/src/core/ext/xds/xds_http_rbac_filter.h +12 -15
- data/src/core/ext/xds/xds_lb_policy_registry.cc +122 -169
- data/src/core/ext/xds/xds_lb_policy_registry.h +10 -11
- data/src/core/ext/xds/xds_listener.cc +459 -417
- data/src/core/ext/xds/xds_listener.h +43 -47
- data/src/core/ext/xds/xds_resource_type.h +3 -11
- data/src/core/ext/xds/xds_resource_type_impl.h +8 -13
- data/src/core/ext/xds/xds_route_config.cc +94 -80
- data/src/core/ext/xds/xds_route_config.h +10 -10
- data/src/core/ext/xds/xds_routing.cc +2 -1
- data/src/core/ext/xds/xds_routing.h +2 -0
- data/src/core/ext/xds/xds_server_config_fetcher.cc +109 -94
- data/src/core/ext/xds/xds_transport_grpc.cc +4 -5
- data/src/core/lib/address_utils/parse_address.cc +11 -10
- data/src/core/lib/channel/channel_args.h +16 -1
- data/src/core/lib/channel/channel_stack.cc +23 -20
- data/src/core/lib/channel/channel_stack.h +17 -4
- data/src/core/lib/channel/channel_stack_builder.cc +4 -7
- data/src/core/lib/channel/channel_stack_builder.h +14 -6
- data/src/core/lib/channel/channel_stack_builder_impl.cc +25 -7
- data/src/core/lib/channel/channel_stack_builder_impl.h +2 -0
- data/src/core/lib/channel/channel_trace.cc +4 -5
- data/src/core/lib/channel/channelz.cc +1 -1
- data/src/core/lib/channel/connected_channel.cc +695 -35
- data/src/core/lib/channel/connected_channel.h +0 -4
- data/src/core/lib/channel/promise_based_filter.cc +1004 -140
- data/src/core/lib/channel/promise_based_filter.h +364 -87
- data/src/core/lib/compression/message_compress.cc +5 -5
- data/src/core/lib/debug/event_log.cc +88 -0
- data/src/core/lib/debug/event_log.h +81 -0
- data/src/core/lib/debug/histogram_view.cc +69 -0
- data/src/core/lib/{slice/slice_refcount.cc → debug/histogram_view.h} +15 -13
- data/src/core/lib/debug/stats.cc +22 -119
- data/src/core/lib/debug/stats.h +29 -35
- data/src/core/lib/debug/stats_data.cc +224 -73
- data/src/core/lib/debug/stats_data.h +263 -122
- data/src/core/lib/event_engine/common_closures.h +71 -0
- data/src/core/lib/event_engine/default_event_engine.cc +38 -15
- data/src/core/lib/event_engine/default_event_engine.h +15 -3
- data/src/core/lib/event_engine/default_event_engine_factory.cc +2 -4
- data/src/core/lib/event_engine/memory_allocator.cc +1 -1
- data/src/core/lib/event_engine/poller.h +10 -4
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +618 -0
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h +129 -0
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +901 -0
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.h +97 -0
- data/src/core/lib/event_engine/posix_engine/event_poller.h +111 -0
- data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +74 -0
- data/src/core/lib/event_engine/{executor/threaded_executor.cc → posix_engine/event_poller_posix_default.h} +13 -16
- data/src/core/lib/event_engine/posix_engine/internal_errqueue.cc +77 -0
- data/src/core/lib/event_engine/posix_engine/internal_errqueue.h +179 -0
- data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +267 -0
- data/src/core/lib/event_engine/posix_engine/lockfree_event.h +73 -0
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +1270 -0
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +682 -0
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +453 -18
- data/src/core/lib/event_engine/posix_engine/posix_engine.h +148 -24
- data/src/core/lib/event_engine/posix_engine/posix_engine_closure.h +80 -0
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +1081 -0
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +361 -0
- data/src/core/lib/event_engine/posix_engine/timer.h +9 -8
- data/src/core/lib/event_engine/posix_engine/timer_manager.cc +57 -194
- data/src/core/lib/event_engine/posix_engine/timer_manager.h +21 -49
- data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +301 -0
- data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +179 -0
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.cc +126 -0
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.h +45 -0
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.cc +151 -0
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.h +45 -0
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h +76 -0
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.cc +67 -0
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h +37 -0
- data/src/core/lib/event_engine/slice.cc +7 -6
- data/src/core/lib/event_engine/slice_buffer.cc +2 -2
- data/src/core/lib/event_engine/thread_pool.cc +106 -25
- data/src/core/lib/event_engine/thread_pool.h +32 -9
- data/src/core/lib/event_engine/windows/win_socket.cc +7 -7
- data/src/core/lib/event_engine/windows/windows_engine.cc +18 -12
- data/src/core/lib/event_engine/windows/windows_engine.h +8 -4
- data/src/core/lib/experiments/config.cc +1 -1
- data/src/core/lib/experiments/experiments.cc +13 -2
- data/src/core/lib/experiments/experiments.h +8 -1
- data/src/core/lib/gpr/cpu_linux.cc +6 -2
- data/src/core/lib/gpr/log_linux.cc +3 -4
- data/src/core/lib/gpr/string.h +1 -1
- data/src/core/lib/gpr/tmpfile_posix.cc +3 -2
- data/src/core/lib/gprpp/load_file.cc +75 -0
- data/src/core/lib/gprpp/load_file.h +33 -0
- data/src/core/lib/gprpp/per_cpu.h +46 -0
- data/src/core/lib/gprpp/stat_posix.cc +5 -4
- data/src/core/lib/gprpp/stat_windows.cc +3 -2
- data/src/core/lib/gprpp/status_helper.h +1 -3
- data/src/core/lib/gprpp/strerror.cc +41 -0
- data/src/core/{ext/xds/xds_resource_type.cc → lib/gprpp/strerror.h} +9 -13
- data/src/core/lib/gprpp/thd_windows.cc +1 -2
- data/src/core/lib/gprpp/time.cc +3 -4
- data/src/core/lib/gprpp/time.h +13 -2
- data/src/core/lib/gprpp/validation_errors.h +18 -1
- data/src/core/lib/http/httpcli.cc +40 -44
- data/src/core/lib/http/httpcli.h +6 -5
- data/src/core/lib/http/httpcli_security_connector.cc +4 -6
- data/src/core/lib/http/parser.cc +54 -65
- data/src/core/lib/iomgr/buffer_list.cc +105 -116
- data/src/core/lib/iomgr/buffer_list.h +60 -44
- data/src/core/lib/iomgr/call_combiner.cc +11 -10
- data/src/core/lib/iomgr/call_combiner.h +3 -4
- data/src/core/lib/iomgr/cfstream_handle.cc +13 -16
- data/src/core/lib/iomgr/closure.h +49 -5
- data/src/core/lib/iomgr/combiner.cc +2 -2
- data/src/core/lib/iomgr/endpoint.h +1 -1
- data/src/core/lib/iomgr/endpoint_cfstream.cc +26 -25
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +2 -2
- data/src/core/lib/iomgr/error.cc +27 -42
- data/src/core/lib/iomgr/error.h +22 -152
- data/src/core/lib/iomgr/ev_apple.cc +4 -4
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +26 -25
- data/src/core/lib/iomgr/ev_poll_posix.cc +27 -31
- data/src/core/lib/iomgr/exec_ctx.cc +3 -4
- data/src/core/lib/iomgr/exec_ctx.h +2 -3
- data/src/core/lib/iomgr/executor.cc +1 -2
- data/src/core/lib/iomgr/internal_errqueue.cc +3 -1
- data/src/core/lib/iomgr/iocp_windows.cc +1 -0
- data/src/core/lib/iomgr/iomgr_posix.cc +2 -2
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +2 -1
- data/src/core/lib/iomgr/iomgr_windows.cc +2 -1
- data/src/core/lib/iomgr/load_file.cc +5 -9
- data/src/core/lib/iomgr/lockfree_event.cc +10 -10
- data/src/core/lib/iomgr/pollset_windows.cc +4 -4
- data/src/core/lib/iomgr/python_util.h +2 -2
- data/src/core/lib/iomgr/resolve_address.cc +8 -3
- data/src/core/lib/iomgr/resolve_address.h +3 -4
- data/src/core/lib/iomgr/resolve_address_impl.h +1 -1
- data/src/core/lib/iomgr/resolve_address_posix.cc +14 -25
- data/src/core/lib/iomgr/resolve_address_posix.h +1 -2
- data/src/core/lib/iomgr/resolve_address_windows.cc +14 -17
- data/src/core/lib/iomgr/resolve_address_windows.h +1 -2
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +30 -29
- data/src/core/lib/iomgr/socket_utils_posix.cc +1 -0
- data/src/core/lib/iomgr/socket_utils_posix.h +2 -2
- data/src/core/lib/iomgr/socket_windows.cc +2 -2
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +6 -10
- data/src/core/lib/iomgr/tcp_client_posix.cc +31 -35
- data/src/core/lib/iomgr/tcp_client_windows.cc +8 -12
- data/src/core/lib/iomgr/tcp_posix.cc +92 -108
- data/src/core/lib/iomgr/tcp_server_posix.cc +34 -34
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +1 -1
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +18 -21
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +12 -13
- data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +1 -1
- data/src/core/lib/iomgr/tcp_server_windows.cc +26 -29
- data/src/core/lib/iomgr/tcp_windows.cc +27 -34
- data/src/core/lib/iomgr/timer.h +8 -8
- data/src/core/lib/iomgr/timer_generic.cc +9 -15
- data/src/core/lib/iomgr/unix_sockets_posix.cc +2 -4
- data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +4 -3
- data/src/core/lib/iomgr/wakeup_fd_pipe.cc +10 -8
- data/src/core/lib/json/json_channel_args.h +42 -0
- data/src/core/lib/json/json_object_loader.cc +7 -2
- data/src/core/lib/json/json_object_loader.h +22 -0
- data/src/core/lib/json/json_util.cc +5 -5
- data/src/core/lib/json/json_util.h +4 -4
- data/src/core/lib/load_balancing/lb_policy.cc +1 -1
- data/src/core/lib/load_balancing/lb_policy.h +4 -0
- data/src/core/lib/load_balancing/subchannel_interface.h +0 -7
- data/src/core/lib/matchers/matchers.cc +3 -4
- data/src/core/lib/promise/activity.cc +16 -2
- data/src/core/lib/promise/activity.h +38 -15
- data/src/core/lib/promise/arena_promise.h +80 -51
- data/src/core/lib/promise/context.h +13 -6
- data/src/core/lib/promise/detail/basic_seq.h +9 -28
- data/src/core/lib/promise/detail/promise_factory.h +58 -10
- data/src/core/lib/promise/detail/status.h +28 -0
- data/src/core/lib/promise/detail/switch.h +1455 -0
- data/src/core/lib/promise/exec_ctx_wakeup_scheduler.h +3 -1
- data/src/core/lib/promise/for_each.h +129 -0
- data/src/core/lib/promise/loop.h +7 -5
- data/src/core/lib/promise/map_pipe.h +87 -0
- data/src/core/lib/promise/pipe.cc +19 -0
- data/src/core/lib/promise/pipe.h +505 -0
- data/src/core/lib/promise/poll.h +13 -0
- data/src/core/lib/promise/seq.h +3 -5
- data/src/core/lib/promise/sleep.cc +5 -4
- data/src/core/lib/promise/sleep.h +1 -2
- data/src/core/lib/promise/try_concurrently.h +341 -0
- data/src/core/lib/promise/try_seq.h +10 -13
- data/src/core/lib/resolver/server_address.cc +1 -0
- data/src/core/lib/resolver/server_address.h +1 -3
- data/src/core/lib/resource_quota/api.cc +0 -1
- data/src/core/lib/resource_quota/arena.cc +19 -0
- data/src/core/lib/resource_quota/arena.h +89 -0
- data/src/core/lib/resource_quota/memory_quota.cc +1 -0
- data/src/core/lib/security/authorization/grpc_authorization_engine.cc +1 -3
- data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +4 -2
- data/src/core/lib/security/authorization/matchers.cc +25 -22
- data/src/core/lib/security/authorization/rbac_policy.cc +2 -3
- data/src/core/lib/security/context/security_context.h +10 -0
- data/src/core/lib/security/credentials/channel_creds_registry_init.cc +3 -4
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +1 -1
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +77 -55
- data/src/core/lib/security/credentials/external/aws_request_signer.cc +4 -3
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +40 -51
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +17 -21
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +21 -25
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +1 -0
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +27 -24
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +1 -0
- data/src/core/lib/security/credentials/jwt/json_token.cc +1 -2
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +1 -1
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +5 -5
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +24 -30
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +6 -5
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +3 -3
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +19 -27
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +4 -11
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +29 -41
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +1 -1
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +6 -11
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +8 -15
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +2 -2
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +2 -6
- data/src/core/lib/security/security_connector/load_system_roots_supported.cc +1 -4
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +7 -11
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +9 -14
- data/src/core/lib/security/security_connector/ssl_utils.cc +5 -7
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +21 -27
- data/src/core/lib/security/transport/client_auth_filter.cc +1 -1
- data/src/core/lib/security/transport/secure_endpoint.cc +26 -28
- data/src/core/lib/security/transport/security_handshaker.cc +53 -53
- data/src/core/lib/security/transport/server_auth_filter.cc +21 -21
- data/src/core/lib/security/transport/tsi_error.cc +6 -3
- data/src/core/lib/security/util/json_util.cc +4 -5
- data/src/core/lib/service_config/service_config.h +1 -1
- data/src/core/lib/service_config/service_config_impl.cc +111 -158
- data/src/core/lib/service_config/service_config_impl.h +14 -17
- data/src/core/lib/service_config/service_config_parser.cc +14 -31
- data/src/core/lib/service_config/service_config_parser.h +14 -10
- data/src/core/lib/slice/b64.cc +2 -2
- data/src/core/lib/slice/slice.cc +7 -1
- data/src/core/lib/slice/slice.h +19 -6
- data/src/core/lib/slice/slice_buffer.cc +13 -14
- data/src/core/lib/slice/slice_internal.h +13 -21
- data/src/core/lib/slice/slice_refcount.h +34 -19
- data/src/core/lib/surface/byte_buffer.cc +3 -4
- data/src/core/lib/surface/byte_buffer_reader.cc +4 -4
- data/src/core/lib/surface/call.cc +1366 -239
- data/src/core/lib/surface/call.h +44 -0
- data/src/core/lib/surface/call_details.cc +3 -3
- data/src/core/lib/surface/call_trace.cc +113 -0
- data/src/core/lib/surface/call_trace.h +30 -0
- data/src/core/lib/surface/channel.cc +44 -49
- data/src/core/lib/surface/channel.h +9 -1
- data/src/core/lib/surface/channel_ping.cc +1 -1
- data/src/core/lib/surface/channel_stack_type.cc +4 -0
- data/src/core/lib/surface/channel_stack_type.h +2 -0
- data/src/core/lib/surface/completion_queue.cc +38 -52
- data/src/core/lib/surface/init.cc +8 -39
- data/src/core/lib/surface/init_internally.h +8 -0
- data/src/core/lib/surface/lame_client.cc +10 -8
- data/src/core/lib/surface/server.cc +48 -70
- data/src/core/lib/surface/server.h +3 -4
- data/src/core/lib/surface/validate_metadata.cc +11 -12
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/connectivity_state.cc +2 -2
- data/src/core/lib/transport/error_utils.cc +34 -28
- data/src/core/lib/transport/error_utils.h +3 -3
- data/src/core/lib/transport/handshaker.cc +14 -14
- data/src/core/lib/transport/handshaker.h +1 -1
- data/src/core/lib/transport/handshaker_factory.h +26 -0
- data/src/core/lib/transport/handshaker_registry.cc +8 -2
- data/src/core/lib/transport/handshaker_registry.h +3 -4
- data/src/core/lib/transport/http_connect_handshaker.cc +23 -24
- data/src/core/lib/transport/metadata_batch.h +17 -1
- data/src/core/lib/transport/parsed_metadata.cc +2 -6
- data/src/core/lib/transport/tcp_connect_handshaker.cc +15 -20
- data/src/core/lib/transport/transport.cc +63 -17
- data/src/core/lib/transport/transport.h +64 -68
- data/src/core/lib/transport/transport_impl.h +1 -1
- data/src/core/lib/transport/transport_op_string.cc +7 -6
- data/src/core/plugin_registry/grpc_plugin_registry.cc +6 -10
- data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +2 -14
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +10 -10
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +8 -8
- data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +2 -1
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +7 -7
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.cc +7 -6
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +1 -1
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +5 -5
- data/src/core/tsi/fake_transport_security.cc +3 -3
- data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +7 -3
- data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +1 -1
- data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +6 -2
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +0 -2
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +0 -3
- 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/src/ruby/spec/channel_spec.rb +0 -43
- data/src/ruby/spec/generic/active_call_spec.rb +12 -3
- 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/zlib/compress.c +3 -3
- data/third_party/zlib/crc32.c +21 -12
- data/third_party/zlib/deflate.c +112 -106
- data/third_party/zlib/deflate.h +2 -2
- data/third_party/zlib/gzlib.c +1 -1
- data/third_party/zlib/gzread.c +3 -5
- data/third_party/zlib/gzwrite.c +1 -1
- data/third_party/zlib/infback.c +10 -7
- data/third_party/zlib/inflate.c +5 -2
- data/third_party/zlib/inftrees.c +2 -2
- data/third_party/zlib/inftrees.h +1 -1
- data/third_party/zlib/trees.c +61 -62
- data/third_party/zlib/uncompr.c +2 -2
- data/third_party/zlib/zconf.h +16 -3
- data/third_party/zlib/zlib.h +10 -10
- data/third_party/zlib/zutil.c +9 -7
- data/third_party/zlib/zutil.h +1 -0
- metadata +55 -18
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +0 -188
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +0 -187
- data/src/core/lib/event_engine/executor/threaded_executor.h +0 -44
- data/src/core/lib/gpr/murmur_hash.cc +0 -82
- data/src/core/lib/gpr/murmur_hash.h +0 -29
- data/src/core/lib/gpr/tls.h +0 -156
- data/src/core/lib/promise/call_push_pull.h +0 -148
- data/src/core/lib/slice/slice_api.cc +0 -39
- data/src/core/lib/slice/slice_buffer_api.cc +0 -35
- data/src/core/lib/slice/slice_refcount_base.h +0 -60
@@ -362,8 +362,7 @@ class ClientChannel {
|
|
362
362
|
std::set<SubchannelWrapper*> subchannel_wrappers_
|
363
363
|
ABSL_GUARDED_BY(*work_serializer_);
|
364
364
|
int keepalive_time_ ABSL_GUARDED_BY(*work_serializer_) = -1;
|
365
|
-
grpc_error_handle disconnect_error_ ABSL_GUARDED_BY(*work_serializer_)
|
366
|
-
GRPC_ERROR_NONE;
|
365
|
+
grpc_error_handle disconnect_error_ ABSL_GUARDED_BY(*work_serializer_);
|
367
366
|
|
368
367
|
//
|
369
368
|
// Fields guarded by a mutex, since they need to be accessed
|
@@ -508,10 +507,10 @@ class ClientChannel::LoadBalancedCall
|
|
508
507
|
gpr_cycle_counter lb_call_start_time_ = gpr_get_cycle_counter();
|
509
508
|
|
510
509
|
// Set when we get a cancel_stream op.
|
511
|
-
grpc_error_handle cancel_error_
|
510
|
+
grpc_error_handle cancel_error_;
|
512
511
|
|
513
512
|
// Set when we fail inside the LB call.
|
514
|
-
grpc_error_handle failure_error_
|
513
|
+
grpc_error_handle failure_error_;
|
515
514
|
|
516
515
|
grpc_closure pick_closure_;
|
517
516
|
|
@@ -19,7 +19,7 @@
|
|
19
19
|
#include <grpc/support/port_platform.h>
|
20
20
|
|
21
21
|
#include "src/core/ext/filters/client_channel/client_channel.h"
|
22
|
-
#include "src/core/ext/filters/client_channel/
|
22
|
+
#include "src/core/ext/filters/client_channel/client_channel_service_config.h"
|
23
23
|
#include "src/core/ext/filters/client_channel/retry_service_config.h"
|
24
24
|
#include "src/core/lib/channel/channel_stack_builder.h"
|
25
25
|
#include "src/core/lib/config/core_configuration.h"
|
@@ -0,0 +1,153 @@
|
|
1
|
+
//
|
2
|
+
// Copyright 2018 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
|
+
#include <grpc/support/port_platform.h>
|
18
|
+
|
19
|
+
#include "src/core/ext/filters/client_channel/client_channel_service_config.h"
|
20
|
+
|
21
|
+
#include <map>
|
22
|
+
#include <utility>
|
23
|
+
|
24
|
+
#include "absl/status/status.h"
|
25
|
+
#include "absl/status/statusor.h"
|
26
|
+
#include "absl/strings/ascii.h"
|
27
|
+
#include "absl/strings/str_cat.h"
|
28
|
+
#include "absl/types/optional.h"
|
29
|
+
|
30
|
+
#include "src/core/lib/load_balancing/lb_policy_registry.h"
|
31
|
+
|
32
|
+
// As per the retry design, we do not allow more than 5 retry attempts.
|
33
|
+
#define MAX_MAX_RETRY_ATTEMPTS 5
|
34
|
+
|
35
|
+
namespace grpc_core {
|
36
|
+
namespace internal {
|
37
|
+
|
38
|
+
//
|
39
|
+
// ClientChannelGlobalParsedConfig::HealthCheckConfig
|
40
|
+
//
|
41
|
+
|
42
|
+
const JsonLoaderInterface*
|
43
|
+
ClientChannelGlobalParsedConfig::HealthCheckConfig::JsonLoader(
|
44
|
+
const JsonArgs&) {
|
45
|
+
static const auto* loader =
|
46
|
+
JsonObjectLoader<HealthCheckConfig>()
|
47
|
+
.OptionalField("serviceName", &HealthCheckConfig::service_name)
|
48
|
+
.Finish();
|
49
|
+
return loader;
|
50
|
+
}
|
51
|
+
|
52
|
+
//
|
53
|
+
// ClientChannelGlobalParsedConfig
|
54
|
+
//
|
55
|
+
|
56
|
+
const JsonLoaderInterface* ClientChannelGlobalParsedConfig::JsonLoader(
|
57
|
+
const JsonArgs&) {
|
58
|
+
static const auto* loader =
|
59
|
+
JsonObjectLoader<ClientChannelGlobalParsedConfig>()
|
60
|
+
// Note: "loadBalancingConfig" requires special handling, so
|
61
|
+
// that field will be parsed in JsonPostLoad() instead.
|
62
|
+
.OptionalField(
|
63
|
+
"loadBalancingPolicy",
|
64
|
+
&ClientChannelGlobalParsedConfig::parsed_deprecated_lb_policy_)
|
65
|
+
.OptionalField("healthCheckConfig",
|
66
|
+
&ClientChannelGlobalParsedConfig::health_check_config_)
|
67
|
+
.Finish();
|
68
|
+
return loader;
|
69
|
+
}
|
70
|
+
|
71
|
+
void ClientChannelGlobalParsedConfig::JsonPostLoad(const Json& json,
|
72
|
+
const JsonArgs&,
|
73
|
+
ValidationErrors* errors) {
|
74
|
+
const auto& lb_policy_registry =
|
75
|
+
CoreConfiguration::Get().lb_policy_registry();
|
76
|
+
// Parse LB config.
|
77
|
+
{
|
78
|
+
ValidationErrors::ScopedField field(errors, ".loadBalancingConfig");
|
79
|
+
auto it = json.object_value().find("loadBalancingConfig");
|
80
|
+
if (it != json.object_value().end()) {
|
81
|
+
auto config = lb_policy_registry.ParseLoadBalancingConfig(it->second);
|
82
|
+
if (!config.ok()) {
|
83
|
+
errors->AddError(config.status().message());
|
84
|
+
} else {
|
85
|
+
parsed_lb_config_ = std::move(*config);
|
86
|
+
}
|
87
|
+
}
|
88
|
+
}
|
89
|
+
// Sanity-check deprecated "loadBalancingPolicy" field.
|
90
|
+
if (!parsed_deprecated_lb_policy_.empty()) {
|
91
|
+
ValidationErrors::ScopedField field(errors, ".loadBalancingPolicy");
|
92
|
+
// Convert to lower-case.
|
93
|
+
absl::AsciiStrToLower(&parsed_deprecated_lb_policy_);
|
94
|
+
bool requires_config = false;
|
95
|
+
if (!lb_policy_registry.LoadBalancingPolicyExists(
|
96
|
+
parsed_deprecated_lb_policy_, &requires_config)) {
|
97
|
+
errors->AddError(absl::StrCat("unknown LB policy \"",
|
98
|
+
parsed_deprecated_lb_policy_, "\""));
|
99
|
+
} else if (requires_config) {
|
100
|
+
errors->AddError(absl::StrCat(
|
101
|
+
"LB policy \"", parsed_deprecated_lb_policy_,
|
102
|
+
"\" requires a config. Please use loadBalancingConfig instead."));
|
103
|
+
}
|
104
|
+
}
|
105
|
+
}
|
106
|
+
|
107
|
+
//
|
108
|
+
// ClientChannelMethodParsedConfig
|
109
|
+
//
|
110
|
+
|
111
|
+
const JsonLoaderInterface* ClientChannelMethodParsedConfig::JsonLoader(
|
112
|
+
const JsonArgs&) {
|
113
|
+
static const auto* loader =
|
114
|
+
JsonObjectLoader<ClientChannelMethodParsedConfig>()
|
115
|
+
.OptionalField("timeout", &ClientChannelMethodParsedConfig::timeout_)
|
116
|
+
.OptionalField("waitForReady",
|
117
|
+
&ClientChannelMethodParsedConfig::wait_for_ready_)
|
118
|
+
.Finish();
|
119
|
+
return loader;
|
120
|
+
}
|
121
|
+
|
122
|
+
//
|
123
|
+
// ClientChannelServiceConfigParser
|
124
|
+
//
|
125
|
+
|
126
|
+
size_t ClientChannelServiceConfigParser::ParserIndex() {
|
127
|
+
return CoreConfiguration::Get().service_config_parser().GetParserIndex(
|
128
|
+
parser_name());
|
129
|
+
}
|
130
|
+
|
131
|
+
void ClientChannelServiceConfigParser::Register(
|
132
|
+
CoreConfiguration::Builder* builder) {
|
133
|
+
builder->service_config_parser()->RegisterParser(
|
134
|
+
std::make_unique<ClientChannelServiceConfigParser>());
|
135
|
+
}
|
136
|
+
|
137
|
+
std::unique_ptr<ServiceConfigParser::ParsedConfig>
|
138
|
+
ClientChannelServiceConfigParser::ParseGlobalParams(const ChannelArgs& /*args*/,
|
139
|
+
const Json& json,
|
140
|
+
ValidationErrors* errors) {
|
141
|
+
return LoadFromJson<std::unique_ptr<ClientChannelGlobalParsedConfig>>(
|
142
|
+
json, JsonArgs(), errors);
|
143
|
+
}
|
144
|
+
|
145
|
+
std::unique_ptr<ServiceConfigParser::ParsedConfig>
|
146
|
+
ClientChannelServiceConfigParser::ParsePerMethodParams(
|
147
|
+
const ChannelArgs& /*args*/, const Json& json, ValidationErrors* errors) {
|
148
|
+
return LoadFromJson<std::unique_ptr<ClientChannelMethodParsedConfig>>(
|
149
|
+
json, JsonArgs(), errors);
|
150
|
+
}
|
151
|
+
|
152
|
+
} // namespace internal
|
153
|
+
} // namespace grpc_core
|
@@ -14,8 +14,8 @@
|
|
14
14
|
// limitations under the License.
|
15
15
|
//
|
16
16
|
|
17
|
-
#ifndef
|
18
|
-
#define
|
17
|
+
#ifndef GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_CLIENT_CHANNEL_SERVICE_CONFIG_H
|
18
|
+
#define GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_CLIENT_CHANNEL_SERVICE_CONFIG_H
|
19
19
|
|
20
20
|
#include <grpc/support/port_platform.h>
|
21
21
|
|
@@ -23,9 +23,7 @@
|
|
23
23
|
|
24
24
|
#include <memory>
|
25
25
|
#include <string>
|
26
|
-
#include <utility>
|
27
26
|
|
28
|
-
#include "absl/status/statusor.h"
|
29
27
|
#include "absl/strings/string_view.h"
|
30
28
|
#include "absl/types/optional.h"
|
31
29
|
|
@@ -33,7 +31,10 @@
|
|
33
31
|
#include "src/core/lib/config/core_configuration.h"
|
34
32
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
35
33
|
#include "src/core/lib/gprpp/time.h"
|
34
|
+
#include "src/core/lib/gprpp/validation_errors.h"
|
36
35
|
#include "src/core/lib/json/json.h"
|
36
|
+
#include "src/core/lib/json/json_args.h"
|
37
|
+
#include "src/core/lib/json/json_object_loader.h"
|
37
38
|
#include "src/core/lib/load_balancing/lb_policy.h"
|
38
39
|
#include "src/core/lib/service_config/service_config_parser.h"
|
39
40
|
|
@@ -43,14 +44,6 @@ namespace internal {
|
|
43
44
|
class ClientChannelGlobalParsedConfig
|
44
45
|
: public ServiceConfigParser::ParsedConfig {
|
45
46
|
public:
|
46
|
-
ClientChannelGlobalParsedConfig(
|
47
|
-
RefCountedPtr<LoadBalancingPolicy::Config> parsed_lb_config,
|
48
|
-
std::string parsed_deprecated_lb_policy,
|
49
|
-
absl::optional<std::string> health_check_service_name)
|
50
|
-
: parsed_lb_config_(std::move(parsed_lb_config)),
|
51
|
-
parsed_deprecated_lb_policy_(std::move(parsed_deprecated_lb_policy)),
|
52
|
-
health_check_service_name_(std::move(health_check_service_name)) {}
|
53
|
-
|
54
47
|
RefCountedPtr<LoadBalancingPolicy::Config> parsed_lb_config() const {
|
55
48
|
return parsed_lb_config_;
|
56
49
|
}
|
@@ -60,26 +53,34 @@ class ClientChannelGlobalParsedConfig
|
|
60
53
|
}
|
61
54
|
|
62
55
|
const absl::optional<std::string>& health_check_service_name() const {
|
63
|
-
return
|
56
|
+
return health_check_config_.service_name;
|
64
57
|
}
|
65
58
|
|
59
|
+
static const JsonLoaderInterface* JsonLoader(const JsonArgs&);
|
60
|
+
void JsonPostLoad(const Json& json, const JsonArgs&,
|
61
|
+
ValidationErrors* errors);
|
62
|
+
|
66
63
|
private:
|
64
|
+
struct HealthCheckConfig {
|
65
|
+
absl::optional<std::string> service_name;
|
66
|
+
|
67
|
+
static const JsonLoaderInterface* JsonLoader(const JsonArgs&);
|
68
|
+
};
|
69
|
+
|
67
70
|
RefCountedPtr<LoadBalancingPolicy::Config> parsed_lb_config_;
|
68
71
|
std::string parsed_deprecated_lb_policy_;
|
69
|
-
|
72
|
+
HealthCheckConfig health_check_config_;
|
70
73
|
};
|
71
74
|
|
72
75
|
class ClientChannelMethodParsedConfig
|
73
76
|
: public ServiceConfigParser::ParsedConfig {
|
74
77
|
public:
|
75
|
-
ClientChannelMethodParsedConfig(Duration timeout,
|
76
|
-
const absl::optional<bool>& wait_for_ready)
|
77
|
-
: timeout_(timeout), wait_for_ready_(wait_for_ready) {}
|
78
|
-
|
79
78
|
Duration timeout() const { return timeout_; }
|
80
79
|
|
81
80
|
absl::optional<bool> wait_for_ready() const { return wait_for_ready_; }
|
82
81
|
|
82
|
+
static const JsonLoaderInterface* JsonLoader(const JsonArgs&);
|
83
|
+
|
83
84
|
private:
|
84
85
|
Duration timeout_;
|
85
86
|
absl::optional<bool> wait_for_ready_;
|
@@ -89,11 +90,13 @@ class ClientChannelServiceConfigParser : public ServiceConfigParser::Parser {
|
|
89
90
|
public:
|
90
91
|
absl::string_view name() const override { return parser_name(); }
|
91
92
|
|
92
|
-
|
93
|
-
|
93
|
+
std::unique_ptr<ServiceConfigParser::ParsedConfig> ParseGlobalParams(
|
94
|
+
const ChannelArgs& /*args*/, const Json& json,
|
95
|
+
ValidationErrors* errors) override;
|
94
96
|
|
95
|
-
|
96
|
-
|
97
|
+
std::unique_ptr<ServiceConfigParser::ParsedConfig> ParsePerMethodParams(
|
98
|
+
const ChannelArgs& /*args*/, const Json& json,
|
99
|
+
ValidationErrors* errors) override;
|
97
100
|
|
98
101
|
static size_t ParserIndex();
|
99
102
|
static void Register(CoreConfiguration::Builder* builder);
|
@@ -105,4 +108,4 @@ class ClientChannelServiceConfigParser : public ServiceConfigParser::Parser {
|
|
105
108
|
} // namespace internal
|
106
109
|
} // namespace grpc_core
|
107
110
|
|
108
|
-
#endif //
|
111
|
+
#endif // GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_CLIENT_CHANNEL_SERVICE_CONFIG_H
|
@@ -74,7 +74,7 @@ class SubchannelConnector : public InternallyRefCounted<SubchannelConnector> {
|
|
74
74
|
virtual void Shutdown(grpc_error_handle error) = 0;
|
75
75
|
|
76
76
|
void Orphan() override {
|
77
|
-
Shutdown(
|
77
|
+
Shutdown(GRPC_ERROR_CREATE("Subchannel disconnected"));
|
78
78
|
Unref();
|
79
79
|
}
|
80
80
|
};
|
@@ -24,15 +24,17 @@
|
|
24
24
|
#include <string>
|
25
25
|
#include <utility>
|
26
26
|
|
27
|
-
#include "absl/status/
|
27
|
+
#include "absl/status/statusor.h"
|
28
28
|
|
29
|
-
#include <grpc/support/alloc.h>
|
30
29
|
#include <grpc/support/log.h>
|
31
30
|
|
32
31
|
#include "src/core/lib/channel/channel_args.h"
|
33
32
|
#include "src/core/lib/channel/channel_stack.h"
|
33
|
+
#include "src/core/lib/channel/channel_stack_builder_impl.h"
|
34
34
|
#include "src/core/lib/debug/trace.h"
|
35
35
|
#include "src/core/lib/gpr/alloc.h"
|
36
|
+
#include "src/core/lib/gprpp/status_helper.h"
|
37
|
+
#include "src/core/lib/surface/channel_stack_type.h"
|
36
38
|
#include "src/core/lib/surface/lame_client.h"
|
37
39
|
|
38
40
|
// Conversion between call and call stack.
|
@@ -63,10 +65,10 @@ DynamicFilters::Call::Call(Args args, grpc_error_handle* error)
|
|
63
65
|
args.arena, /* arena */
|
64
66
|
args.call_combiner /* call_combiner */
|
65
67
|
};
|
66
|
-
*error = grpc_call_stack_init(channel_stack_->channel_stack_, 1,
|
67
|
-
this, &call_args);
|
68
|
-
if (GPR_UNLIKELY(!
|
69
|
-
gpr_log(GPR_ERROR, "error: %s",
|
68
|
+
*error = grpc_call_stack_init(channel_stack_->channel_stack_.get(), 1,
|
69
|
+
Destroy, this, &call_args);
|
70
|
+
if (GPR_UNLIKELY(!error->ok())) {
|
71
|
+
gpr_log(GPR_ERROR, "error: %s", StatusToString(*error).c_str());
|
70
72
|
return;
|
71
73
|
}
|
72
74
|
grpc_call_stack_set_pollset_or_pollset_set(call_stack, args.pollent);
|
@@ -136,58 +138,29 @@ void DynamicFilters::Call::IncrementRefCount(const DebugLocation& /*location*/,
|
|
136
138
|
|
137
139
|
namespace {
|
138
140
|
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
std::pair<grpc_channel_stack*, grpc_error_handle> CreateChannelStack(
|
146
|
-
const grpc_channel_args* args,
|
147
|
-
std::vector<const grpc_channel_filter*> filters) {
|
148
|
-
// Allocate memory for channel stack.
|
149
|
-
const size_t channel_stack_size =
|
150
|
-
grpc_channel_stack_size(filters.data(), filters.size());
|
151
|
-
grpc_channel_stack* channel_stack =
|
152
|
-
reinterpret_cast<grpc_channel_stack*>(gpr_zalloc(channel_stack_size));
|
153
|
-
// Initialize stack.
|
154
|
-
grpc_error_handle error = grpc_channel_stack_init(
|
155
|
-
/*initial_refs=*/1, DestroyChannelStack, channel_stack, filters.data(),
|
156
|
-
filters.size(), args, "DynamicFilters", channel_stack);
|
157
|
-
if (!GRPC_ERROR_IS_NONE(error)) {
|
158
|
-
gpr_log(GPR_ERROR, "error initializing client internal stack: %s",
|
159
|
-
grpc_error_std_string(error).c_str());
|
160
|
-
grpc_channel_stack_destroy(channel_stack);
|
161
|
-
gpr_free(channel_stack);
|
162
|
-
return {nullptr, error};
|
141
|
+
absl::StatusOr<RefCountedPtr<grpc_channel_stack>> CreateChannelStack(
|
142
|
+
const ChannelArgs& args, std::vector<const grpc_channel_filter*> filters) {
|
143
|
+
ChannelStackBuilderImpl builder("DynamicFilters", GRPC_CLIENT_DYNAMIC, args);
|
144
|
+
for (auto filter : filters) {
|
145
|
+
builder.AppendFilter(filter);
|
163
146
|
}
|
164
|
-
return
|
147
|
+
return builder.Build();
|
165
148
|
}
|
166
149
|
|
167
150
|
} // namespace
|
168
151
|
|
169
152
|
RefCountedPtr<DynamicFilters> DynamicFilters::Create(
|
170
|
-
const
|
171
|
-
std::vector<const grpc_channel_filter*> filters) {
|
153
|
+
const ChannelArgs& args, std::vector<const grpc_channel_filter*> filters) {
|
172
154
|
// Attempt to create channel stack from requested filters.
|
173
155
|
auto p = CreateChannelStack(args, std::move(filters));
|
174
|
-
if (!
|
156
|
+
if (!p.ok()) {
|
175
157
|
// Channel stack creation failed with requested filters.
|
176
158
|
// Create with lame filter instead.
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
grpc_channel_args_copy_and_add(args, &error_arg, 1);
|
181
|
-
GRPC_ERROR_UNREF(error);
|
182
|
-
p = CreateChannelStack(new_args, {&LameClientFilter::kFilter});
|
183
|
-
GPR_ASSERT(GRPC_ERROR_IS_NONE(p.second));
|
184
|
-
grpc_channel_args_destroy(new_args);
|
159
|
+
auto error = p.status();
|
160
|
+
p = CreateChannelStack(args.Set(MakeLameClientErrorArg(&error)),
|
161
|
+
{&LameClientFilter::kFilter});
|
185
162
|
}
|
186
|
-
return MakeRefCounted<DynamicFilters>(p.
|
187
|
-
}
|
188
|
-
|
189
|
-
DynamicFilters::~DynamicFilters() {
|
190
|
-
GRPC_CHANNEL_STACK_UNREF(channel_stack_, "~DynamicFilters");
|
163
|
+
return MakeRefCounted<DynamicFilters>(std::move(p.value()));
|
191
164
|
}
|
192
165
|
|
193
166
|
RefCountedPtr<DynamicFilters::Call> DynamicFilters::CreateCall(
|
@@ -19,12 +19,14 @@
|
|
19
19
|
|
20
20
|
#include <grpc/support/port_platform.h>
|
21
21
|
|
22
|
+
#include <utility>
|
22
23
|
#include <vector>
|
23
24
|
|
24
|
-
#include <grpc/impl/codegen/grpc_types.h>
|
25
25
|
#include <grpc/slice.h>
|
26
26
|
|
27
|
+
#include "src/core/lib/channel/channel_args.h"
|
27
28
|
#include "src/core/lib/channel/channel_fwd.h"
|
29
|
+
#include "src/core/lib/channel/channel_stack.h"
|
28
30
|
#include "src/core/lib/channel/context.h"
|
29
31
|
#include "src/core/lib/gpr/time_precise.h"
|
30
32
|
#include "src/core/lib/gprpp/debug_location.h"
|
@@ -90,18 +92,15 @@ class DynamicFilters : public RefCounted<DynamicFilters> {
|
|
90
92
|
};
|
91
93
|
|
92
94
|
static RefCountedPtr<DynamicFilters> Create(
|
93
|
-
const
|
94
|
-
std::vector<const grpc_channel_filter*> filters);
|
95
|
+
const ChannelArgs& args, std::vector<const grpc_channel_filter*> filters);
|
95
96
|
|
96
|
-
explicit DynamicFilters(grpc_channel_stack
|
97
|
-
: channel_stack_(channel_stack) {}
|
98
|
-
|
99
|
-
~DynamicFilters() override;
|
97
|
+
explicit DynamicFilters(RefCountedPtr<grpc_channel_stack> channel_stack)
|
98
|
+
: channel_stack_(std::move(channel_stack)) {}
|
100
99
|
|
101
100
|
RefCountedPtr<Call> CreateCall(Call::Args args, grpc_error_handle* error);
|
102
101
|
|
103
102
|
private:
|
104
|
-
grpc_channel_stack
|
103
|
+
RefCountedPtr<grpc_channel_stack> channel_stack_;
|
105
104
|
};
|
106
105
|
|
107
106
|
} // namespace grpc_core
|
@@ -25,7 +25,6 @@
|
|
25
25
|
#include <memory>
|
26
26
|
#include <utility>
|
27
27
|
|
28
|
-
#include "absl/memory/memory.h"
|
29
28
|
#include "absl/status/status.h"
|
30
29
|
#include "absl/status/statusor.h"
|
31
30
|
#include "absl/strings/string_view.h"
|
@@ -165,9 +164,9 @@ OrphanablePtr<SubchannelStreamClient> MakeHealthCheckClient(
|
|
165
164
|
RefCountedPtr<ConnectivityStateWatcherInterface> watcher) {
|
166
165
|
return MakeOrphanable<SubchannelStreamClient>(
|
167
166
|
std::move(connected_subchannel), interested_parties,
|
168
|
-
|
169
|
-
|
170
|
-
|
167
|
+
std::make_unique<HealthStreamEventHandler>(std::move(service_name),
|
168
|
+
std::move(channelz_node),
|
169
|
+
std::move(watcher)),
|
171
170
|
GRPC_TRACE_FLAG_ENABLED(grpc_health_check_client_trace)
|
172
171
|
? "HealthCheckClient"
|
173
172
|
: nullptr);
|
@@ -44,7 +44,6 @@
|
|
44
44
|
#include "src/core/lib/gprpp/env.h"
|
45
45
|
#include "src/core/lib/gprpp/host_port.h"
|
46
46
|
#include "src/core/lib/gprpp/memory.h"
|
47
|
-
#include "src/core/lib/handshaker/proxy_mapper_registry.h"
|
48
47
|
#include "src/core/lib/iomgr/resolve_address.h"
|
49
48
|
#include "src/core/lib/slice/b64.h"
|
50
49
|
#include "src/core/lib/transport/http_connect_handshaker.h"
|
@@ -23,7 +23,6 @@
|
|
23
23
|
#include <algorithm>
|
24
24
|
#include <utility>
|
25
25
|
|
26
|
-
#include "absl/memory/memory.h"
|
27
26
|
#include "absl/strings/str_cat.h"
|
28
27
|
#include "absl/strings/str_join.h"
|
29
28
|
|
@@ -41,7 +40,7 @@ class HierarchicalPathAttribute : public ServerAddress::AttributeInterface {
|
|
41
40
|
: path_(std::move(path)) {}
|
42
41
|
|
43
42
|
std::unique_ptr<AttributeInterface> Copy() const override {
|
44
|
-
return
|
43
|
+
return std::make_unique<HierarchicalPathAttribute>(path_);
|
45
44
|
}
|
46
45
|
|
47
46
|
int Cmp(const AttributeInterface* other) const override {
|
@@ -70,7 +69,7 @@ class HierarchicalPathAttribute : public ServerAddress::AttributeInterface {
|
|
70
69
|
|
71
70
|
std::unique_ptr<ServerAddress::AttributeInterface>
|
72
71
|
MakeHierarchicalPathAttribute(std::vector<std::string> path) {
|
73
|
-
return
|
72
|
+
return std::make_unique<HierarchicalPathAttribute>(std::move(path));
|
74
73
|
}
|
75
74
|
|
76
75
|
absl::StatusOr<HierarchicalAddressMap> MakeHierarchicalAddressMap(
|
@@ -89,7 +88,7 @@ absl::StatusOr<HierarchicalAddressMap> MakeHierarchicalAddressMap(
|
|
89
88
|
++it;
|
90
89
|
if (it != path.end()) {
|
91
90
|
std::vector<std::string> remaining_path(it, path.end());
|
92
|
-
new_attribute =
|
91
|
+
new_attribute = std::make_unique<HierarchicalPathAttribute>(
|
93
92
|
std::move(remaining_path));
|
94
93
|
}
|
95
94
|
target_list.emplace_back(address.WithAttribute(
|
@@ -25,6 +25,7 @@
|
|
25
25
|
#include "absl/strings/str_cat.h"
|
26
26
|
#include "absl/strings/string_view.h"
|
27
27
|
|
28
|
+
#include <grpc/event_engine/event_engine.h>
|
28
29
|
#include <grpc/impl/codegen/connectivity_state.h>
|
29
30
|
#include <grpc/support/log.h>
|
30
31
|
|
@@ -107,6 +108,10 @@ class ChildPolicyHandler::Helper
|
|
107
108
|
return parent_->channel_control_helper()->GetAuthority();
|
108
109
|
}
|
109
110
|
|
111
|
+
grpc_event_engine::experimental::EventEngine* GetEventEngine() override {
|
112
|
+
return parent_->channel_control_helper()->GetEventEngine();
|
113
|
+
}
|
114
|
+
|
110
115
|
void AddTraceEvent(TraceSeverity severity,
|
111
116
|
absl::string_view message) override {
|
112
117
|
if (parent_->shutting_down_) return;
|
@@ -22,6 +22,8 @@
|
|
22
22
|
|
23
23
|
#include <new>
|
24
24
|
|
25
|
+
#include "absl/meta/type_traits.h"
|
26
|
+
#include "absl/status/status.h"
|
25
27
|
#include "absl/types/optional.h"
|
26
28
|
|
27
29
|
#include <grpc/support/log.h>
|
@@ -36,7 +38,7 @@
|
|
36
38
|
|
37
39
|
static grpc_error_handle clr_init_channel_elem(
|
38
40
|
grpc_channel_element* /*elem*/, grpc_channel_element_args* /*args*/) {
|
39
|
-
return
|
41
|
+
return absl::OkStatus();
|
40
42
|
}
|
41
43
|
|
42
44
|
static void clr_destroy_channel_elem(grpc_channel_element* /*elem*/) {}
|
@@ -60,28 +62,27 @@ struct call_data {
|
|
60
62
|
|
61
63
|
static void on_complete_for_send(void* arg, grpc_error_handle error) {
|
62
64
|
call_data* calld = static_cast<call_data*>(arg);
|
63
|
-
if (
|
65
|
+
if (error.ok()) {
|
64
66
|
calld->send_initial_metadata_succeeded = true;
|
65
67
|
}
|
66
68
|
grpc_core::Closure::Run(DEBUG_LOCATION, calld->original_on_complete_for_send,
|
67
|
-
|
69
|
+
error);
|
68
70
|
}
|
69
71
|
|
70
72
|
static void recv_initial_metadata_ready(void* arg, grpc_error_handle error) {
|
71
73
|
call_data* calld = static_cast<call_data*>(arg);
|
72
|
-
if (
|
74
|
+
if (error.ok()) {
|
73
75
|
calld->recv_initial_metadata_succeeded = true;
|
74
76
|
}
|
75
77
|
grpc_core::Closure::Run(DEBUG_LOCATION,
|
76
|
-
calld->original_recv_initial_metadata_ready,
|
77
|
-
GRPC_ERROR_REF(error));
|
78
|
+
calld->original_recv_initial_metadata_ready, error);
|
78
79
|
}
|
79
80
|
|
80
81
|
static grpc_error_handle clr_init_call_elem(
|
81
82
|
grpc_call_element* elem, const grpc_call_element_args* args) {
|
82
83
|
GPR_ASSERT(args->context != nullptr);
|
83
84
|
new (elem->call_data) call_data();
|
84
|
-
return
|
85
|
+
return absl::OkStatus();
|
85
86
|
}
|
86
87
|
|
87
88
|
static void clr_destroy_call_elem(grpc_call_element* elem,
|