grpc 1.50.0.pre1 → 1.51.0
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/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 +57 -20
- 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
@@ -30,7 +30,6 @@
|
|
30
30
|
#include <grpc/support/log.h>
|
31
31
|
|
32
32
|
#include "src/core/lib/gpr/time_precise.h"
|
33
|
-
#include "src/core/lib/gpr/tls.h"
|
34
33
|
#include "src/core/lib/gprpp/debug_location.h"
|
35
34
|
#include "src/core/lib/gprpp/fork.h"
|
36
35
|
#include "src/core/lib/gprpp/time.h"
|
@@ -211,7 +210,7 @@ class ExecCtx {
|
|
211
210
|
unsigned starting_cpu_ = std::numeric_limits<unsigned>::max();
|
212
211
|
|
213
212
|
ScopedTimeCache time_cache_;
|
214
|
-
static
|
213
|
+
static thread_local ExecCtx* exec_ctx_;
|
215
214
|
ExecCtx* last_exec_ctx_ = Get();
|
216
215
|
};
|
217
216
|
|
@@ -326,7 +325,7 @@ class ApplicationCallbackExecCtx {
|
|
326
325
|
uintptr_t flags_{0u};
|
327
326
|
grpc_completion_queue_functor* head_{nullptr};
|
328
327
|
grpc_completion_queue_functor* tail_{nullptr};
|
329
|
-
static
|
328
|
+
static thread_local ApplicationCallbackExecCtx* callback_exec_ctx_;
|
330
329
|
};
|
331
330
|
|
332
331
|
} // namespace grpc_core
|
@@ -27,7 +27,6 @@
|
|
27
27
|
#include <grpc/support/log.h>
|
28
28
|
#include <grpc/support/sync.h>
|
29
29
|
|
30
|
-
#include "src/core/lib/gpr/tls.h"
|
31
30
|
#include "src/core/lib/gpr/useful.h"
|
32
31
|
#include "src/core/lib/gprpp/memory.h"
|
33
32
|
#include "src/core/lib/iomgr/exec_ctx.h"
|
@@ -52,7 +51,7 @@
|
|
52
51
|
namespace grpc_core {
|
53
52
|
namespace {
|
54
53
|
|
55
|
-
|
54
|
+
thread_local ThreadState* g_this_thread_state;
|
56
55
|
|
57
56
|
Executor* executors[static_cast<size_t>(ExecutorType::NUM_EXECUTORS)];
|
58
57
|
|
@@ -27,6 +27,8 @@
|
|
27
27
|
#include <string.h>
|
28
28
|
#include <sys/utsname.h>
|
29
29
|
|
30
|
+
#include "src/core/lib/gprpp/strerror.h"
|
31
|
+
|
30
32
|
namespace grpc_core {
|
31
33
|
|
32
34
|
bool KernelSupportsErrqueue() {
|
@@ -36,7 +38,7 @@ bool KernelSupportsErrqueue() {
|
|
36
38
|
// least 4.0.0
|
37
39
|
struct utsname buffer;
|
38
40
|
if (uname(&buffer) != 0) {
|
39
|
-
gpr_log(GPR_ERROR, "uname: %s",
|
41
|
+
gpr_log(GPR_ERROR, "uname: %s", StrError(errno).c_str());
|
40
42
|
return false;
|
41
43
|
}
|
42
44
|
char* release = buffer.release;
|
@@ -31,6 +31,7 @@
|
|
31
31
|
#include <grpc/support/log_windows.h>
|
32
32
|
|
33
33
|
#include "src/core/lib/debug/stats.h"
|
34
|
+
#include "src/core/lib/debug/stats_data.h"
|
34
35
|
#include "src/core/lib/gprpp/thd.h"
|
35
36
|
#include "src/core/lib/iomgr/iocp_windows.h"
|
36
37
|
#include "src/core/lib/iomgr/iomgr_internal.h"
|
@@ -22,7 +22,6 @@
|
|
22
22
|
|
23
23
|
#ifdef GRPC_POSIX_SOCKET_IOMGR
|
24
24
|
|
25
|
-
#include "src/core/lib/debug/trace.h"
|
26
25
|
#include "src/core/lib/iomgr/ev_posix.h"
|
27
26
|
#include "src/core/lib/iomgr/iomgr_internal.h"
|
28
27
|
#include "src/core/lib/iomgr/resolve_address.h"
|
@@ -39,6 +38,7 @@ extern grpc_pollset_vtable grpc_posix_pollset_vtable;
|
|
39
38
|
extern grpc_pollset_set_vtable grpc_posix_pollset_set_vtable;
|
40
39
|
|
41
40
|
static void iomgr_platform_init(void) {
|
41
|
+
grpc_core::ResetDNSResolver(std::make_unique<grpc_core::NativeDNSResolver>());
|
42
42
|
grpc_wakeup_fd_global_init();
|
43
43
|
grpc_event_engine_init();
|
44
44
|
grpc_tcp_posix_init();
|
@@ -50,6 +50,7 @@ static void iomgr_platform_shutdown(void) {
|
|
50
50
|
grpc_tcp_posix_shutdown();
|
51
51
|
grpc_event_engine_shutdown();
|
52
52
|
grpc_wakeup_fd_global_destroy();
|
53
|
+
grpc_core::ResetDNSResolver(nullptr); // delete the resolver
|
53
54
|
}
|
54
55
|
|
55
56
|
static void iomgr_platform_shutdown_background_closure(void) {
|
@@ -79,7 +80,6 @@ void grpc_set_default_iomgr_platform() {
|
|
79
80
|
grpc_set_timer_impl(&grpc_generic_timer_vtable);
|
80
81
|
grpc_set_pollset_vtable(&grpc_posix_pollset_vtable);
|
81
82
|
grpc_set_pollset_set_vtable(&grpc_posix_pollset_set_vtable);
|
82
|
-
grpc_core::SetDNSResolver(grpc_core::NativeDNSResolver::GetOrCreate());
|
83
83
|
grpc_tcp_client_global_init();
|
84
84
|
grpc_set_iomgr_platform_vtable(&vtable);
|
85
85
|
}
|
@@ -63,6 +63,7 @@ static void apple_iomgr_platform_flush(void) {}
|
|
63
63
|
|
64
64
|
static void apple_iomgr_platform_shutdown(void) {
|
65
65
|
grpc_pollset_global_shutdown();
|
66
|
+
grpc_core::ResetDNSResolver(nullptr); // delete the resolver
|
66
67
|
}
|
67
68
|
|
68
69
|
static void apple_iomgr_platform_shutdown_background_closure(void) {}
|
@@ -179,7 +180,7 @@ void grpc_set_default_iomgr_platform() {
|
|
179
180
|
}
|
180
181
|
grpc_tcp_client_global_init();
|
181
182
|
grpc_set_timer_impl(&grpc_generic_timer_vtable);
|
182
|
-
grpc_core::
|
183
|
+
grpc_core::ResetDNSResolver(std::make_unique<grpc_core::NativeDNSResolver>());
|
183
184
|
}
|
184
185
|
|
185
186
|
bool grpc_iomgr_run_in_background() {
|
@@ -61,6 +61,7 @@ static void iomgr_platform_init(void) {
|
|
61
61
|
grpc_iocp_init();
|
62
62
|
grpc_pollset_global_init();
|
63
63
|
grpc_wsa_socket_flags_init();
|
64
|
+
grpc_core::ResetDNSResolver(std::make_unique<grpc_core::NativeDNSResolver>());
|
64
65
|
}
|
65
66
|
|
66
67
|
static void iomgr_platform_flush(void) { grpc_iocp_flush(); }
|
@@ -69,6 +70,7 @@ static void iomgr_platform_shutdown(void) {
|
|
69
70
|
grpc_pollset_global_shutdown();
|
70
71
|
grpc_iocp_shutdown();
|
71
72
|
winsock_shutdown();
|
73
|
+
grpc_core::ResetDNSResolver(nullptr); // delete the resolver
|
72
74
|
}
|
73
75
|
|
74
76
|
static void iomgr_platform_shutdown_background_closure(void) {}
|
@@ -96,7 +98,6 @@ void grpc_set_default_iomgr_platform() {
|
|
96
98
|
grpc_set_timer_impl(&grpc_generic_timer_vtable);
|
97
99
|
grpc_set_pollset_vtable(&grpc_windows_pollset_vtable);
|
98
100
|
grpc_set_pollset_set_vtable(&grpc_windows_pollset_set_vtable);
|
99
|
-
grpc_core::SetDNSResolver(grpc_core::NativeDNSResolver::GetOrCreate());
|
100
101
|
grpc_set_iomgr_platform_vtable(&vtable);
|
101
102
|
}
|
102
103
|
|
@@ -37,7 +37,7 @@ grpc_error_handle grpc_load_file(const char* filename, int add_null_terminator,
|
|
37
37
|
grpc_slice result = grpc_empty_slice();
|
38
38
|
FILE* file;
|
39
39
|
size_t bytes_read = 0;
|
40
|
-
grpc_error_handle error
|
40
|
+
grpc_error_handle error;
|
41
41
|
|
42
42
|
GRPC_SCHEDULING_START_BLOCKING_REGION;
|
43
43
|
file = fopen(filename, "rb");
|
@@ -66,14 +66,10 @@ grpc_error_handle grpc_load_file(const char* filename, int add_null_terminator,
|
|
66
66
|
end:
|
67
67
|
*output = result;
|
68
68
|
if (file != nullptr) fclose(file);
|
69
|
-
if (!
|
70
|
-
grpc_error_handle error_out =
|
71
|
-
|
72
|
-
|
73
|
-
GRPC_ERROR_STR_FILENAME,
|
74
|
-
|
75
|
-
filename);
|
76
|
-
GRPC_ERROR_UNREF(error);
|
69
|
+
if (!error.ok()) {
|
70
|
+
grpc_error_handle error_out = grpc_error_set_str(
|
71
|
+
GRPC_ERROR_CREATE_REFERENCING("Failed to load file", &error, 1),
|
72
|
+
grpc_core::StatusStrProperty::kFilename, filename);
|
77
73
|
error = error_out;
|
78
74
|
}
|
79
75
|
GRPC_SCHEDULING_END_BLOCKING_REGION_NO_EXEC_CTX;
|
@@ -127,7 +127,7 @@ void LockfreeEvent::NotifyOn(grpc_closure* closure) {
|
|
127
127
|
closure when transitioning out of CLOSURE_NO_READY state (i.e there
|
128
128
|
is no other code that needs to 'happen-after' this) */
|
129
129
|
if (gpr_atm_no_barrier_cas(&state_, kClosureReady, kClosureNotReady)) {
|
130
|
-
ExecCtx::Run(DEBUG_LOCATION, closure,
|
130
|
+
ExecCtx::Run(DEBUG_LOCATION, closure, absl::OkStatus());
|
131
131
|
return; /* Successful. Return */
|
132
132
|
}
|
133
133
|
|
@@ -141,9 +141,9 @@ void LockfreeEvent::NotifyOn(grpc_closure* closure) {
|
|
141
141
|
if ((curr & kShutdownBit) > 0) {
|
142
142
|
grpc_error_handle shutdown_err =
|
143
143
|
internal::StatusGetFromHeapPtr(curr & ~kShutdownBit);
|
144
|
-
ExecCtx::Run(
|
145
|
-
|
146
|
-
|
144
|
+
ExecCtx::Run(
|
145
|
+
DEBUG_LOCATION, closure,
|
146
|
+
GRPC_ERROR_CREATE_REFERENCING("FD Shutdown", &shutdown_err, 1));
|
147
147
|
return;
|
148
148
|
}
|
149
149
|
|
@@ -156,7 +156,7 @@ void LockfreeEvent::NotifyOn(grpc_closure* closure) {
|
|
156
156
|
}
|
157
157
|
}
|
158
158
|
|
159
|
-
GPR_UNREACHABLE_CODE(return
|
159
|
+
GPR_UNREACHABLE_CODE(return);
|
160
160
|
}
|
161
161
|
|
162
162
|
bool LockfreeEvent::SetShutdown(grpc_error_handle shutdown_error) {
|
@@ -168,7 +168,7 @@ bool LockfreeEvent::SetShutdown(grpc_error_handle shutdown_error) {
|
|
168
168
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
|
169
169
|
gpr_log(GPR_DEBUG,
|
170
170
|
"LockfreeEvent::SetShutdown: %p curr=%" PRIxPTR " err=%s",
|
171
|
-
&state_, curr,
|
171
|
+
&state_, curr, StatusToString(shutdown_error).c_str());
|
172
172
|
}
|
173
173
|
switch (curr) {
|
174
174
|
case kClosureReady:
|
@@ -195,9 +195,9 @@ bool LockfreeEvent::SetShutdown(grpc_error_handle shutdown_error) {
|
|
195
195
|
happens-after on that edge), and a release to pair with anything
|
196
196
|
loading the shutdown state. */
|
197
197
|
if (gpr_atm_full_cas(&state_, curr, new_state)) {
|
198
|
-
ExecCtx::Run(
|
199
|
-
|
200
|
-
|
198
|
+
ExecCtx::Run(
|
199
|
+
DEBUG_LOCATION, reinterpret_cast<grpc_closure*>(curr),
|
200
|
+
GRPC_ERROR_CREATE_REFERENCING("FD Shutdown", &shutdown_error, 1));
|
201
201
|
return true;
|
202
202
|
}
|
203
203
|
|
@@ -246,7 +246,7 @@ void LockfreeEvent::SetReady() {
|
|
246
246
|
notify_on (or set_shutdown) */
|
247
247
|
else if (gpr_atm_full_cas(&state_, curr, kClosureNotReady)) {
|
248
248
|
ExecCtx::Run(DEBUG_LOCATION, reinterpret_cast<grpc_closure*>(curr),
|
249
|
-
|
249
|
+
absl::OkStatus());
|
250
250
|
return;
|
251
251
|
}
|
252
252
|
/* else the state changed again (only possible by either a racing
|
@@ -98,7 +98,7 @@ static void pollset_shutdown(grpc_pollset* pollset, grpc_closure* closure) {
|
|
98
98
|
pollset->shutting_down = 1;
|
99
99
|
grpc_pollset_kick(pollset, GRPC_POLLSET_KICK_BROADCAST);
|
100
100
|
if (!pollset->is_iocp_worker) {
|
101
|
-
grpc_core::ExecCtx::Run(DEBUG_LOCATION, closure,
|
101
|
+
grpc_core::ExecCtx::Run(DEBUG_LOCATION, closure, absl::OkStatus());
|
102
102
|
} else {
|
103
103
|
pollset->on_shutdown = closure;
|
104
104
|
}
|
@@ -147,7 +147,7 @@ static grpc_error_handle pollset_work(grpc_pollset* pollset,
|
|
147
147
|
|
148
148
|
if (pollset->shutting_down && pollset->on_shutdown != NULL) {
|
149
149
|
grpc_core::ExecCtx::Run(DEBUG_LOCATION, pollset->on_shutdown,
|
150
|
-
|
150
|
+
absl::OkStatus());
|
151
151
|
pollset->on_shutdown = NULL;
|
152
152
|
}
|
153
153
|
goto done;
|
@@ -180,7 +180,7 @@ done:
|
|
180
180
|
}
|
181
181
|
gpr_cv_destroy(&worker.cv);
|
182
182
|
if (worker_hdl) *worker_hdl = NULL;
|
183
|
-
return
|
183
|
+
return absl::OkStatus();
|
184
184
|
}
|
185
185
|
|
186
186
|
static grpc_error_handle pollset_kick(grpc_pollset* p,
|
@@ -231,7 +231,7 @@ static grpc_error_handle pollset_kick(grpc_pollset* p,
|
|
231
231
|
gpr_cv_signal(&next_global_worker->cv);
|
232
232
|
}
|
233
233
|
}
|
234
|
-
return
|
234
|
+
return absl::OkStatus();
|
235
235
|
}
|
236
236
|
|
237
237
|
grpc_pollset_vtable grpc_windows_pollset_vtable = {
|
@@ -31,8 +31,8 @@
|
|
31
31
|
// because Cython doesn't handle #defines well.
|
32
32
|
|
33
33
|
inline grpc_error_handle grpc_socket_error(char* error) {
|
34
|
-
return grpc_error_set_int(
|
35
|
-
|
34
|
+
return grpc_error_set_int(GRPC_ERROR_CREATE(error),
|
35
|
+
grpc_core::StatusIntProperty::kRpcStatus,
|
36
36
|
GRPC_STATUS_UNAVAILABLE);
|
37
37
|
}
|
38
38
|
|
@@ -23,19 +23,24 @@
|
|
23
23
|
|
24
24
|
#include <grpc/event_engine/event_engine.h>
|
25
25
|
#include <grpc/support/alloc.h>
|
26
|
+
#include <grpc/support/log.h>
|
27
|
+
|
28
|
+
#include "src/core/lib/gprpp/no_destruct.h"
|
26
29
|
|
27
30
|
namespace grpc_core {
|
28
31
|
const char* kDefaultSecurePort = "https";
|
29
32
|
|
30
33
|
namespace {
|
31
|
-
DNSResolver
|
34
|
+
NoDestruct<std::shared_ptr<DNSResolver>> g_dns_resolver;
|
32
35
|
}
|
33
36
|
|
34
37
|
constexpr DNSResolver::TaskHandle DNSResolver::kNullHandle;
|
35
38
|
|
36
|
-
void
|
39
|
+
void ResetDNSResolver(std::shared_ptr<DNSResolver> resolver) {
|
40
|
+
*g_dns_resolver = std::move(resolver);
|
41
|
+
}
|
37
42
|
|
38
|
-
DNSResolver
|
43
|
+
std::shared_ptr<DNSResolver> GetDNSResolver() { return *g_dns_resolver; }
|
39
44
|
|
40
45
|
std::string DNSResolver::HandleToString(TaskHandle handle) {
|
41
46
|
return absl::StrCat("{", handle.keys[0], ",", handle.keys[1], "}");
|
@@ -104,13 +104,12 @@ class DNSResolver {
|
|
104
104
|
};
|
105
105
|
|
106
106
|
// Override the active DNS resolver which should be used for all DNS
|
107
|
-
// resolution in gRPC.
|
108
|
-
|
109
|
-
void SetDNSResolver(DNSResolver* resolver);
|
107
|
+
// resolution in gRPC.
|
108
|
+
void ResetDNSResolver(std::shared_ptr<DNSResolver> resolver);
|
110
109
|
|
111
110
|
// Get the singleton DNS resolver instance which should be used for all
|
112
111
|
// DNS resolution in gRPC.
|
113
|
-
DNSResolver
|
112
|
+
std::shared_ptr<DNSResolver> GetDNSResolver();
|
114
113
|
|
115
114
|
} // namespace grpc_core
|
116
115
|
|
@@ -37,7 +37,7 @@ class DNSCallbackExecCtxScheduler {
|
|
37
37
|
absl::StatusOr<std::vector<grpc_resolved_address>> param)
|
38
38
|
: on_done_(std::move(on_done)), param_(std::move(param)) {
|
39
39
|
GRPC_CLOSURE_INIT(&closure_, RunCallback, this, grpc_schedule_on_exec_ctx);
|
40
|
-
ExecCtx::Run(DEBUG_LOCATION, &closure_,
|
40
|
+
ExecCtx::Run(DEBUG_LOCATION, &closure_, absl::OkStatus());
|
41
41
|
}
|
42
42
|
|
43
43
|
private:
|
@@ -47,8 +47,6 @@
|
|
47
47
|
namespace grpc_core {
|
48
48
|
namespace {
|
49
49
|
|
50
|
-
using ::grpc_event_engine::experimental::GetDefaultEventEngine;
|
51
|
-
|
52
50
|
class NativeDNSRequest {
|
53
51
|
public:
|
54
52
|
NativeDNSRequest(
|
@@ -57,7 +55,7 @@ class NativeDNSRequest {
|
|
57
55
|
on_done)
|
58
56
|
: name_(name), default_port_(default_port), on_done_(std::move(on_done)) {
|
59
57
|
GRPC_CLOSURE_INIT(&request_closure_, DoRequestThread, this, nullptr);
|
60
|
-
Executor::Run(&request_closure_,
|
58
|
+
Executor::Run(&request_closure_, absl::OkStatus(), ExecutorType::RESOLVER);
|
61
59
|
}
|
62
60
|
|
63
61
|
private:
|
@@ -81,11 +79,6 @@ class NativeDNSRequest {
|
|
81
79
|
|
82
80
|
} // namespace
|
83
81
|
|
84
|
-
NativeDNSResolver* NativeDNSResolver::GetOrCreate() {
|
85
|
-
static NativeDNSResolver* instance = new NativeDNSResolver();
|
86
|
-
return instance;
|
87
|
-
}
|
88
|
-
|
89
82
|
DNSResolver::TaskHandle NativeDNSResolver::LookupHostname(
|
90
83
|
std::function<void(absl::StatusOr<std::vector<grpc_resolved_address>>)>
|
91
84
|
on_done,
|
@@ -112,16 +105,14 @@ NativeDNSResolver::LookupHostnameBlocking(absl::string_view name,
|
|
112
105
|
// parse name, splitting it into host and port parts
|
113
106
|
SplitHostPort(name, &host, &port);
|
114
107
|
if (host.empty()) {
|
115
|
-
err = grpc_error_set_str(
|
116
|
-
|
117
|
-
GRPC_ERROR_STR_TARGET_ADDRESS, name);
|
108
|
+
err = grpc_error_set_str(GRPC_ERROR_CREATE("unparseable host:port"),
|
109
|
+
StatusStrProperty::kTargetAddress, name);
|
118
110
|
goto done;
|
119
111
|
}
|
120
112
|
if (port.empty()) {
|
121
113
|
if (default_port.empty()) {
|
122
|
-
err = grpc_error_set_str(
|
123
|
-
|
124
|
-
GRPC_ERROR_STR_TARGET_ADDRESS, name);
|
114
|
+
err = grpc_error_set_str(GRPC_ERROR_CREATE("no port in name"),
|
115
|
+
StatusStrProperty::kTargetAddress, name);
|
125
116
|
goto done;
|
126
117
|
}
|
127
118
|
port = std::string(default_port);
|
@@ -150,12 +141,11 @@ NativeDNSResolver::LookupHostnameBlocking(absl::string_view name,
|
|
150
141
|
err = grpc_error_set_str(
|
151
142
|
grpc_error_set_str(
|
152
143
|
grpc_error_set_str(
|
153
|
-
grpc_error_set_int(
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
GRPC_ERROR_STR_TARGET_ADDRESS, name);
|
144
|
+
grpc_error_set_int(GRPC_ERROR_CREATE(gai_strerror(s)),
|
145
|
+
StatusIntProperty::kErrorNo, s),
|
146
|
+
StatusStrProperty::kOsError, gai_strerror(s)),
|
147
|
+
StatusStrProperty::kSyscall, "getaddrinfo"),
|
148
|
+
StatusStrProperty::kTargetAddress, name);
|
159
149
|
goto done;
|
160
150
|
}
|
161
151
|
// Success path: fill in addrs
|
@@ -165,16 +155,15 @@ NativeDNSResolver::LookupHostnameBlocking(absl::string_view name,
|
|
165
155
|
addr.len = resp->ai_addrlen;
|
166
156
|
addresses.push_back(addr);
|
167
157
|
}
|
168
|
-
err =
|
158
|
+
err = absl::OkStatus();
|
169
159
|
done:
|
170
160
|
if (result) {
|
171
161
|
freeaddrinfo(result);
|
172
162
|
}
|
173
|
-
if (
|
163
|
+
if (err.ok()) {
|
174
164
|
return addresses;
|
175
165
|
}
|
176
166
|
auto error_result = grpc_error_to_absl_status(err);
|
177
|
-
GRPC_ERROR_UNREF(err);
|
178
167
|
return error_result;
|
179
168
|
}
|
180
169
|
|
@@ -184,7 +173,7 @@ DNSResolver::TaskHandle NativeDNSResolver::LookupSRV(
|
|
184
173
|
absl::string_view /* name */, Duration /* timeout */,
|
185
174
|
grpc_pollset_set* /* interested_parties */,
|
186
175
|
absl::string_view /* name_server */) {
|
187
|
-
GetDefaultEventEngine()->Run([on_resolved] {
|
176
|
+
grpc_event_engine::experimental::GetDefaultEventEngine()->Run([on_resolved] {
|
188
177
|
ApplicationCallbackExecCtx app_exec_ctx;
|
189
178
|
ExecCtx exec_ctx;
|
190
179
|
on_resolved(absl::UnimplementedError(
|
@@ -199,7 +188,7 @@ DNSResolver::TaskHandle NativeDNSResolver::LookupTXT(
|
|
199
188
|
grpc_pollset_set* /* interested_parties */,
|
200
189
|
absl::string_view /* name_server */) {
|
201
190
|
// Not supported
|
202
|
-
GetDefaultEventEngine()->Run([on_resolved] {
|
191
|
+
grpc_event_engine::experimental::GetDefaultEventEngine()->Run([on_resolved] {
|
203
192
|
ApplicationCallbackExecCtx app_exec_ctx;
|
204
193
|
ExecCtx exec_ctx;
|
205
194
|
on_resolved(absl::UnimplementedError(
|
@@ -29,8 +29,7 @@ namespace grpc_core {
|
|
29
29
|
// A DNS resolver which uses the native platform's getaddrinfo API.
|
30
30
|
class NativeDNSResolver : public DNSResolver {
|
31
31
|
public:
|
32
|
-
|
33
|
-
static NativeDNSResolver* GetOrCreate();
|
32
|
+
NativeDNSResolver() = default;
|
34
33
|
|
35
34
|
TaskHandle LookupHostname(
|
36
35
|
std::function<void(absl::StatusOr<std::vector<grpc_resolved_address>>)>
|
@@ -50,8 +50,6 @@
|
|
50
50
|
namespace grpc_core {
|
51
51
|
namespace {
|
52
52
|
|
53
|
-
using ::grpc_event_engine::experimental::GetDefaultEventEngine;
|
54
|
-
|
55
53
|
class NativeDNSRequest {
|
56
54
|
public:
|
57
55
|
NativeDNSRequest(
|
@@ -60,7 +58,7 @@ class NativeDNSRequest {
|
|
60
58
|
on_done)
|
61
59
|
: name_(name), default_port_(default_port), on_done_(std::move(on_done)) {
|
62
60
|
GRPC_CLOSURE_INIT(&request_closure_, DoRequestThread, this, nullptr);
|
63
|
-
Executor::Run(&request_closure_,
|
61
|
+
Executor::Run(&request_closure_, absl::OkStatus(), ExecutorType::RESOLVER);
|
64
62
|
}
|
65
63
|
|
66
64
|
private:
|
@@ -84,10 +82,7 @@ class NativeDNSRequest {
|
|
84
82
|
|
85
83
|
} // namespace
|
86
84
|
|
87
|
-
NativeDNSResolver
|
88
|
-
static NativeDNSResolver* instance = new NativeDNSResolver();
|
89
|
-
return instance;
|
90
|
-
}
|
85
|
+
NativeDNSResolver::NativeDNSResolver() {}
|
91
86
|
|
92
87
|
DNSResolver::TaskHandle NativeDNSResolver::LookupHostname(
|
93
88
|
std::function<void(absl::StatusOr<std::vector<grpc_resolved_address>>)>
|
@@ -106,8 +101,7 @@ NativeDNSResolver::LookupHostnameBlocking(absl::string_view name,
|
|
106
101
|
struct addrinfo hints;
|
107
102
|
struct addrinfo *result = NULL, *resp;
|
108
103
|
int s;
|
109
|
-
|
110
|
-
grpc_error_handle error = GRPC_ERROR_NONE;
|
104
|
+
grpc_error_handle error;
|
111
105
|
std::vector<grpc_resolved_address> addresses;
|
112
106
|
|
113
107
|
// parse name, splitting it into host and port parts
|
@@ -115,14 +109,13 @@ NativeDNSResolver::LookupHostnameBlocking(absl::string_view name,
|
|
115
109
|
std::string port;
|
116
110
|
SplitHostPort(name, &host, &port);
|
117
111
|
if (host.empty()) {
|
118
|
-
error =
|
119
|
-
absl::StrFormat("unparseable host:port: '%s'", name));
|
112
|
+
error =
|
113
|
+
GRPC_ERROR_CREATE(absl::StrFormat("unparseable host:port: '%s'", name));
|
120
114
|
goto done;
|
121
115
|
}
|
122
116
|
if (port.empty()) {
|
123
117
|
if (default_port.empty()) {
|
124
|
-
error =
|
125
|
-
absl::StrFormat("no port in name '%s'", name));
|
118
|
+
error = GRPC_ERROR_CREATE(absl::StrFormat("no port in name '%s'", name));
|
126
119
|
goto done;
|
127
120
|
}
|
128
121
|
port = std::string(default_port);
|
@@ -154,21 +147,25 @@ done:
|
|
154
147
|
if (result) {
|
155
148
|
freeaddrinfo(result);
|
156
149
|
}
|
157
|
-
if (
|
150
|
+
if (error.ok()) {
|
158
151
|
return addresses;
|
159
152
|
}
|
160
153
|
auto error_result = grpc_error_to_absl_status(error);
|
161
|
-
GRPC_ERROR_UNREF(error);
|
162
154
|
return error_result;
|
163
155
|
}
|
164
156
|
|
157
|
+
void RunCallbackOnDefaultEventEngine(absl::AnyInvocable<void()> f) {
|
158
|
+
auto engine = grpc_event_engine::experimental::GetDefaultEventEngine();
|
159
|
+
engine->Run([f = std::move(f), engine]() mutable { f(); });
|
160
|
+
}
|
161
|
+
|
165
162
|
DNSResolver::TaskHandle NativeDNSResolver::LookupSRV(
|
166
163
|
std::function<void(absl::StatusOr<std::vector<grpc_resolved_address>>)>
|
167
164
|
on_resolved,
|
168
165
|
absl::string_view /* name */, Duration /* deadline */,
|
169
166
|
grpc_pollset_set* /* interested_parties */,
|
170
167
|
absl::string_view /* name_server */) {
|
171
|
-
|
168
|
+
RunCallbackOnDefaultEventEngine([on_resolved] {
|
172
169
|
ApplicationCallbackExecCtx app_exec_ctx;
|
173
170
|
ExecCtx exec_ctx;
|
174
171
|
on_resolved(absl::UnimplementedError(
|
@@ -183,7 +180,7 @@ DNSResolver::TaskHandle NativeDNSResolver::LookupTXT(
|
|
183
180
|
grpc_pollset_set* /* interested_parties */,
|
184
181
|
absl::string_view /* name_server */) {
|
185
182
|
// Not supported
|
186
|
-
|
183
|
+
RunCallbackOnDefaultEventEngine([on_resolved] {
|
187
184
|
ApplicationCallbackExecCtx app_exec_ctx;
|
188
185
|
ExecCtx exec_ctx;
|
189
186
|
on_resolved(absl::UnimplementedError(
|
@@ -29,8 +29,7 @@ namespace grpc_core {
|
|
29
29
|
// A DNS resolver which uses the native platform's getaddrinfo API.
|
30
30
|
class NativeDNSResolver : public DNSResolver {
|
31
31
|
public:
|
32
|
-
|
33
|
-
static NativeDNSResolver* GetOrCreate();
|
32
|
+
NativeDNSResolver();
|
34
33
|
|
35
34
|
TaskHandle LookupHostname(
|
36
35
|
std::function<void(absl::StatusOr<std::vector<grpc_resolved_address>>)>
|