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
@@ -25,7 +25,6 @@
|
|
25
25
|
#include <utility>
|
26
26
|
#include <vector>
|
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/str_cat.h"
|
@@ -46,7 +45,6 @@
|
|
46
45
|
#include "src/core/lib/json/json.h"
|
47
46
|
#include "src/core/lib/load_balancing/lb_policy.h"
|
48
47
|
#include "src/core/lib/load_balancing/lb_policy_factory.h"
|
49
|
-
#include "src/core/lib/load_balancing/lb_policy_registry.h"
|
50
48
|
#include "src/core/lib/load_balancing/subchannel_interface.h"
|
51
49
|
#include "src/core/lib/resolver/server_address.h"
|
52
50
|
#include "src/core/lib/transport/connectivity_state.h"
|
@@ -241,14 +239,14 @@ void PickFirst::AttemptToConnectUsingLatestUpdateArgsLocked() {
|
|
241
239
|
: latest_update_args_.addresses.status();
|
242
240
|
channel_control_helper()->UpdateState(
|
243
241
|
GRPC_CHANNEL_TRANSIENT_FAILURE, status,
|
244
|
-
|
242
|
+
std::make_unique<TransientFailurePicker>(status));
|
245
243
|
channel_control_helper()->RequestReresolution();
|
246
244
|
}
|
247
245
|
// Otherwise, if this is the initial update, report CONNECTING.
|
248
246
|
else if (subchannel_list_.get() == nullptr) {
|
249
247
|
channel_control_helper()->UpdateState(
|
250
248
|
GRPC_CHANNEL_CONNECTING, absl::Status(),
|
251
|
-
|
249
|
+
std::make_unique<QueuePicker>(Ref(DEBUG_LOCATION, "QueuePicker")));
|
252
250
|
}
|
253
251
|
// If the new update is empty or we don't yet have a selected subchannel in
|
254
252
|
// the current list, replace the current subchannel list immediately.
|
@@ -340,11 +338,11 @@ void PickFirst::PickFirstSubchannelData::ProcessConnectivityChangeLocked(
|
|
340
338
|
.ToString()));
|
341
339
|
p->channel_control_helper()->UpdateState(
|
342
340
|
GRPC_CHANNEL_TRANSIENT_FAILURE, status,
|
343
|
-
|
341
|
+
std::make_unique<TransientFailurePicker>(status));
|
344
342
|
} else {
|
345
343
|
p->channel_control_helper()->UpdateState(
|
346
344
|
GRPC_CHANNEL_CONNECTING, absl::Status(),
|
347
|
-
|
345
|
+
std::make_unique<QueuePicker>(
|
348
346
|
p->Ref(DEBUG_LOCATION, "QueuePicker")));
|
349
347
|
}
|
350
348
|
return;
|
@@ -362,7 +360,7 @@ void PickFirst::PickFirstSubchannelData::ProcessConnectivityChangeLocked(
|
|
362
360
|
p->subchannel_list_.reset();
|
363
361
|
p->channel_control_helper()->UpdateState(
|
364
362
|
GRPC_CHANNEL_IDLE, absl::Status(),
|
365
|
-
|
363
|
+
std::make_unique<QueuePicker>(p->Ref(DEBUG_LOCATION, "QueuePicker")));
|
366
364
|
return;
|
367
365
|
}
|
368
366
|
// If we get here, there are two possible cases:
|
@@ -436,7 +434,7 @@ void PickFirst::PickFirstSubchannelData::ProcessConnectivityChangeLocked(
|
|
436
434
|
connectivity_status().ToString()));
|
437
435
|
p->channel_control_helper()->UpdateState(
|
438
436
|
GRPC_CHANNEL_TRANSIENT_FAILURE, status,
|
439
|
-
|
437
|
+
std::make_unique<TransientFailurePicker>(status));
|
440
438
|
}
|
441
439
|
}
|
442
440
|
// If the next subchannel is in IDLE, trigger a connection attempt.
|
@@ -462,7 +460,7 @@ void PickFirst::PickFirstSubchannelData::ProcessConnectivityChangeLocked(
|
|
462
460
|
!subchannel_list()->in_transient_failure()) {
|
463
461
|
p->channel_control_helper()->UpdateState(
|
464
462
|
GRPC_CHANNEL_CONNECTING, absl::Status(),
|
465
|
-
|
463
|
+
std::make_unique<QueuePicker>(
|
466
464
|
p->Ref(DEBUG_LOCATION, "QueuePicker")));
|
467
465
|
}
|
468
466
|
break;
|
@@ -503,7 +501,7 @@ void PickFirst::PickFirstSubchannelData::ProcessUnselectedReadyLocked() {
|
|
503
501
|
p->selected_ = this;
|
504
502
|
p->channel_control_helper()->UpdateState(
|
505
503
|
GRPC_CHANNEL_READY, absl::Status(),
|
506
|
-
|
504
|
+
std::make_unique<Picker>(subchannel()->Ref()));
|
507
505
|
for (size_t i = 0; i < subchannel_list()->num_subchannels(); ++i) {
|
508
506
|
if (i != Index()) {
|
509
507
|
subchannel_list()->subchannel(i)->ShutdownLocked();
|
@@ -539,7 +537,7 @@ class PickFirstFactory : public LoadBalancingPolicyFactory {
|
|
539
537
|
|
540
538
|
void RegisterPickFirstLbPolicy(CoreConfiguration::Builder* builder) {
|
541
539
|
builder->lb_policy_registry()->RegisterLoadBalancingPolicyFactory(
|
542
|
-
|
540
|
+
std::make_unique<PickFirstFactory>());
|
543
541
|
}
|
544
542
|
|
545
543
|
} // namespace grpc_core
|
@@ -26,7 +26,6 @@
|
|
26
26
|
#include <utility>
|
27
27
|
#include <vector>
|
28
28
|
|
29
|
-
#include "absl/memory/memory.h"
|
30
29
|
#include "absl/status/status.h"
|
31
30
|
#include "absl/status/statusor.h"
|
32
31
|
#include "absl/strings/str_cat.h"
|
@@ -34,6 +33,7 @@
|
|
34
33
|
#include "absl/strings/string_view.h"
|
35
34
|
#include "absl/types/optional.h"
|
36
35
|
|
36
|
+
#include <grpc/event_engine/event_engine.h>
|
37
37
|
#include <grpc/impl/codegen/connectivity_state.h>
|
38
38
|
#include <grpc/impl/codegen/grpc_types.h>
|
39
39
|
#include <grpc/support/log.h>
|
@@ -198,6 +198,7 @@ class PriorityLb : public LoadBalancingPolicy {
|
|
198
198
|
std::unique_ptr<SubchannelPicker> picker) override;
|
199
199
|
void RequestReresolution() override;
|
200
200
|
absl::string_view GetAuthority() override;
|
201
|
+
grpc_event_engine::experimental::EventEngine* GetEventEngine() override;
|
201
202
|
void AddTraceEvent(TraceSeverity severity,
|
202
203
|
absl::string_view message) override;
|
203
204
|
|
@@ -421,7 +422,7 @@ void PriorityLb::ChoosePriorityLocked() {
|
|
421
422
|
absl::UnavailableError("priority policy has empty priority list");
|
422
423
|
channel_control_helper()->UpdateState(
|
423
424
|
GRPC_CHANNEL_TRANSIENT_FAILURE, status,
|
424
|
-
|
425
|
+
std::make_unique<TransientFailurePicker>(status));
|
425
426
|
return;
|
426
427
|
}
|
427
428
|
// Iterate through priorities, searching for one in READY or IDLE,
|
@@ -566,14 +567,13 @@ void PriorityLb::ChildPriority::DeactivationTimer::Orphan() {
|
|
566
567
|
void PriorityLb::ChildPriority::DeactivationTimer::OnTimer(
|
567
568
|
void* arg, grpc_error_handle error) {
|
568
569
|
auto* self = static_cast<DeactivationTimer*>(arg);
|
569
|
-
(void)GRPC_ERROR_REF(error); // ref owned by lambda
|
570
570
|
self->child_priority_->priority_policy_->work_serializer()->Run(
|
571
571
|
[self, error]() { self->OnTimerLocked(error); }, DEBUG_LOCATION);
|
572
572
|
}
|
573
573
|
|
574
574
|
void PriorityLb::ChildPriority::DeactivationTimer::OnTimerLocked(
|
575
575
|
grpc_error_handle error) {
|
576
|
-
if (
|
576
|
+
if (error.ok() && timer_pending_) {
|
577
577
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_priority_trace)) {
|
578
578
|
gpr_log(GPR_INFO,
|
579
579
|
"[priority_lb %p] child %s (%p): deactivation timer fired, "
|
@@ -585,7 +585,6 @@ void PriorityLb::ChildPriority::DeactivationTimer::OnTimerLocked(
|
|
585
585
|
child_priority_->priority_policy_->DeleteChild(child_priority_.get());
|
586
586
|
}
|
587
587
|
Unref(DEBUG_LOCATION, "Timer");
|
588
|
-
GRPC_ERROR_UNREF(error);
|
589
588
|
}
|
590
589
|
|
591
590
|
//
|
@@ -630,14 +629,13 @@ void PriorityLb::ChildPriority::FailoverTimer::Orphan() {
|
|
630
629
|
void PriorityLb::ChildPriority::FailoverTimer::OnTimer(
|
631
630
|
void* arg, grpc_error_handle error) {
|
632
631
|
auto* self = static_cast<FailoverTimer*>(arg);
|
633
|
-
(void)GRPC_ERROR_REF(error); // ref owned by lambda
|
634
632
|
self->child_priority_->priority_policy_->work_serializer()->Run(
|
635
633
|
[self, error]() { self->OnTimerLocked(error); }, DEBUG_LOCATION);
|
636
634
|
}
|
637
635
|
|
638
636
|
void PriorityLb::ChildPriority::FailoverTimer::OnTimerLocked(
|
639
637
|
grpc_error_handle error) {
|
640
|
-
if (
|
638
|
+
if (error.ok() && timer_pending_) {
|
641
639
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_priority_trace)) {
|
642
640
|
gpr_log(GPR_INFO,
|
643
641
|
"[priority_lb %p] child %s (%p): failover timer fired, "
|
@@ -652,7 +650,6 @@ void PriorityLb::ChildPriority::FailoverTimer::OnTimerLocked(
|
|
652
650
|
nullptr);
|
653
651
|
}
|
654
652
|
Unref(DEBUG_LOCATION, "Timer");
|
655
|
-
GRPC_ERROR_UNREF(error);
|
656
653
|
}
|
657
654
|
|
658
655
|
//
|
@@ -691,10 +688,10 @@ void PriorityLb::ChildPriority::Orphan() {
|
|
691
688
|
std::unique_ptr<LoadBalancingPolicy::SubchannelPicker>
|
692
689
|
PriorityLb::ChildPriority::GetPicker() {
|
693
690
|
if (picker_wrapper_ == nullptr) {
|
694
|
-
return
|
691
|
+
return std::make_unique<QueuePicker>(
|
695
692
|
priority_policy_->Ref(DEBUG_LOCATION, "QueuePicker"));
|
696
693
|
}
|
697
|
-
return
|
694
|
+
return std::make_unique<RefCountedPickerWrapper>(picker_wrapper_);
|
698
695
|
}
|
699
696
|
|
700
697
|
absl::Status PriorityLb::ChildPriority::UpdateLocked(
|
@@ -735,7 +732,7 @@ PriorityLb::ChildPriority::CreateChildPolicyLocked(const ChannelArgs& args) {
|
|
735
732
|
lb_policy_args.work_serializer = priority_policy_->work_serializer();
|
736
733
|
lb_policy_args.args = args;
|
737
734
|
lb_policy_args.channel_control_helper =
|
738
|
-
|
735
|
+
std::make_unique<Helper>(this->Ref(DEBUG_LOCATION, "Helper"));
|
739
736
|
OrphanablePtr<LoadBalancingPolicy> lb_policy =
|
740
737
|
MakeOrphanable<ChildPolicyHandler>(std::move(lb_policy_args),
|
741
738
|
&grpc_lb_priority_trace);
|
@@ -854,6 +851,12 @@ absl::string_view PriorityLb::ChildPriority::Helper::GetAuthority() {
|
|
854
851
|
return priority_->priority_policy_->channel_control_helper()->GetAuthority();
|
855
852
|
}
|
856
853
|
|
854
|
+
grpc_event_engine::experimental::EventEngine*
|
855
|
+
PriorityLb::ChildPriority::Helper::GetEventEngine() {
|
856
|
+
return priority_->priority_policy_->channel_control_helper()
|
857
|
+
->GetEventEngine();
|
858
|
+
}
|
859
|
+
|
857
860
|
void PriorityLb::ChildPriority::Helper::AddTraceEvent(
|
858
861
|
TraceSeverity severity, absl::string_view message) {
|
859
862
|
if (priority_->priority_policy_->shutting_down_) return;
|
@@ -948,7 +951,7 @@ class PriorityLbFactory : public LoadBalancingPolicyFactory {
|
|
948
951
|
|
949
952
|
void RegisterPriorityLbPolicy(CoreConfiguration::Builder* builder) {
|
950
953
|
builder->lb_policy_registry()->RegisterLoadBalancingPolicyFactory(
|
951
|
-
|
954
|
+
std::make_unique<PriorityLbFactory>());
|
952
955
|
}
|
953
956
|
|
954
957
|
} // namespace grpc_core
|
@@ -32,7 +32,6 @@
|
|
32
32
|
#include "absl/base/attributes.h"
|
33
33
|
#include "absl/base/thread_annotations.h"
|
34
34
|
#include "absl/container/inlined_vector.h"
|
35
|
-
#include "absl/memory/memory.h"
|
36
35
|
#include "absl/status/status.h"
|
37
36
|
#include "absl/status/statusor.h"
|
38
37
|
#include "absl/strings/numbers.h"
|
@@ -64,7 +63,6 @@
|
|
64
63
|
#include "src/core/lib/json/json.h"
|
65
64
|
#include "src/core/lib/load_balancing/lb_policy.h"
|
66
65
|
#include "src/core/lib/load_balancing/lb_policy_factory.h"
|
67
|
-
#include "src/core/lib/load_balancing/lb_policy_registry.h"
|
68
66
|
#include "src/core/lib/load_balancing/subchannel_interface.h"
|
69
67
|
#include "src/core/lib/resolver/server_address.h"
|
70
68
|
#include "src/core/lib/transport/connectivity_state.h"
|
@@ -83,8 +81,8 @@ UniqueTypeName RequestHashAttributeName() {
|
|
83
81
|
const JsonLoaderInterface* RingHashConfig::JsonLoader(const JsonArgs&) {
|
84
82
|
static const auto* loader =
|
85
83
|
JsonObjectLoader<RingHashConfig>()
|
86
|
-
.OptionalField("
|
87
|
-
.OptionalField("
|
84
|
+
.OptionalField("minRingSize", &RingHashConfig::min_ring_size)
|
85
|
+
.OptionalField("maxRingSize", &RingHashConfig::max_ring_size)
|
88
86
|
.Finish();
|
89
87
|
return loader;
|
90
88
|
}
|
@@ -92,14 +90,14 @@ const JsonLoaderInterface* RingHashConfig::JsonLoader(const JsonArgs&) {
|
|
92
90
|
void RingHashConfig::JsonPostLoad(const Json&, const JsonArgs&,
|
93
91
|
ValidationErrors* errors) {
|
94
92
|
{
|
95
|
-
ValidationErrors::ScopedField field(errors, ".
|
93
|
+
ValidationErrors::ScopedField field(errors, ".minRingSize");
|
96
94
|
if (!errors->FieldHasErrors() &&
|
97
95
|
(min_ring_size == 0 || min_ring_size > 8388608)) {
|
98
96
|
errors->AddError("must be in the range [1, 8388608]");
|
99
97
|
}
|
100
98
|
}
|
101
99
|
{
|
102
|
-
ValidationErrors::ScopedField field(errors, ".
|
100
|
+
ValidationErrors::ScopedField field(errors, ".maxRingSize");
|
103
101
|
if (!errors->FieldHasErrors() &&
|
104
102
|
(max_ring_size == 0 || max_ring_size > 8388608)) {
|
105
103
|
errors->AddError("must be in the range [1, 8388608]");
|
@@ -280,7 +278,7 @@ class RingHash : public LoadBalancingPolicy {
|
|
280
278
|
void Orphan() override {
|
281
279
|
// Hop into ExecCtx, so that we're not holding the data plane mutex
|
282
280
|
// while we run control-plane code.
|
283
|
-
ExecCtx::Run(DEBUG_LOCATION, &closure_,
|
281
|
+
ExecCtx::Run(DEBUG_LOCATION, &closure_, absl::OkStatus());
|
284
282
|
}
|
285
283
|
|
286
284
|
// Will be invoked inside of the WorkSerializer.
|
@@ -661,7 +659,7 @@ void RingHash::RingHashSubchannelList::UpdateRingHashConnectivityStateLocked(
|
|
661
659
|
// Note that we use our own picker regardless of connectivity state.
|
662
660
|
p->channel_control_helper()->UpdateState(
|
663
661
|
state, status,
|
664
|
-
|
662
|
+
std::make_unique<Picker>(Ref(DEBUG_LOCATION, "RingHashPicker")));
|
665
663
|
// While the ring_hash policy is reporting TRANSIENT_FAILURE, it will
|
666
664
|
// not be getting any pick requests from the priority policy.
|
667
665
|
// However, because the ring_hash policy does not attempt to
|
@@ -848,7 +846,7 @@ absl::Status RingHash::UpdateLocked(UpdateArgs args) {
|
|
848
846
|
: args.addresses.status();
|
849
847
|
channel_control_helper()->UpdateState(
|
850
848
|
GRPC_CHANNEL_TRANSIENT_FAILURE, status,
|
851
|
-
|
849
|
+
std::make_unique<TransientFailurePicker>(status));
|
852
850
|
return status;
|
853
851
|
}
|
854
852
|
// Otherwise, report IDLE.
|
@@ -885,7 +883,7 @@ class RingHashFactory : public LoadBalancingPolicyFactory {
|
|
885
883
|
|
886
884
|
void RegisterRingHashLbPolicy(CoreConfiguration::Builder* builder) {
|
887
885
|
builder->lb_policy_registry()->RegisterLoadBalancingPolicyFactory(
|
888
|
-
|
886
|
+
std::make_unique<RingHashFactory>());
|
889
887
|
}
|
890
888
|
|
891
889
|
} // namespace grpc_core
|
@@ -40,7 +40,6 @@
|
|
40
40
|
|
41
41
|
#include "absl/base/thread_annotations.h"
|
42
42
|
#include "absl/hash/hash.h"
|
43
|
-
#include "absl/memory/memory.h"
|
44
43
|
#include "absl/status/status.h"
|
45
44
|
#include "absl/status/statusor.h"
|
46
45
|
#include "absl/strings/str_cat.h"
|
@@ -54,6 +53,7 @@
|
|
54
53
|
|
55
54
|
#include <grpc/byte_buffer.h>
|
56
55
|
#include <grpc/byte_buffer_reader.h>
|
56
|
+
#include <grpc/event_engine/event_engine.h>
|
57
57
|
#include <grpc/grpc.h>
|
58
58
|
#include <grpc/impl/codegen/connectivity_state.h>
|
59
59
|
#include <grpc/impl/codegen/grpc_types.h>
|
@@ -73,6 +73,7 @@
|
|
73
73
|
#include "src/core/lib/gprpp/dual_ref_counted.h"
|
74
74
|
#include "src/core/lib/gprpp/orphanable.h"
|
75
75
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
76
|
+
#include "src/core/lib/gprpp/status_helper.h"
|
76
77
|
#include "src/core/lib/gprpp/sync.h"
|
77
78
|
#include "src/core/lib/gprpp/time.h"
|
78
79
|
#include "src/core/lib/gprpp/validation_errors.h"
|
@@ -94,8 +95,8 @@
|
|
94
95
|
#include "src/core/lib/security/credentials/credentials.h"
|
95
96
|
#include "src/core/lib/security/credentials/fake/fake_credentials.h"
|
96
97
|
#include "src/core/lib/service_config/service_config_impl.h"
|
98
|
+
#include "src/core/lib/slice/slice.h"
|
97
99
|
#include "src/core/lib/slice/slice_internal.h"
|
98
|
-
#include "src/core/lib/slice/slice_refcount.h"
|
99
100
|
#include "src/core/lib/surface/call.h"
|
100
101
|
#include "src/core/lib/surface/channel.h"
|
101
102
|
#include "src/core/lib/transport/connectivity_state.h"
|
@@ -335,6 +336,7 @@ class RlsLb : public LoadBalancingPolicy {
|
|
335
336
|
std::unique_ptr<SubchannelPicker> picker) override;
|
336
337
|
void RequestReresolution() override;
|
337
338
|
absl::string_view GetAuthority() override;
|
339
|
+
grpc_event_engine::experimental::EventEngine* GetEventEngine() override;
|
338
340
|
void AddTraceEvent(TraceSeverity severity,
|
339
341
|
absl::string_view message) override;
|
340
342
|
|
@@ -728,7 +730,7 @@ RlsLb::ChildPolicyWrapper::ChildPolicyWrapper(RefCountedPtr<RlsLb> lb_policy,
|
|
728
730
|
: nullptr),
|
729
731
|
lb_policy_(lb_policy),
|
730
732
|
target_(std::move(target)),
|
731
|
-
picker_(
|
733
|
+
picker_(std::make_unique<QueuePicker>(std::move(lb_policy))) {
|
732
734
|
lb_policy_->child_policy_map_.emplace(target_, this);
|
733
735
|
}
|
734
736
|
|
@@ -809,7 +811,7 @@ void RlsLb::ChildPolicyWrapper::StartUpdate() {
|
|
809
811
|
config.status().ToString().c_str());
|
810
812
|
}
|
811
813
|
pending_config_.reset();
|
812
|
-
picker_ =
|
814
|
+
picker_ = std::make_unique<TransientFailurePicker>(
|
813
815
|
absl::UnavailableError(config.status().message()));
|
814
816
|
child_policy_.reset();
|
815
817
|
} else {
|
@@ -825,7 +827,7 @@ absl::Status RlsLb::ChildPolicyWrapper::MaybeFinishUpdate() {
|
|
825
827
|
if (child_policy_ == nullptr) {
|
826
828
|
Args create_args;
|
827
829
|
create_args.work_serializer = lb_policy_->work_serializer();
|
828
|
-
create_args.channel_control_helper =
|
830
|
+
create_args.channel_control_helper = std::make_unique<ChildPolicyHelper>(
|
829
831
|
WeakRef(DEBUG_LOCATION, "ChildPolicyHelper"));
|
830
832
|
create_args.args = lb_policy_->channel_args_;
|
831
833
|
child_policy_ = MakeOrphanable<ChildPolicyHandler>(std::move(create_args),
|
@@ -915,6 +917,11 @@ absl::string_view RlsLb::ChildPolicyWrapper::ChildPolicyHelper::GetAuthority() {
|
|
915
917
|
return wrapper_->lb_policy_->channel_control_helper()->GetAuthority();
|
916
918
|
}
|
917
919
|
|
920
|
+
grpc_event_engine::experimental::EventEngine*
|
921
|
+
RlsLb::ChildPolicyWrapper::ChildPolicyHelper::GetEventEngine() {
|
922
|
+
return wrapper_->lb_policy_->channel_control_helper()->GetEventEngine();
|
923
|
+
}
|
924
|
+
|
918
925
|
void RlsLb::ChildPolicyWrapper::ChildPolicyHelper::AddTraceEvent(
|
919
926
|
TraceSeverity severity, absl::string_view message) {
|
920
927
|
if (wrapper_->is_shutdown_) return;
|
@@ -1156,7 +1163,7 @@ void RlsLb::Cache::Entry::BackoffTimer::OnBackoffTimer(
|
|
1156
1163
|
//
|
1157
1164
|
|
1158
1165
|
std::unique_ptr<BackOff> MakeCacheEntryBackoff() {
|
1159
|
-
return
|
1166
|
+
return std::make_unique<BackOff>(
|
1160
1167
|
BackOff::Options()
|
1161
1168
|
.set_initial_backoff(kCacheBackoffInitial)
|
1162
1169
|
.set_multiplier(kCacheBackoffMultiplier)
|
@@ -1417,15 +1424,14 @@ void RlsLb::Cache::Shutdown() {
|
|
1417
1424
|
|
1418
1425
|
void RlsLb::Cache::OnCleanupTimer(void* arg, grpc_error_handle error) {
|
1419
1426
|
Cache* cache = static_cast<Cache*>(arg);
|
1420
|
-
(void)GRPC_ERROR_REF(error);
|
1421
1427
|
cache->lb_policy_->work_serializer()->Run(
|
1422
1428
|
[cache, error]() {
|
1423
1429
|
RefCountedPtr<RlsLb> lb_policy(cache->lb_policy_);
|
1424
1430
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_rls_trace)) {
|
1425
1431
|
gpr_log(GPR_INFO, "[rlslb %p] cache cleanup timer fired (%s)",
|
1426
|
-
cache->lb_policy_,
|
1432
|
+
cache->lb_policy_, StatusToString(error).c_str());
|
1427
1433
|
}
|
1428
|
-
if (error ==
|
1434
|
+
if (error == absl::CancelledError()) return;
|
1429
1435
|
MutexLock lock(&lb_policy->mu_);
|
1430
1436
|
if (lb_policy->is_shutdown_) return;
|
1431
1437
|
for (auto it = cache->map_.begin(); it != cache->map_.end();) {
|
@@ -1683,7 +1689,7 @@ RlsLb::RlsRequest::RlsRequest(RefCountedPtr<RlsLb> lb_policy, RequestKey key,
|
|
1683
1689
|
DEBUG_LOCATION,
|
1684
1690
|
GRPC_CLOSURE_INIT(&call_start_cb_, StartCall,
|
1685
1691
|
Ref(DEBUG_LOCATION, "StartCall").release(), nullptr),
|
1686
|
-
|
1692
|
+
absl::OkStatus());
|
1687
1693
|
}
|
1688
1694
|
|
1689
1695
|
RlsLb::RlsRequest::~RlsRequest() { GPR_ASSERT(call_ == nullptr); }
|
@@ -1754,7 +1760,6 @@ void RlsLb::RlsRequest::StartCallLocked() {
|
|
1754
1760
|
|
1755
1761
|
void RlsLb::RlsRequest::OnRlsCallComplete(void* arg, grpc_error_handle error) {
|
1756
1762
|
auto* request = static_cast<RlsRequest*>(arg);
|
1757
|
-
(void)GRPC_ERROR_REF(error);
|
1758
1763
|
request->lb_policy_->work_serializer()->Run(
|
1759
1764
|
[request, error]() {
|
1760
1765
|
request->OnRlsCallCompleteLocked(error);
|
@@ -1770,12 +1775,12 @@ void RlsLb::RlsRequest::OnRlsCallCompleteLocked(grpc_error_handle error) {
|
|
1770
1775
|
"[rlslb %p] rls_request=%p %s, error=%s, status={%d, %s} RLS call "
|
1771
1776
|
"response received",
|
1772
1777
|
lb_policy_.get(), this, key_.ToString().c_str(),
|
1773
|
-
|
1778
|
+
StatusToString(error).c_str(), status_recv_,
|
1774
1779
|
status_message.c_str());
|
1775
1780
|
}
|
1776
1781
|
// Parse response.
|
1777
1782
|
ResponseInfo response;
|
1778
|
-
if (!
|
1783
|
+
if (!error.ok()) {
|
1779
1784
|
grpc_status_code code;
|
1780
1785
|
std::string message;
|
1781
1786
|
grpc_error_get_status(error, deadline_, &code, &message,
|
@@ -1793,7 +1798,7 @@ void RlsLb::RlsRequest::OnRlsCallCompleteLocked(grpc_error_handle error) {
|
|
1793
1798
|
grpc_byte_buffer_destroy(recv_message_);
|
1794
1799
|
grpc_metadata_array_destroy(&recv_initial_metadata_);
|
1795
1800
|
grpc_metadata_array_destroy(&recv_trailing_metadata_);
|
1796
|
-
|
1801
|
+
CSliceUnref(status_details_recv_);
|
1797
1802
|
grpc_call_unref(call_);
|
1798
1803
|
call_ = nullptr;
|
1799
1804
|
// Return result to cache.
|
@@ -1844,7 +1849,7 @@ grpc_byte_buffer* RlsLb::RlsRequest::MakeRequestProto() {
|
|
1844
1849
|
grpc_lookup_v1_RouteLookupRequest_serialize(req, arena.ptr(), &len);
|
1845
1850
|
grpc_slice send_slice = grpc_slice_from_copied_buffer(buf, len);
|
1846
1851
|
grpc_byte_buffer* byte_buffer = grpc_raw_byte_buffer_create(&send_slice, 1);
|
1847
|
-
|
1852
|
+
CSliceUnref(send_slice);
|
1848
1853
|
return byte_buffer;
|
1849
1854
|
}
|
1850
1855
|
|
@@ -1859,7 +1864,7 @@ RlsLb::ResponseInfo RlsLb::RlsRequest::ParseResponseProto() {
|
|
1859
1864
|
grpc_lookup_v1_RouteLookupResponse_parse(
|
1860
1865
|
reinterpret_cast<const char*>(GRPC_SLICE_START_PTR(recv_slice)),
|
1861
1866
|
GRPC_SLICE_LENGTH(recv_slice), arena.ptr());
|
1862
|
-
|
1867
|
+
CSliceUnref(recv_slice);
|
1863
1868
|
if (response == nullptr) {
|
1864
1869
|
response_info.status = absl::InternalError("cannot parse RLS response");
|
1865
1870
|
return response_info;
|
@@ -2076,7 +2081,7 @@ void RlsLb::UpdatePickerAsync() {
|
|
2076
2081
|
GRPC_CLOSURE_CREATE(UpdatePickerCallback,
|
2077
2082
|
Ref(DEBUG_LOCATION, "UpdatePickerCallback").release(),
|
2078
2083
|
grpc_schedule_on_exec_ctx),
|
2079
|
-
|
2084
|
+
absl::OkStatus());
|
2080
2085
|
}
|
2081
2086
|
|
2082
2087
|
void RlsLb::UpdatePickerCallback(void* arg, grpc_error_handle /*error*/) {
|
@@ -2142,7 +2147,7 @@ void RlsLb::UpdatePickerLocked() {
|
|
2142
2147
|
status = absl::UnavailableError("no children available");
|
2143
2148
|
}
|
2144
2149
|
channel_control_helper()->UpdateState(
|
2145
|
-
state, status,
|
2150
|
+
state, status, std::make_unique<Picker>(Ref(DEBUG_LOCATION, "Picker")));
|
2146
2151
|
}
|
2147
2152
|
|
2148
2153
|
//
|
@@ -2421,14 +2426,8 @@ void RlsLbConfig::JsonPostLoad(const Json& json, const JsonArgs&,
|
|
2421
2426
|
if (it != json.object_value().end()) {
|
2422
2427
|
ValidationErrors::ScopedField field(errors,
|
2423
2428
|
".routeLookupChannelServiceConfig");
|
2424
|
-
|
2425
|
-
|
2426
|
-
auto service_config = MakeRefCounted<ServiceConfigImpl>(
|
2427
|
-
ChannelArgs(), rls_channel_service_config_, it->second, &child_error);
|
2428
|
-
if (!GRPC_ERROR_IS_NONE(child_error)) {
|
2429
|
-
errors->AddError(grpc_error_std_string(child_error));
|
2430
|
-
GRPC_ERROR_UNREF(child_error);
|
2431
|
-
}
|
2429
|
+
// Don't need to save the result here, just need the errors (if any).
|
2430
|
+
ServiceConfigImpl::Create(ChannelArgs(), it->second, errors);
|
2432
2431
|
}
|
2433
2432
|
// Validate childPolicyConfigTargetFieldName.
|
2434
2433
|
{
|
@@ -2507,7 +2506,7 @@ class RlsLbFactory : public LoadBalancingPolicyFactory {
|
|
2507
2506
|
|
2508
2507
|
void RegisterRlsLbPolicy(CoreConfiguration::Builder* builder) {
|
2509
2508
|
builder->lb_policy_registry()->RegisterLoadBalancingPolicyFactory(
|
2510
|
-
|
2509
|
+
std::make_unique<RlsLbFactory>());
|
2511
2510
|
}
|
2512
2511
|
|
2513
2512
|
} // namespace grpc_core
|
@@ -25,7 +25,6 @@
|
|
25
25
|
#include <utility>
|
26
26
|
#include <vector>
|
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/str_cat.h"
|
@@ -45,7 +44,6 @@
|
|
45
44
|
#include "src/core/lib/json/json.h"
|
46
45
|
#include "src/core/lib/load_balancing/lb_policy.h"
|
47
46
|
#include "src/core/lib/load_balancing/lb_policy_factory.h"
|
48
|
-
#include "src/core/lib/load_balancing/lb_policy_registry.h"
|
49
47
|
#include "src/core/lib/load_balancing/subchannel_interface.h"
|
50
48
|
#include "src/core/lib/resolver/server_address.h"
|
51
49
|
#include "src/core/lib/transport/connectivity_state.h"
|
@@ -307,7 +305,7 @@ absl::Status RoundRobin::UpdateLocked(UpdateArgs args) {
|
|
307
305
|
: args.addresses.status();
|
308
306
|
channel_control_helper()->UpdateState(
|
309
307
|
GRPC_CHANNEL_TRANSIENT_FAILURE, status,
|
310
|
-
|
308
|
+
std::make_unique<TransientFailurePicker>(status));
|
311
309
|
return status;
|
312
310
|
}
|
313
311
|
// Otherwise, if this is the initial update, immediately promote it to
|
@@ -316,7 +314,7 @@ absl::Status RoundRobin::UpdateLocked(UpdateArgs args) {
|
|
316
314
|
subchannel_list_ = std::move(latest_pending_subchannel_list_);
|
317
315
|
channel_control_helper()->UpdateState(
|
318
316
|
GRPC_CHANNEL_CONNECTING, absl::Status(),
|
319
|
-
|
317
|
+
std::make_unique<QueuePicker>(Ref(DEBUG_LOCATION, "QueuePicker")));
|
320
318
|
}
|
321
319
|
return absl::OkStatus();
|
322
320
|
}
|
@@ -387,8 +385,8 @@ void RoundRobin::RoundRobinSubchannelList::
|
|
387
385
|
gpr_log(GPR_INFO, "[RR %p] reporting READY with subchannel list %p", p,
|
388
386
|
this);
|
389
387
|
}
|
390
|
-
p->channel_control_helper()->UpdateState(
|
391
|
-
|
388
|
+
p->channel_control_helper()->UpdateState(GRPC_CHANNEL_READY, absl::Status(),
|
389
|
+
std::make_unique<Picker>(p, this));
|
392
390
|
} else if (num_connecting_ > 0) {
|
393
391
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_round_robin_trace)) {
|
394
392
|
gpr_log(GPR_INFO, "[RR %p] reporting CONNECTING with subchannel list %p",
|
@@ -396,7 +394,7 @@ void RoundRobin::RoundRobinSubchannelList::
|
|
396
394
|
}
|
397
395
|
p->channel_control_helper()->UpdateState(
|
398
396
|
GRPC_CHANNEL_CONNECTING, absl::Status(),
|
399
|
-
|
397
|
+
std::make_unique<QueuePicker>(p->Ref(DEBUG_LOCATION, "QueuePicker")));
|
400
398
|
} else if (num_transient_failure_ == num_subchannels()) {
|
401
399
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_round_robin_trace)) {
|
402
400
|
gpr_log(GPR_INFO,
|
@@ -410,7 +408,7 @@ void RoundRobin::RoundRobinSubchannelList::
|
|
410
408
|
}
|
411
409
|
p->channel_control_helper()->UpdateState(
|
412
410
|
GRPC_CHANNEL_TRANSIENT_FAILURE, last_failure_,
|
413
|
-
|
411
|
+
std::make_unique<TransientFailurePicker>(last_failure_));
|
414
412
|
}
|
415
413
|
}
|
416
414
|
|
@@ -525,7 +523,7 @@ class RoundRobinFactory : public LoadBalancingPolicyFactory {
|
|
525
523
|
|
526
524
|
void RegisterRoundRobinLbPolicy(CoreConfiguration::Builder* builder) {
|
527
525
|
builder->lb_policy_registry()->RegisterLoadBalancingPolicyFactory(
|
528
|
-
|
526
|
+
std::make_unique<RoundRobinFactory>());
|
529
527
|
}
|
530
528
|
|
531
529
|
} // namespace grpc_core
|