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
data/src/core/lib/iomgr/error.h
CHANGED
@@ -42,123 +42,7 @@
|
|
42
42
|
|
43
43
|
typedef absl::Status grpc_error_handle;
|
44
44
|
|
45
|
-
|
46
|
-
/// 'errno' from the operating system
|
47
|
-
GRPC_ERROR_INT_ERRNO =
|
48
|
-
static_cast<int>(grpc_core::StatusIntProperty::kErrorNo),
|
49
|
-
/// __LINE__ from the call site creating the error
|
50
|
-
GRPC_ERROR_INT_FILE_LINE =
|
51
|
-
static_cast<int>(grpc_core::StatusIntProperty::kFileLine),
|
52
|
-
/// stream identifier: for errors that are associated with an individual
|
53
|
-
/// wire stream
|
54
|
-
GRPC_ERROR_INT_STREAM_ID =
|
55
|
-
static_cast<int>(grpc_core::StatusIntProperty::kStreamId),
|
56
|
-
/// grpc status code representing this error
|
57
|
-
GRPC_ERROR_INT_GRPC_STATUS =
|
58
|
-
static_cast<int>(grpc_core::StatusIntProperty::kRpcStatus),
|
59
|
-
/// offset into some binary blob (usually represented by
|
60
|
-
/// GRPC_ERROR_STR_RAW_BYTES) where the error occurred
|
61
|
-
GRPC_ERROR_INT_OFFSET =
|
62
|
-
static_cast<int>(grpc_core::StatusIntProperty::kOffset),
|
63
|
-
/// context sensitive index associated with the error
|
64
|
-
GRPC_ERROR_INT_INDEX = static_cast<int>(grpc_core::StatusIntProperty::kIndex),
|
65
|
-
/// context sensitive size associated with the error
|
66
|
-
GRPC_ERROR_INT_SIZE = static_cast<int>(grpc_core::StatusIntProperty::kSize),
|
67
|
-
/// http2 error code associated with the error (see the HTTP2 RFC)
|
68
|
-
GRPC_ERROR_INT_HTTP2_ERROR =
|
69
|
-
static_cast<int>(grpc_core::StatusIntProperty::kHttp2Error),
|
70
|
-
/// TSI status code associated with the error
|
71
|
-
GRPC_ERROR_INT_TSI_CODE =
|
72
|
-
static_cast<int>(grpc_core::StatusIntProperty::kTsiCode),
|
73
|
-
/// WSAGetLastError() reported when this error occurred
|
74
|
-
GRPC_ERROR_INT_WSA_ERROR =
|
75
|
-
static_cast<int>(grpc_core::StatusIntProperty::kWsaError),
|
76
|
-
/// File descriptor associated with this error
|
77
|
-
GRPC_ERROR_INT_FD = static_cast<int>(grpc_core::StatusIntProperty::kFd),
|
78
|
-
/// HTTP status (i.e. 404)
|
79
|
-
GRPC_ERROR_INT_HTTP_STATUS =
|
80
|
-
static_cast<int>(grpc_core::StatusIntProperty::kHttpStatus),
|
81
|
-
/// chttp2: did the error occur while a write was in progress
|
82
|
-
GRPC_ERROR_INT_OCCURRED_DURING_WRITE =
|
83
|
-
static_cast<int>(grpc_core::StatusIntProperty::kOccurredDuringWrite),
|
84
|
-
/// channel connectivity state associated with the error
|
85
|
-
GRPC_ERROR_INT_CHANNEL_CONNECTIVITY_STATE =
|
86
|
-
static_cast<int>(grpc_core::StatusIntProperty::ChannelConnectivityState),
|
87
|
-
/// LB policy drop
|
88
|
-
GRPC_ERROR_INT_LB_POLICY_DROP =
|
89
|
-
static_cast<int>(grpc_core::StatusIntProperty::kLbPolicyDrop),
|
90
|
-
|
91
|
-
/// Must always be last
|
92
|
-
GRPC_ERROR_INT_MAX,
|
93
|
-
} grpc_error_ints;
|
94
|
-
|
95
|
-
typedef enum {
|
96
|
-
/// top-level textual description of this error
|
97
|
-
GRPC_ERROR_STR_DESCRIPTION =
|
98
|
-
static_cast<int>(grpc_core::StatusStrProperty::kDescription),
|
99
|
-
/// source file in which this error occurred
|
100
|
-
GRPC_ERROR_STR_FILE = static_cast<int>(grpc_core::StatusStrProperty::kFile),
|
101
|
-
/// operating system description of this error
|
102
|
-
GRPC_ERROR_STR_OS_ERROR =
|
103
|
-
static_cast<int>(grpc_core::StatusStrProperty::kOsError),
|
104
|
-
/// syscall that generated this error
|
105
|
-
GRPC_ERROR_STR_SYSCALL =
|
106
|
-
static_cast<int>(grpc_core::StatusStrProperty::kSyscall),
|
107
|
-
/// peer that we were trying to communicate when this error occurred
|
108
|
-
GRPC_ERROR_STR_TARGET_ADDRESS =
|
109
|
-
static_cast<int>(grpc_core::StatusStrProperty::kTargetAddress),
|
110
|
-
/// grpc status message associated with this error
|
111
|
-
GRPC_ERROR_STR_GRPC_MESSAGE =
|
112
|
-
static_cast<int>(grpc_core::StatusStrProperty::kGrpcMessage),
|
113
|
-
/// hex dump (or similar) with the data that generated this error
|
114
|
-
GRPC_ERROR_STR_RAW_BYTES =
|
115
|
-
static_cast<int>(grpc_core::StatusStrProperty::kRawBytes),
|
116
|
-
/// tsi error string associated with this error
|
117
|
-
GRPC_ERROR_STR_TSI_ERROR =
|
118
|
-
static_cast<int>(grpc_core::StatusStrProperty::kTsiError),
|
119
|
-
/// filename that we were trying to read/write when this error occurred
|
120
|
-
GRPC_ERROR_STR_FILENAME =
|
121
|
-
static_cast<int>(grpc_core::StatusStrProperty::kFilename),
|
122
|
-
/// key associated with the error
|
123
|
-
GRPC_ERROR_STR_KEY = static_cast<int>(grpc_core::StatusStrProperty::kKey),
|
124
|
-
/// value associated with the error
|
125
|
-
GRPC_ERROR_STR_VALUE = static_cast<int>(grpc_core::StatusStrProperty::kValue),
|
126
|
-
|
127
|
-
/// Must always be last
|
128
|
-
GRPC_ERROR_STR_MAX,
|
129
|
-
} grpc_error_strs;
|
130
|
-
|
131
|
-
typedef enum {
|
132
|
-
/// timestamp of error creation
|
133
|
-
GRPC_ERROR_TIME_CREATED,
|
134
|
-
|
135
|
-
/// Must always be last
|
136
|
-
GRPC_ERROR_TIME_MAX,
|
137
|
-
} grpc_error_times;
|
138
|
-
|
139
|
-
std::string grpc_error_std_string(grpc_error_handle error);
|
140
|
-
|
141
|
-
// debug only toggles that allow for a sanity to check that ensures we will
|
142
|
-
// never create any errors in the per-RPC hotpath.
|
143
|
-
void grpc_disable_error_creation();
|
144
|
-
void grpc_enable_error_creation();
|
145
|
-
|
146
|
-
#define GRPC_ERROR_NONE absl::OkStatus()
|
147
|
-
#define GRPC_ERROR_OOM absl::Status(absl::ResourceExhaustedError(""))
|
148
|
-
#define GRPC_ERROR_CANCELLED absl::CancelledError()
|
149
|
-
|
150
|
-
#define GRPC_ERROR_REF(err) (err)
|
151
|
-
#define GRPC_ERROR_UNREF(err) (void)(err)
|
152
|
-
|
153
|
-
#define GRPC_ERROR_IS_NONE(err) (err).ok()
|
154
|
-
|
155
|
-
#define GRPC_ERROR_CREATE_FROM_STATIC_STRING(desc) \
|
156
|
-
StatusCreate(absl::StatusCode::kUnknown, desc, DEBUG_LOCATION, {})
|
157
|
-
#define GRPC_ERROR_CREATE_FROM_COPIED_STRING(desc) \
|
158
|
-
StatusCreate(absl::StatusCode::kUnknown, desc, DEBUG_LOCATION, {})
|
159
|
-
#define GRPC_ERROR_CREATE_FROM_CPP_STRING(desc) \
|
160
|
-
StatusCreate(absl::StatusCode::kUnknown, desc, DEBUG_LOCATION, {})
|
161
|
-
#define GRPC_ERROR_CREATE_FROM_STRING_VIEW(desc) \
|
45
|
+
#define GRPC_ERROR_CREATE(desc) \
|
162
46
|
StatusCreate(absl::StatusCode::kUnknown, desc, DEBUG_LOCATION, {})
|
163
47
|
|
164
48
|
absl::Status grpc_status_create(absl::StatusCode code, absl::string_view msg,
|
@@ -166,22 +50,18 @@ absl::Status grpc_status_create(absl::StatusCode code, absl::string_view msg,
|
|
166
50
|
size_t children_count,
|
167
51
|
absl::Status* children) GRPC_MUST_USE_RESULT;
|
168
52
|
|
169
|
-
// Create an error that references some other errors.
|
170
|
-
|
171
|
-
#define GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(desc, errs, count) \
|
172
|
-
grpc_status_create(absl::StatusCode::kUnknown, desc, DEBUG_LOCATION, count, \
|
173
|
-
errs)
|
174
|
-
#define GRPC_ERROR_CREATE_REFERENCING_FROM_COPIED_STRING(desc, errs, count) \
|
53
|
+
// Create an error that references some other errors.
|
54
|
+
#define GRPC_ERROR_CREATE_REFERENCING(desc, errs, count) \
|
175
55
|
grpc_status_create(absl::StatusCode::kUnknown, desc, DEBUG_LOCATION, count, \
|
176
56
|
errs)
|
177
57
|
|
178
58
|
// Consumes all the errors in the vector and forms a referencing error from
|
179
|
-
// them. If the vector is empty, return
|
59
|
+
// them. If the vector is empty, return absl::OkStatus().
|
180
60
|
template <typename VectorType>
|
181
61
|
static absl::Status grpc_status_create_from_vector(
|
182
62
|
const grpc_core::DebugLocation& location, absl::string_view desc,
|
183
63
|
VectorType* error_list) {
|
184
|
-
absl::Status error
|
64
|
+
absl::Status error;
|
185
65
|
if (error_list->size() != 0) {
|
186
66
|
error = grpc_status_create(absl::StatusCode::kUnknown, desc, location,
|
187
67
|
error_list->size(), error_list->data());
|
@@ -192,14 +72,12 @@ static absl::Status grpc_status_create_from_vector(
|
|
192
72
|
|
193
73
|
#define GRPC_ERROR_CREATE_FROM_VECTOR(desc, error_list) \
|
194
74
|
grpc_status_create_from_vector(DEBUG_LOCATION, desc, error_list)
|
195
|
-
#define GRPC_ERROR_CREATE_FROM_VECTOR_AND_CPP_STRING(desc, error_list) \
|
196
|
-
grpc_status_create_from_vector(DEBUG_LOCATION, desc, error_list)
|
197
75
|
|
198
76
|
absl::Status grpc_os_error(const grpc_core::DebugLocation& location, int err,
|
199
77
|
const char* call_name) GRPC_MUST_USE_RESULT;
|
200
78
|
|
201
79
|
inline absl::Status grpc_assert_never_ok(absl::Status error) {
|
202
|
-
GPR_ASSERT(!
|
80
|
+
GPR_ASSERT(!error.ok());
|
203
81
|
return error;
|
204
82
|
}
|
205
83
|
|
@@ -215,18 +93,18 @@ absl::Status grpc_wsa_error(const grpc_core::DebugLocation& location, int err,
|
|
215
93
|
grpc_wsa_error(DEBUG_LOCATION, err, call_name)
|
216
94
|
|
217
95
|
grpc_error_handle grpc_error_set_int(grpc_error_handle src,
|
218
|
-
|
96
|
+
grpc_core::StatusIntProperty which,
|
219
97
|
intptr_t value) GRPC_MUST_USE_RESULT;
|
220
98
|
/// It is an error to pass nullptr as `p`. Caller should allocate a phony
|
221
99
|
/// intptr_t for `p`, even if the value of `p` is not used.
|
222
|
-
bool grpc_error_get_int(grpc_error_handle error,
|
223
|
-
intptr_t* p);
|
100
|
+
bool grpc_error_get_int(grpc_error_handle error,
|
101
|
+
grpc_core::StatusIntProperty which, intptr_t* p);
|
224
102
|
grpc_error_handle grpc_error_set_str(
|
225
|
-
grpc_error_handle src,
|
103
|
+
grpc_error_handle src, grpc_core::StatusStrProperty which,
|
226
104
|
absl::string_view str) GRPC_MUST_USE_RESULT;
|
227
105
|
/// Returns false if the specified string is not set.
|
228
|
-
bool grpc_error_get_str(grpc_error_handle error,
|
229
|
-
std::string* str);
|
106
|
+
bool grpc_error_get_str(grpc_error_handle error,
|
107
|
+
grpc_core::StatusStrProperty which, std::string* str);
|
230
108
|
|
231
109
|
/// Add a child error: an error that is believed to have contributed to this
|
232
110
|
/// error occurring. Allows root causing high level errors from lower level
|
@@ -234,9 +112,9 @@ bool grpc_error_get_str(grpc_error_handle error, grpc_error_strs which,
|
|
234
112
|
/// child error.
|
235
113
|
///
|
236
114
|
/// Edge Conditions -
|
237
|
-
/// 1) If either of \a src or \a child is
|
238
|
-
/// to the other argument. 2) If both \a src and \a child are
|
239
|
-
/// returns
|
115
|
+
/// 1) If either of \a src or \a child is absl::OkStatus(), returns a reference
|
116
|
+
/// to the other argument. 2) If both \a src and \a child are absl::OkStatus(),
|
117
|
+
/// returns absl::OkStatus(). 3) If \a src and \a child point to the same error,
|
240
118
|
/// returns a single reference. (Note that, 2 references should have been
|
241
119
|
/// received to the error in this case.)
|
242
120
|
grpc_error_handle grpc_error_add_child(
|
@@ -246,8 +124,7 @@ bool grpc_log_error(const char* what, grpc_error_handle error, const char* file,
|
|
246
124
|
int line);
|
247
125
|
inline bool grpc_log_if_error(const char* what, grpc_error_handle error,
|
248
126
|
const char* file, int line) {
|
249
|
-
return
|
250
|
-
: grpc_log_error(what, error, file, line);
|
127
|
+
return error.ok() ? true : grpc_log_error(what, error, file, line);
|
251
128
|
}
|
252
129
|
|
253
130
|
#define GRPC_LOG_IF_ERROR(what, error) \
|
@@ -257,22 +134,16 @@ inline bool grpc_log_if_error(const char* what, grpc_error_handle error,
|
|
257
134
|
/// This could be considered as atomic<grpc_error_handle>.
|
258
135
|
class AtomicError {
|
259
136
|
public:
|
260
|
-
AtomicError()
|
261
|
-
|
262
|
-
lock_ = GPR_SPINLOCK_STATIC_INITIALIZER;
|
263
|
-
}
|
264
|
-
explicit AtomicError(grpc_error_handle error) {
|
265
|
-
error_ = GRPC_ERROR_REF(error);
|
266
|
-
}
|
267
|
-
~AtomicError() { GRPC_ERROR_UNREF(error_); }
|
137
|
+
AtomicError() = default;
|
138
|
+
explicit AtomicError(grpc_error_handle error) { error_ = error; }
|
268
139
|
|
269
140
|
AtomicError(const AtomicError&) = delete;
|
270
141
|
AtomicError& operator=(const AtomicError&) = delete;
|
271
142
|
|
272
|
-
/// returns get() ==
|
143
|
+
/// returns get() == absl::OkStatus()
|
273
144
|
bool ok() {
|
274
145
|
gpr_spinlock_lock(&lock_);
|
275
|
-
bool ret =
|
146
|
+
bool ret = error_.ok();
|
276
147
|
gpr_spinlock_unlock(&lock_);
|
277
148
|
return ret;
|
278
149
|
}
|
@@ -286,14 +157,13 @@ class AtomicError {
|
|
286
157
|
|
287
158
|
void set(grpc_error_handle error) {
|
288
159
|
gpr_spinlock_lock(&lock_);
|
289
|
-
|
290
|
-
error_ = GRPC_ERROR_REF(error);
|
160
|
+
error_ = error;
|
291
161
|
gpr_spinlock_unlock(&lock_);
|
292
162
|
}
|
293
163
|
|
294
164
|
private:
|
295
165
|
grpc_error_handle error_;
|
296
|
-
gpr_spinlock lock_;
|
166
|
+
gpr_spinlock lock_ = GPR_SPINLOCK_STATIC_INITIALIZER;
|
297
167
|
};
|
298
168
|
|
299
169
|
#endif /* GRPC_CORE_LIB_IOMGR_ERROR_H */
|
@@ -256,11 +256,11 @@ static grpc_error_handle pollset_work(grpc_pollset* pollset,
|
|
256
256
|
// callback will be called.
|
257
257
|
if (apple_pollset->is_shutdown && apple_pollset->workers.empty()) {
|
258
258
|
grpc_core::ExecCtx::Run(DEBUG_LOCATION, apple_pollset->shutdown_closure,
|
259
|
-
|
259
|
+
absl::OkStatus());
|
260
260
|
}
|
261
261
|
}
|
262
262
|
|
263
|
-
return
|
263
|
+
return absl::OkStatus();
|
264
264
|
}
|
265
265
|
|
266
266
|
/// Kick a specific worker. The caller must acquire the lock GrpcApplePollset.mu
|
@@ -297,7 +297,7 @@ static grpc_error_handle pollset_kick(grpc_pollset* pollset,
|
|
297
297
|
kick_worker(actual_worker);
|
298
298
|
}
|
299
299
|
|
300
|
-
return
|
300
|
+
return absl::OkStatus();
|
301
301
|
}
|
302
302
|
|
303
303
|
static void pollset_init(grpc_pollset* pollset, gpr_mu** mu) {
|
@@ -318,7 +318,7 @@ static void pollset_shutdown(grpc_pollset* pollset, grpc_closure* closure) {
|
|
318
318
|
|
319
319
|
// If there is any worker blocked, shutdown will be done asynchronously.
|
320
320
|
if (apple_pollset->workers.empty()) {
|
321
|
-
grpc_core::ExecCtx::Run(DEBUG_LOCATION, closure,
|
321
|
+
grpc_core::ExecCtx::Run(DEBUG_LOCATION, closure, absl::OkStatus());
|
322
322
|
} else {
|
323
323
|
apple_pollset->shutdown_closure = closure;
|
324
324
|
}
|
@@ -47,10 +47,11 @@
|
|
47
47
|
#include <grpc/support/cpu.h>
|
48
48
|
|
49
49
|
#include "src/core/lib/debug/stats.h"
|
50
|
+
#include "src/core/lib/debug/stats_data.h"
|
50
51
|
#include "src/core/lib/gpr/string.h"
|
51
|
-
#include "src/core/lib/gpr/tls.h"
|
52
52
|
#include "src/core/lib/gpr/useful.h"
|
53
53
|
#include "src/core/lib/gprpp/manual_constructor.h"
|
54
|
+
#include "src/core/lib/gprpp/strerror.h"
|
54
55
|
#include "src/core/lib/iomgr/block_annotate.h"
|
55
56
|
#include "src/core/lib/iomgr/ev_epoll1_linux.h"
|
56
57
|
#include "src/core/lib/iomgr/ev_posix.h"
|
@@ -241,9 +242,9 @@ struct grpc_pollset_set {
|
|
241
242
|
|
242
243
|
static bool append_error(grpc_error_handle* composite, grpc_error_handle error,
|
243
244
|
const char* desc) {
|
244
|
-
if (
|
245
|
-
if (
|
246
|
-
*composite =
|
245
|
+
if (error.ok()) return true;
|
246
|
+
if (composite->ok()) {
|
247
|
+
*composite = GRPC_ERROR_CREATE(desc);
|
247
248
|
}
|
248
249
|
*composite = grpc_error_add_child(*composite, error);
|
249
250
|
return false;
|
@@ -369,7 +370,8 @@ static grpc_fd* fd_create(int fd, const char* name, bool track_err) {
|
|
369
370
|
ev.data.ptr = reinterpret_cast<void*>(reinterpret_cast<intptr_t>(new_fd) |
|
370
371
|
(track_err ? 1 : 0));
|
371
372
|
if (epoll_ctl(g_epoll_set.epfd, EPOLL_CTL_ADD, fd, &ev) != 0) {
|
372
|
-
gpr_log(GPR_ERROR, "epoll_ctl failed: %s",
|
373
|
+
gpr_log(GPR_ERROR, "epoll_ctl failed: %s",
|
374
|
+
grpc_core::StrError(errno).c_str());
|
373
375
|
}
|
374
376
|
|
375
377
|
return new_fd;
|
@@ -382,7 +384,7 @@ static int fd_wrapped_fd(grpc_fd* fd) { return fd->fd; }
|
|
382
384
|
* shutdown() syscall on that fd) */
|
383
385
|
static void fd_shutdown_internal(grpc_fd* fd, grpc_error_handle why,
|
384
386
|
bool releasing_fd) {
|
385
|
-
if (fd->read_closure->SetShutdown(
|
387
|
+
if (fd->read_closure->SetShutdown(why)) {
|
386
388
|
if (!releasing_fd) {
|
387
389
|
shutdown(fd->fd, SHUT_RDWR);
|
388
390
|
} else {
|
@@ -390,13 +392,13 @@ static void fd_shutdown_internal(grpc_fd* fd, grpc_error_handle why,
|
|
390
392
|
epoll_event phony_event;
|
391
393
|
if (epoll_ctl(g_epoll_set.epfd, EPOLL_CTL_DEL, fd->fd, &phony_event) !=
|
392
394
|
0) {
|
393
|
-
gpr_log(GPR_ERROR, "epoll_ctl failed: %s",
|
395
|
+
gpr_log(GPR_ERROR, "epoll_ctl failed: %s",
|
396
|
+
grpc_core::StrError(errno).c_str());
|
394
397
|
}
|
395
398
|
}
|
396
|
-
fd->write_closure->SetShutdown(
|
397
|
-
fd->error_closure->SetShutdown(
|
399
|
+
fd->write_closure->SetShutdown(why);
|
400
|
+
fd->error_closure->SetShutdown(why);
|
398
401
|
}
|
399
|
-
GRPC_ERROR_UNREF(why);
|
400
402
|
}
|
401
403
|
|
402
404
|
/* Might be called multiple times */
|
@@ -406,12 +408,11 @@ static void fd_shutdown(grpc_fd* fd, grpc_error_handle why) {
|
|
406
408
|
|
407
409
|
static void fd_orphan(grpc_fd* fd, grpc_closure* on_done, int* release_fd,
|
408
410
|
const char* reason) {
|
409
|
-
grpc_error_handle error
|
411
|
+
grpc_error_handle error;
|
410
412
|
bool is_release_fd = (release_fd != nullptr);
|
411
413
|
|
412
414
|
if (!fd->read_closure->IsShutdown()) {
|
413
|
-
fd_shutdown_internal(fd,
|
414
|
-
is_release_fd);
|
415
|
+
fd_shutdown_internal(fd, GRPC_ERROR_CREATE(reason), is_release_fd);
|
415
416
|
}
|
416
417
|
|
417
418
|
/* If release_fd is not NULL, we should be relinquishing control of the file
|
@@ -422,7 +423,7 @@ static void fd_orphan(grpc_fd* fd, grpc_closure* on_done, int* release_fd,
|
|
422
423
|
close(fd->fd);
|
423
424
|
}
|
424
425
|
|
425
|
-
grpc_core::ExecCtx::Run(DEBUG_LOCATION, on_done,
|
426
|
+
grpc_core::ExecCtx::Run(DEBUG_LOCATION, on_done, error);
|
426
427
|
|
427
428
|
grpc_iomgr_unregister_object(&fd->iomgr_object);
|
428
429
|
fork_fd_list_remove_grpc_fd(fd);
|
@@ -462,8 +463,8 @@ static void fd_has_errors(grpc_fd* fd) { fd->error_closure->SetReady(); }
|
|
462
463
|
* Pollset Definitions
|
463
464
|
*/
|
464
465
|
|
465
|
-
static
|
466
|
-
static
|
466
|
+
static thread_local grpc_pollset* g_current_thread_pollset;
|
467
|
+
static thread_local grpc_pollset_worker* g_current_thread_worker;
|
467
468
|
|
468
469
|
/* The designated poller */
|
469
470
|
static gpr_atm g_active_poller;
|
@@ -516,7 +517,7 @@ static grpc_error_handle pollset_global_init(void) {
|
|
516
517
|
gpr_atm_no_barrier_store(&g_active_poller, 0);
|
517
518
|
global_wakeup_fd.read_fd = -1;
|
518
519
|
grpc_error_handle err = grpc_wakeup_fd_init(&global_wakeup_fd);
|
519
|
-
if (!
|
520
|
+
if (!err.ok()) return err;
|
520
521
|
struct epoll_event ev;
|
521
522
|
ev.events = static_cast<uint32_t>(EPOLLIN | EPOLLET);
|
522
523
|
ev.data.ptr = &global_wakeup_fd;
|
@@ -531,7 +532,7 @@ static grpc_error_handle pollset_global_init(void) {
|
|
531
532
|
for (size_t i = 0; i < g_num_neighborhoods; i++) {
|
532
533
|
gpr_mu_init(&g_neighborhoods[i].mu);
|
533
534
|
}
|
534
|
-
return
|
535
|
+
return absl::OkStatus();
|
535
536
|
}
|
536
537
|
|
537
538
|
static void pollset_global_shutdown(void) {
|
@@ -585,7 +586,7 @@ static void pollset_destroy(grpc_pollset* pollset) {
|
|
585
586
|
}
|
586
587
|
|
587
588
|
static grpc_error_handle pollset_kick_all(grpc_pollset* pollset) {
|
588
|
-
grpc_error_handle error
|
589
|
+
grpc_error_handle error;
|
589
590
|
if (pollset->root_worker != nullptr) {
|
590
591
|
grpc_pollset_worker* worker = pollset->root_worker;
|
591
592
|
do {
|
@@ -617,7 +618,7 @@ static void pollset_maybe_finish_shutdown(grpc_pollset* pollset) {
|
|
617
618
|
if (pollset->shutdown_closure != nullptr && pollset->root_worker == nullptr &&
|
618
619
|
pollset->begin_refs == 0) {
|
619
620
|
grpc_core::ExecCtx::Run(DEBUG_LOCATION, pollset->shutdown_closure,
|
620
|
-
|
621
|
+
absl::OkStatus());
|
621
622
|
pollset->shutdown_closure = nullptr;
|
622
623
|
}
|
623
624
|
}
|
@@ -653,7 +654,7 @@ static int poll_deadline_to_millis_timeout(grpc_core::Timestamp millis) {
|
|
653
654
|
when accessing fields in g_epoll_set */
|
654
655
|
static grpc_error_handle process_epoll_events(grpc_pollset* /*pollset*/) {
|
655
656
|
static const char* err_desc = "process_events";
|
656
|
-
grpc_error_handle error
|
657
|
+
grpc_error_handle error;
|
657
658
|
long num_events = gpr_atm_acq_load(&g_epoll_set.num_events);
|
658
659
|
long cursor = gpr_atm_acq_load(&g_epoll_set.cursor);
|
659
660
|
for (int idx = 0;
|
@@ -725,7 +726,7 @@ static grpc_error_handle do_epoll_wait(grpc_pollset* ps,
|
|
725
726
|
gpr_atm_rel_store(&g_epoll_set.num_events, r);
|
726
727
|
gpr_atm_rel_store(&g_epoll_set.cursor, 0);
|
727
728
|
|
728
|
-
return
|
729
|
+
return absl::OkStatus();
|
729
730
|
}
|
730
731
|
|
731
732
|
static bool begin_worker(grpc_pollset* pollset, grpc_pollset_worker* worker,
|
@@ -994,11 +995,11 @@ static grpc_error_handle pollset_work(grpc_pollset* ps,
|
|
994
995
|
grpc_pollset_worker** worker_hdl,
|
995
996
|
grpc_core::Timestamp deadline) {
|
996
997
|
grpc_pollset_worker worker;
|
997
|
-
grpc_error_handle error
|
998
|
+
grpc_error_handle error;
|
998
999
|
static const char* err_desc = "pollset_work";
|
999
1000
|
if (ps->kicked_without_poller) {
|
1000
1001
|
ps->kicked_without_poller = false;
|
1001
|
-
return
|
1002
|
+
return absl::OkStatus();
|
1002
1003
|
}
|
1003
1004
|
|
1004
1005
|
if (begin_worker(ps, &worker, worker_hdl, deadline)) {
|
@@ -1042,7 +1043,7 @@ static grpc_error_handle pollset_work(grpc_pollset* ps,
|
|
1042
1043
|
|
1043
1044
|
static grpc_error_handle pollset_kick(grpc_pollset* pollset,
|
1044
1045
|
grpc_pollset_worker* specific_worker) {
|
1045
|
-
grpc_error_handle ret_err
|
1046
|
+
grpc_error_handle ret_err;
|
1046
1047
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
|
1047
1048
|
std::vector<std::string> log;
|
1048
1049
|
log.push_back(absl::StrFormat(
|
@@ -40,8 +40,7 @@
|
|
40
40
|
#include <grpc/support/log.h>
|
41
41
|
|
42
42
|
#include "src/core/lib/debug/stats.h"
|
43
|
-
#include "src/core/lib/
|
44
|
-
#include "src/core/lib/gpr/tls.h"
|
43
|
+
#include "src/core/lib/debug/stats_data.h"
|
45
44
|
#include "src/core/lib/gpr/useful.h"
|
46
45
|
#include "src/core/lib/gprpp/thd.h"
|
47
46
|
#include "src/core/lib/iomgr/block_annotate.h"
|
@@ -359,7 +358,6 @@ static void unref_by(grpc_fd* fd, int n) {
|
|
359
358
|
grpc_iomgr_unregister_object(&fd->iomgr_object);
|
360
359
|
fork_fd_list_remove_node(fd->fork_fd_list);
|
361
360
|
if (fd->shutdown) {
|
362
|
-
GRPC_ERROR_UNREF(fd->shutdown_error);
|
363
361
|
}
|
364
362
|
fd->shutdown_error.~Status();
|
365
363
|
gpr_free(fd);
|
@@ -442,7 +440,8 @@ static void close_fd_locked(grpc_fd* fd) {
|
|
442
440
|
if (!fd->released) {
|
443
441
|
close(fd->fd);
|
444
442
|
}
|
445
|
-
grpc_core::ExecCtx::Run(DEBUG_LOCATION, fd->on_done_closure,
|
443
|
+
grpc_core::ExecCtx::Run(DEBUG_LOCATION, fd->on_done_closure,
|
444
|
+
absl::OkStatus());
|
446
445
|
}
|
447
446
|
|
448
447
|
static int fd_wrapped_fd(grpc_fd* fd) {
|
@@ -491,12 +490,11 @@ static void fd_unref(grpc_fd* fd) { unref_by(fd, 2); }
|
|
491
490
|
|
492
491
|
static grpc_error_handle fd_shutdown_error(grpc_fd* fd) {
|
493
492
|
if (!fd->shutdown) {
|
494
|
-
return
|
493
|
+
return absl::OkStatus();
|
495
494
|
} else {
|
496
|
-
return grpc_error_set_int(
|
497
|
-
|
498
|
-
|
499
|
-
GRPC_STATUS_UNAVAILABLE);
|
495
|
+
return grpc_error_set_int(
|
496
|
+
GRPC_ERROR_CREATE_REFERENCING("FD shutdown", &fd->shutdown_error, 1),
|
497
|
+
grpc_core::StatusIntProperty::kRpcStatus, GRPC_STATUS_UNAVAILABLE);
|
500
498
|
}
|
501
499
|
}
|
502
500
|
|
@@ -505,8 +503,8 @@ static void notify_on_locked(grpc_fd* fd, grpc_closure** st,
|
|
505
503
|
if (fd->shutdown || gpr_atm_no_barrier_load(&fd->pollhup)) {
|
506
504
|
grpc_core::ExecCtx::Run(
|
507
505
|
DEBUG_LOCATION, closure,
|
508
|
-
grpc_error_set_int(
|
509
|
-
|
506
|
+
grpc_error_set_int(GRPC_ERROR_CREATE("FD shutdown"),
|
507
|
+
grpc_core::StatusIntProperty::kRpcStatus,
|
510
508
|
GRPC_STATUS_UNAVAILABLE));
|
511
509
|
} else if (*st == CLOSURE_NOT_READY) {
|
512
510
|
/* not ready ==> switch to a waiting state by setting the closure */
|
@@ -552,8 +550,6 @@ static void fd_shutdown(grpc_fd* fd, grpc_error_handle why) {
|
|
552
550
|
shutdown(fd->fd, SHUT_RDWR);
|
553
551
|
set_ready_locked(fd, &fd->read_closure);
|
554
552
|
set_ready_locked(fd, &fd->write_closure);
|
555
|
-
} else {
|
556
|
-
GRPC_ERROR_UNREF(why);
|
557
553
|
}
|
558
554
|
gpr_mu_unlock(&fd->mu);
|
559
555
|
}
|
@@ -581,7 +577,7 @@ static void fd_notify_on_error(grpc_fd* /*fd*/, grpc_closure* closure) {
|
|
581
577
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
|
582
578
|
gpr_log(GPR_ERROR, "Polling engine does not support tracking errors.");
|
583
579
|
}
|
584
|
-
grpc_core::ExecCtx::Run(DEBUG_LOCATION, closure,
|
580
|
+
grpc_core::ExecCtx::Run(DEBUG_LOCATION, closure, absl::CancelledError());
|
585
581
|
}
|
586
582
|
|
587
583
|
static void fd_set_readable(grpc_fd* fd) {
|
@@ -714,8 +710,8 @@ static void fd_end_poll(grpc_fd_watcher* watcher, int got_read, int got_write) {
|
|
714
710
|
* pollset_posix.c
|
715
711
|
*/
|
716
712
|
|
717
|
-
static
|
718
|
-
static
|
713
|
+
static thread_local grpc_pollset* g_current_thread_poller;
|
714
|
+
static thread_local grpc_pollset_worker* g_current_thread_worker;
|
719
715
|
|
720
716
|
static void remove_worker(grpc_pollset* /*p*/, grpc_pollset_worker* worker) {
|
721
717
|
worker->prev->next = worker->next;
|
@@ -758,9 +754,9 @@ static void push_front_worker(grpc_pollset* p, grpc_pollset_worker* worker) {
|
|
758
754
|
|
759
755
|
static void kick_append_error(grpc_error_handle* composite,
|
760
756
|
grpc_error_handle error) {
|
761
|
-
if (
|
762
|
-
if (
|
763
|
-
*composite =
|
757
|
+
if (error.ok()) return;
|
758
|
+
if (composite->ok()) {
|
759
|
+
*composite = GRPC_ERROR_CREATE("Kick Failure");
|
764
760
|
}
|
765
761
|
*composite = grpc_error_add_child(*composite, error);
|
766
762
|
}
|
@@ -768,7 +764,7 @@ static void kick_append_error(grpc_error_handle* composite,
|
|
768
764
|
static grpc_error_handle pollset_kick_ext(grpc_pollset* p,
|
769
765
|
grpc_pollset_worker* specific_worker,
|
770
766
|
uint32_t flags) {
|
771
|
-
grpc_error_handle error
|
767
|
+
grpc_error_handle error;
|
772
768
|
|
773
769
|
/* pollset->mu already held */
|
774
770
|
if (specific_worker != nullptr) {
|
@@ -819,7 +815,7 @@ static grpc_error_handle pollset_kick_ext(grpc_pollset* p,
|
|
819
815
|
}
|
820
816
|
}
|
821
817
|
|
822
|
-
GRPC_LOG_IF_ERROR("pollset_kick_ext",
|
818
|
+
GRPC_LOG_IF_ERROR("pollset_kick_ext", error);
|
823
819
|
return error;
|
824
820
|
}
|
825
821
|
|
@@ -830,7 +826,7 @@ static grpc_error_handle pollset_kick(grpc_pollset* p,
|
|
830
826
|
|
831
827
|
/* global state management */
|
832
828
|
|
833
|
-
static grpc_error_handle pollset_global_init(void) { return
|
829
|
+
static grpc_error_handle pollset_global_init(void) { return absl::OkStatus(); }
|
834
830
|
|
835
831
|
/* main interface */
|
836
832
|
|
@@ -889,14 +885,14 @@ static void finish_shutdown(grpc_pollset* pollset) {
|
|
889
885
|
}
|
890
886
|
pollset->fd_count = 0;
|
891
887
|
grpc_core::ExecCtx::Run(DEBUG_LOCATION, pollset->shutdown_done,
|
892
|
-
|
888
|
+
absl::OkStatus());
|
893
889
|
}
|
894
890
|
|
895
891
|
static void work_combine_error(grpc_error_handle* composite,
|
896
892
|
grpc_error_handle error) {
|
897
|
-
if (
|
898
|
-
if (
|
899
|
-
*composite =
|
893
|
+
if (error.ok()) return;
|
894
|
+
if (composite->ok()) {
|
895
|
+
*composite = GRPC_ERROR_CREATE("pollset_work");
|
900
896
|
}
|
901
897
|
*composite = grpc_error_add_child(*composite, error);
|
902
898
|
}
|
@@ -906,7 +902,7 @@ static grpc_error_handle pollset_work(grpc_pollset* pollset,
|
|
906
902
|
grpc_core::Timestamp deadline) {
|
907
903
|
grpc_pollset_worker worker;
|
908
904
|
if (worker_hdl) *worker_hdl = &worker;
|
909
|
-
grpc_error_handle error
|
905
|
+
grpc_error_handle error;
|
910
906
|
|
911
907
|
/* Avoid malloc for small number of elements. */
|
912
908
|
enum { inline_elements = 96 };
|
@@ -929,8 +925,8 @@ static grpc_error_handle pollset_work(grpc_pollset* pollset,
|
|
929
925
|
gpr_malloc(sizeof(*worker.wakeup_fd)));
|
930
926
|
error = grpc_wakeup_fd_init(&worker.wakeup_fd->fd);
|
931
927
|
fork_fd_list_add_wakeup_fd(worker.wakeup_fd);
|
932
|
-
if (!
|
933
|
-
GRPC_LOG_IF_ERROR("pollset_work",
|
928
|
+
if (!error.ok()) {
|
929
|
+
GRPC_LOG_IF_ERROR("pollset_work", error);
|
934
930
|
return error;
|
935
931
|
}
|
936
932
|
}
|
@@ -1091,7 +1087,7 @@ static grpc_error_handle pollset_work(grpc_pollset* pollset,
|
|
1091
1087
|
/* If we're forced to re-evaluate polling (via pollset_kick with
|
1092
1088
|
GRPC_POLLSET_REEVALUATE_POLLING_ON_WAKEUP) then we land here and force
|
1093
1089
|
a loop */
|
1094
|
-
if (worker.reevaluate_polling_on_wakeup &&
|
1090
|
+
if (worker.reevaluate_polling_on_wakeup && error.ok()) {
|
1095
1091
|
worker.reevaluate_polling_on_wakeup = 0;
|
1096
1092
|
pollset->kicked_without_pollers = 0;
|
1097
1093
|
if (queued_work || worker.kicked_specifically) {
|
@@ -1127,7 +1123,7 @@ static grpc_error_handle pollset_work(grpc_pollset* pollset,
|
|
1127
1123
|
}
|
1128
1124
|
}
|
1129
1125
|
if (worker_hdl) *worker_hdl = nullptr;
|
1130
|
-
GRPC_LOG_IF_ERROR("pollset_work",
|
1126
|
+
GRPC_LOG_IF_ERROR("pollset_work", error);
|
1131
1127
|
return error;
|
1132
1128
|
}
|
1133
1129
|
|
@@ -53,9 +53,9 @@ static void exec_ctx_sched(grpc_closure* closure) {
|
|
53
53
|
|
54
54
|
namespace grpc_core {
|
55
55
|
|
56
|
-
|
57
|
-
|
58
|
-
ApplicationCallbackExecCtx::callback_exec_ctx_;
|
56
|
+
thread_local ExecCtx* ExecCtx::exec_ctx_;
|
57
|
+
thread_local ApplicationCallbackExecCtx*
|
58
|
+
ApplicationCallbackExecCtx::callback_exec_ctx_;
|
59
59
|
|
60
60
|
bool ExecCtx::Flush() {
|
61
61
|
bool did_something = false;
|
@@ -81,7 +81,6 @@ void ExecCtx::Run(const DebugLocation& location, grpc_closure* closure,
|
|
81
81
|
grpc_error_handle error) {
|
82
82
|
(void)location;
|
83
83
|
if (closure == nullptr) {
|
84
|
-
GRPC_ERROR_UNREF(error);
|
85
84
|
return;
|
86
85
|
}
|
87
86
|
#ifndef NDEBUG
|