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
@@ -30,7 +30,6 @@
|
|
30
30
|
#include <utility>
|
31
31
|
#include <vector>
|
32
32
|
|
33
|
-
#include "absl/memory/memory.h"
|
34
33
|
#include "absl/status/status.h"
|
35
34
|
#include "absl/types/optional.h"
|
36
35
|
|
@@ -48,10 +47,10 @@
|
|
48
47
|
#include "src/core/lib/gpr/useful.h"
|
49
48
|
#include "src/core/lib/gprpp/debug_location.h"
|
50
49
|
#include "src/core/lib/gprpp/mpscq.h"
|
50
|
+
#include "src/core/lib/gprpp/status_helper.h"
|
51
51
|
#include "src/core/lib/iomgr/exec_ctx.h"
|
52
52
|
#include "src/core/lib/iomgr/pollset_set.h"
|
53
53
|
#include "src/core/lib/slice/slice_internal.h"
|
54
|
-
#include "src/core/lib/slice/slice_refcount.h"
|
55
54
|
#include "src/core/lib/surface/api_trace.h"
|
56
55
|
#include "src/core/lib/surface/call.h"
|
57
56
|
#include "src/core/lib/surface/channel.h"
|
@@ -220,10 +219,9 @@ class Server::RealRequestMatcher : public RequestMatcherInterface {
|
|
220
219
|
RequestedCall* rc;
|
221
220
|
while ((rc = reinterpret_cast<RequestedCall*>(
|
222
221
|
requests_per_cq_[i].Pop())) != nullptr) {
|
223
|
-
server_->FailCall(i, rc,
|
222
|
+
server_->FailCall(i, rc, error);
|
224
223
|
}
|
225
224
|
}
|
226
|
-
GRPC_ERROR_UNREF(error);
|
227
225
|
}
|
228
226
|
|
229
227
|
size_t request_queue_count() const override {
|
@@ -337,9 +335,7 @@ class Server::AllocatingRequestMatcherBase : public RequestMatcherInterface {
|
|
337
335
|
|
338
336
|
void ZombifyPending() override {}
|
339
337
|
|
340
|
-
void KillRequests(grpc_error_handle error) override {
|
341
|
-
GRPC_ERROR_UNREF(error);
|
342
|
-
}
|
338
|
+
void KillRequests(grpc_error_handle /*error*/) override {}
|
343
339
|
|
344
340
|
size_t request_queue_count() const override { return 0; }
|
345
341
|
|
@@ -449,11 +445,9 @@ class ChannelBroadcaster {
|
|
449
445
|
// Broadcasts a shutdown on each channel.
|
450
446
|
void BroadcastShutdown(bool send_goaway, grpc_error_handle force_disconnect) {
|
451
447
|
for (const RefCountedPtr<Channel>& channel : channels_) {
|
452
|
-
SendShutdown(channel->c_ptr(), send_goaway,
|
453
|
-
GRPC_ERROR_REF(force_disconnect));
|
448
|
+
SendShutdown(channel->c_ptr(), send_goaway, force_disconnect);
|
454
449
|
}
|
455
450
|
channels_.clear(); // just for safety against double broadcast
|
456
|
-
GRPC_ERROR_UNREF(force_disconnect);
|
457
451
|
}
|
458
452
|
|
459
453
|
private:
|
@@ -464,7 +458,7 @@ class ChannelBroadcaster {
|
|
464
458
|
|
465
459
|
static void ShutdownCleanup(void* arg, grpc_error_handle /*error*/) {
|
466
460
|
ShutdownCleanupArgs* a = static_cast<ShutdownCleanupArgs*>(arg);
|
467
|
-
|
461
|
+
CSliceUnref(a->slice);
|
468
462
|
delete a;
|
469
463
|
}
|
470
464
|
|
@@ -477,10 +471,9 @@ class ChannelBroadcaster {
|
|
477
471
|
grpc_channel_element* elem;
|
478
472
|
op->goaway_error =
|
479
473
|
send_goaway
|
480
|
-
? grpc_error_set_int(
|
481
|
-
|
482
|
-
|
483
|
-
: GRPC_ERROR_NONE;
|
474
|
+
? grpc_error_set_int(GRPC_ERROR_CREATE("Server shutdown"),
|
475
|
+
StatusIntProperty::kRpcStatus, GRPC_STATUS_OK)
|
476
|
+
: absl::OkStatus();
|
484
477
|
sc->slice = grpc_slice_from_copied_string("Server shutdown");
|
485
478
|
op->disconnect_with_error = send_disconnect;
|
486
479
|
elem =
|
@@ -568,11 +561,11 @@ void Server::Start() {
|
|
568
561
|
}
|
569
562
|
}
|
570
563
|
if (unregistered_request_matcher_ == nullptr) {
|
571
|
-
unregistered_request_matcher_ =
|
564
|
+
unregistered_request_matcher_ = std::make_unique<RealRequestMatcher>(this);
|
572
565
|
}
|
573
566
|
for (std::unique_ptr<RegisteredMethod>& rm : registered_methods_) {
|
574
567
|
if (rm->matcher == nullptr) {
|
575
|
-
rm->matcher =
|
568
|
+
rm->matcher = std::make_unique<RealRequestMatcher>(this);
|
576
569
|
}
|
577
570
|
}
|
578
571
|
{
|
@@ -627,7 +620,7 @@ grpc_error_handle Server::SetupTransport(
|
|
627
620
|
// Initialize chand.
|
628
621
|
chand->InitTransport(Ref(), std::move(*channel), cq_idx, transport,
|
629
622
|
channelz_socket_uuid);
|
630
|
-
return
|
623
|
+
return absl::OkStatus();
|
631
624
|
}
|
632
625
|
|
633
626
|
bool Server::HasOpenConnections() {
|
@@ -639,7 +632,7 @@ void Server::SetRegisteredMethodAllocator(
|
|
639
632
|
grpc_completion_queue* cq, void* method_tag,
|
640
633
|
std::function<RegisteredCallAllocation()> allocator) {
|
641
634
|
RegisteredMethod* rm = static_cast<RegisteredMethod*>(method_tag);
|
642
|
-
rm->matcher =
|
635
|
+
rm->matcher = std::make_unique<AllocatingRequestMatcherRegistered>(
|
643
636
|
this, cq, rm, std::move(allocator));
|
644
637
|
}
|
645
638
|
|
@@ -647,8 +640,8 @@ void Server::SetBatchMethodAllocator(
|
|
647
640
|
grpc_completion_queue* cq, std::function<BatchCallAllocation()> allocator) {
|
648
641
|
GPR_DEBUG_ASSERT(unregistered_request_matcher_ == nullptr);
|
649
642
|
unregistered_request_matcher_ =
|
650
|
-
|
651
|
-
|
643
|
+
std::make_unique<AllocatingRequestMatcherBatch>(this, cq,
|
644
|
+
std::move(allocator));
|
652
645
|
}
|
653
646
|
|
654
647
|
void Server::RegisterCompletionQueue(grpc_completion_queue* cq) {
|
@@ -689,7 +682,7 @@ Server::RegisteredMethod* Server::RegisterMethod(
|
|
689
682
|
flags);
|
690
683
|
return nullptr;
|
691
684
|
}
|
692
|
-
registered_methods_.emplace_back(
|
685
|
+
registered_methods_.emplace_back(std::make_unique<RegisteredMethod>(
|
693
686
|
method, host, payload_handling, flags));
|
694
687
|
return registered_methods_.back().get();
|
695
688
|
}
|
@@ -702,7 +695,7 @@ void Server::FailCall(size_t cq_idx, RequestedCall* rc,
|
|
702
695
|
grpc_error_handle error) {
|
703
696
|
*rc->call = nullptr;
|
704
697
|
rc->initial_metadata->count = 0;
|
705
|
-
GPR_ASSERT(!
|
698
|
+
GPR_ASSERT(!error.ok());
|
706
699
|
grpc_cq_end_op(cqs_[cq_idx], rc->tag, error, DoneRequestEvent, rc,
|
707
700
|
&rc->completion);
|
708
701
|
}
|
@@ -715,8 +708,7 @@ void Server::MaybeFinishShutdown() {
|
|
715
708
|
}
|
716
709
|
{
|
717
710
|
MutexLock lock(&mu_call_);
|
718
|
-
KillPendingWorkLocked(
|
719
|
-
GRPC_ERROR_CREATE_FROM_STATIC_STRING("Server Shutdown"));
|
711
|
+
KillPendingWorkLocked(GRPC_ERROR_CREATE("Server Shutdown"));
|
720
712
|
}
|
721
713
|
if (!channels_.empty() || listeners_destroyed_ < listeners_.size()) {
|
722
714
|
if (gpr_time_cmp(gpr_time_sub(gpr_now(GPR_CLOCK_REALTIME),
|
@@ -734,21 +726,20 @@ void Server::MaybeFinishShutdown() {
|
|
734
726
|
shutdown_published_ = true;
|
735
727
|
for (auto& shutdown_tag : shutdown_tags_) {
|
736
728
|
Ref().release();
|
737
|
-
grpc_cq_end_op(shutdown_tag.cq, shutdown_tag.tag,
|
729
|
+
grpc_cq_end_op(shutdown_tag.cq, shutdown_tag.tag, absl::OkStatus(),
|
738
730
|
DoneShutdownEvent, this, &shutdown_tag.completion);
|
739
731
|
}
|
740
732
|
}
|
741
733
|
|
742
734
|
void Server::KillPendingWorkLocked(grpc_error_handle error) {
|
743
735
|
if (started_) {
|
744
|
-
unregistered_request_matcher_->KillRequests(
|
736
|
+
unregistered_request_matcher_->KillRequests(error);
|
745
737
|
unregistered_request_matcher_->ZombifyPending();
|
746
738
|
for (std::unique_ptr<RegisteredMethod>& rm : registered_methods_) {
|
747
|
-
rm->matcher->KillRequests(
|
739
|
+
rm->matcher->KillRequests(error);
|
748
740
|
rm->matcher->ZombifyPending();
|
749
741
|
}
|
750
742
|
}
|
751
|
-
GRPC_ERROR_UNREF(error);
|
752
743
|
}
|
753
744
|
|
754
745
|
std::vector<RefCountedPtr<Channel>> Server::GetChannelsLocked() const {
|
@@ -801,7 +792,7 @@ void Server::ShutdownAndNotify(grpc_completion_queue* cq, void* tag) {
|
|
801
792
|
// Stay locked, and gather up some stuff to do.
|
802
793
|
GPR_ASSERT(grpc_cq_begin_op(cq, tag));
|
803
794
|
if (shutdown_published_) {
|
804
|
-
grpc_cq_end_op(cq, tag,
|
795
|
+
grpc_cq_end_op(cq, tag, absl::OkStatus(), DonePublishedShutdown, nullptr,
|
805
796
|
new grpc_cq_completion);
|
806
797
|
return;
|
807
798
|
}
|
@@ -814,8 +805,7 @@ void Server::ShutdownAndNotify(grpc_completion_queue* cq, void* tag) {
|
|
814
805
|
// Collect all unregistered then registered calls.
|
815
806
|
{
|
816
807
|
MutexLock lock(&mu_call_);
|
817
|
-
KillPendingWorkLocked(
|
818
|
-
GRPC_ERROR_CREATE_FROM_STATIC_STRING("Server Shutdown"));
|
808
|
+
KillPendingWorkLocked(GRPC_ERROR_CREATE("Server Shutdown"));
|
819
809
|
}
|
820
810
|
await_requests = ShutdownUnrefOnShutdownCall();
|
821
811
|
}
|
@@ -825,7 +815,7 @@ void Server::ShutdownAndNotify(grpc_completion_queue* cq, void* tag) {
|
|
825
815
|
await_requests->WaitForNotification();
|
826
816
|
}
|
827
817
|
StopListening();
|
828
|
-
broadcaster.BroadcastShutdown(/*send_goaway=*/true,
|
818
|
+
broadcaster.BroadcastShutdown(/*send_goaway=*/true, absl::OkStatus());
|
829
819
|
}
|
830
820
|
|
831
821
|
void Server::StopListening() {
|
@@ -851,8 +841,7 @@ void Server::CancelAllCalls() {
|
|
851
841
|
broadcaster.FillChannelsLocked(GetChannelsLocked());
|
852
842
|
}
|
853
843
|
broadcaster.BroadcastShutdown(
|
854
|
-
/*send_goaway=*/false,
|
855
|
-
GRPC_ERROR_CREATE_FROM_STATIC_STRING("Cancelling all calls"));
|
844
|
+
/*send_goaway=*/false, GRPC_ERROR_CREATE("Cancelling all calls"));
|
856
845
|
}
|
857
846
|
|
858
847
|
void Server::SendGoaways() {
|
@@ -861,7 +850,7 @@ void Server::SendGoaways() {
|
|
861
850
|
MutexLock lock(&mu_global_);
|
862
851
|
broadcaster.FillChannelsLocked(GetChannelsLocked());
|
863
852
|
}
|
864
|
-
broadcaster.BroadcastShutdown(/*send_goaway=*/true,
|
853
|
+
broadcaster.BroadcastShutdown(/*send_goaway=*/true, absl::OkStatus());
|
865
854
|
}
|
866
855
|
|
867
856
|
void Server::Orphan() {
|
@@ -910,8 +899,7 @@ grpc_call_error Server::ValidateServerRequestAndCq(
|
|
910
899
|
|
911
900
|
grpc_call_error Server::QueueRequestedCall(size_t cq_idx, RequestedCall* rc) {
|
912
901
|
if (ShutdownCalled()) {
|
913
|
-
FailCall(cq_idx, rc,
|
914
|
-
GRPC_ERROR_CREATE_FROM_STATIC_STRING("Server Shutdown"));
|
902
|
+
FailCall(cq_idx, rc, GRPC_ERROR_CREATE("Server Shutdown"));
|
915
903
|
return GRPC_CALL_OK;
|
916
904
|
}
|
917
905
|
RequestMatcherInterface* rm;
|
@@ -1022,7 +1010,7 @@ void Server::ChannelData::InitTransport(RefCountedPtr<Server> server,
|
|
1022
1010
|
uint32_t max_probes = 0;
|
1023
1011
|
size_t slots = 2 * num_registered_methods;
|
1024
1012
|
registered_methods_ =
|
1025
|
-
|
1013
|
+
std::make_unique<std::vector<ChannelRegisteredMethod>>(slots);
|
1026
1014
|
for (std::unique_ptr<RegisteredMethod>& rm : server_->registered_methods_) {
|
1027
1015
|
Slice host;
|
1028
1016
|
Slice method = Slice::FromExternalString(rm->method);
|
@@ -1063,8 +1051,7 @@ void Server::ChannelData::InitTransport(RefCountedPtr<Server> server,
|
|
1063
1051
|
op->set_accept_stream_user_data = this;
|
1064
1052
|
op->start_connectivity_watch = MakeOrphanable<ConnectivityWatcher>(this);
|
1065
1053
|
if (server_->ShutdownCalled()) {
|
1066
|
-
op->disconnect_with_error =
|
1067
|
-
GRPC_ERROR_CREATE_FROM_STATIC_STRING("Server shutdown");
|
1054
|
+
op->disconnect_with_error = GRPC_ERROR_CREATE("Server shutdown");
|
1068
1055
|
}
|
1069
1056
|
grpc_transport_perform_op(transport, op);
|
1070
1057
|
}
|
@@ -1074,8 +1061,7 @@ Server::ChannelRegisteredMethod* Server::ChannelData::GetRegisteredMethod(
|
|
1074
1061
|
if (registered_methods_ == nullptr) return nullptr;
|
1075
1062
|
/* TODO(ctiller): unify these two searches */
|
1076
1063
|
/* check for an exact match with host */
|
1077
|
-
uint32_t hash =
|
1078
|
-
MixHash32(grpc_slice_hash_internal(host), grpc_slice_hash_internal(path));
|
1064
|
+
uint32_t hash = MixHash32(grpc_slice_hash(host), grpc_slice_hash(path));
|
1079
1065
|
for (size_t i = 0; i <= registered_method_max_probes_; i++) {
|
1080
1066
|
ChannelRegisteredMethod* rm =
|
1081
1067
|
&(*registered_methods_)[(hash + i) % registered_methods_->size()];
|
@@ -1086,7 +1072,7 @@ Server::ChannelRegisteredMethod* Server::ChannelData::GetRegisteredMethod(
|
|
1086
1072
|
return rm;
|
1087
1073
|
}
|
1088
1074
|
/* check for a wildcard method definition (no host set) */
|
1089
|
-
hash = MixHash32(0,
|
1075
|
+
hash = MixHash32(0, grpc_slice_hash(path));
|
1090
1076
|
for (size_t i = 0; i <= registered_method_max_probes_; i++) {
|
1091
1077
|
ChannelRegisteredMethod* rm =
|
1092
1078
|
&(*registered_methods_)[(hash + i) % registered_methods_->size()];
|
@@ -1116,8 +1102,7 @@ void Server::ChannelData::AcceptStream(void* arg, grpc_transport* /*transport*/,
|
|
1116
1102
|
grpc_call_element* elem =
|
1117
1103
|
grpc_call_stack_element(grpc_call_get_call_stack(call), 0);
|
1118
1104
|
auto* calld = static_cast<Server::CallData*>(elem->call_data);
|
1119
|
-
if (!
|
1120
|
-
GRPC_ERROR_UNREF(error);
|
1105
|
+
if (!error.ok()) {
|
1121
1106
|
calld->FailCallCreation();
|
1122
1107
|
return;
|
1123
1108
|
}
|
@@ -1161,7 +1146,7 @@ grpc_error_handle Server::ChannelData::InitChannelElement(
|
|
1161
1146
|
GPR_ASSERT(args->is_first);
|
1162
1147
|
GPR_ASSERT(!args->is_last);
|
1163
1148
|
new (elem->channel_data) ChannelData();
|
1164
|
-
return
|
1149
|
+
return absl::OkStatus();
|
1165
1150
|
}
|
1166
1151
|
|
1167
1152
|
void Server::ChannelData::DestroyChannelElement(grpc_channel_element* elem) {
|
@@ -1187,7 +1172,6 @@ Server::CallData::CallData(grpc_call_element* elem,
|
|
1187
1172
|
|
1188
1173
|
Server::CallData::~CallData() {
|
1189
1174
|
GPR_ASSERT(state_.load(std::memory_order_relaxed) != CallState::PENDING);
|
1190
|
-
GRPC_ERROR_UNREF(recv_initial_metadata_error_);
|
1191
1175
|
grpc_metadata_array_destroy(&initial_metadata_);
|
1192
1176
|
grpc_byte_buffer_destroy(payload_);
|
1193
1177
|
}
|
@@ -1240,9 +1224,8 @@ void Server::CallData::Publish(size_t cq_idx, RequestedCall* rc) {
|
|
1240
1224
|
case RequestedCall::Type::BATCH_CALL:
|
1241
1225
|
GPR_ASSERT(host_.has_value());
|
1242
1226
|
GPR_ASSERT(path_.has_value());
|
1243
|
-
rc->data.batch.details->host =
|
1244
|
-
rc->data.batch.details->method =
|
1245
|
-
grpc_slice_ref_internal(path_->c_slice());
|
1227
|
+
rc->data.batch.details->host = CSliceRef(host_->c_slice());
|
1228
|
+
rc->data.batch.details->method = CSliceRef(path_->c_slice());
|
1246
1229
|
rc->data.batch.details->deadline =
|
1247
1230
|
deadline_.as_timespec(GPR_CLOCK_MONOTONIC);
|
1248
1231
|
break;
|
@@ -1255,9 +1238,9 @@ void Server::CallData::Publish(size_t cq_idx, RequestedCall* rc) {
|
|
1255
1238
|
}
|
1256
1239
|
break;
|
1257
1240
|
default:
|
1258
|
-
GPR_UNREACHABLE_CODE(return
|
1241
|
+
GPR_UNREACHABLE_CODE(return);
|
1259
1242
|
}
|
1260
|
-
grpc_cq_end_op(cq_new_, rc->tag,
|
1243
|
+
grpc_cq_end_op(cq_new_, rc->tag, absl::OkStatus(), Server::DoneRequestEvent,
|
1261
1244
|
rc, &rc->completion, true);
|
1262
1245
|
}
|
1263
1246
|
|
@@ -1267,7 +1250,7 @@ void Server::CallData::PublishNewRpc(void* arg, grpc_error_handle error) {
|
|
1267
1250
|
auto* chand = static_cast<Server::ChannelData*>(call_elem->channel_data);
|
1268
1251
|
RequestMatcherInterface* rm = calld->matcher_;
|
1269
1252
|
Server* server = rm->server();
|
1270
|
-
if (!
|
1253
|
+
if (!error.ok() || server->ShutdownCalled()) {
|
1271
1254
|
calld->state_.store(CallState::ZOMBIED, std::memory_order_relaxed);
|
1272
1255
|
calld->KillZombie();
|
1273
1256
|
return;
|
@@ -1286,7 +1269,7 @@ void KillZombieClosure(void* call, grpc_error_handle /*error*/) {
|
|
1286
1269
|
void Server::CallData::KillZombie() {
|
1287
1270
|
GRPC_CLOSURE_INIT(&kill_zombie_closure_, KillZombieClosure, call_,
|
1288
1271
|
grpc_schedule_on_exec_ctx);
|
1289
|
-
ExecCtx::Run(DEBUG_LOCATION, &kill_zombie_closure_,
|
1272
|
+
ExecCtx::Run(DEBUG_LOCATION, &kill_zombie_closure_, absl::OkStatus());
|
1290
1273
|
}
|
1291
1274
|
|
1292
1275
|
void Server::CallData::StartNewRpc(grpc_call_element* elem) {
|
@@ -1311,7 +1294,7 @@ void Server::CallData::StartNewRpc(grpc_call_element* elem) {
|
|
1311
1294
|
// Start recv_message op if needed.
|
1312
1295
|
switch (payload_handling) {
|
1313
1296
|
case GRPC_SRM_PAYLOAD_NONE:
|
1314
|
-
PublishNewRpc(elem,
|
1297
|
+
PublishNewRpc(elem, absl::OkStatus());
|
1315
1298
|
break;
|
1316
1299
|
case GRPC_SRM_PAYLOAD_READ_INITIAL_BYTE_BUFFER: {
|
1317
1300
|
grpc_op op;
|
@@ -1331,9 +1314,9 @@ void Server::CallData::RecvInitialMetadataBatchComplete(
|
|
1331
1314
|
void* arg, grpc_error_handle error) {
|
1332
1315
|
grpc_call_element* elem = static_cast<grpc_call_element*>(arg);
|
1333
1316
|
auto* calld = static_cast<Server::CallData*>(elem->call_data);
|
1334
|
-
if (!
|
1317
|
+
if (!error.ok()) {
|
1335
1318
|
gpr_log(GPR_DEBUG, "Failed call creation: %s",
|
1336
|
-
|
1319
|
+
StatusToString(error).c_str());
|
1337
1320
|
calld->FailCallCreation();
|
1338
1321
|
return;
|
1339
1322
|
}
|
@@ -1363,13 +1346,11 @@ void Server::CallData::RecvInitialMetadataReady(void* arg,
|
|
1363
1346
|
grpc_error_handle error) {
|
1364
1347
|
grpc_call_element* elem = static_cast<grpc_call_element*>(arg);
|
1365
1348
|
CallData* calld = static_cast<CallData*>(elem->call_data);
|
1366
|
-
if (
|
1349
|
+
if (error.ok()) {
|
1367
1350
|
calld->path_ = calld->recv_initial_metadata_->Take(HttpPathMetadata());
|
1368
1351
|
auto* host =
|
1369
1352
|
calld->recv_initial_metadata_->get_pointer(HttpAuthorityMetadata());
|
1370
1353
|
if (host != nullptr) calld->host_.emplace(host->Ref());
|
1371
|
-
} else {
|
1372
|
-
(void)GRPC_ERROR_REF(error);
|
1373
1354
|
}
|
1374
1355
|
auto op_deadline = calld->recv_initial_metadata_->get(GrpcTimeoutMetadata());
|
1375
1356
|
if (op_deadline.has_value()) {
|
@@ -1380,10 +1361,9 @@ void Server::CallData::RecvInitialMetadataReady(void* arg,
|
|
1380
1361
|
} else {
|
1381
1362
|
/* Pass the error reference to calld->recv_initial_metadata_error */
|
1382
1363
|
grpc_error_handle src_error = error;
|
1383
|
-
error =
|
1384
|
-
|
1385
|
-
|
1386
|
-
calld->recv_initial_metadata_error_ = GRPC_ERROR_REF(error);
|
1364
|
+
error = GRPC_ERROR_CREATE_REFERENCING("Missing :authority or :path",
|
1365
|
+
&src_error, 1);
|
1366
|
+
calld->recv_initial_metadata_error_ = error;
|
1387
1367
|
}
|
1388
1368
|
grpc_closure* closure = calld->original_recv_initial_metadata_ready_;
|
1389
1369
|
calld->original_recv_initial_metadata_ready_ = nullptr;
|
@@ -1401,7 +1381,7 @@ void Server::CallData::RecvTrailingMetadataReady(void* arg,
|
|
1401
1381
|
grpc_call_element* elem = static_cast<grpc_call_element*>(arg);
|
1402
1382
|
CallData* calld = static_cast<CallData*>(elem->call_data);
|
1403
1383
|
if (calld->original_recv_initial_metadata_ready_ != nullptr) {
|
1404
|
-
calld->recv_trailing_metadata_error_ =
|
1384
|
+
calld->recv_trailing_metadata_error_ = error;
|
1405
1385
|
calld->seen_recv_trailing_metadata_ready_ = true;
|
1406
1386
|
GRPC_CLOSURE_INIT(&calld->recv_trailing_metadata_ready_,
|
1407
1387
|
RecvTrailingMetadataReady, elem,
|
@@ -1411,9 +1391,7 @@ void Server::CallData::RecvTrailingMetadataReady(void* arg,
|
|
1411
1391
|
"until after recv_initial_metadata_ready");
|
1412
1392
|
return;
|
1413
1393
|
}
|
1414
|
-
error =
|
1415
|
-
grpc_error_add_child(GRPC_ERROR_REF(error),
|
1416
|
-
GRPC_ERROR_REF(calld->recv_initial_metadata_error_));
|
1394
|
+
error = grpc_error_add_child(error, calld->recv_initial_metadata_error_);
|
1417
1395
|
Closure::Run(DEBUG_LOCATION, calld->original_recv_trailing_metadata_ready_,
|
1418
1396
|
error);
|
1419
1397
|
}
|
@@ -1422,7 +1400,7 @@ grpc_error_handle Server::CallData::InitCallElement(
|
|
1422
1400
|
grpc_call_element* elem, const grpc_call_element_args* args) {
|
1423
1401
|
auto* chand = static_cast<ChannelData*>(elem->channel_data);
|
1424
1402
|
new (elem->call_data) Server::CallData(elem, *args, chand->server());
|
1425
|
-
return
|
1403
|
+
return absl::OkStatus();
|
1426
1404
|
}
|
1427
1405
|
|
1428
1406
|
void Server::CallData::DestroyCallElement(
|
@@ -31,7 +31,6 @@
|
|
31
31
|
#include <vector>
|
32
32
|
|
33
33
|
#include "absl/base/thread_annotations.h"
|
34
|
-
#include "absl/memory/memory.h"
|
35
34
|
#include "absl/status/statusor.h"
|
36
35
|
#include "absl/types/optional.h"
|
37
36
|
|
@@ -342,12 +341,12 @@ class Server : public InternallyRefCounted<Server>,
|
|
342
341
|
grpc_metadata_batch* recv_initial_metadata_ = nullptr;
|
343
342
|
grpc_closure recv_initial_metadata_ready_;
|
344
343
|
grpc_closure* original_recv_initial_metadata_ready_;
|
345
|
-
grpc_error_handle recv_initial_metadata_error_
|
344
|
+
grpc_error_handle recv_initial_metadata_error_;
|
346
345
|
|
347
346
|
bool seen_recv_trailing_metadata_ready_ = false;
|
348
347
|
grpc_closure recv_trailing_metadata_ready_;
|
349
348
|
grpc_closure* original_recv_trailing_metadata_ready_;
|
350
|
-
grpc_error_handle recv_trailing_metadata_error_
|
349
|
+
grpc_error_handle recv_trailing_metadata_error_;
|
351
350
|
|
352
351
|
grpc_closure publish_;
|
353
352
|
|
@@ -426,7 +425,7 @@ class Server : public InternallyRefCounted<Server>,
|
|
426
425
|
MaybeFinishShutdown();
|
427
426
|
return nullptr;
|
428
427
|
}
|
429
|
-
requests_complete_ =
|
428
|
+
requests_complete_ = std::make_unique<Notification>();
|
430
429
|
return requests_complete_.get();
|
431
430
|
}
|
432
431
|
|
@@ -20,6 +20,7 @@
|
|
20
20
|
|
21
21
|
#include "src/core/lib/surface/validate_metadata.h"
|
22
22
|
|
23
|
+
#include "absl/status/status.h"
|
23
24
|
#include "absl/strings/string_view.h"
|
24
25
|
|
25
26
|
#include <grpc/grpc.h>
|
@@ -27,6 +28,7 @@
|
|
27
28
|
#include "src/core/lib/gpr/string.h"
|
28
29
|
#include "src/core/lib/gprpp/bitset.h"
|
29
30
|
#include "src/core/lib/gprpp/memory.h"
|
31
|
+
#include "src/core/lib/gprpp/status_helper.h"
|
30
32
|
#include "src/core/lib/iomgr/error.h"
|
31
33
|
|
32
34
|
static grpc_error_handle conforms_to(const grpc_slice& slice,
|
@@ -41,19 +43,19 @@ static grpc_error_handle conforms_to(const grpc_slice& slice,
|
|
41
43
|
reinterpret_cast<const char*> GRPC_SLICE_START_PTR(slice),
|
42
44
|
GRPC_SLICE_LENGTH(slice), GPR_DUMP_HEX | GPR_DUMP_ASCII, &len));
|
43
45
|
grpc_error_handle error = grpc_error_set_str(
|
44
|
-
grpc_error_set_int(
|
45
|
-
|
46
|
+
grpc_error_set_int(GRPC_ERROR_CREATE(err_desc),
|
47
|
+
grpc_core::StatusIntProperty::kOffset,
|
46
48
|
p - GRPC_SLICE_START_PTR(slice)),
|
47
|
-
|
49
|
+
grpc_core::StatusStrProperty::kRawBytes,
|
50
|
+
absl::string_view(ptr.get(), len));
|
48
51
|
return error;
|
49
52
|
}
|
50
53
|
}
|
51
|
-
return
|
54
|
+
return absl::OkStatus();
|
52
55
|
}
|
53
56
|
|
54
57
|
static int error2int(grpc_error_handle error) {
|
55
|
-
int r = (
|
56
|
-
GRPC_ERROR_UNREF(error);
|
58
|
+
int r = (error.ok());
|
57
59
|
return r;
|
58
60
|
}
|
59
61
|
|
@@ -73,16 +75,13 @@ constexpr LegalHeaderKeyBits g_legal_header_key_bits;
|
|
73
75
|
|
74
76
|
grpc_error_handle grpc_validate_header_key_is_legal(const grpc_slice& slice) {
|
75
77
|
if (GRPC_SLICE_LENGTH(slice) == 0) {
|
76
|
-
return
|
77
|
-
"Metadata keys cannot be zero length");
|
78
|
+
return GRPC_ERROR_CREATE("Metadata keys cannot be zero length");
|
78
79
|
}
|
79
80
|
if (GRPC_SLICE_LENGTH(slice) > UINT32_MAX) {
|
80
|
-
return
|
81
|
-
"Metadata keys cannot be larger than UINT32_MAX");
|
81
|
+
return GRPC_ERROR_CREATE("Metadata keys cannot be larger than UINT32_MAX");
|
82
82
|
}
|
83
83
|
if (GRPC_SLICE_START_PTR(slice)[0] == ':') {
|
84
|
-
return
|
85
|
-
"Metadata keys cannot start with :");
|
84
|
+
return GRPC_ERROR_CREATE("Metadata keys cannot start with :");
|
86
85
|
}
|
87
86
|
return conforms_to(slice, g_legal_header_key_bits, "Illegal header key");
|
88
87
|
}
|
@@ -23,6 +23,6 @@
|
|
23
23
|
|
24
24
|
#include <grpc/grpc.h>
|
25
25
|
|
26
|
-
const char* grpc_version_string(void) { return "
|
26
|
+
const char* grpc_version_string(void) { return "29.0.0"; }
|
27
27
|
|
28
|
-
const char* grpc_g_stands_for(void) { return "
|
28
|
+
const char* grpc_g_stands_for(void) { return "galaxy"; }
|
@@ -64,12 +64,12 @@ class AsyncConnectivityStateWatcherInterface::Notifier {
|
|
64
64
|
: watcher_(std::move(watcher)), state_(state), status_(status) {
|
65
65
|
if (work_serializer != nullptr) {
|
66
66
|
work_serializer->Run(
|
67
|
-
[this]() { SendNotification(this,
|
67
|
+
[this]() { SendNotification(this, absl::OkStatus()); },
|
68
68
|
DEBUG_LOCATION);
|
69
69
|
} else {
|
70
70
|
GRPC_CLOSURE_INIT(&closure_, SendNotification, this,
|
71
71
|
grpc_schedule_on_exec_ctx);
|
72
|
-
ExecCtx::Run(DEBUG_LOCATION, &closure_,
|
72
|
+
ExecCtx::Run(DEBUG_LOCATION, &closure_, absl::OkStatus());
|
73
73
|
}
|
74
74
|
}
|
75
75
|
|
@@ -32,7 +32,7 @@
|
|
32
32
|
#include "src/core/lib/transport/status_conversion.h"
|
33
33
|
|
34
34
|
static grpc_error_handle recursively_find_error_with_field(
|
35
|
-
grpc_error_handle error,
|
35
|
+
grpc_error_handle error, grpc_core::StatusIntProperty which) {
|
36
36
|
intptr_t unused;
|
37
37
|
// If the error itself has a status code, return it.
|
38
38
|
if (grpc_error_get_int(error, which, &unused)) {
|
@@ -41,9 +41,9 @@ static grpc_error_handle recursively_find_error_with_field(
|
|
41
41
|
std::vector<absl::Status> children = grpc_core::StatusGetChildren(error);
|
42
42
|
for (const absl::Status& child : children) {
|
43
43
|
grpc_error_handle result = recursively_find_error_with_field(child, which);
|
44
|
-
if (!
|
44
|
+
if (!result.ok()) return result;
|
45
45
|
}
|
46
|
-
return
|
46
|
+
return absl::OkStatus();
|
47
47
|
}
|
48
48
|
|
49
49
|
void grpc_error_get_status(grpc_error_handle error,
|
@@ -52,14 +52,14 @@ void grpc_error_get_status(grpc_error_handle error,
|
|
52
52
|
grpc_http2_error_code* http_error,
|
53
53
|
const char** error_string) {
|
54
54
|
// Fast path: We expect no error.
|
55
|
-
if (GPR_LIKELY(
|
55
|
+
if (GPR_LIKELY(error.ok())) {
|
56
56
|
if (code != nullptr) *code = GRPC_STATUS_OK;
|
57
57
|
if (message != nullptr) {
|
58
58
|
// Normally, we call grpc_error_get_str(
|
59
|
-
// error,
|
59
|
+
// error, grpc_core::StatusStrProperty::kGrpcMessage, message).
|
60
60
|
// We can fastpath since we know that:
|
61
61
|
// 1) Error is null
|
62
|
-
// 2) which ==
|
62
|
+
// 2) which == grpc_core::StatusStrProperty::kGrpcMessage
|
63
63
|
// 3) The resulting message is statically known.
|
64
64
|
// 4) Said resulting message is "".
|
65
65
|
// This means 3 movs, instead of 10s of instructions and a strlen.
|
@@ -73,24 +73,26 @@ void grpc_error_get_status(grpc_error_handle error,
|
|
73
73
|
|
74
74
|
// Start with the parent error and recurse through the tree of children
|
75
75
|
// until we find the first one that has a status code.
|
76
|
-
grpc_error_handle found_error =
|
77
|
-
|
78
|
-
if (
|
76
|
+
grpc_error_handle found_error = recursively_find_error_with_field(
|
77
|
+
error, grpc_core::StatusIntProperty::kRpcStatus);
|
78
|
+
if (found_error.ok()) {
|
79
79
|
/// If no grpc-status exists, retry through the tree to find a http2 error
|
80
80
|
/// code
|
81
|
-
found_error =
|
82
|
-
|
81
|
+
found_error = recursively_find_error_with_field(
|
82
|
+
error, grpc_core::StatusIntProperty::kHttp2Error);
|
83
83
|
}
|
84
84
|
|
85
85
|
// If we found an error with a status code above, use that; otherwise,
|
86
86
|
// fall back to using the parent error.
|
87
|
-
if (
|
87
|
+
if (found_error.ok()) found_error = error;
|
88
88
|
|
89
89
|
grpc_status_code status = GRPC_STATUS_UNKNOWN;
|
90
90
|
intptr_t integer;
|
91
|
-
if (grpc_error_get_int(found_error,
|
91
|
+
if (grpc_error_get_int(found_error, grpc_core::StatusIntProperty::kRpcStatus,
|
92
|
+
&integer)) {
|
92
93
|
status = static_cast<grpc_status_code>(integer);
|
93
|
-
} else if (grpc_error_get_int(found_error,
|
94
|
+
} else if (grpc_error_get_int(found_error,
|
95
|
+
grpc_core::StatusIntProperty::kHttp2Error,
|
94
96
|
&integer)) {
|
95
97
|
status = grpc_http2_error_to_grpc_status(
|
96
98
|
static_cast<grpc_http2_error_code>(integer), deadline);
|
@@ -100,30 +102,33 @@ void grpc_error_get_status(grpc_error_handle error,
|
|
100
102
|
if (code != nullptr) *code = status;
|
101
103
|
|
102
104
|
if (error_string != nullptr && status != GRPC_STATUS_OK) {
|
103
|
-
*error_string = gpr_strdup(
|
105
|
+
*error_string = gpr_strdup(grpc_core::StatusToString(error).c_str());
|
104
106
|
}
|
105
107
|
|
106
108
|
if (http_error != nullptr) {
|
107
|
-
if (grpc_error_get_int(
|
109
|
+
if (grpc_error_get_int(
|
110
|
+
found_error, grpc_core::StatusIntProperty::kHttp2Error, &integer)) {
|
108
111
|
*http_error = static_cast<grpc_http2_error_code>(integer);
|
109
|
-
} else if (grpc_error_get_int(found_error,
|
112
|
+
} else if (grpc_error_get_int(found_error,
|
113
|
+
grpc_core::StatusIntProperty::kRpcStatus,
|
110
114
|
&integer)) {
|
111
115
|
*http_error =
|
112
116
|
grpc_status_to_http2_error(static_cast<grpc_status_code>(integer));
|
113
117
|
} else {
|
114
|
-
*http_error =
|
115
|
-
|
118
|
+
*http_error =
|
119
|
+
found_error.ok() ? GRPC_HTTP2_NO_ERROR : GRPC_HTTP2_INTERNAL_ERROR;
|
116
120
|
}
|
117
121
|
}
|
118
122
|
|
119
123
|
// If the error has a status message, use it. Otherwise, fall back to
|
120
124
|
// the error description.
|
121
125
|
if (message != nullptr) {
|
122
|
-
if (!grpc_error_get_str(
|
123
|
-
|
124
|
-
if (!grpc_error_get_str(found_error,
|
126
|
+
if (!grpc_error_get_str(
|
127
|
+
found_error, grpc_core::StatusStrProperty::kGrpcMessage, message)) {
|
128
|
+
if (!grpc_error_get_str(found_error,
|
129
|
+
grpc_core::StatusStrProperty::kDescription,
|
125
130
|
message)) {
|
126
|
-
*message =
|
131
|
+
*message = grpc_core::StatusToString(error);
|
127
132
|
}
|
128
133
|
}
|
129
134
|
}
|
@@ -143,16 +148,17 @@ absl::Status grpc_error_to_absl_status(grpc_error_handle error) {
|
|
143
148
|
grpc_error_handle absl_status_to_grpc_error(absl::Status status) {
|
144
149
|
// Special error checks
|
145
150
|
if (status.ok()) {
|
146
|
-
return
|
151
|
+
return absl::OkStatus();
|
147
152
|
}
|
148
|
-
return grpc_error_set_int(
|
149
|
-
|
150
|
-
|
153
|
+
return grpc_error_set_int(GRPC_ERROR_CREATE(status.message()),
|
154
|
+
grpc_core::StatusIntProperty::kRpcStatus,
|
155
|
+
static_cast<grpc_status_code>(status.code()));
|
151
156
|
}
|
152
157
|
|
153
158
|
bool grpc_error_has_clear_grpc_status(grpc_error_handle error) {
|
154
159
|
intptr_t unused;
|
155
|
-
if (grpc_error_get_int(error,
|
160
|
+
if (grpc_error_get_int(error, grpc_core::StatusIntProperty::kRpcStatus,
|
161
|
+
&unused)) {
|
156
162
|
return true;
|
157
163
|
}
|
158
164
|
std::vector<absl::Status> children = grpc_core::StatusGetChildren(error);
|