grpc 1.46.2 → 1.48.0.pre1
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 +138 -128
- data/include/grpc/compression.h +1 -1
- data/include/grpc/event_engine/event_engine.h +62 -18
- data/include/grpc/event_engine/memory_allocator.h +0 -15
- data/include/grpc/event_engine/port.h +1 -1
- data/include/grpc/event_engine/slice.h +286 -0
- data/include/grpc/event_engine/slice_buffer.h +118 -0
- data/include/grpc/grpc.h +3 -3
- data/include/grpc/grpc_security.h +11 -0
- data/include/grpc/impl/codegen/compression_types.h +2 -1
- data/include/grpc/impl/codegen/connectivity_state.h +2 -1
- data/include/grpc/impl/codegen/gpr_types.h +2 -1
- data/include/grpc/impl/codegen/grpc_types.h +2 -1
- data/include/grpc/impl/codegen/port_platform.h +106 -39
- data/include/grpc/impl/codegen/slice.h +1 -1
- data/src/core/ext/filters/census/grpc_context.cc +3 -0
- data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +35 -35
- data/src/core/ext/filters/channel_idle/channel_idle_filter.h +20 -1
- data/src/core/ext/filters/channel_idle/idle_filter_state.h +2 -0
- data/src/core/ext/filters/client_channel/backend_metric.cc +17 -12
- data/src/core/ext/filters/client_channel/backend_metric.h +19 -9
- data/src/core/ext/filters/client_channel/backup_poller.cc +8 -6
- data/src/core/ext/filters/client_channel/backup_poller.h +2 -4
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +43 -21
- data/src/core/ext/filters/client_channel/client_channel.cc +111 -82
- data/src/core/ext/filters/client_channel/client_channel.h +43 -8
- data/src/core/ext/filters/client_channel/client_channel_channelz.cc +3 -5
- data/src/core/ext/filters/client_channel/client_channel_channelz.h +12 -2
- data/src/core/ext/filters/client_channel/client_channel_factory.cc +5 -0
- data/src/core/ext/filters/client_channel/client_channel_factory.h +8 -0
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +4 -13
- data/src/core/ext/filters/client_channel/config_selector.cc +1 -0
- data/src/core/ext/filters/client_channel/config_selector.h +8 -6
- data/src/core/ext/filters/client_channel/connector.h +9 -3
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +19 -6
- data/src/core/ext/filters/client_channel/dynamic_filters.h +12 -2
- data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +2 -0
- data/src/core/ext/filters/client_channel/global_subchannel_pool.h +3 -0
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +14 -1
- data/src/core/ext/filters/client_channel/health/health_check_client.h +2 -0
- data/src/core/ext/filters/client_channel/http_proxy.cc +10 -2
- data/src/core/ext/filters/client_channel/http_proxy.h +3 -0
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +6 -2
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +1 -0
- data/src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h +49 -0
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +12 -0
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +5 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +11 -5
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h +1 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +132 -62
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +4 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +6 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +10 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +6 -3
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +407 -0
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.h +57 -0
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +1036 -0
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +54 -0
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +149 -147
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +176 -85
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +303 -203
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +6 -1
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +92 -54
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +240 -214
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +119 -111
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +86 -71
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +101 -25
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +6 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +35 -11
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +36 -20
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +78 -14
- data/src/core/ext/filters/client_channel/lb_policy.cc +4 -2
- data/src/core/ext/filters/client_channel/lb_policy.h +18 -31
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +2 -0
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +11 -6
- data/src/core/ext/filters/client_channel/lb_policy_registry.h +6 -1
- data/src/core/ext/filters/client_channel/local_subchannel_pool.cc +4 -0
- data/src/core/ext/filters/client_channel/local_subchannel_pool.h +1 -0
- data/src/core/ext/filters/client_channel/proxy_mapper.h +1 -1
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +1 -0
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.h +5 -0
- data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +26 -6
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +139 -48
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +8 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +10 -8
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +6 -6
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +36 -14
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +13 -4
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +2 -1
- data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.cc +2 -0
- data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.h +2 -1
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +39 -7
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +18 -19
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +5 -2
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +61 -16
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +14 -2
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +8 -1
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +17 -12
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +111 -46
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +3 -1
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +12 -18
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +11 -5
- data/src/core/ext/filters/client_channel/retry_filter.cc +75 -36
- data/src/core/ext/filters/client_channel/retry_filter.h +1 -0
- data/src/core/ext/filters/client_channel/retry_service_config.cc +12 -13
- data/src/core/ext/filters/client_channel/retry_service_config.h +10 -1
- data/src/core/ext/filters/client_channel/retry_throttle.cc +1 -8
- data/src/core/ext/filters/client_channel/retry_throttle.h +7 -1
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +24 -6
- data/src/core/ext/filters/client_channel/subchannel.cc +186 -187
- data/src/core/ext/filters/client_channel/subchannel.h +80 -36
- data/src/core/ext/filters/client_channel/subchannel_interface.h +51 -41
- data/src/core/ext/filters/client_channel/subchannel_interface_internal.h +38 -0
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +12 -2
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +6 -3
- data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +24 -95
- data/src/core/ext/filters/client_channel/subchannel_stream_client.h +17 -9
- data/src/core/ext/filters/deadline/deadline_filter.cc +18 -9
- data/src/core/ext/filters/deadline/deadline_filter.h +8 -1
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +22 -6
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +8 -3
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +7 -4
- data/src/core/ext/filters/fault_injection/service_config_parser.h +17 -3
- data/src/core/ext/filters/http/client/http_client_filter.cc +30 -10
- data/src/core/ext/filters/http/client/http_client_filter.h +15 -2
- data/src/core/ext/filters/http/client_authority_filter.cc +16 -20
- data/src/core/ext/filters/http/client_authority_filter.h +5 -2
- data/src/core/ext/filters/http/http_filters_plugin.cc +16 -9
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +65 -187
- data/src/core/ext/filters/http/message_compress/message_compress_filter.h +1 -2
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +45 -107
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.h +1 -0
- data/src/core/ext/filters/http/server/http_server_filter.cc +95 -255
- data/src/core/ext/filters/http/server/http_server_filter.h +37 -3
- data/src/core/ext/filters/message_size/message_size_filter.cc +45 -41
- data/src/core/ext/filters/message_size/message_size_filter.h +15 -2
- data/src/core/ext/filters/rbac/rbac_filter.cc +15 -3
- data/src/core/ext/filters/rbac/rbac_filter.h +8 -0
- data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +13 -2
- data/src/core/ext/filters/rbac/rbac_service_config_parser.h +14 -2
- data/src/core/ext/filters/server_config_selector/server_config_selector.cc +1 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector.h +9 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +22 -2
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.h +1 -0
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +104 -138
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +9 -7
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +58 -29
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +2 -0
- data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +3 -3
- data/src/core/ext/transport/chttp2/transport/bin_decoder.h +2 -1
- data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +1 -0
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +260 -491
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +6 -1
- data/src/core/ext/transport/chttp2/transport/context_list.cc +4 -0
- data/src/core/ext/transport/chttp2/transport/context_list.h +4 -1
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +145 -261
- data/src/core/ext/transport/chttp2/transport/flow_control.h +179 -288
- data/src/core/ext/transport/chttp2/transport/frame.h +0 -4
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +59 -211
- data/src/core/ext/transport/chttp2/transport/frame_data.h +13 -36
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +3 -0
- data/src/core/ext/transport/chttp2/transport/frame_goaway.h +3 -1
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +5 -0
- data/src/core/ext/transport/chttp2/transport/frame_ping.h +3 -0
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +6 -2
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +3 -0
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +10 -42
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +4 -0
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +10 -12
- data/src/core/ext/transport/chttp2/transport/frame_window_update.h +3 -0
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +14 -12
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +15 -2
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +3 -0
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +3 -0
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +32 -13
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +8 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +53 -37
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +38 -21
- data/src/core/ext/transport/chttp2/transport/http2_settings.h +0 -1
- data/src/core/ext/transport/chttp2/transport/internal.h +31 -112
- data/src/core/ext/transport/chttp2/transport/parsing.cc +77 -43
- data/src/core/ext/transport/chttp2/transport/stream_lists.cc +11 -11
- data/src/core/ext/transport/chttp2/transport/stream_map.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/stream_map.h +1 -0
- data/src/core/ext/transport/chttp2/transport/varint.h +2 -0
- data/src/core/ext/transport/chttp2/transport/writing.cc +54 -21
- data/src/core/ext/transport/inproc/inproc_plugin.cc +0 -1
- data/src/core/ext/transport/inproc/inproc_transport.cc +93 -86
- data/src/core/ext/transport/inproc/inproc_transport.h +3 -1
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.c +52 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +164 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.c +46 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.h +94 -0
- data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.c +47 -0
- data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.h +109 -0
- data/src/core/ext/xds/certificate_provider_factory.h +6 -1
- data/src/core/ext/xds/certificate_provider_registry.cc +8 -8
- data/src/core/ext/xds/certificate_provider_registry.h +3 -1
- data/src/core/ext/xds/certificate_provider_store.cc +6 -2
- data/src/core/ext/xds/certificate_provider_store.h +10 -1
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +9 -0
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +8 -0
- data/src/core/ext/xds/upb_utils.h +1 -2
- data/src/core/ext/xds/xds_api.cc +16 -18
- data/src/core/ext/xds/xds_api.h +12 -5
- data/src/core/ext/xds/xds_bootstrap.cc +39 -26
- data/src/core/ext/xds/xds_bootstrap.h +11 -11
- data/src/core/ext/xds/xds_certificate_provider.cc +16 -4
- data/src/core/ext/xds/xds_certificate_provider.h +17 -2
- data/src/core/ext/xds/xds_channel_stack_modifier.cc +14 -5
- data/src/core/ext/xds/xds_channel_stack_modifier.h +5 -1
- data/src/core/ext/xds/xds_client.cc +121 -46
- data/src/core/ext/xds/xds_client.h +19 -4
- data/src/core/ext/xds/xds_client_stats.cc +3 -4
- data/src/core/ext/xds/xds_client_stats.h +4 -3
- data/src/core/ext/xds/xds_cluster.cc +126 -25
- data/src/core/ext/xds/xds_cluster.h +12 -1
- data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +16 -7
- data/src/core/ext/xds/xds_cluster_specifier_plugin.h +1 -8
- data/src/core/ext/xds/xds_common_types.cc +36 -22
- data/src/core/ext/xds/xds_common_types.h +12 -4
- data/src/core/ext/xds/xds_endpoint.cc +25 -15
- data/src/core/ext/xds/xds_endpoint.h +13 -5
- data/src/core/ext/xds/xds_http_fault_filter.cc +10 -8
- data/src/core/ext/xds/xds_http_fault_filter.h +3 -1
- data/src/core/ext/xds/xds_http_filters.cc +7 -0
- data/src/core/ext/xds/xds_http_filters.h +3 -3
- data/src/core/ext/xds/xds_http_rbac_filter.cc +16 -0
- data/src/core/ext/xds/xds_http_rbac_filter.h +7 -0
- data/src/core/ext/xds/xds_lb_policy_registry.cc +291 -0
- data/src/core/ext/xds/xds_lb_policy_registry.h +72 -0
- data/src/core/ext/xds/xds_listener.cc +70 -42
- data/src/core/ext/xds/xds_listener.h +10 -1
- data/src/core/ext/xds/xds_resource_type.h +3 -3
- data/src/core/ext/xds/xds_resource_type_impl.h +7 -3
- data/src/core/ext/xds/xds_route_config.cc +56 -28
- data/src/core/ext/xds/xds_route_config.h +11 -2
- data/src/core/ext/xds/xds_routing.cc +16 -0
- data/src/core/ext/xds/xds_routing.h +7 -2
- data/src/core/ext/xds/xds_server_config_fetcher.cc +56 -7
- data/src/core/lib/address_utils/parse_address.cc +5 -8
- data/src/core/lib/address_utils/parse_address.h +3 -2
- data/src/core/lib/address_utils/sockaddr_utils.cc +60 -26
- data/src/core/lib/address_utils/sockaddr_utils.h +9 -4
- data/src/core/lib/avl/avl.h +6 -4
- data/src/core/lib/backoff/backoff.cc +1 -1
- data/src/core/lib/backoff/backoff.h +1 -1
- data/src/core/lib/channel/call_finalization.h +4 -0
- data/src/core/lib/channel/call_tracer.h +11 -5
- data/src/core/lib/channel/channel_args.cc +41 -22
- data/src/core/lib/channel/channel_args.h +34 -3
- data/src/core/lib/channel/channel_args_preconditioning.cc +4 -3
- data/src/core/lib/channel/channel_args_preconditioning.h +3 -2
- data/src/core/lib/channel/channel_fwd.h +26 -0
- data/src/core/lib/channel/channel_stack.cc +45 -7
- data/src/core/lib/channel/channel_stack.h +45 -9
- data/src/core/lib/channel/channel_stack_builder.cc +9 -19
- data/src/core/lib/channel/channel_stack_builder.h +17 -32
- data/src/core/lib/channel/channel_stack_builder_impl.cc +38 -43
- data/src/core/lib/channel/channel_stack_builder_impl.h +4 -6
- data/src/core/lib/channel/channel_trace.cc +8 -13
- data/src/core/lib/channel/channel_trace.h +6 -3
- data/src/core/lib/channel/channelz.cc +10 -14
- data/src/core/lib/channel/channelz.h +15 -7
- data/src/core/lib/channel/channelz_registry.cc +11 -19
- data/src/core/lib/channel/channelz_registry.h +10 -9
- data/src/core/lib/channel/connected_channel.cc +22 -31
- data/src/core/lib/channel/connected_channel.h +2 -0
- data/src/core/lib/channel/promise_based_filter.cc +451 -190
- data/src/core/lib/channel/promise_based_filter.h +162 -27
- data/src/core/lib/channel/status_util.cc +2 -0
- data/src/core/lib/channel/status_util.h +0 -3
- data/src/core/lib/compression/compression.cc +6 -1
- data/src/core/lib/compression/compression_internal.cc +48 -16
- data/src/core/lib/compression/compression_internal.h +4 -3
- data/src/core/lib/compression/message_compress.cc +3 -1
- data/src/core/lib/compression/message_compress.h +2 -3
- data/src/core/lib/config/core_configuration.cc +3 -0
- data/src/core/lib/config/core_configuration.h +2 -1
- data/src/core/lib/debug/stats.cc +9 -9
- data/src/core/lib/debug/stats.h +2 -1
- data/src/core/lib/debug/stats_data.cc +2 -1
- data/src/core/lib/debug/stats_data.h +0 -4
- data/src/core/lib/debug/trace.h +13 -12
- data/src/core/lib/event_engine/channel_args_endpoint_config.cc +4 -2
- data/src/core/lib/event_engine/channel_args_endpoint_config.h +3 -2
- data/src/core/lib/event_engine/default_event_engine_factory.cc +8 -2
- data/src/core/lib/event_engine/event_engine.cc +29 -14
- data/src/core/lib/event_engine/event_engine_factory.h +5 -0
- data/src/core/lib/event_engine/handle_containers.h +67 -0
- data/src/core/lib/event_engine/iomgr_engine/iomgr_engine.cc +159 -0
- data/src/core/lib/event_engine/iomgr_engine/iomgr_engine.h +122 -0
- data/src/core/lib/event_engine/iomgr_engine/thread_pool.cc +123 -0
- data/src/core/lib/event_engine/iomgr_engine/thread_pool.h +70 -0
- data/src/core/lib/event_engine/iomgr_engine/time_averaged_stats.cc +62 -0
- data/src/core/lib/event_engine/iomgr_engine/time_averaged_stats.h +81 -0
- data/src/core/lib/event_engine/iomgr_engine/timer.cc +312 -0
- data/src/core/lib/event_engine/iomgr_engine/timer.h +193 -0
- data/src/core/lib/event_engine/iomgr_engine/timer_heap.cc +107 -0
- data/src/core/lib/event_engine/iomgr_engine/timer_heap.h +56 -0
- data/src/core/lib/event_engine/iomgr_engine/timer_manager.cc +254 -0
- data/src/core/lib/event_engine/iomgr_engine/timer_manager.h +111 -0
- data/src/core/lib/event_engine/memory_allocator.cc +12 -4
- data/src/core/lib/{iomgr/event_engine → event_engine}/promise.h +27 -9
- data/src/core/lib/event_engine/resolved_address.cc +4 -2
- data/src/core/lib/event_engine/slice.cc +102 -0
- data/src/core/lib/event_engine/slice_buffer.cc +50 -0
- data/src/core/lib/{iomgr/event_engine/pollset.h → event_engine/trace.cc} +3 -10
- data/src/core/lib/{iomgr/endpoint_pair_event_engine.cc → event_engine/trace.h} +12 -14
- data/src/core/lib/gpr/log.cc +5 -0
- data/src/core/lib/gpr/time_posix.cc +6 -9
- data/src/core/lib/gpr/time_windows.cc +10 -7
- data/src/core/lib/gpr/tls.h +3 -5
- data/src/core/lib/gprpp/bitset.h +5 -1
- data/src/core/lib/gprpp/chunked_vector.h +4 -0
- data/src/core/lib/gprpp/construct_destruct.h +1 -0
- data/src/core/lib/gprpp/dual_ref_counted.h +1 -4
- data/src/core/lib/gprpp/examine_stack.h +0 -1
- data/src/core/lib/gprpp/fork.cc +3 -6
- data/src/core/lib/gprpp/global_config.h +2 -4
- data/src/core/lib/gprpp/global_config_env.cc +3 -2
- data/src/core/lib/gprpp/global_config_env.h +3 -1
- data/src/core/lib/gprpp/global_config_generic.h +0 -4
- data/src/core/lib/gprpp/host_port.cc +2 -0
- data/src/core/lib/gprpp/manual_constructor.h +0 -68
- data/src/core/lib/gprpp/match.h +2 -0
- data/src/core/lib/gprpp/memory.h +1 -5
- data/src/core/lib/gprpp/orphanable.h +1 -4
- data/src/core/lib/gprpp/ref_counted.h +1 -3
- data/src/core/lib/gprpp/ref_counted_ptr.h +1 -1
- data/src/core/lib/gprpp/stat.h +0 -2
- data/src/core/lib/gprpp/stat_posix.cc +7 -2
- data/src/core/lib/gprpp/status_helper.cc +50 -32
- data/src/core/lib/gprpp/status_helper.h +4 -0
- data/src/core/lib/gprpp/sync.h +3 -1
- data/src/core/lib/gprpp/table.h +10 -0
- data/src/core/lib/gprpp/thd.h +2 -5
- data/src/core/lib/gprpp/thd_posix.cc +4 -2
- data/src/core/lib/gprpp/thd_windows.cc +2 -0
- data/src/core/lib/gprpp/time.cc +16 -0
- data/src/core/lib/gprpp/time.h +10 -1
- data/src/core/lib/gprpp/time_util.cc +4 -0
- data/src/core/lib/gprpp/time_util.h +1 -1
- data/src/core/lib/gprpp/unique_type_name.h +104 -0
- data/src/core/lib/http/format_request.cc +34 -4
- data/src/core/lib/http/format_request.h +3 -1
- data/src/core/lib/http/httpcli.cc +106 -93
- data/src/core/lib/http/httpcli.h +58 -10
- data/src/core/lib/http/httpcli_security_connector.cc +19 -8
- data/src/core/lib/http/httpcli_ssl_credentials.h +3 -1
- data/src/core/lib/http/parser.cc +6 -7
- data/src/core/lib/http/parser.h +3 -0
- data/src/core/lib/iomgr/call_combiner.cc +2 -2
- data/src/core/lib/iomgr/endpoint.cc +4 -4
- data/src/core/lib/iomgr/endpoint.h +7 -5
- data/src/core/lib/iomgr/endpoint_cfstream.cc +9 -6
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +2 -1
- data/src/core/lib/iomgr/error.cc +11 -9
- data/src/core/lib/iomgr/error.h +9 -5
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +57 -18
- data/src/core/lib/iomgr/ev_epoll1_linux.h +1 -1
- data/src/core/lib/iomgr/ev_poll_posix.cc +77 -52
- data/src/core/lib/iomgr/ev_poll_posix.h +2 -2
- data/src/core/lib/iomgr/ev_posix.cc +55 -96
- data/src/core/lib/iomgr/ev_posix.h +5 -3
- data/src/core/lib/iomgr/exec_ctx.h +1 -2
- data/src/core/lib/iomgr/fork_posix.cc +1 -1
- data/src/core/lib/iomgr/internal_errqueue.cc +38 -47
- data/src/core/lib/iomgr/internal_errqueue.h +1 -6
- data/src/core/lib/iomgr/iomgr.cc +7 -1
- data/src/core/{ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_event_engine.cc → lib/iomgr/iomgr_fwd.h} +9 -12
- data/src/core/lib/iomgr/iomgr_posix.cc +1 -0
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +1 -0
- data/src/core/lib/iomgr/load_file.cc +1 -1
- data/src/core/lib/iomgr/pollset_set.h +1 -2
- data/src/core/lib/iomgr/port.h +25 -6
- data/src/core/lib/iomgr/resolve_address.cc +8 -0
- data/src/core/lib/iomgr/resolve_address.h +21 -14
- data/src/core/lib/iomgr/resolve_address_impl.h +2 -3
- data/src/core/lib/iomgr/resolve_address_posix.cc +9 -15
- data/src/core/lib/iomgr/resolve_address_posix.h +5 -2
- data/src/core/lib/iomgr/resolve_address_windows.cc +8 -15
- data/src/core/lib/iomgr/resolve_address_windows.h +5 -2
- data/src/core/lib/iomgr/sockaddr.h +2 -3
- data/src/core/lib/iomgr/sockaddr_posix.h +2 -0
- data/src/core/lib/iomgr/sockaddr_windows.h +2 -0
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +3 -2
- data/src/core/lib/iomgr/tcp_client.cc +12 -7
- data/src/core/lib/iomgr/tcp_client.h +24 -13
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +24 -10
- data/src/core/lib/iomgr/tcp_client_posix.cc +154 -29
- data/src/core/lib/iomgr/tcp_client_posix.h +1 -1
- data/src/core/lib/iomgr/tcp_client_windows.cc +27 -16
- data/src/core/lib/iomgr/tcp_posix.cc +96 -52
- data/src/core/lib/iomgr/tcp_server_posix.cc +33 -19
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +41 -38
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +9 -6
- data/src/core/lib/iomgr/tcp_server_windows.cc +20 -12
- data/src/core/lib/iomgr/tcp_windows.cc +12 -9
- data/src/core/lib/iomgr/unix_sockets_posix.cc +2 -2
- data/src/core/lib/iomgr/wakeup_fd_pipe.cc +2 -2
- data/src/core/lib/iomgr/wakeup_fd_posix.cc +15 -12
- data/src/core/lib/iomgr/wakeup_fd_posix.h +0 -2
- data/src/core/lib/iomgr/work_serializer.h +2 -3
- data/src/core/lib/json/json.h +1 -2
- data/src/core/lib/json/json_reader.cc +9 -1
- data/src/core/lib/json/json_util.cc +7 -0
- data/src/core/lib/json/json_util.h +10 -1
- data/src/core/lib/json/json_writer.cc +6 -1
- data/src/core/lib/matchers/matchers.cc +6 -3
- data/src/core/lib/matchers/matchers.h +2 -0
- data/src/core/lib/promise/activity.cc +1 -2
- data/src/core/lib/promise/activity.h +13 -19
- data/src/core/lib/promise/arena_promise.h +11 -1
- data/src/core/lib/promise/call_push_pull.h +4 -0
- data/src/core/lib/promise/context.h +1 -1
- data/src/core/lib/promise/detail/basic_seq.h +2 -2
- data/src/core/lib/promise/detail/promise_factory.h +0 -1
- data/src/core/lib/promise/latch.h +0 -1
- data/src/core/lib/promise/loop.h +2 -0
- data/src/core/lib/promise/promise.h +1 -0
- data/src/core/lib/promise/race.h +0 -1
- data/src/core/lib/promise/seq.h +0 -2
- data/src/core/lib/promise/sleep.cc +38 -31
- data/src/core/lib/promise/sleep.h +32 -22
- data/src/core/lib/promise/try_seq.h +2 -2
- data/src/core/lib/resolver/resolver.cc +5 -0
- data/src/core/lib/resolver/resolver.h +3 -0
- data/src/core/lib/resolver/resolver_factory.h +6 -4
- data/src/core/lib/resolver/resolver_registry.cc +2 -9
- data/src/core/lib/resolver/resolver_registry.h +12 -1
- data/src/core/lib/resolver/server_address.cc +17 -3
- data/src/core/lib/resolver/server_address.h +13 -6
- data/src/core/lib/resource_quota/api.cc +14 -1
- data/src/core/lib/resource_quota/api.h +4 -1
- data/src/core/lib/resource_quota/arena.cc +0 -6
- data/src/core/lib/resource_quota/arena.h +1 -2
- data/src/core/lib/resource_quota/memory_quota.cc +62 -62
- data/src/core/lib/resource_quota/memory_quota.h +35 -30
- data/src/core/lib/resource_quota/resource_quota.h +8 -0
- data/src/core/lib/resource_quota/thread_quota.cc +2 -0
- data/src/core/lib/resource_quota/thread_quota.h +4 -0
- data/src/core/lib/security/authorization/authorization_policy_provider.h +7 -0
- data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +4 -0
- data/src/core/lib/security/authorization/evaluate_args.cc +9 -3
- data/src/core/lib/security/authorization/evaluate_args.h +6 -3
- data/src/core/lib/security/authorization/grpc_authorization_engine.cc +6 -0
- data/src/core/lib/security/authorization/grpc_authorization_engine.h +7 -0
- data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +15 -0
- data/src/core/lib/security/authorization/grpc_server_authz_filter.h +12 -1
- data/src/core/lib/security/authorization/matchers.cc +9 -1
- data/src/core/lib/security/authorization/matchers.h +7 -0
- data/src/core/lib/security/authorization/rbac_policy.cc +5 -0
- data/src/core/lib/security/authorization/rbac_policy.h +7 -0
- data/src/core/lib/security/context/security_context.cc +5 -2
- data/src/core/lib/security/context/security_context.h +14 -2
- data/src/core/lib/security/credentials/alts/alts_credentials.cc +12 -4
- data/src/core/lib/security/credentials/alts/alts_credentials.h +8 -3
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc +1 -3
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc +1 -4
- data/src/core/lib/security/credentials/call_creds_util.cc +10 -0
- data/src/core/lib/security/credentials/call_creds_util.h +1 -0
- data/src/core/lib/security/credentials/channel_creds_registry.h +7 -1
- data/src/core/lib/security/credentials/channel_creds_registry_init.cc +10 -0
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +11 -7
- data/src/core/lib/security/credentials/composite/composite_credentials.h +21 -6
- data/src/core/lib/security/credentials/credentials.cc +4 -8
- data/src/core/lib/security/credentials/credentials.h +27 -18
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +108 -9
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +18 -0
- data/src/core/lib/security/credentials/external/aws_request_signer.cc +9 -0
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +27 -9
- data/src/core/lib/security/credentials/external/external_account_credentials.h +11 -0
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +12 -4
- data/src/core/lib/security/credentials/external/file_external_account_credentials.h +6 -0
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +22 -4
- data/src/core/lib/security/credentials/external/url_external_account_credentials.h +10 -0
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +21 -9
- data/src/core/lib/security/credentials/fake/fake_credentials.h +15 -3
- data/src/core/lib/security/credentials/google_default/credentials_generic.cc +1 -0
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +51 -24
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +12 -3
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +13 -4
- data/src/core/lib/security/credentials/iam/iam_credentials.h +12 -2
- data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +12 -2
- data/src/core/lib/security/credentials/insecure/insecure_credentials.h +9 -4
- data/src/core/lib/security/credentials/jwt/json_token.cc +5 -2
- data/src/core/lib/security/credentials/jwt/json_token.h +2 -2
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +14 -7
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +16 -2
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +28 -3
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +4 -2
- data/src/core/lib/security/credentials/local/local_credentials.cc +12 -5
- data/src/core/lib/security/credentials/local/local_credentials.h +9 -2
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +36 -19
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +24 -4
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +12 -8
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +25 -1
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +13 -2
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +17 -4
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +6 -6
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +9 -3
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +39 -10
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +14 -11
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +35 -3
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +34 -11
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +4 -5
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +17 -2
- data/src/core/lib/security/credentials/tls/tls_credentials.h +7 -3
- data/src/core/lib/security/credentials/tls/tls_utils.cc +2 -0
- data/src/core/lib/security/credentials/tls/tls_utils.h +1 -1
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +20 -4
- data/src/core/lib/security/credentials/xds/xds_credentials.h +19 -5
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +22 -2
- data/src/core/lib/security/security_connector/alts/alts_security_connector.h +6 -3
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +18 -2
- data/src/core/lib/security/security_connector/fake/fake_security_connector.h +2 -2
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +9 -0
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +17 -2
- data/src/core/lib/security/security_connector/load_system_roots_fallback.cc +5 -3
- data/src/core/lib/security/security_connector/{load_system_roots_linux.cc → load_system_roots_supported.cc} +27 -19
- data/src/core/lib/security/security_connector/{load_system_roots_linux.h → load_system_roots_supported.h} +5 -5
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +22 -3
- data/src/core/lib/security/security_connector/local/local_security_connector.h +6 -2
- data/src/core/lib/security/security_connector/security_connector.cc +20 -18
- data/src/core/lib/security/security_connector/security_connector.h +19 -7
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +19 -7
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +4 -2
- data/src/core/lib/security/security_connector/ssl_utils.cc +12 -2
- data/src/core/lib/security/security_connector/ssl_utils.h +10 -7
- data/src/core/lib/security/security_connector/ssl_utils_config.h +1 -1
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +21 -13
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +23 -3
- data/src/core/lib/security/transport/auth_filters.h +7 -0
- data/src/core/lib/security/transport/client_auth_filter.cc +24 -17
- data/src/core/lib/security/transport/secure_endpoint.cc +81 -20
- data/src/core/lib/security/transport/secure_endpoint.h +4 -3
- data/src/core/lib/security/transport/security_handshaker.cc +49 -16
- data/src/core/lib/security/transport/security_handshaker.h +5 -1
- data/src/core/lib/security/transport/server_auth_filter.cc +29 -6
- data/src/core/lib/security/util/json_util.cc +3 -2
- data/src/core/lib/security/util/json_util.h +0 -2
- data/src/core/lib/service_config/service_config.h +4 -8
- data/src/core/lib/service_config/service_config_call_data.h +6 -2
- data/src/core/lib/service_config/service_config_impl.cc +13 -6
- data/src/core/lib/service_config/service_config_impl.h +9 -4
- data/src/core/lib/service_config/service_config_parser.cc +8 -2
- data/src/core/lib/service_config/service_config_parser.h +7 -0
- data/src/core/lib/slice/b64.cc +1 -1
- data/src/core/lib/slice/b64.h +2 -0
- data/src/core/lib/slice/percent_encoding.cc +4 -1
- data/src/core/lib/slice/percent_encoding.h +0 -6
- data/src/core/lib/slice/slice.cc +2 -1
- data/src/core/lib/slice/slice.h +10 -5
- data/src/core/lib/slice/slice_api.cc +1 -1
- data/src/core/lib/slice/slice_buffer.cc +79 -23
- data/src/core/lib/slice/slice_buffer.h +137 -0
- data/src/core/lib/slice/slice_buffer_api.cc +35 -0
- data/src/core/lib/slice/slice_internal.h +4 -3
- data/src/core/lib/slice/slice_refcount.h +2 -3
- data/src/core/lib/slice/slice_refcount_base.h +2 -3
- data/src/core/lib/slice/slice_string_helpers.cc +0 -16
- data/src/core/lib/slice/slice_string_helpers.h +1 -8
- data/src/core/lib/surface/builtins.cc +7 -2
- data/src/core/lib/surface/byte_buffer.cc +7 -1
- data/src/core/lib/surface/byte_buffer_reader.cc +4 -4
- data/src/core/lib/surface/call.cc +90 -137
- data/src/core/lib/surface/call.h +21 -3
- data/src/core/lib/surface/call_details.cc +4 -4
- data/src/core/lib/surface/call_log_batch.cc +7 -1
- data/src/core/lib/surface/call_test_only.h +4 -1
- data/src/core/lib/surface/channel.cc +179 -242
- data/src/core/lib/surface/channel.h +97 -58
- data/src/core/lib/surface/channel_init.h +2 -0
- data/src/core/lib/surface/channel_ping.cc +8 -2
- data/src/core/lib/surface/channel_stack_type.cc +0 -2
- data/src/core/lib/surface/channel_stack_type.h +0 -2
- data/src/core/lib/surface/completion_queue.cc +29 -20
- data/src/core/lib/surface/completion_queue.h +7 -2
- data/src/core/lib/surface/completion_queue_factory.cc +1 -0
- data/src/core/lib/surface/completion_queue_factory.h +1 -3
- data/src/core/lib/surface/event_string.cc +1 -7
- data/src/core/lib/surface/event_string.h +1 -1
- data/src/core/lib/surface/init.cc +17 -46
- data/src/core/lib/surface/init.h +0 -8
- data/src/core/lib/surface/lame_client.cc +63 -109
- data/src/core/lib/surface/lame_client.h +41 -3
- data/src/core/lib/surface/metadata_array.cc +2 -0
- data/src/core/lib/surface/server.cc +83 -64
- data/src/core/lib/surface/server.h +42 -9
- data/src/core/lib/surface/validate_metadata.cc +3 -6
- data/src/core/lib/surface/validate_metadata.h +3 -0
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/bdp_estimator.cc +3 -1
- data/src/core/lib/transport/bdp_estimator.h +2 -3
- data/src/core/lib/transport/connectivity_state.cc +6 -4
- data/src/core/lib/transport/connectivity_state.h +2 -3
- data/src/core/lib/transport/error_utils.cc +16 -8
- data/src/core/lib/transport/error_utils.h +5 -1
- data/src/core/lib/{channel → transport}/handshaker.cc +12 -7
- data/src/core/lib/{channel → transport}/handshaker.h +13 -6
- data/src/core/lib/{channel → transport}/handshaker_factory.h +9 -10
- data/src/core/lib/{channel → transport}/handshaker_registry.cc +5 -1
- data/src/core/lib/{channel → transport}/handshaker_registry.h +5 -4
- data/src/core/{ext/filters/client_channel → lib/transport}/http_connect_handshaker.cc +28 -14
- data/src/core/{ext/filters/client_channel → lib/transport}/http_connect_handshaker.h +3 -3
- data/src/core/lib/transport/metadata_batch.cc +287 -0
- data/src/core/lib/transport/metadata_batch.h +133 -264
- data/src/core/lib/transport/parsed_metadata.cc +2 -0
- data/src/core/lib/transport/parsed_metadata.h +10 -3
- data/src/core/lib/transport/status_conversion.cc +2 -0
- data/src/core/lib/transport/status_conversion.h +2 -2
- data/src/core/lib/transport/tcp_connect_handshaker.cc +253 -0
- data/src/core/lib/transport/tcp_connect_handshaker.h +39 -0
- data/src/core/lib/transport/timeout_encoding.cc +2 -6
- data/src/core/lib/transport/timeout_encoding.h +5 -1
- data/src/core/lib/transport/transport.cc +18 -20
- data/src/core/lib/transport/transport.h +48 -16
- data/src/core/lib/transport/transport_fwd.h +20 -0
- data/src/core/lib/transport/transport_impl.h +11 -0
- data/src/core/lib/transport/transport_op_string.cc +17 -18
- data/src/core/lib/uri/uri_parser.cc +11 -3
- data/src/core/lib/uri/uri_parser.h +0 -2
- data/src/core/plugin_registry/grpc_plugin_registry.cc +11 -0
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +1 -1
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +9 -1
- data/src/core/tsi/fake_transport_security.cc +13 -1
- data/src/core/tsi/fake_transport_security.h +6 -0
- data/src/core/tsi/ssl/session_cache/ssl_session.h +2 -0
- data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +2 -0
- data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +2 -0
- data/src/core/tsi/ssl_transport_security.cc +1 -1
- data/src/core/tsi/transport_security_grpc.cc +3 -2
- data/src/core/tsi/transport_security_grpc.h +5 -2
- data/src/ruby/ext/grpc/ext-export-truffleruby.clang +2 -0
- data/src/ruby/ext/grpc/ext-export-truffleruby.gcc +7 -0
- data/src/ruby/ext/grpc/ext-export.clang +1 -0
- data/src/ruby/ext/grpc/ext-export.gcc +1 -0
- data/src/ruby/ext/grpc/extconf.rb +50 -19
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +1 -1
- data/src/ruby/lib/grpc/errors.rb +1 -1
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/spec/generic/client_stub_spec.rb +23 -23
- data/third_party/abseil-cpp/absl/algorithm/container.h +1 -1
- data/third_party/abseil-cpp/absl/base/attributes.h +49 -22
- data/third_party/abseil-cpp/absl/base/casts.h +61 -68
- data/third_party/abseil-cpp/absl/base/config.h +182 -41
- data/third_party/abseil-cpp/absl/base/internal/cycleclock.cc +12 -42
- data/third_party/abseil-cpp/absl/base/internal/cycleclock.h +67 -2
- data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +3 -3
- data/third_party/abseil-cpp/absl/base/internal/endian.h +17 -62
- data/third_party/abseil-cpp/absl/base/internal/fast_type_id.h +2 -0
- data/third_party/abseil-cpp/absl/base/internal/invoke.h +54 -0
- data/third_party/abseil-cpp/absl/base/internal/prefetch.h +138 -0
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +29 -22
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +13 -12
- data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +3 -0
- data/third_party/abseil-cpp/absl/base/internal/spinlock.h +8 -0
- data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +2 -5
- data/third_party/abseil-cpp/absl/base/internal/strerror.cc +88 -0
- data/third_party/abseil-cpp/absl/base/internal/strerror.h +39 -0
- data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +0 -1
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +2 -1
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +6 -7
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +12 -3
- data/third_party/abseil-cpp/absl/base/log_severity.cc +28 -0
- data/third_party/abseil-cpp/absl/base/log_severity.h +51 -0
- data/third_party/abseil-cpp/absl/base/optimization.h +19 -11
- data/third_party/abseil-cpp/absl/base/options.h +1 -1
- data/third_party/abseil-cpp/absl/base/thread_annotations.h +2 -2
- data/third_party/abseil-cpp/absl/container/fixed_array.h +2 -0
- data/third_party/abseil-cpp/absl/container/flat_hash_map.h +11 -4
- data/third_party/abseil-cpp/absl/container/flat_hash_set.h +510 -0
- data/third_party/abseil-cpp/absl/container/inlined_vector.h +20 -9
- data/third_party/abseil-cpp/absl/container/internal/common.h +6 -5
- data/third_party/abseil-cpp/absl/container/internal/container_memory.h +10 -28
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +68 -20
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +29 -11
- data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +59 -38
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +4 -0
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +515 -184
- data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc +45 -88
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +4 -0
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +3 -2
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +8 -3
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +8 -3
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +2 -1
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +8 -3
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +20 -18
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +8 -3
- data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +15 -2
- data/third_party/abseil-cpp/absl/debugging/symbolize.cc +6 -1
- data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +46 -7
- data/third_party/abseil-cpp/absl/functional/bind_front.h +10 -1
- data/third_party/abseil-cpp/absl/functional/function_ref.h +2 -1
- data/third_party/abseil-cpp/absl/hash/hash.h +82 -8
- data/third_party/abseil-cpp/absl/hash/internal/hash.h +218 -23
- data/third_party/abseil-cpp/absl/numeric/bits.h +2 -1
- data/third_party/abseil-cpp/absl/numeric/int128.cc +4 -2
- data/third_party/abseil-cpp/absl/numeric/int128.h +2 -2
- data/third_party/abseil-cpp/absl/profiling/internal/sample_recorder.h +21 -6
- data/third_party/abseil-cpp/absl/random/bernoulli_distribution.h +4 -4
- data/third_party/abseil-cpp/absl/random/distributions.h +3 -3
- data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +3 -0
- data/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +2 -1
- data/third_party/abseil-cpp/absl/random/internal/generate_real.h +2 -2
- data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +59 -48
- data/third_party/abseil-cpp/absl/random/internal/pcg_engine.h +1 -1
- data/third_party/abseil-cpp/absl/random/internal/randen.h +5 -11
- data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +6 -2
- data/third_party/abseil-cpp/absl/random/internal/randen_engine.h +48 -23
- data/third_party/abseil-cpp/absl/random/internal/salted_seed_seq.h +24 -26
- data/third_party/abseil-cpp/absl/random/internal/traits.h +53 -5
- data/third_party/abseil-cpp/absl/random/internal/uniform_helper.h +5 -5
- data/third_party/abseil-cpp/absl/random/internal/wide_multiply.h +33 -48
- data/third_party/abseil-cpp/absl/random/log_uniform_int_distribution.h +9 -10
- data/third_party/abseil-cpp/absl/random/poisson_distribution.h +7 -4
- data/third_party/abseil-cpp/absl/random/seed_sequences.h +1 -0
- data/third_party/abseil-cpp/absl/random/uniform_int_distribution.h +2 -2
- data/third_party/abseil-cpp/absl/random/uniform_real_distribution.h +1 -1
- data/third_party/abseil-cpp/absl/random/zipf_distribution.h +4 -3
- data/third_party/abseil-cpp/absl/status/internal/status_internal.h +17 -0
- data/third_party/abseil-cpp/absl/status/status.cc +174 -2
- data/third_party/abseil-cpp/absl/status/status.h +22 -12
- data/third_party/abseil-cpp/absl/status/statusor.h +9 -3
- data/third_party/abseil-cpp/absl/strings/ascii.h +4 -4
- data/third_party/abseil-cpp/absl/strings/cord.cc +194 -913
- data/third_party/abseil-cpp/absl/strings/cord.h +202 -81
- data/third_party/abseil-cpp/absl/strings/cord_analysis.cc +188 -0
- data/third_party/abseil-cpp/absl/strings/cord_analysis.h +44 -0
- data/third_party/abseil-cpp/absl/strings/cord_buffer.cc +30 -0
- data/third_party/abseil-cpp/absl/strings/cord_buffer.h +572 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_data_edge.h +63 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +20 -32
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +123 -88
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +149 -49
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.h +44 -59
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.cc +3 -1
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.h +4 -2
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.cc +3 -2
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.h +5 -4
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.cc +7 -74
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.cc +54 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.h +102 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +58 -17
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +13 -11
- data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +11 -38
- data/third_party/abseil-cpp/absl/strings/internal/cordz_statistics.h +1 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_update_tracker.h +4 -2
- data/third_party/abseil-cpp/absl/strings/internal/escaping.cc +6 -5
- data/third_party/abseil-cpp/absl/strings/internal/ostringstream.cc +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +38 -7
- data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +7 -2
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +4 -5
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +5 -2
- data/third_party/abseil-cpp/absl/strings/internal/str_format/output.h +2 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +4 -2
- data/third_party/abseil-cpp/absl/strings/internal/str_join_internal.h +9 -6
- data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +10 -2
- data/third_party/abseil-cpp/absl/strings/internal/utf8.cc +9 -9
- data/third_party/abseil-cpp/absl/strings/numbers.cc +8 -8
- data/third_party/abseil-cpp/absl/strings/numbers.h +26 -23
- data/third_party/abseil-cpp/absl/strings/str_cat.h +20 -13
- data/third_party/abseil-cpp/absl/strings/str_join.h +9 -15
- data/third_party/abseil-cpp/absl/strings/str_split.h +1 -2
- data/third_party/abseil-cpp/absl/strings/string_view.cc +2 -13
- data/third_party/abseil-cpp/absl/strings/string_view.h +3 -2
- data/third_party/abseil-cpp/absl/strings/strip.h +8 -6
- data/third_party/abseil-cpp/absl/strings/substitute.h +10 -2
- data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +9 -6
- data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.h +0 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +0 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +1 -6
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +0 -25
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +10 -4
- data/third_party/abseil-cpp/absl/synchronization/mutex.cc +75 -40
- data/third_party/abseil-cpp/absl/synchronization/mutex.h +17 -9
- data/third_party/abseil-cpp/absl/synchronization/notification.h +3 -2
- data/third_party/abseil-cpp/absl/time/duration.cc +5 -4
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +11 -7
- data/third_party/abseil-cpp/absl/time/time.h +16 -12
- data/third_party/abseil-cpp/absl/types/internal/optional.h +8 -0
- data/third_party/abseil-cpp/absl/types/internal/variant.h +3 -3
- data/third_party/abseil-cpp/absl/types/optional.h +17 -14
- data/third_party/abseil-cpp/absl/types/span.h +2 -1
- metadata +69 -38
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_event_engine.cc +0 -31
- data/src/core/lib/event_engine/sockaddr.cc +0 -40
- data/src/core/lib/event_engine/sockaddr.h +0 -44
- data/src/core/lib/gprpp/capture.h +0 -76
- data/src/core/lib/iomgr/event_engine/closure.cc +0 -77
- data/src/core/lib/iomgr/event_engine/closure.h +0 -42
- data/src/core/lib/iomgr/event_engine/endpoint.cc +0 -172
- data/src/core/lib/iomgr/event_engine/endpoint.h +0 -52
- data/src/core/lib/iomgr/event_engine/iomgr.cc +0 -85
- data/src/core/lib/iomgr/event_engine/pollset.cc +0 -87
- data/src/core/lib/iomgr/event_engine/resolved_address_internal.cc +0 -47
- data/src/core/lib/iomgr/event_engine/resolved_address_internal.h +0 -37
- data/src/core/lib/iomgr/event_engine/resolver.cc +0 -133
- data/src/core/lib/iomgr/event_engine/resolver.h +0 -56
- data/src/core/lib/iomgr/event_engine/tcp.cc +0 -296
- data/src/core/lib/iomgr/event_engine/timer.cc +0 -62
- data/src/core/lib/slice/slice_split.cc +0 -100
- data/src/core/lib/slice/slice_split.h +0 -40
- data/src/core/lib/transport/byte_stream.cc +0 -164
- data/src/core/lib/transport/byte_stream.h +0 -166
- data/third_party/abseil-cpp/absl/container/internal/have_sse.h +0 -50
@@ -97,6 +97,8 @@ typedef size_t msg_iovlen_type;
|
|
97
97
|
|
98
98
|
extern grpc_core::TraceFlag grpc_tcp_trace;
|
99
99
|
|
100
|
+
GPR_GLOBAL_CONFIG_DECLARE_BOOL(grpc_experimental_enable_tcp_frame_size_tuning);
|
101
|
+
|
100
102
|
namespace grpc_core {
|
101
103
|
|
102
104
|
class TcpZerocopySendRecord {
|
@@ -357,6 +359,13 @@ using grpc_core::TcpZerocopySendCtx;
|
|
357
359
|
using grpc_core::TcpZerocopySendRecord;
|
358
360
|
|
359
361
|
namespace {
|
362
|
+
|
363
|
+
bool ExperimentalTcpFrameSizeTuningEnabled() {
|
364
|
+
static const bool kEnableTcpFrameSizeTuning =
|
365
|
+
GPR_GLOBAL_CONFIG_GET(grpc_experimental_enable_tcp_frame_size_tuning);
|
366
|
+
return kEnableTcpFrameSizeTuning;
|
367
|
+
}
|
368
|
+
|
360
369
|
struct grpc_tcp {
|
361
370
|
grpc_tcp(int max_sends, size_t send_bytes_threshold)
|
362
371
|
: tcp_zerocopy_send_ctx(max_sends, send_bytes_threshold) {}
|
@@ -378,7 +387,7 @@ struct grpc_tcp {
|
|
378
387
|
/* garbage after the last read */
|
379
388
|
grpc_slice_buffer last_read_buffer;
|
380
389
|
|
381
|
-
|
390
|
+
grpc_core::Mutex read_mu;
|
382
391
|
grpc_slice_buffer* incoming_buffer ABSL_GUARDED_BY(read_mu) = nullptr;
|
383
392
|
int inq; /* bytes pending on the socket from the last read. */
|
384
393
|
bool inq_capable; /* cache whether kernel supports inq */
|
@@ -427,8 +436,10 @@ struct grpc_tcp {
|
|
427
436
|
TcpZerocopySendCtx tcp_zerocopy_send_ctx;
|
428
437
|
TcpZerocopySendRecord* current_zerocopy_send = nullptr;
|
429
438
|
|
430
|
-
bool
|
431
|
-
int
|
439
|
+
bool frame_size_tuning_enabled;
|
440
|
+
int min_progress_size; /* A hint from upper layers specifying the minimum
|
441
|
+
number of bytes that need to be read to make
|
442
|
+
meaningful progress */
|
432
443
|
};
|
433
444
|
|
434
445
|
struct backup_poller {
|
@@ -739,6 +750,7 @@ static bool tcp_do_read(grpc_tcp* tcp, grpc_error_handle* error)
|
|
739
750
|
}
|
740
751
|
|
741
752
|
GPR_ASSERT(tcp->incoming_buffer->length != 0);
|
753
|
+
GPR_DEBUG_ASSERT(tcp->min_progress_size > 0);
|
742
754
|
|
743
755
|
do {
|
744
756
|
/* Assume there is something on the queue. If we receive TCP_INQ from
|
@@ -770,7 +782,8 @@ static bool tcp_do_read(grpc_tcp* tcp, grpc_error_handle* error)
|
|
770
782
|
|
771
783
|
/* We have read something in previous reads. We need to deliver those
|
772
784
|
* bytes to the upper layer. */
|
773
|
-
if (read_bytes <= 0 &&
|
785
|
+
if (read_bytes <= 0 &&
|
786
|
+
total_read_bytes >= static_cast<size_t>(tcp->min_progress_size)) {
|
774
787
|
tcp->inq = 1;
|
775
788
|
break;
|
776
789
|
}
|
@@ -779,12 +792,13 @@ static bool tcp_do_read(grpc_tcp* tcp, grpc_error_handle* error)
|
|
779
792
|
/* NB: After calling call_read_cb a parallel call of the read handler may
|
780
793
|
* be running. */
|
781
794
|
if (errno == EAGAIN) {
|
782
|
-
|
795
|
+
if (total_read_bytes > 0) {
|
796
|
+
break;
|
797
|
+
}
|
783
798
|
finish_estimate(tcp);
|
784
799
|
tcp->inq = 0;
|
785
800
|
return false;
|
786
801
|
} else {
|
787
|
-
tcp->curr_read_completed = false;
|
788
802
|
grpc_slice_buffer_reset_and_unref_internal(tcp->incoming_buffer);
|
789
803
|
*error = tcp_annotate_error(GRPC_OS_ERROR(errno, "recvmsg"), tcp);
|
790
804
|
return true;
|
@@ -796,7 +810,6 @@ static bool tcp_do_read(grpc_tcp* tcp, grpc_error_handle* error)
|
|
796
810
|
* We may have read something, i.e., total_read_bytes > 0, but
|
797
811
|
* since the connection is closed we will drop the data here, because we
|
798
812
|
* can't call the callback multiple times. */
|
799
|
-
tcp->curr_read_completed = true;
|
800
813
|
grpc_slice_buffer_reset_and_unref_internal(tcp->incoming_buffer);
|
801
814
|
*error = tcp_annotate_error(
|
802
815
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING("Socket closed"), tcp);
|
@@ -853,21 +866,46 @@ static bool tcp_do_read(grpc_tcp* tcp, grpc_error_handle* error)
|
|
853
866
|
finish_estimate(tcp);
|
854
867
|
}
|
855
868
|
|
856
|
-
// There may be more data to be read because recvmsg did not return EAGAIN.
|
857
|
-
tcp->curr_read_completed = false;
|
858
869
|
GPR_DEBUG_ASSERT(total_read_bytes > 0);
|
870
|
+
*error = GRPC_ERROR_NONE;
|
871
|
+
if (tcp->frame_size_tuning_enabled) {
|
872
|
+
// Update min progress size based on the total number of bytes read in
|
873
|
+
// this round.
|
874
|
+
tcp->min_progress_size -= total_read_bytes;
|
875
|
+
if (tcp->min_progress_size > 0) {
|
876
|
+
// There is still some bytes left to be read before we can signal
|
877
|
+
// the read as complete. Append the bytes read so far into
|
878
|
+
// last_read_buffer which serves as a staging buffer. Return false
|
879
|
+
// to indicate tcp_handle_read needs to be scheduled again.
|
880
|
+
grpc_slice_buffer_move_first(tcp->incoming_buffer, total_read_bytes,
|
881
|
+
&tcp->last_read_buffer);
|
882
|
+
return false;
|
883
|
+
} else {
|
884
|
+
// The required number of bytes have been read. Append the bytes
|
885
|
+
// read in this round into last_read_buffer. Then swap last_read_buffer
|
886
|
+
// and incoming_buffer. Now incoming buffer contains all the bytes
|
887
|
+
// read since the start of the last tcp_read operation. last_read_buffer
|
888
|
+
// would contain any spare space left in the incoming buffer. This
|
889
|
+
// space will be used in the next tcp_read operation.
|
890
|
+
tcp->min_progress_size = 1;
|
891
|
+
grpc_slice_buffer_move_first(tcp->incoming_buffer, total_read_bytes,
|
892
|
+
&tcp->last_read_buffer);
|
893
|
+
grpc_slice_buffer_swap(&tcp->last_read_buffer, tcp->incoming_buffer);
|
894
|
+
return true;
|
895
|
+
}
|
896
|
+
}
|
859
897
|
if (total_read_bytes < tcp->incoming_buffer->length) {
|
860
898
|
grpc_slice_buffer_trim_end(tcp->incoming_buffer,
|
861
899
|
tcp->incoming_buffer->length - total_read_bytes,
|
862
900
|
&tcp->last_read_buffer);
|
863
901
|
}
|
864
|
-
*error = GRPC_ERROR_NONE;
|
865
902
|
return true;
|
866
903
|
}
|
867
904
|
|
868
905
|
static void maybe_make_read_slices(grpc_tcp* tcp)
|
869
906
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(tcp->read_mu) {
|
870
|
-
if (tcp->incoming_buffer->length
|
907
|
+
if (tcp->incoming_buffer->length <
|
908
|
+
static_cast<size_t>(tcp->min_progress_size) &&
|
871
909
|
tcp->incoming_buffer->count < MAX_READ_IOVEC) {
|
872
910
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
|
873
911
|
gpr_log(GPR_INFO,
|
@@ -876,25 +914,20 @@ static void maybe_make_read_slices(grpc_tcp* tcp)
|
|
876
914
|
tcp, tcp->min_read_chunk_size, tcp->max_read_chunk_size,
|
877
915
|
tcp->target_length, tcp->incoming_buffer->length);
|
878
916
|
}
|
879
|
-
int target_length =
|
917
|
+
int target_length =
|
918
|
+
std::max(static_cast<int>(tcp->target_length), tcp->min_progress_size);
|
880
919
|
int extra_wanted =
|
881
920
|
target_length - static_cast<int>(tcp->incoming_buffer->length);
|
882
|
-
|
883
|
-
|
884
|
-
|
885
|
-
|
886
|
-
tcp->curr_min_read_chunk_size = tcp->min_read_chunk_size;
|
887
|
-
} else {
|
888
|
-
// Last read is not completed yet. Double the last min read chunk size.
|
889
|
-
tcp->curr_min_read_chunk_size =
|
890
|
-
std::min(2 * tcp->curr_min_read_chunk_size, tcp->max_read_chunk_size);
|
891
|
-
}
|
921
|
+
int min_read_chunk_size =
|
922
|
+
std::max(tcp->min_read_chunk_size, tcp->min_progress_size);
|
923
|
+
int max_read_chunk_size =
|
924
|
+
std::max(tcp->max_read_chunk_size, tcp->min_progress_size);
|
892
925
|
grpc_slice_buffer_add_indexed(
|
893
926
|
tcp->incoming_buffer,
|
894
927
|
tcp->memory_owner.MakeSlice(grpc_core::MemoryRequest(
|
895
|
-
|
896
|
-
grpc_core::Clamp(extra_wanted,
|
897
|
-
|
928
|
+
min_read_chunk_size,
|
929
|
+
grpc_core::Clamp(extra_wanted, min_read_chunk_size,
|
930
|
+
max_read_chunk_size))));
|
898
931
|
maybe_post_reclaimer(tcp);
|
899
932
|
}
|
900
933
|
}
|
@@ -907,7 +940,7 @@ static void tcp_handle_read(void* arg /* grpc_tcp */, grpc_error_handle error) {
|
|
907
940
|
}
|
908
941
|
tcp->read_mu.Lock();
|
909
942
|
grpc_error_handle tcp_read_error;
|
910
|
-
if (GPR_LIKELY(error
|
943
|
+
if (GPR_LIKELY(GRPC_ERROR_IS_NONE(error))) {
|
911
944
|
maybe_make_read_slices(tcp);
|
912
945
|
if (!tcp_do_read(tcp, &tcp_read_error)) {
|
913
946
|
/* We've consumed the edge, request a new one */
|
@@ -930,12 +963,14 @@ static void tcp_handle_read(void* arg /* grpc_tcp */, grpc_error_handle error) {
|
|
930
963
|
}
|
931
964
|
|
932
965
|
static void tcp_read(grpc_endpoint* ep, grpc_slice_buffer* incoming_buffer,
|
933
|
-
grpc_closure* cb, bool urgent) {
|
966
|
+
grpc_closure* cb, bool urgent, int min_progress_size) {
|
934
967
|
grpc_tcp* tcp = reinterpret_cast<grpc_tcp*>(ep);
|
935
968
|
GPR_ASSERT(tcp->read_cb == nullptr);
|
936
969
|
tcp->read_cb = cb;
|
937
970
|
tcp->read_mu.Lock();
|
938
971
|
tcp->incoming_buffer = incoming_buffer;
|
972
|
+
tcp->min_progress_size =
|
973
|
+
tcp->frame_size_tuning_enabled ? min_progress_size : 1;
|
939
974
|
grpc_slice_buffer_reset_and_unref_internal(incoming_buffer);
|
940
975
|
grpc_slice_buffer_swap(incoming_buffer, &tcp->last_read_buffer);
|
941
976
|
tcp->read_mu.Unlock();
|
@@ -963,14 +998,15 @@ static void tcp_read(grpc_endpoint* ep, grpc_slice_buffer* incoming_buffer,
|
|
963
998
|
|
964
999
|
/* A wrapper around sendmsg. It sends \a msg over \a fd and returns the number
|
965
1000
|
* of bytes sent. */
|
966
|
-
ssize_t tcp_send(int fd, const struct msghdr* msg, int
|
1001
|
+
ssize_t tcp_send(int fd, const struct msghdr* msg, int* saved_errno,
|
1002
|
+
int additional_flags = 0) {
|
967
1003
|
GPR_TIMER_SCOPE("sendmsg", 1);
|
968
1004
|
ssize_t sent_length;
|
969
1005
|
do {
|
970
1006
|
/* TODO(klempner): Cork if this is a partial write */
|
971
1007
|
GRPC_STATS_INC_SYSCALL_WRITE();
|
972
1008
|
sent_length = sendmsg(fd, msg, SENDMSG_FLAGS | additional_flags);
|
973
|
-
} while (sent_length < 0 && errno == EINTR);
|
1009
|
+
} while (sent_length < 0 && (*saved_errno = errno) == EINTR);
|
974
1010
|
return sent_length;
|
975
1011
|
}
|
976
1012
|
|
@@ -982,7 +1018,7 @@ ssize_t tcp_send(int fd, const struct msghdr* msg, int additional_flags = 0) {
|
|
982
1018
|
*/
|
983
1019
|
static bool tcp_write_with_timestamps(grpc_tcp* tcp, struct msghdr* msg,
|
984
1020
|
size_t sending_length,
|
985
|
-
ssize_t* sent_length,
|
1021
|
+
ssize_t* sent_length, int* saved_errno,
|
986
1022
|
int additional_flags = 0);
|
987
1023
|
|
988
1024
|
/** The callback function to be invoked when we get an error on the socket. */
|
@@ -1026,7 +1062,7 @@ static void ZerocopyDisableAndWaitForRemaining(grpc_tcp* tcp) {
|
|
1026
1062
|
|
1027
1063
|
static bool tcp_write_with_timestamps(grpc_tcp* tcp, struct msghdr* msg,
|
1028
1064
|
size_t sending_length,
|
1029
|
-
ssize_t* sent_length,
|
1065
|
+
ssize_t* sent_length, int* saved_errno,
|
1030
1066
|
int additional_flags) {
|
1031
1067
|
if (!tcp->socket_ts_enabled) {
|
1032
1068
|
uint32_t opt = grpc_core::kTimestampingSocketOptions;
|
@@ -1055,7 +1091,7 @@ static bool tcp_write_with_timestamps(grpc_tcp* tcp, struct msghdr* msg,
|
|
1055
1091
|
msg->msg_controllen = CMSG_SPACE(sizeof(uint32_t));
|
1056
1092
|
|
1057
1093
|
/* If there was an error on sendmsg the logic in tcp_flush will handle it. */
|
1058
|
-
ssize_t length = tcp_send(tcp->fd, msg, additional_flags);
|
1094
|
+
ssize_t length = tcp_send(tcp->fd, msg, saved_errno, additional_flags);
|
1059
1095
|
*sent_length = length;
|
1060
1096
|
/* Only save timestamps if all the bytes were taken by sendmsg. */
|
1061
1097
|
if (sending_length == static_cast<size_t>(length)) {
|
@@ -1249,7 +1285,7 @@ static void tcp_handle_error(void* arg /* grpc_tcp */,
|
|
1249
1285
|
grpc_error_std_string(error).c_str());
|
1250
1286
|
}
|
1251
1287
|
|
1252
|
-
if (error
|
1288
|
+
if (!GRPC_ERROR_IS_NONE(error) ||
|
1253
1289
|
static_cast<bool>(gpr_atm_acq_load(&tcp->stop_error_notification))) {
|
1254
1290
|
/* We aren't going to register to hear on error anymore, so it is safe to
|
1255
1291
|
* unref. */
|
@@ -1280,6 +1316,7 @@ static void ZerocopyDisableAndWaitForRemaining(grpc_tcp* /*tcp*/) {}
|
|
1280
1316
|
static bool tcp_write_with_timestamps(grpc_tcp* /*tcp*/, struct msghdr* /*msg*/,
|
1281
1317
|
size_t /*sending_length*/,
|
1282
1318
|
ssize_t* /*sent_length*/,
|
1319
|
+
int* /* saved_errno */,
|
1283
1320
|
int /*additional_flags*/) {
|
1284
1321
|
gpr_log(GPR_ERROR, "Write with timestamps not supported for this platform");
|
1285
1322
|
GPR_ASSERT(0);
|
@@ -1360,6 +1397,7 @@ static bool do_tcp_flush_zerocopy(grpc_tcp* tcp, TcpZerocopySendRecord* record,
|
|
1360
1397
|
size_t unwind_slice_idx;
|
1361
1398
|
size_t unwind_byte_idx;
|
1362
1399
|
bool tried_sending_message;
|
1400
|
+
int saved_errno;
|
1363
1401
|
msghdr msg;
|
1364
1402
|
// iov consumes a large space. Keep it as the last item on the stack to
|
1365
1403
|
// improve locality. After all, we expect only the first elements of it being
|
@@ -1378,10 +1416,11 @@ static bool do_tcp_flush_zerocopy(grpc_tcp* tcp, TcpZerocopySendRecord* record,
|
|
1378
1416
|
// Before calling sendmsg (with or without timestamps): we
|
1379
1417
|
// take a single ref on the zerocopy send record.
|
1380
1418
|
tcp->tcp_zerocopy_send_ctx.NoteSend(record);
|
1419
|
+
saved_errno = 0;
|
1381
1420
|
if (tcp->outgoing_buffer_arg != nullptr) {
|
1382
1421
|
if (!tcp->ts_capable ||
|
1383
1422
|
!tcp_write_with_timestamps(tcp, &msg, sending_length, &sent_length,
|
1384
|
-
MSG_ZEROCOPY)) {
|
1423
|
+
&saved_errno, MSG_ZEROCOPY)) {
|
1385
1424
|
/* We could not set socket options to collect Fathom timestamps.
|
1386
1425
|
* Fallback on writing without timestamps. */
|
1387
1426
|
tcp->ts_capable = false;
|
@@ -1395,20 +1434,20 @@ static bool do_tcp_flush_zerocopy(grpc_tcp* tcp, TcpZerocopySendRecord* record,
|
|
1395
1434
|
msg.msg_controllen = 0;
|
1396
1435
|
GRPC_STATS_INC_TCP_WRITE_SIZE(sending_length);
|
1397
1436
|
GRPC_STATS_INC_TCP_WRITE_IOV_SIZE(iov_size);
|
1398
|
-
sent_length = tcp_send(tcp->fd, &msg, MSG_ZEROCOPY);
|
1437
|
+
sent_length = tcp_send(tcp->fd, &msg, &saved_errno, MSG_ZEROCOPY);
|
1399
1438
|
}
|
1400
1439
|
if (sent_length < 0) {
|
1401
1440
|
// If this particular send failed, drop ref taken earlier in this method.
|
1402
1441
|
tcp->tcp_zerocopy_send_ctx.UndoSend();
|
1403
|
-
if (
|
1442
|
+
if (saved_errno == EAGAIN) {
|
1404
1443
|
record->UnwindIfThrottled(unwind_slice_idx, unwind_byte_idx);
|
1405
1444
|
return false;
|
1406
|
-
} else if (
|
1407
|
-
*error = tcp_annotate_error(GRPC_OS_ERROR(
|
1445
|
+
} else if (saved_errno == EPIPE) {
|
1446
|
+
*error = tcp_annotate_error(GRPC_OS_ERROR(saved_errno, "sendmsg"), tcp);
|
1408
1447
|
tcp_shutdown_buffer_list(tcp);
|
1409
1448
|
return true;
|
1410
1449
|
} else {
|
1411
|
-
*error = tcp_annotate_error(GRPC_OS_ERROR(
|
1450
|
+
*error = tcp_annotate_error(GRPC_OS_ERROR(saved_errno, "sendmsg"), tcp);
|
1412
1451
|
tcp_shutdown_buffer_list(tcp);
|
1413
1452
|
return true;
|
1414
1453
|
}
|
@@ -1452,6 +1491,7 @@ static bool tcp_flush(grpc_tcp* tcp, grpc_error_handle* error) {
|
|
1452
1491
|
size_t trailing;
|
1453
1492
|
size_t unwind_slice_idx;
|
1454
1493
|
size_t unwind_byte_idx;
|
1494
|
+
int saved_errno;
|
1455
1495
|
|
1456
1496
|
// We always start at zero, because we eagerly unref and trim the slice
|
1457
1497
|
// buffer as we write
|
@@ -1483,9 +1523,11 @@ static bool tcp_flush(grpc_tcp* tcp, grpc_error_handle* error) {
|
|
1483
1523
|
msg.msg_iovlen = iov_size;
|
1484
1524
|
msg.msg_flags = 0;
|
1485
1525
|
bool tried_sending_message = false;
|
1526
|
+
saved_errno = 0;
|
1486
1527
|
if (tcp->outgoing_buffer_arg != nullptr) {
|
1487
1528
|
if (!tcp->ts_capable ||
|
1488
|
-
!tcp_write_with_timestamps(tcp, &msg, sending_length, &sent_length
|
1529
|
+
!tcp_write_with_timestamps(tcp, &msg, sending_length, &sent_length,
|
1530
|
+
&saved_errno)) {
|
1489
1531
|
/* We could not set socket options to collect Fathom timestamps.
|
1490
1532
|
* Fallback on writing without timestamps. */
|
1491
1533
|
tcp->ts_capable = false;
|
@@ -1501,11 +1543,11 @@ static bool tcp_flush(grpc_tcp* tcp, grpc_error_handle* error) {
|
|
1501
1543
|
GRPC_STATS_INC_TCP_WRITE_SIZE(sending_length);
|
1502
1544
|
GRPC_STATS_INC_TCP_WRITE_IOV_SIZE(iov_size);
|
1503
1545
|
|
1504
|
-
sent_length = tcp_send(tcp->fd, &msg);
|
1546
|
+
sent_length = tcp_send(tcp->fd, &msg, &saved_errno);
|
1505
1547
|
}
|
1506
1548
|
|
1507
1549
|
if (sent_length < 0) {
|
1508
|
-
if (
|
1550
|
+
if (saved_errno == EAGAIN) {
|
1509
1551
|
tcp->outgoing_byte_idx = unwind_byte_idx;
|
1510
1552
|
// unref all and forget about all slices that have been written to this
|
1511
1553
|
// point
|
@@ -1513,13 +1555,13 @@ static bool tcp_flush(grpc_tcp* tcp, grpc_error_handle* error) {
|
|
1513
1555
|
grpc_slice_buffer_remove_first(tcp->outgoing_buffer);
|
1514
1556
|
}
|
1515
1557
|
return false;
|
1516
|
-
} else if (
|
1517
|
-
*error = tcp_annotate_error(GRPC_OS_ERROR(
|
1558
|
+
} else if (saved_errno == EPIPE) {
|
1559
|
+
*error = tcp_annotate_error(GRPC_OS_ERROR(saved_errno, "sendmsg"), tcp);
|
1518
1560
|
grpc_slice_buffer_reset_and_unref_internal(tcp->outgoing_buffer);
|
1519
1561
|
tcp_shutdown_buffer_list(tcp);
|
1520
1562
|
return true;
|
1521
1563
|
} else {
|
1522
|
-
*error = tcp_annotate_error(GRPC_OS_ERROR(
|
1564
|
+
*error = tcp_annotate_error(GRPC_OS_ERROR(saved_errno, "sendmsg"), tcp);
|
1523
1565
|
grpc_slice_buffer_reset_and_unref_internal(tcp->outgoing_buffer);
|
1524
1566
|
tcp_shutdown_buffer_list(tcp);
|
1525
1567
|
return true;
|
@@ -1555,7 +1597,7 @@ static void tcp_handle_write(void* arg /* grpc_tcp */,
|
|
1555
1597
|
grpc_tcp* tcp = static_cast<grpc_tcp*>(arg);
|
1556
1598
|
grpc_closure* cb;
|
1557
1599
|
|
1558
|
-
if (error
|
1600
|
+
if (!GRPC_ERROR_IS_NONE(error)) {
|
1559
1601
|
cb = tcp->write_cb;
|
1560
1602
|
tcp->write_cb = nullptr;
|
1561
1603
|
if (tcp->current_zerocopy_send != nullptr) {
|
@@ -1578,7 +1620,7 @@ static void tcp_handle_write(void* arg /* grpc_tcp */,
|
|
1578
1620
|
}
|
1579
1621
|
notify_on_write(tcp);
|
1580
1622
|
// tcp_flush does not populate error if it has returned false.
|
1581
|
-
GPR_DEBUG_ASSERT(error
|
1623
|
+
GPR_DEBUG_ASSERT(GRPC_ERROR_IS_NONE(error));
|
1582
1624
|
} else {
|
1583
1625
|
cb = tcp->write_cb;
|
1584
1626
|
tcp->write_cb = nullptr;
|
@@ -1593,7 +1635,7 @@ static void tcp_handle_write(void* arg /* grpc_tcp */,
|
|
1593
1635
|
}
|
1594
1636
|
|
1595
1637
|
static void tcp_write(grpc_endpoint* ep, grpc_slice_buffer* buf,
|
1596
|
-
grpc_closure* cb, void* arg) {
|
1638
|
+
grpc_closure* cb, void* arg, int /*max_frame_size*/) {
|
1597
1639
|
GPR_TIMER_SCOPE("tcp_write", 0);
|
1598
1640
|
grpc_tcp* tcp = reinterpret_cast<grpc_tcp*>(ep);
|
1599
1641
|
grpc_error_handle error = GRPC_ERROR_NONE;
|
@@ -1785,12 +1827,14 @@ grpc_endpoint* grpc_tcp_create(grpc_fd* em_fd,
|
|
1785
1827
|
grpc_resolved_address resolved_local_addr;
|
1786
1828
|
memset(&resolved_local_addr, 0, sizeof(resolved_local_addr));
|
1787
1829
|
resolved_local_addr.len = sizeof(resolved_local_addr.addr);
|
1830
|
+
absl::StatusOr<std::string> addr_uri;
|
1788
1831
|
if (getsockname(tcp->fd,
|
1789
1832
|
reinterpret_cast<sockaddr*>(resolved_local_addr.addr),
|
1790
|
-
&resolved_local_addr.len) < 0
|
1833
|
+
&resolved_local_addr.len) < 0 ||
|
1834
|
+
!(addr_uri = grpc_sockaddr_to_uri(&resolved_local_addr)).ok()) {
|
1791
1835
|
tcp->local_address = "";
|
1792
1836
|
} else {
|
1793
|
-
tcp->local_address =
|
1837
|
+
tcp->local_address = addr_uri.value();
|
1794
1838
|
}
|
1795
1839
|
tcp->read_cb = nullptr;
|
1796
1840
|
tcp->write_cb = nullptr;
|
@@ -1808,8 +1852,8 @@ grpc_endpoint* grpc_tcp_create(grpc_fd* em_fd,
|
|
1808
1852
|
tcp->socket_ts_enabled = false;
|
1809
1853
|
tcp->ts_capable = true;
|
1810
1854
|
tcp->outgoing_buffer_arg = nullptr;
|
1811
|
-
tcp->
|
1812
|
-
tcp->
|
1855
|
+
tcp->frame_size_tuning_enabled = ExperimentalTcpFrameSizeTuningEnabled();
|
1856
|
+
tcp->min_progress_size = 1;
|
1813
1857
|
if (tcp_tx_zerocopy_enabled && !tcp->tcp_zerocopy_send_ctx.memory_limited()) {
|
1814
1858
|
#ifdef GRPC_LINUX_ERRQUEUE
|
1815
1859
|
const int enable = 1;
|
@@ -191,7 +191,7 @@ static void tcp_server_destroy(grpc_tcp_server* s) {
|
|
191
191
|
static void on_read(void* arg, grpc_error_handle err) {
|
192
192
|
grpc_tcp_listener* sp = static_cast<grpc_tcp_listener*>(arg);
|
193
193
|
grpc_pollset* read_notifier_pollset;
|
194
|
-
if (err
|
194
|
+
if (!GRPC_ERROR_IS_NONE(err)) {
|
195
195
|
goto error;
|
196
196
|
}
|
197
197
|
|
@@ -224,8 +224,9 @@ static void on_read(void* arg, grpc_error_handle err) {
|
|
224
224
|
}
|
225
225
|
|
226
226
|
if (sp->server->memory_quota->IsMemoryPressureHigh()) {
|
227
|
-
int64_t dropped_connections_count =
|
228
|
-
|
227
|
+
int64_t dropped_connections_count =
|
228
|
+
num_dropped_connections.fetch_add(1, std::memory_order_relaxed) + 1;
|
229
|
+
if (dropped_connections_count % 1000 == 1) {
|
229
230
|
gpr_log(GPR_INFO,
|
230
231
|
"Dropped >= %" PRId64
|
231
232
|
" new connection attempts due to high memory pressure",
|
@@ -252,17 +253,22 @@ static void on_read(void* arg, grpc_error_handle err) {
|
|
252
253
|
|
253
254
|
err = grpc_apply_socket_mutator_in_args(fd, GRPC_FD_SERVER_CONNECTION_USAGE,
|
254
255
|
sp->server->channel_args);
|
255
|
-
if (err
|
256
|
+
if (!GRPC_ERROR_IS_NONE(err)) {
|
256
257
|
goto error;
|
257
258
|
}
|
258
259
|
|
259
|
-
|
260
|
+
auto addr_uri = grpc_sockaddr_to_uri(&addr);
|
261
|
+
if (!addr_uri.ok()) {
|
262
|
+
gpr_log(GPR_ERROR, "Invalid address: %s",
|
263
|
+
addr_uri.status().ToString().c_str());
|
264
|
+
goto error;
|
265
|
+
}
|
260
266
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
|
261
267
|
gpr_log(GPR_INFO, "SERVER_CONNECT: incoming connection: %s",
|
262
|
-
|
268
|
+
addr_uri->c_str());
|
263
269
|
}
|
264
270
|
|
265
|
-
std::string name = absl::StrCat("tcp-server-connection:",
|
271
|
+
std::string name = absl::StrCat("tcp-server-connection:", addr_uri.value());
|
266
272
|
grpc_fd* fdobj = grpc_fd_create(fd, name.c_str(), true);
|
267
273
|
|
268
274
|
read_notifier_pollset = (*(sp->server->pollsets))
|
@@ -281,7 +287,7 @@ static void on_read(void* arg, grpc_error_handle err) {
|
|
281
287
|
acceptor->external_connection = false;
|
282
288
|
sp->server->on_accept_cb(
|
283
289
|
sp->server->on_accept_cb_arg,
|
284
|
-
grpc_tcp_create(fdobj, sp->server->channel_args,
|
290
|
+
grpc_tcp_create(fdobj, sp->server->channel_args, addr_uri.value()),
|
285
291
|
read_notifier_pollset, acceptor);
|
286
292
|
}
|
287
293
|
|
@@ -338,14 +344,14 @@ static grpc_error_handle add_wildcard_addrs_to_server(grpc_tcp_server* s,
|
|
338
344
|
}
|
339
345
|
}
|
340
346
|
if (*out_port > 0) {
|
341
|
-
if (v6_err
|
347
|
+
if (!GRPC_ERROR_IS_NONE(v6_err)) {
|
342
348
|
gpr_log(GPR_INFO,
|
343
349
|
"Failed to add :: listener, "
|
344
350
|
"the environment may not support IPv6: %s",
|
345
351
|
grpc_error_std_string(v6_err).c_str());
|
346
352
|
GRPC_ERROR_UNREF(v6_err);
|
347
353
|
}
|
348
|
-
if (v4_err
|
354
|
+
if (!GRPC_ERROR_IS_NONE(v4_err)) {
|
349
355
|
gpr_log(GPR_INFO,
|
350
356
|
"Failed to add 0.0.0.0 listener, "
|
351
357
|
"the environment may not support IPv4: %s",
|
@@ -356,7 +362,7 @@ static grpc_error_handle add_wildcard_addrs_to_server(grpc_tcp_server* s,
|
|
356
362
|
} else {
|
357
363
|
grpc_error_handle root_err = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
358
364
|
"Failed to add any wildcard listeners");
|
359
|
-
GPR_ASSERT(v6_err
|
365
|
+
GPR_ASSERT(!GRPC_ERROR_IS_NONE(v6_err) && !GRPC_ERROR_IS_NONE(v4_err));
|
360
366
|
root_err = grpc_error_add_child(root_err, v6_err);
|
361
367
|
root_err = grpc_error_add_child(root_err, v4_err);
|
362
368
|
return root_err;
|
@@ -366,7 +372,7 @@ static grpc_error_handle add_wildcard_addrs_to_server(grpc_tcp_server* s,
|
|
366
372
|
static grpc_error_handle clone_port(grpc_tcp_listener* listener,
|
367
373
|
unsigned count) {
|
368
374
|
grpc_tcp_listener* sp = nullptr;
|
369
|
-
std::string addr_str;
|
375
|
+
absl::StatusOr<std::string> addr_str;
|
370
376
|
grpc_error_handle err;
|
371
377
|
|
372
378
|
for (grpc_tcp_listener* l = listener->next; l && l->is_sibling; l = l->next) {
|
@@ -379,12 +385,15 @@ static grpc_error_handle clone_port(grpc_tcp_listener* listener,
|
|
379
385
|
grpc_dualstack_mode dsmode;
|
380
386
|
err = grpc_create_dualstack_socket(&listener->addr, SOCK_STREAM, 0, &dsmode,
|
381
387
|
&fd);
|
382
|
-
if (err
|
388
|
+
if (!GRPC_ERROR_IS_NONE(err)) return err;
|
383
389
|
err = grpc_tcp_server_prepare_socket(listener->server, fd, &listener->addr,
|
384
390
|
true, &port);
|
385
|
-
if (err
|
391
|
+
if (!GRPC_ERROR_IS_NONE(err)) return err;
|
386
392
|
listener->server->nports++;
|
387
393
|
addr_str = grpc_sockaddr_to_string(&listener->addr, true);
|
394
|
+
if (!addr_str.ok()) {
|
395
|
+
return GRPC_ERROR_CREATE_FROM_CPP_STRING(addr_str.status().ToString());
|
396
|
+
}
|
388
397
|
sp = static_cast<grpc_tcp_listener*>(gpr_malloc(sizeof(grpc_tcp_listener)));
|
389
398
|
sp->next = listener->next;
|
390
399
|
listener->next = sp;
|
@@ -397,7 +406,7 @@ static grpc_error_handle clone_port(grpc_tcp_listener* listener,
|
|
397
406
|
sp->fd = fd;
|
398
407
|
sp->emfd = grpc_fd_create(
|
399
408
|
fd,
|
400
|
-
absl::StrFormat("tcp-server-listener:%s/clone-%d", addr_str
|
409
|
+
absl::StrFormat("tcp-server-listener:%s/clone-%d", *addr_str, i)
|
401
410
|
.c_str(),
|
402
411
|
true);
|
403
412
|
memcpy(&sp->addr, &listener->addr, sizeof(grpc_resolved_address));
|
@@ -604,12 +613,17 @@ class ExternalConnectionHandler : public grpc_core::TcpServerFdHandler {
|
|
604
613
|
return;
|
605
614
|
}
|
606
615
|
(void)grpc_set_socket_no_sigpipe_if_possible(fd);
|
607
|
-
|
616
|
+
auto addr_uri = grpc_sockaddr_to_uri(&addr);
|
617
|
+
if (!addr_uri.ok()) {
|
618
|
+
gpr_log(GPR_ERROR, "Invalid address: %s",
|
619
|
+
addr_uri.status().ToString().c_str());
|
620
|
+
return;
|
621
|
+
}
|
608
622
|
if (grpc_tcp_trace.enabled()) {
|
609
623
|
gpr_log(GPR_INFO, "SERVER_CONNECT: incoming external connection: %s",
|
610
|
-
|
624
|
+
addr_uri->c_str());
|
611
625
|
}
|
612
|
-
std::string name = absl::StrCat("tcp-server-connection:",
|
626
|
+
std::string name = absl::StrCat("tcp-server-connection:", addr_uri.value());
|
613
627
|
grpc_fd* fdobj = grpc_fd_create(fd, name.c_str(), true);
|
614
628
|
read_notifier_pollset =
|
615
629
|
(*(s_->pollsets))[static_cast<size_t>(gpr_atm_no_barrier_fetch_add(
|
@@ -625,7 +639,7 @@ class ExternalConnectionHandler : public grpc_core::TcpServerFdHandler {
|
|
625
639
|
acceptor->listener_fd = listener_fd;
|
626
640
|
acceptor->pending_data = buf;
|
627
641
|
s_->on_accept_cb(s_->on_accept_cb_arg,
|
628
|
-
grpc_tcp_create(fdobj, s_->channel_args,
|
642
|
+
grpc_tcp_create(fdobj, s_->channel_args, addr_uri.value()),
|
629
643
|
read_notifier_pollset, acceptor);
|
630
644
|
}
|
631
645
|
|