grpc 1.47.0-x86_64-linux → 1.49.0.pre1-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 +183 -62
- data/include/grpc/compression.h +1 -1
- data/include/grpc/event_engine/event_engine.h +37 -25
- data/include/grpc/event_engine/slice_buffer.h +8 -2
- data/include/grpc/grpc.h +3 -3
- 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 +5 -9
- data/include/grpc/impl/codegen/port_platform.h +2 -7
- data/src/core/ext/filters/census/grpc_context.cc +3 -0
- data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +20 -8
- data/src/core/ext/filters/channel_idle/channel_idle_filter.h +18 -2
- data/src/core/ext/filters/channel_idle/idle_filter_state.h +2 -0
- data/src/core/ext/filters/client_channel/backup_poller.cc +3 -1
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +2 -2
- data/src/core/ext/filters/client_channel/client_channel.cc +164 -261
- data/src/core/ext/filters/client_channel/client_channel.h +34 -12
- data/src/core/ext/filters/client_channel/client_channel_factory.cc +0 -29
- data/src/core/ext/filters/client_channel/client_channel_factory.h +2 -10
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +1 -1
- data/src/core/ext/filters/client_channel/config_selector.h +13 -5
- data/src/core/ext/filters/client_channel/connector.h +5 -6
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +6 -4
- data/src/core/ext/filters/client_channel/dynamic_filters.h +1 -1
- data/src/core/ext/filters/client_channel/http_proxy.cc +53 -65
- data/src/core/ext/filters/client_channel/http_proxy.h +12 -9
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +14 -12
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +6 -6
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +2 -2
- 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 +170 -164
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +13 -4
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +5 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +1 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +1 -2
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +0 -1
- 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 +200 -96
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +25 -1
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +121 -131
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +153 -116
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +220 -181
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +10 -6
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +110 -119
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +133 -117
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +97 -87
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +114 -131
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +40 -49
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +84 -102
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +64 -76
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +172 -103
- data/src/core/ext/filters/client_channel/proxy_mapper.h +13 -14
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +18 -16
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.h +8 -7
- data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +7 -9
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +434 -148
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +5 -5
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +179 -103
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +20 -7
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +29 -18
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +8 -18
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +11 -0
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +16 -18
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +4 -5
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +5 -6
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +5 -13
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +181 -175
- 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 +39 -32
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +7 -10
- data/src/core/ext/filters/client_channel/retry_filter.cc +35 -43
- data/src/core/ext/filters/client_channel/retry_filter.h +1 -0
- data/src/core/ext/filters/client_channel/retry_service_config.cc +30 -19
- data/src/core/ext/filters/client_channel/retry_service_config.h +6 -9
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +7 -7
- data/src/core/ext/filters/client_channel/subchannel.cc +101 -138
- data/src/core/ext/filters/client_channel/subchannel.h +14 -30
- data/src/core/ext/filters/client_channel/subchannel_interface_internal.h +1 -1
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +6 -76
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +16 -25
- data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +15 -101
- data/src/core/ext/filters/client_channel/subchannel_stream_client.h +5 -9
- data/src/core/ext/filters/deadline/deadline_filter.cc +18 -13
- data/src/core/ext/filters/deadline/deadline_filter.h +8 -2
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +20 -3
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +9 -4
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +19 -11
- data/src/core/ext/filters/fault_injection/service_config_parser.h +19 -6
- data/src/core/ext/filters/http/client/http_client_filter.cc +17 -7
- data/src/core/ext/filters/http/client/http_client_filter.h +9 -2
- data/src/core/ext/filters/http/client_authority_filter.cc +11 -11
- data/src/core/ext/filters/http/client_authority_filter.h +6 -3
- data/src/core/ext/filters/http/http_filters_plugin.cc +9 -1
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +64 -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 +42 -106
- 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 +17 -11
- data/src/core/ext/filters/http/server/http_server_filter.h +7 -2
- data/src/core/ext/filters/message_size/message_size_filter.cc +37 -21
- data/src/core/ext/filters/message_size/message_size_filter.h +13 -3
- data/src/core/ext/filters/rbac/rbac_filter.cc +14 -3
- data/src/core/ext/filters/rbac/rbac_filter.h +8 -0
- data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +25 -10
- data/src/core/ext/filters/rbac/rbac_service_config_parser.h +15 -5
- 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 +14 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +23 -5
- 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 +39 -66
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +77 -104
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +4 -6
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +320 -635
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +4 -3
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +207 -262
- data/src/core/ext/transport/chttp2/transport/flow_control.h +177 -289
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +57 -215
- data/src/core/ext/transport/chttp2/transport/frame_data.h +10 -36
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +0 -41
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +7 -12
- data/src/core/ext/transport/chttp2/transport/hpack_constants.h +7 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +25 -8
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +4 -0
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +0 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +8 -2
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +9 -16
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +0 -2
- data/src/core/ext/transport/chttp2/transport/internal.h +11 -112
- data/src/core/ext/transport/chttp2/transport/parsing.cc +51 -38
- data/src/core/ext/transport/chttp2/transport/stream_lists.cc +0 -4
- data/src/core/ext/transport/chttp2/transport/writing.cc +18 -21
- data/src/core/ext/transport/inproc/inproc_plugin.cc +0 -1
- data/src/core/ext/transport/inproc/inproc_transport.cc +124 -154
- data/src/core/ext/transport/inproc/inproc_transport.h +3 -1
- data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.h +30 -10
- data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.h +24 -8
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +8 -327
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +83 -1723
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.c +352 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.h +1768 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.c +6 -4
- data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.h +33 -4
- data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +7 -3
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +14 -14
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +90 -30
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +21 -19
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +124 -34
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +23 -22
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +153 -48
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.c +11 -11
- data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.h +84 -28
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +42 -14
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +25 -23
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +156 -48
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +42 -14
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +12 -12
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +78 -26
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +9 -9
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +54 -18
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +21 -20
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +117 -44
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +36 -12
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +30 -10
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +37 -13
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +170 -15
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +42 -14
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +7 -4
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +36 -4
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +6 -6
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +48 -16
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +54 -18
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +21 -9
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +100 -14
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +7 -22
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +36 -77
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +121 -76
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +647 -163
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.c +34 -15
- data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.h +161 -22
- data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.c +46 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.h +98 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.h +1 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +30 -10
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c +11 -4
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +58 -4
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +35 -27
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +177 -52
- 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 +168 -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 +98 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +10 -8
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +66 -14
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +42 -14
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +131 -16
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +632 -12
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +30 -10
- data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +24 -8
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h +24 -8
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +42 -14
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +30 -10
- data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.c +63 -0
- data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.h +202 -0
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.h +6 -2
- data/src/core/ext/upb-generated/google/api/annotations.upb.h +1 -1
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +11 -11
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +66 -22
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +9 -9
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +72 -24
- data/src/core/ext/upb-generated/google/api/http.upb.c +3 -3
- data/src/core/ext/upb-generated/google/api/http.upb.h +18 -6
- data/src/core/ext/upb-generated/google/api/httpbody.upb.c +1 -1
- data/src/core/ext/upb-generated/google/api/httpbody.upb.h +6 -2
- data/src/core/ext/upb-generated/google/protobuf/any.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/any.upb.h +6 -2
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +44 -43
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +177 -55
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +6 -2
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +6 -2
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +2 -2
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +18 -6
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +6 -2
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +6 -6
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +54 -18
- data/src/core/ext/upb-generated/google/rpc/status.upb.c +1 -1
- data/src/core/ext/upb-generated/google/rpc/status.upb.h +6 -2
- data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.c +2 -2
- data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.h +24 -8
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +6 -2
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +7 -7
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +60 -20
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +1 -1
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +12 -4
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +2 -2
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +12 -4
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +6 -6
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +54 -18
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +2 -2
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +12 -4
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.c +7 -7
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.h +42 -14
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +3 -3
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +23 -11
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +1 -1
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +7 -3
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +7 -3
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +1 -1
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +7 -3
- data/src/core/ext/upb-generated/validate/validate.upb.c +22 -22
- data/src/core/ext/upb-generated/validate/validate.upb.h +139 -47
- data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.c +3 -3
- data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.h +23 -11
- data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.h +7 -3
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +3 -3
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +27 -11
- data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.h +7 -3
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +6 -2
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +2 -2
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +12 -4
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +6 -2
- data/src/core/ext/upb-generated/xds/core/v3/extension.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/extension.upb.h +6 -2
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +6 -2
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +12 -4
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +6 -2
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +6 -2
- data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.h +6 -2
- data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.c +6 -6
- data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.h +54 -18
- data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.c +2 -2
- data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.h +12 -4
- data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.h +12 -4
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +6 -2
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +67 -274
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.h +0 -85
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.c +256 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.h +115 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.c +14 -11
- data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +107 -107
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +191 -187
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +156 -154
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +186 -183
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +136 -134
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +16 -16
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +162 -139
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +39 -31
- data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c +12 -8
- data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +72 -75
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +0 -5
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +713 -670
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +10 -0
- data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.c +150 -139
- data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.c +47 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.c +16 -12
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c +46 -25
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +477 -466
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +21 -18
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +153 -84
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +113 -113
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +29 -28
- data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.c +69 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +92 -90
- 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 +2 -0
- data/src/core/ext/xds/certificate_provider_store.h +9 -0
- 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 +0 -22
- data/src/core/ext/xds/xds_api.cc +68 -103
- data/src/core/ext/xds/xds_api.h +30 -32
- data/src/core/ext/xds/xds_bootstrap.cc +69 -69
- data/src/core/ext/xds/xds_bootstrap.h +37 -19
- data/src/core/ext/xds/xds_certificate_provider.cc +12 -3
- data/src/core/ext/xds/xds_certificate_provider.h +25 -1
- data/src/core/ext/xds/xds_channel_stack_modifier.cc +15 -4
- data/src/core/ext/xds/xds_channel_stack_modifier.h +13 -1
- data/src/core/ext/xds/xds_client.cc +583 -1193
- data/src/core/ext/xds/xds_client.h +28 -42
- data/src/core/ext/xds/xds_client_grpc.cc +291 -0
- data/src/core/ext/xds/xds_client_grpc.h +102 -0
- 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 +107 -107
- data/src/core/ext/xds/xds_cluster.h +14 -5
- data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +23 -18
- data/src/core/ext/xds/xds_cluster_specifier_plugin.h +2 -8
- data/src/core/ext/xds/xds_common_types.cc +161 -123
- data/src/core/ext/xds/xds_common_types.h +16 -9
- data/src/core/ext/xds/xds_endpoint.cc +95 -85
- data/src/core/ext/xds/xds_endpoint.h +16 -8
- data/src/core/ext/xds/xds_http_fault_filter.cc +11 -16
- data/src/core/ext/xds/xds_http_fault_filter.h +5 -3
- data/src/core/ext/xds/xds_http_filters.cc +7 -0
- data/src/core/ext/xds/xds_http_filters.h +5 -5
- data/src/core/ext/xds/xds_http_rbac_filter.cc +52 -55
- data/src/core/ext/xds/xds_http_rbac_filter.h +8 -1
- data/src/core/ext/xds/xds_lb_policy_registry.cc +288 -0
- data/src/core/ext/xds/xds_lb_policy_registry.h +72 -0
- data/src/core/ext/xds/xds_listener.cc +355 -307
- data/src/core/ext/xds/xds_listener.h +13 -4
- data/src/core/ext/xds/xds_resource_type.h +16 -5
- data/src/core/ext/xds/xds_resource_type_impl.h +7 -3
- data/src/core/ext/xds/xds_route_config.cc +215 -184
- data/src/core/ext/xds/xds_route_config.h +39 -16
- data/src/core/ext/xds/xds_routing.cc +19 -6
- data/src/core/ext/xds/xds_routing.h +12 -9
- data/src/core/ext/xds/xds_server_config_fetcher.cc +124 -81
- data/src/core/ext/xds/xds_transport.h +86 -0
- data/src/core/ext/xds/xds_transport_grpc.cc +349 -0
- data/src/core/ext/xds/xds_transport_grpc.h +135 -0
- data/src/core/lib/address_utils/parse_address.cc +24 -25
- data/src/core/lib/address_utils/parse_address.h +11 -7
- data/src/core/lib/address_utils/sockaddr_utils.cc +8 -7
- data/src/core/lib/address_utils/sockaddr_utils.h +2 -0
- data/src/core/lib/avl/avl.h +47 -25
- data/src/core/lib/backoff/backoff.cc +1 -1
- data/src/core/lib/backoff/backoff.h +1 -1
- data/src/core/lib/channel/call_tracer.h +4 -4
- data/src/core/lib/channel/channel_args.cc +88 -19
- data/src/core/lib/channel/channel_args.h +114 -62
- data/src/core/lib/channel/channel_args_preconditioning.cc +1 -0
- data/src/core/lib/channel/channel_fwd.h +26 -0
- data/src/core/lib/channel/channel_stack.cc +4 -5
- data/src/core/lib/channel/channel_stack.h +1 -11
- data/src/core/lib/channel/channel_stack_builder.cc +3 -3
- data/src/core/lib/channel/channel_stack_builder.h +4 -7
- data/src/core/lib/channel/channel_stack_builder_impl.cc +3 -5
- data/src/core/lib/channel/channel_stack_builder_impl.h +1 -0
- data/src/core/lib/channel/channelz.cc +28 -37
- data/src/core/lib/channel/channelz.h +11 -3
- data/src/core/lib/channel/channelz_registry.cc +4 -5
- data/src/core/lib/channel/connected_channel.cc +1 -0
- data/src/core/lib/channel/connected_channel.h +1 -0
- data/src/core/lib/channel/promise_based_filter.cc +11 -5
- data/src/core/lib/channel/promise_based_filter.h +2 -1
- data/src/core/lib/compression/compression.cc +6 -1
- data/src/core/lib/compression/compression_internal.cc +3 -6
- data/src/core/lib/compression/compression_internal.h +3 -2
- 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.h +48 -35
- data/src/core/lib/debug/stats.cc +15 -18
- data/src/core/lib/debug/stats.h +13 -4
- 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/default_event_engine.cc +71 -0
- data/src/core/lib/event_engine/{event_engine_factory.h → default_event_engine.h} +6 -10
- data/src/core/lib/event_engine/default_event_engine_factory.cc +20 -3
- data/src/core/lib/event_engine/default_event_engine_factory.h +33 -0
- data/src/core/lib/event_engine/executor/executor.h +38 -0
- data/src/core/lib/event_engine/executor/threaded_executor.cc +36 -0
- data/src/core/lib/event_engine/executor/threaded_executor.h +44 -0
- data/src/core/lib/event_engine/forkable.cc +98 -0
- data/src/core/lib/event_engine/forkable.h +61 -0
- data/src/core/lib/event_engine/poller.h +54 -0
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +142 -0
- data/src/core/lib/event_engine/{iomgr_engine.h → posix_engine/posix_engine.h} +35 -32
- data/src/core/lib/event_engine/posix_engine/timer.cc +311 -0
- data/src/core/lib/event_engine/posix_engine/timer.h +193 -0
- data/src/core/lib/event_engine/posix_engine/timer_heap.cc +107 -0
- data/src/core/lib/event_engine/posix_engine/timer_heap.h +56 -0
- data/src/core/lib/event_engine/posix_engine/timer_manager.cc +290 -0
- data/src/core/lib/event_engine/posix_engine/timer_manager.h +120 -0
- data/src/core/lib/event_engine/promise.h +78 -0
- data/src/core/lib/event_engine/socket_notifier.h +55 -0
- data/src/core/lib/event_engine/thread_pool.cc +158 -0
- data/src/core/lib/event_engine/thread_pool.h +81 -0
- data/src/core/lib/event_engine/utils.cc +49 -0
- data/src/core/lib/event_engine/utils.h +40 -0
- data/src/core/lib/event_engine/windows/iocp.cc +149 -0
- data/src/core/lib/event_engine/windows/iocp.h +68 -0
- data/src/core/lib/event_engine/windows/win_socket.cc +196 -0
- data/src/core/lib/event_engine/windows/win_socket.h +120 -0
- data/src/core/lib/event_engine/windows/windows_engine.cc +159 -0
- data/src/core/lib/event_engine/windows/windows_engine.h +120 -0
- data/src/core/lib/gpr/time.cc +11 -9
- 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/useful.h +29 -0
- data/src/core/lib/gprpp/bitset.h +3 -13
- data/src/core/lib/gprpp/debug_location.h +39 -7
- data/src/core/lib/gprpp/manual_constructor.h +0 -68
- data/src/core/lib/gprpp/no_destruct.h +94 -0
- data/src/core/lib/gprpp/ref_counted_ptr.h +0 -1
- data/src/core/lib/gprpp/status_helper.cc +45 -30
- data/src/core/lib/gprpp/table.h +0 -1
- data/src/core/lib/gprpp/time.cc +8 -0
- data/src/core/lib/gprpp/time.h +4 -0
- data/src/core/lib/gprpp/time_averaged_stats.cc +60 -0
- data/src/core/lib/{iomgr → gprpp}/time_averaged_stats.h +29 -22
- data/src/core/lib/{iomgr → gprpp}/work_serializer.cc +34 -18
- data/src/core/lib/{iomgr → gprpp}/work_serializer.h +21 -28
- data/src/core/lib/http/format_request.cc +5 -4
- data/src/core/lib/http/format_request.h +1 -1
- data/src/core/lib/http/httpcli.cc +29 -35
- data/src/core/lib/http/httpcli.h +19 -3
- data/src/core/lib/http/httpcli_security_connector.cc +26 -14
- 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 -28
- data/src/core/lib/iomgr/closure.h +0 -9
- data/src/core/lib/iomgr/combiner.cc +0 -20
- data/src/core/lib/iomgr/endpoint.h +1 -1
- data/src/core/lib/iomgr/endpoint_cfstream.cc +2 -2
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +2 -1
- data/src/core/lib/iomgr/error.cc +6 -777
- data/src/core/lib/iomgr/error.h +6 -147
- data/src/core/lib/iomgr/error_cfstream.cc +0 -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 +94 -61
- data/src/core/lib/iomgr/ev_poll_posix.h +2 -2
- data/src/core/lib/iomgr/ev_posix.cc +54 -92
- data/src/core/lib/iomgr/ev_posix.h +5 -3
- data/src/core/lib/iomgr/exec_ctx.cc +0 -12
- data/src/core/lib/iomgr/executor.cc +0 -10
- data/src/core/lib/iomgr/executor.h +0 -3
- data/src/core/lib/iomgr/fork_posix.cc +1 -1
- data/src/core/lib/iomgr/iomgr.cc +7 -0
- 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/lockfree_event.cc +0 -17
- data/src/core/lib/iomgr/port.h +3 -0
- data/src/core/lib/iomgr/resolve_address.h +29 -6
- data/src/core/lib/iomgr/resolve_address_posix.cc +39 -9
- data/src/core/lib/iomgr/resolve_address_posix.h +19 -5
- data/src/core/lib/iomgr/resolve_address_windows.cc +41 -11
- data/src/core/lib/iomgr/resolve_address_windows.h +19 -5
- data/src/core/lib/iomgr/socket_windows.h +0 -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 +15 -9
- data/src/core/lib/iomgr/tcp_client_posix.cc +143 -25
- data/src/core/lib/iomgr/tcp_client_posix.h +1 -1
- data/src/core/lib/iomgr/tcp_client_windows.cc +14 -10
- data/src/core/lib/iomgr/tcp_posix.cc +207 -33
- data/src/core/lib/iomgr/tcp_server_posix.cc +7 -7
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +12 -12
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +2 -2
- data/src/core/lib/iomgr/tcp_server_windows.cc +7 -7
- data/src/core/lib/iomgr/tcp_windows.cc +5 -5
- data/src/core/lib/iomgr/timer_generic.cc +6 -8
- 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/json/json.h +19 -22
- data/src/core/lib/json/json_args.h +34 -0
- data/src/core/lib/json/json_object_loader.cc +233 -0
- data/src/core/lib/json/json_object_loader.h +618 -0
- data/src/core/lib/json/json_reader.cc +86 -62
- data/src/core/lib/json/json_util.cc +8 -36
- data/src/core/{ext/filters/client_channel → lib/load_balancing}/lb_policy.cc +3 -44
- data/src/core/{ext/filters/client_channel → lib/load_balancing}/lb_policy.h +15 -31
- data/src/core/lib/load_balancing/lb_policy_factory.h +49 -0
- data/src/core/{ext/filters/client_channel → lib/load_balancing}/lb_policy_registry.cc +48 -73
- data/src/core/{ext/filters/client_channel → lib/load_balancing}/lb_policy_registry.h +27 -27
- data/src/core/{ext/filters/client_channel → lib/load_balancing}/subchannel_interface.h +16 -24
- 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 +0 -1
- data/src/core/lib/promise/activity.h +56 -14
- data/src/core/lib/promise/arena_promise.h +84 -81
- data/src/core/lib/promise/context.h +0 -1
- data/src/core/lib/promise/detail/basic_seq.h +43 -23
- data/src/core/lib/promise/detail/promise_factory.h +0 -1
- data/src/core/lib/promise/loop.h +1 -0
- data/src/core/lib/promise/map.h +0 -1
- data/src/core/lib/promise/promise.h +1 -0
- data/src/core/lib/promise/seq.h +25 -4
- data/src/core/lib/promise/sleep.cc +43 -42
- data/src/core/lib/promise/sleep.h +31 -28
- data/src/core/lib/promise/try_seq.h +26 -6
- data/src/core/lib/resolver/resolver.cc +0 -42
- data/src/core/lib/resolver/resolver.h +5 -12
- data/src/core/lib/resolver/resolver_factory.h +6 -4
- data/src/core/lib/resolver/resolver_registry.cc +3 -10
- data/src/core/lib/resolver/resolver_registry.h +12 -2
- data/src/core/lib/resolver/server_address.cc +19 -15
- data/src/core/lib/resolver/server_address.h +11 -8
- data/src/core/lib/resource_quota/api.cc +1 -1
- data/src/core/lib/resource_quota/arena.cc +21 -1
- data/src/core/lib/resource_quota/arena.h +24 -2
- data/src/core/lib/resource_quota/memory_quota.cc +171 -73
- data/src/core/lib/resource_quota/memory_quota.h +109 -42
- data/src/core/lib/resource_quota/periodic_update.cc +79 -0
- data/src/core/lib/resource_quota/periodic_update.h +71 -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 +17 -8
- 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 +12 -1
- data/src/core/lib/security/authorization/grpc_server_authz_filter.h +13 -2
- data/src/core/lib/security/authorization/matchers.cc +20 -9
- data/src/core/lib/security/authorization/matchers.h +7 -0
- data/src/core/lib/security/authorization/rbac_policy.cc +4 -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 +6 -5
- data/src/core/lib/security/credentials/alts/alts_credentials.h +8 -4
- 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 +8 -0
- data/src/core/lib/security/credentials/call_creds_util.h +1 -0
- data/src/core/lib/security/credentials/channel_creds_registry.h +6 -1
- data/src/core/lib/security/credentials/channel_creds_registry_init.cc +10 -0
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +5 -9
- data/src/core/lib/security/credentials/composite/composite_credentials.h +17 -5
- data/src/core/lib/security/credentials/credentials.cc +4 -8
- data/src/core/lib/security/credentials/credentials.h +26 -20
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +45 -20
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +10 -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 +53 -29
- 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 +15 -8
- 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 +23 -9
- data/src/core/lib/security/credentials/external/url_external_account_credentials.h +10 -0
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +10 -17
- data/src/core/lib/security/credentials/fake/fake_credentials.h +13 -5
- 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 +55 -35
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +10 -3
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +8 -3
- data/src/core/lib/security/credentials/iam/iam_credentials.h +10 -0
- data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +7 -3
- data/src/core/lib/security/credentials/insecure/insecure_credentials.h +7 -3
- data/src/core/lib/security/credentials/jwt/json_token.cc +17 -5
- data/src/core/lib/security/credentials/jwt/json_token.h +2 -2
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +12 -10
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +14 -0
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +37 -14
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +4 -2
- data/src/core/lib/security/credentials/local/local_credentials.cc +7 -7
- data/src/core/lib/security/credentials/local/local_credentials.h +9 -3
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +41 -29
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +20 -0
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +7 -7
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +24 -0
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +18 -21
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +15 -3
- 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 +29 -10
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +15 -4
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +9 -2
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +6 -7
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +4 -5
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +19 -26
- data/src/core/lib/security/credentials/tls/tls_credentials.h +7 -4
- 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 +21 -31
- data/src/core/lib/security/credentials/xds/xds_credentials.h +16 -2
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +30 -18
- 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 +42 -38
- data/src/core/lib/security/security_connector/fake/fake_security_connector.h +3 -3
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +13 -4
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +21 -5
- 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 +34 -13
- data/src/core/lib/security/security_connector/local/local_security_connector.h +7 -3
- data/src/core/lib/security/security_connector/security_connector.cc +20 -18
- data/src/core/lib/security/security_connector/security_connector.h +23 -9
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +21 -8
- 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 +25 -17
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +27 -7
- data/src/core/lib/security/transport/auth_filters.h +8 -1
- data/src/core/lib/security/transport/client_auth_filter.cc +19 -11
- data/src/core/lib/security/transport/secure_endpoint.cc +63 -13
- data/src/core/lib/security/transport/secure_endpoint.h +4 -3
- data/src/core/lib/security/transport/security_handshaker.cc +70 -49
- data/src/core/lib/security/transport/security_handshaker.h +6 -1
- data/src/core/lib/security/transport/server_auth_filter.cc +26 -4
- 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 +11 -0
- data/src/core/lib/service_config/service_config_call_data.h +2 -1
- data/src/core/lib/service_config/service_config_impl.cc +98 -97
- data/src/core/lib/service_config/service_config_impl.h +12 -16
- data/src/core/lib/service_config/service_config_parser.cc +26 -29
- data/src/core/lib/service_config/service_config_parser.h +10 -22
- data/src/core/lib/slice/percent_encoding.cc +4 -13
- data/src/core/lib/slice/slice.cc +10 -4
- data/src/core/lib/slice/slice_buffer.cc +30 -1
- data/src/core/lib/slice/slice_buffer.h +37 -6
- data/src/core/lib/slice/slice_string_helpers.cc +0 -20
- data/src/core/lib/slice/slice_string_helpers.h +0 -4
- data/src/core/lib/surface/call.cc +61 -117
- data/src/core/lib/surface/call.h +5 -1
- data/src/core/lib/surface/channel.cc +6 -6
- data/src/core/lib/surface/channel.h +3 -1
- data/src/core/lib/surface/channel_ping.cc +1 -1
- data/src/core/lib/surface/completion_queue.cc +15 -16
- data/src/core/lib/surface/completion_queue.h +2 -4
- data/src/core/lib/surface/init.cc +2 -7
- data/src/core/lib/surface/lame_client.cc +3 -4
- data/src/core/lib/surface/lame_client.h +2 -2
- data/src/core/lib/surface/server.cc +21 -20
- data/src/core/lib/surface/server.h +11 -8
- data/src/core/lib/surface/validate_metadata.cc +5 -15
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/connectivity_state.cc +0 -1
- data/src/core/lib/transport/connectivity_state.h +1 -1
- data/src/core/lib/transport/error_utils.cc +9 -39
- data/src/core/lib/transport/handshaker.cc +10 -12
- data/src/core/lib/transport/handshaker.h +4 -5
- data/src/core/lib/transport/handshaker_factory.h +2 -3
- data/src/core/lib/transport/handshaker_registry.cc +2 -1
- data/src/core/lib/transport/handshaker_registry.h +2 -4
- data/src/core/lib/transport/http_connect_handshaker.cc +20 -20
- data/src/core/lib/transport/metadata_batch.cc +5 -0
- data/src/core/lib/transport/metadata_batch.h +52 -7
- data/src/core/lib/transport/parsed_metadata.h +0 -1
- data/src/core/lib/transport/tcp_connect_handshaker.cc +14 -20
- data/src/core/lib/transport/transport.cc +0 -3
- data/src/core/lib/transport/transport.h +20 -21
- data/src/core/lib/transport/transport_fwd.h +20 -0
- data/src/core/lib/transport/transport_impl.h +1 -0
- data/src/core/lib/transport/transport_op_string.cc +9 -9
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +40 -21
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +1 -1
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +15 -8
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +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 +66 -31
- data/src/core/tsi/fake_transport_security.h +6 -0
- data/src/core/tsi/local_transport_security.cc +9 -5
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +10 -1
- data/src/core/tsi/ssl_transport_security.cc +48 -24
- data/src/core/tsi/transport_security.cc +18 -6
- data/src/core/tsi/transport_security.h +2 -1
- data/src/core/tsi/transport_security_grpc.cc +3 -2
- data/src/core/tsi/transport_security_grpc.h +5 -2
- data/src/core/tsi/transport_security_interface.h +17 -5
- 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 +51 -18
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +1 -1
- data/src/ruby/ext/grpc/rb_loader.c +6 -2
- data/src/ruby/lib/grpc/2.5/grpc_c.so +0 -0
- 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/errors.rb +1 -1
- data/src/ruby/lib/grpc/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +4 -0
- 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 +15 -9
- 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/any_invocable.h +313 -0
- 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/functional/internal/any_invocable.h +857 -0
- 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
- data/third_party/upb/third_party/utf8_range/utf8_range.h +1 -1
- data/third_party/upb/upb/arena.c +277 -0
- data/third_party/upb/upb/arena.h +225 -0
- data/third_party/upb/upb/array.c +114 -0
- data/third_party/upb/upb/array.h +83 -0
- data/third_party/upb/upb/collections.h +36 -0
- data/third_party/upb/upb/decode.c +161 -65
- data/third_party/upb/upb/decode.h +1 -0
- data/third_party/upb/upb/decode_fast.c +1 -1
- data/third_party/upb/upb/def.c +10 -2
- data/third_party/upb/upb/def.h +8 -1
- data/third_party/upb/upb/def.hpp +7 -4
- data/third_party/upb/upb/encode.c +29 -20
- data/third_party/upb/upb/encode.h +16 -6
- data/third_party/upb/upb/extension_registry.c +93 -0
- data/third_party/upb/upb/extension_registry.h +84 -0
- data/third_party/upb/upb/{decode_internal.h → internal/decode.h} +5 -5
- data/third_party/upb/upb/internal/table.h +385 -0
- data/third_party/upb/upb/{upb_internal.h → internal/upb.h} +3 -3
- data/third_party/upb/upb/internal/vsnprintf_compat.h +52 -0
- data/third_party/upb/upb/json_decode.c +1512 -0
- data/third_party/upb/upb/json_decode.h +47 -0
- data/third_party/upb/upb/json_encode.c +7 -3
- data/third_party/upb/upb/json_encode.h +6 -3
- data/third_party/upb/upb/map.c +108 -0
- data/third_party/upb/upb/map.h +117 -0
- data/third_party/upb/upb/message_value.h +66 -0
- data/third_party/upb/upb/mini_table.c +1147 -0
- data/third_party/upb/upb/mini_table.h +189 -0
- data/third_party/upb/upb/mini_table.hpp +112 -0
- data/third_party/upb/upb/msg.c +2 -62
- data/third_party/upb/upb/msg.h +2 -45
- data/third_party/upb/upb/msg_internal.h +28 -22
- data/third_party/upb/upb/port_def.inc +2 -1
- data/third_party/upb/upb/port_undef.inc +1 -0
- data/third_party/upb/upb/reflection.c +2 -159
- data/third_party/upb/upb/reflection.h +2 -112
- data/third_party/upb/upb/status.c +86 -0
- data/third_party/upb/upb/status.h +66 -0
- data/third_party/upb/upb/table.c +2 -2
- data/third_party/upb/upb/table_internal.h +3 -352
- data/third_party/upb/upb/text_encode.c +3 -2
- data/third_party/upb/upb/upb.c +4 -290
- data/third_party/upb/upb/upb.h +7 -196
- metadata +113 -37
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +0 -50
- data/src/core/lib/event_engine/event_engine.cc +0 -62
- data/src/core/lib/event_engine/iomgr_engine.cc +0 -206
- data/src/core/lib/iomgr/error_internal.h +0 -66
- data/src/core/lib/iomgr/executor/mpmcqueue.cc +0 -182
- data/src/core/lib/iomgr/executor/mpmcqueue.h +0 -171
- data/src/core/lib/iomgr/executor/threadpool.cc +0 -136
- data/src/core/lib/iomgr/executor/threadpool.h +0 -150
- data/src/core/lib/iomgr/time_averaged_stats.cc +0 -64
- data/src/core/lib/promise/detail/switch.h +0 -1455
- data/src/core/lib/slice/slice_split.cc +0 -103
- data/src/core/lib/slice/slice_split.h +0 -36
- data/src/core/lib/transport/byte_stream.cc +0 -165
- data/src/core/lib/transport/byte_stream.h +0 -170
- data/third_party/abseil-cpp/absl/cleanup/cleanup.h +0 -140
- data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +0 -100
- 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 {
|
@@ -232,7 +234,11 @@ class TcpZerocopySendCtx {
|
|
232
234
|
// buffers that were sent with the corresponding call to sendmsg().
|
233
235
|
void NoteSend(TcpZerocopySendRecord* record) {
|
234
236
|
record->Ref();
|
235
|
-
|
237
|
+
{
|
238
|
+
MutexLock guard(&lock_);
|
239
|
+
is_in_write_ = true;
|
240
|
+
AssociateSeqWithSendRecordLocked(last_send_, record);
|
241
|
+
}
|
236
242
|
++last_send_;
|
237
243
|
}
|
238
244
|
|
@@ -253,8 +259,8 @@ class TcpZerocopySendCtx {
|
|
253
259
|
|
254
260
|
// Simply associate this send record (and the underlying sent data buffers)
|
255
261
|
// with the implicit sequence number for this zerocopy sendmsg().
|
256
|
-
void
|
257
|
-
|
262
|
+
void AssociateSeqWithSendRecordLocked(uint32_t seq,
|
263
|
+
TcpZerocopySendRecord* record) {
|
258
264
|
ctx_lookup_.emplace(seq, record);
|
259
265
|
}
|
260
266
|
|
@@ -312,7 +318,107 @@ class TcpZerocopySendCtx {
|
|
312
318
|
// zerocopy is not useful for small transfers.
|
313
319
|
size_t threshold_bytes() const { return threshold_bytes_; }
|
314
320
|
|
321
|
+
// Expected to be called by handler reading messages from the err queue.
|
322
|
+
// It is used to indicate that some OMem meory is now available. It returns
|
323
|
+
// true to tell the caller to mark the file descriptor as immediately
|
324
|
+
// writable.
|
325
|
+
//
|
326
|
+
// If a write is currently in progress on the socket (ie. we have issued a
|
327
|
+
// sendmsg() and are about to check its return value) then we set omem state
|
328
|
+
// to CHECK to make the sending thread know that some tcp_omem was
|
329
|
+
// concurrently freed even if sendmsg() returns ENOBUFS. In this case, since
|
330
|
+
// there is already an active send thread, we do not need to mark the
|
331
|
+
// socket writeable, so we return false.
|
332
|
+
//
|
333
|
+
// If there was no write in progress on the socket, and the socket was not
|
334
|
+
// marked as FULL, then we need not mark the socket writeable now that some
|
335
|
+
// tcp_omem memory is freed since it was not considered as blocked on
|
336
|
+
// tcp_omem to begin with. So in this case, return false.
|
337
|
+
//
|
338
|
+
// But, if a write was not in progress and the omem state was FULL, then we
|
339
|
+
// need to mark the socket writeable since it is no longer blocked by
|
340
|
+
// tcp_omem. In this case, return true.
|
341
|
+
//
|
342
|
+
// Please refer to the STATE TRANSITION DIAGRAM below for more details.
|
343
|
+
//
|
344
|
+
bool UpdateZeroCopyOMemStateAfterFree() {
|
345
|
+
MutexLock guard(&lock_);
|
346
|
+
if (is_in_write_) {
|
347
|
+
zcopy_enobuf_state_ = OMemState::CHECK;
|
348
|
+
return false;
|
349
|
+
}
|
350
|
+
GPR_DEBUG_ASSERT(zcopy_enobuf_state_ != OMemState::CHECK);
|
351
|
+
if (zcopy_enobuf_state_ == OMemState::FULL) {
|
352
|
+
// A previous sendmsg attempt was blocked by ENOBUFS. Return true to
|
353
|
+
// mark the fd as writable so the next write attempt could be made.
|
354
|
+
zcopy_enobuf_state_ = OMemState::OPEN;
|
355
|
+
return true;
|
356
|
+
} else if (zcopy_enobuf_state_ == OMemState::OPEN) {
|
357
|
+
// No need to mark the fd as writable because the previous write
|
358
|
+
// attempt did not encounter ENOBUFS.
|
359
|
+
return false;
|
360
|
+
} else {
|
361
|
+
// This state should never be reached because it implies that the previous
|
362
|
+
// state was CHECK and is_in_write is false. This means that after the
|
363
|
+
// previous sendmsg returned and set is_in_write to false, it did
|
364
|
+
// not update the z-copy change from CHECK to OPEN.
|
365
|
+
GPR_ASSERT(false && "OMem state error!");
|
366
|
+
}
|
367
|
+
}
|
368
|
+
|
369
|
+
// Expected to be called by the thread calling sendmsg after the syscall
|
370
|
+
// invocation. is complete. If an ENOBUF is seen, it checks if the error
|
371
|
+
// handler (Tx0cp completions) has already run and free'ed up some OMem. It
|
372
|
+
// returns true indicating that the write can be attempted again immediately.
|
373
|
+
// If ENOBUFS was seen but no Tx0cp completions have been received between the
|
374
|
+
// sendmsg() and us taking this lock, then tcp_omem is still full from our
|
375
|
+
// point of view. Therefore, we do not signal that the socket is writeable
|
376
|
+
// with respect to the availability of tcp_omem. Therefore the function
|
377
|
+
// returns false. This indicates that another write should not be attempted
|
378
|
+
// immediately and the calling thread should wait until the socket is writable
|
379
|
+
// again. If ENOBUFS was not seen, then again return false because the next
|
380
|
+
// write should be attempted only when the socket is writable again.
|
381
|
+
//
|
382
|
+
// Please refer to the STATE TRANSITION DIAGRAM below for more details.
|
383
|
+
//
|
384
|
+
bool UpdateZeroCopyOMemStateAfterSend(bool seen_enobuf) {
|
385
|
+
MutexLock guard(&lock_);
|
386
|
+
is_in_write_ = false;
|
387
|
+
if (seen_enobuf) {
|
388
|
+
if (zcopy_enobuf_state_ == OMemState::CHECK) {
|
389
|
+
zcopy_enobuf_state_ = OMemState::OPEN;
|
390
|
+
return true;
|
391
|
+
} else {
|
392
|
+
zcopy_enobuf_state_ = OMemState::FULL;
|
393
|
+
}
|
394
|
+
} else if (zcopy_enobuf_state_ != OMemState::OPEN) {
|
395
|
+
zcopy_enobuf_state_ = OMemState::OPEN;
|
396
|
+
}
|
397
|
+
return false;
|
398
|
+
}
|
399
|
+
|
315
400
|
private:
|
401
|
+
// STATE TRANSITION DIAGRAM
|
402
|
+
//
|
403
|
+
// sendmsg succeeds Tx-zero copy succeeds and there is no active sendmsg
|
404
|
+
// ----<<--+ +------<<-------------------------------------+
|
405
|
+
// | | | |
|
406
|
+
// | | v sendmsg returns ENOBUFS |
|
407
|
+
// +-----> OPEN ------------->>-------------------------> FULL
|
408
|
+
// ^ |
|
409
|
+
// | |
|
410
|
+
// | sendmsg completes |
|
411
|
+
// +----<<---------- CHECK <-------<<-------------+
|
412
|
+
// Tx-zero copy succeeds and there is
|
413
|
+
// an active sendmsg
|
414
|
+
//
|
415
|
+
enum class OMemState : int8_t {
|
416
|
+
OPEN, // Everything is clear and omem is not full.
|
417
|
+
FULL, // The last sendmsg() has returned with an errno of ENOBUFS.
|
418
|
+
CHECK, // Error queue is read while is_in_write_ was true, so we should
|
419
|
+
// check this state after the sendmsg.
|
420
|
+
};
|
421
|
+
|
316
422
|
TcpZerocopySendRecord* ReleaseSendRecordLocked(uint32_t seq) {
|
317
423
|
auto iter = ctx_lookup_.find(seq);
|
318
424
|
GPR_DEBUG_ASSERT(iter != ctx_lookup_.end());
|
@@ -349,6 +455,8 @@ class TcpZerocopySendCtx {
|
|
349
455
|
size_t threshold_bytes_ = kDefaultSendBytesThreshold;
|
350
456
|
std::unordered_map<uint32_t, TcpZerocopySendRecord*> ctx_lookup_;
|
351
457
|
bool memory_limited_ = false;
|
458
|
+
bool is_in_write_ = false;
|
459
|
+
OMemState zcopy_enobuf_state_;
|
352
460
|
};
|
353
461
|
|
354
462
|
} // namespace grpc_core
|
@@ -357,6 +465,13 @@ using grpc_core::TcpZerocopySendCtx;
|
|
357
465
|
using grpc_core::TcpZerocopySendRecord;
|
358
466
|
|
359
467
|
namespace {
|
468
|
+
|
469
|
+
bool ExperimentalTcpFrameSizeTuningEnabled() {
|
470
|
+
static const bool kEnableTcpFrameSizeTuning =
|
471
|
+
GPR_GLOBAL_CONFIG_GET(grpc_experimental_enable_tcp_frame_size_tuning);
|
472
|
+
return kEnableTcpFrameSizeTuning;
|
473
|
+
}
|
474
|
+
|
360
475
|
struct grpc_tcp {
|
361
476
|
grpc_tcp(int max_sends, size_t send_bytes_threshold)
|
362
477
|
: tcp_zerocopy_send_ctx(max_sends, send_bytes_threshold) {}
|
@@ -426,6 +541,11 @@ struct grpc_tcp {
|
|
426
541
|
on errors anymore */
|
427
542
|
TcpZerocopySendCtx tcp_zerocopy_send_ctx;
|
428
543
|
TcpZerocopySendRecord* current_zerocopy_send = nullptr;
|
544
|
+
|
545
|
+
bool frame_size_tuning_enabled;
|
546
|
+
int min_progress_size; /* A hint from upper layers specifying the minimum
|
547
|
+
number of bytes that need to be read to make
|
548
|
+
meaningful progress */
|
429
549
|
};
|
430
550
|
|
431
551
|
struct backup_poller {
|
@@ -736,6 +856,7 @@ static bool tcp_do_read(grpc_tcp* tcp, grpc_error_handle* error)
|
|
736
856
|
}
|
737
857
|
|
738
858
|
GPR_ASSERT(tcp->incoming_buffer->length != 0);
|
859
|
+
GPR_DEBUG_ASSERT(tcp->min_progress_size > 0);
|
739
860
|
|
740
861
|
do {
|
741
862
|
/* Assume there is something on the queue. If we receive TCP_INQ from
|
@@ -767,7 +888,8 @@ static bool tcp_do_read(grpc_tcp* tcp, grpc_error_handle* error)
|
|
767
888
|
|
768
889
|
/* We have read something in previous reads. We need to deliver those
|
769
890
|
* bytes to the upper layer. */
|
770
|
-
if (read_bytes <= 0 &&
|
891
|
+
if (read_bytes <= 0 &&
|
892
|
+
total_read_bytes >= static_cast<size_t>(tcp->min_progress_size)) {
|
771
893
|
tcp->inq = 1;
|
772
894
|
break;
|
773
895
|
}
|
@@ -776,6 +898,9 @@ static bool tcp_do_read(grpc_tcp* tcp, grpc_error_handle* error)
|
|
776
898
|
/* NB: After calling call_read_cb a parallel call of the read handler may
|
777
899
|
* be running. */
|
778
900
|
if (errno == EAGAIN) {
|
901
|
+
if (total_read_bytes > 0) {
|
902
|
+
break;
|
903
|
+
}
|
779
904
|
finish_estimate(tcp);
|
780
905
|
tcp->inq = 0;
|
781
906
|
return false;
|
@@ -848,18 +973,45 @@ static bool tcp_do_read(grpc_tcp* tcp, grpc_error_handle* error)
|
|
848
973
|
}
|
849
974
|
|
850
975
|
GPR_DEBUG_ASSERT(total_read_bytes > 0);
|
976
|
+
*error = GRPC_ERROR_NONE;
|
977
|
+
if (tcp->frame_size_tuning_enabled) {
|
978
|
+
// Update min progress size based on the total number of bytes read in
|
979
|
+
// this round.
|
980
|
+
tcp->min_progress_size -= total_read_bytes;
|
981
|
+
if (tcp->min_progress_size > 0) {
|
982
|
+
// There is still some bytes left to be read before we can signal
|
983
|
+
// the read as complete. Append the bytes read so far into
|
984
|
+
// last_read_buffer which serves as a staging buffer. Return false
|
985
|
+
// to indicate tcp_handle_read needs to be scheduled again.
|
986
|
+
grpc_slice_buffer_move_first(tcp->incoming_buffer, total_read_bytes,
|
987
|
+
&tcp->last_read_buffer);
|
988
|
+
return false;
|
989
|
+
} else {
|
990
|
+
// The required number of bytes have been read. Append the bytes
|
991
|
+
// read in this round into last_read_buffer. Then swap last_read_buffer
|
992
|
+
// and incoming_buffer. Now incoming buffer contains all the bytes
|
993
|
+
// read since the start of the last tcp_read operation. last_read_buffer
|
994
|
+
// would contain any spare space left in the incoming buffer. This
|
995
|
+
// space will be used in the next tcp_read operation.
|
996
|
+
tcp->min_progress_size = 1;
|
997
|
+
grpc_slice_buffer_move_first(tcp->incoming_buffer, total_read_bytes,
|
998
|
+
&tcp->last_read_buffer);
|
999
|
+
grpc_slice_buffer_swap(&tcp->last_read_buffer, tcp->incoming_buffer);
|
1000
|
+
return true;
|
1001
|
+
}
|
1002
|
+
}
|
851
1003
|
if (total_read_bytes < tcp->incoming_buffer->length) {
|
852
1004
|
grpc_slice_buffer_trim_end(tcp->incoming_buffer,
|
853
1005
|
tcp->incoming_buffer->length - total_read_bytes,
|
854
1006
|
&tcp->last_read_buffer);
|
855
1007
|
}
|
856
|
-
*error = GRPC_ERROR_NONE;
|
857
1008
|
return true;
|
858
1009
|
}
|
859
1010
|
|
860
1011
|
static void maybe_make_read_slices(grpc_tcp* tcp)
|
861
1012
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(tcp->read_mu) {
|
862
|
-
if (tcp->incoming_buffer->length
|
1013
|
+
if (tcp->incoming_buffer->length <
|
1014
|
+
static_cast<size_t>(tcp->min_progress_size) &&
|
863
1015
|
tcp->incoming_buffer->count < MAX_READ_IOVEC) {
|
864
1016
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
|
865
1017
|
gpr_log(GPR_INFO,
|
@@ -868,15 +1020,20 @@ static void maybe_make_read_slices(grpc_tcp* tcp)
|
|
868
1020
|
tcp, tcp->min_read_chunk_size, tcp->max_read_chunk_size,
|
869
1021
|
tcp->target_length, tcp->incoming_buffer->length);
|
870
1022
|
}
|
871
|
-
int target_length =
|
1023
|
+
int target_length =
|
1024
|
+
std::max(static_cast<int>(tcp->target_length), tcp->min_progress_size);
|
872
1025
|
int extra_wanted =
|
873
1026
|
target_length - static_cast<int>(tcp->incoming_buffer->length);
|
1027
|
+
int min_read_chunk_size =
|
1028
|
+
std::max(tcp->min_read_chunk_size, tcp->min_progress_size);
|
1029
|
+
int max_read_chunk_size =
|
1030
|
+
std::max(tcp->max_read_chunk_size, tcp->min_progress_size);
|
874
1031
|
grpc_slice_buffer_add_indexed(
|
875
1032
|
tcp->incoming_buffer,
|
876
1033
|
tcp->memory_owner.MakeSlice(grpc_core::MemoryRequest(
|
877
|
-
|
878
|
-
grpc_core::Clamp(extra_wanted,
|
879
|
-
|
1034
|
+
min_read_chunk_size,
|
1035
|
+
grpc_core::Clamp(extra_wanted, min_read_chunk_size,
|
1036
|
+
max_read_chunk_size))));
|
880
1037
|
maybe_post_reclaimer(tcp);
|
881
1038
|
}
|
882
1039
|
}
|
@@ -889,7 +1046,7 @@ static void tcp_handle_read(void* arg /* grpc_tcp */, grpc_error_handle error) {
|
|
889
1046
|
}
|
890
1047
|
tcp->read_mu.Lock();
|
891
1048
|
grpc_error_handle tcp_read_error;
|
892
|
-
if (GPR_LIKELY(error
|
1049
|
+
if (GPR_LIKELY(GRPC_ERROR_IS_NONE(error))) {
|
893
1050
|
maybe_make_read_slices(tcp);
|
894
1051
|
if (!tcp_do_read(tcp, &tcp_read_error)) {
|
895
1052
|
/* We've consumed the edge, request a new one */
|
@@ -912,12 +1069,14 @@ static void tcp_handle_read(void* arg /* grpc_tcp */, grpc_error_handle error) {
|
|
912
1069
|
}
|
913
1070
|
|
914
1071
|
static void tcp_read(grpc_endpoint* ep, grpc_slice_buffer* incoming_buffer,
|
915
|
-
grpc_closure* cb, bool urgent, int
|
1072
|
+
grpc_closure* cb, bool urgent, int min_progress_size) {
|
916
1073
|
grpc_tcp* tcp = reinterpret_cast<grpc_tcp*>(ep);
|
917
1074
|
GPR_ASSERT(tcp->read_cb == nullptr);
|
918
1075
|
tcp->read_cb = cb;
|
919
1076
|
tcp->read_mu.Lock();
|
920
1077
|
tcp->incoming_buffer = incoming_buffer;
|
1078
|
+
tcp->min_progress_size =
|
1079
|
+
tcp->frame_size_tuning_enabled ? min_progress_size : 1;
|
921
1080
|
grpc_slice_buffer_reset_and_unref_internal(incoming_buffer);
|
922
1081
|
grpc_slice_buffer_swap(incoming_buffer, &tcp->last_read_buffer);
|
923
1082
|
tcp->read_mu.Unlock();
|
@@ -945,14 +1104,15 @@ static void tcp_read(grpc_endpoint* ep, grpc_slice_buffer* incoming_buffer,
|
|
945
1104
|
|
946
1105
|
/* A wrapper around sendmsg. It sends \a msg over \a fd and returns the number
|
947
1106
|
* of bytes sent. */
|
948
|
-
ssize_t tcp_send(int fd, const struct msghdr* msg, int
|
1107
|
+
ssize_t tcp_send(int fd, const struct msghdr* msg, int* saved_errno,
|
1108
|
+
int additional_flags = 0) {
|
949
1109
|
GPR_TIMER_SCOPE("sendmsg", 1);
|
950
1110
|
ssize_t sent_length;
|
951
1111
|
do {
|
952
1112
|
/* TODO(klempner): Cork if this is a partial write */
|
953
1113
|
GRPC_STATS_INC_SYSCALL_WRITE();
|
954
1114
|
sent_length = sendmsg(fd, msg, SENDMSG_FLAGS | additional_flags);
|
955
|
-
} while (sent_length < 0 && errno == EINTR);
|
1115
|
+
} while (sent_length < 0 && (*saved_errno = errno) == EINTR);
|
956
1116
|
return sent_length;
|
957
1117
|
}
|
958
1118
|
|
@@ -964,7 +1124,7 @@ ssize_t tcp_send(int fd, const struct msghdr* msg, int additional_flags = 0) {
|
|
964
1124
|
*/
|
965
1125
|
static bool tcp_write_with_timestamps(grpc_tcp* tcp, struct msghdr* msg,
|
966
1126
|
size_t sending_length,
|
967
|
-
ssize_t* sent_length,
|
1127
|
+
ssize_t* sent_length, int* saved_errno,
|
968
1128
|
int additional_flags = 0);
|
969
1129
|
|
970
1130
|
/** The callback function to be invoked when we get an error on the socket. */
|
@@ -1008,7 +1168,7 @@ static void ZerocopyDisableAndWaitForRemaining(grpc_tcp* tcp) {
|
|
1008
1168
|
|
1009
1169
|
static bool tcp_write_with_timestamps(grpc_tcp* tcp, struct msghdr* msg,
|
1010
1170
|
size_t sending_length,
|
1011
|
-
ssize_t* sent_length,
|
1171
|
+
ssize_t* sent_length, int* saved_errno,
|
1012
1172
|
int additional_flags) {
|
1013
1173
|
if (!tcp->socket_ts_enabled) {
|
1014
1174
|
uint32_t opt = grpc_core::kTimestampingSocketOptions;
|
@@ -1037,7 +1197,7 @@ static bool tcp_write_with_timestamps(grpc_tcp* tcp, struct msghdr* msg,
|
|
1037
1197
|
msg->msg_controllen = CMSG_SPACE(sizeof(uint32_t));
|
1038
1198
|
|
1039
1199
|
/* If there was an error on sendmsg the logic in tcp_flush will handle it. */
|
1040
|
-
ssize_t length = tcp_send(tcp->fd, msg, additional_flags);
|
1200
|
+
ssize_t length = tcp_send(tcp->fd, msg, saved_errno, additional_flags);
|
1041
1201
|
*sent_length = length;
|
1042
1202
|
/* Only save timestamps if all the bytes were taken by sendmsg. */
|
1043
1203
|
if (sending_length == static_cast<size_t>(length)) {
|
@@ -1072,6 +1232,9 @@ static void process_zerocopy(grpc_tcp* tcp, struct cmsghdr* cmsg) {
|
|
1072
1232
|
GPR_DEBUG_ASSERT(record);
|
1073
1233
|
UnrefMaybePutZerocopySendRecord(tcp, record, seq, "CALLBACK RCVD");
|
1074
1234
|
}
|
1235
|
+
if (tcp->tcp_zerocopy_send_ctx.UpdateZeroCopyOMemStateAfterFree()) {
|
1236
|
+
grpc_fd_set_writable(tcp->em_fd);
|
1237
|
+
}
|
1075
1238
|
}
|
1076
1239
|
|
1077
1240
|
// Whether the cmsg received from error queue is of the IPv4 or IPv6 levels.
|
@@ -1231,7 +1394,7 @@ static void tcp_handle_error(void* arg /* grpc_tcp */,
|
|
1231
1394
|
grpc_error_std_string(error).c_str());
|
1232
1395
|
}
|
1233
1396
|
|
1234
|
-
if (error
|
1397
|
+
if (!GRPC_ERROR_IS_NONE(error) ||
|
1235
1398
|
static_cast<bool>(gpr_atm_acq_load(&tcp->stop_error_notification))) {
|
1236
1399
|
/* We aren't going to register to hear on error anymore, so it is safe to
|
1237
1400
|
* unref. */
|
@@ -1262,6 +1425,7 @@ static void ZerocopyDisableAndWaitForRemaining(grpc_tcp* /*tcp*/) {}
|
|
1262
1425
|
static bool tcp_write_with_timestamps(grpc_tcp* /*tcp*/, struct msghdr* /*msg*/,
|
1263
1426
|
size_t /*sending_length*/,
|
1264
1427
|
ssize_t* /*sent_length*/,
|
1428
|
+
int* /* saved_errno */,
|
1265
1429
|
int /*additional_flags*/) {
|
1266
1430
|
gpr_log(GPR_ERROR, "Write with timestamps not supported for this platform");
|
1267
1431
|
GPR_ASSERT(0);
|
@@ -1342,6 +1506,7 @@ static bool do_tcp_flush_zerocopy(grpc_tcp* tcp, TcpZerocopySendRecord* record,
|
|
1342
1506
|
size_t unwind_slice_idx;
|
1343
1507
|
size_t unwind_byte_idx;
|
1344
1508
|
bool tried_sending_message;
|
1509
|
+
int saved_errno;
|
1345
1510
|
msghdr msg;
|
1346
1511
|
// iov consumes a large space. Keep it as the last item on the stack to
|
1347
1512
|
// improve locality. After all, we expect only the first elements of it being
|
@@ -1360,10 +1525,11 @@ static bool do_tcp_flush_zerocopy(grpc_tcp* tcp, TcpZerocopySendRecord* record,
|
|
1360
1525
|
// Before calling sendmsg (with or without timestamps): we
|
1361
1526
|
// take a single ref on the zerocopy send record.
|
1362
1527
|
tcp->tcp_zerocopy_send_ctx.NoteSend(record);
|
1528
|
+
saved_errno = 0;
|
1363
1529
|
if (tcp->outgoing_buffer_arg != nullptr) {
|
1364
1530
|
if (!tcp->ts_capable ||
|
1365
1531
|
!tcp_write_with_timestamps(tcp, &msg, sending_length, &sent_length,
|
1366
|
-
MSG_ZEROCOPY)) {
|
1532
|
+
&saved_errno, MSG_ZEROCOPY)) {
|
1367
1533
|
/* We could not set socket options to collect Fathom timestamps.
|
1368
1534
|
* Fallback on writing without timestamps. */
|
1369
1535
|
tcp->ts_capable = false;
|
@@ -1377,20 +1543,24 @@ static bool do_tcp_flush_zerocopy(grpc_tcp* tcp, TcpZerocopySendRecord* record,
|
|
1377
1543
|
msg.msg_controllen = 0;
|
1378
1544
|
GRPC_STATS_INC_TCP_WRITE_SIZE(sending_length);
|
1379
1545
|
GRPC_STATS_INC_TCP_WRITE_IOV_SIZE(iov_size);
|
1380
|
-
sent_length = tcp_send(tcp->fd, &msg, MSG_ZEROCOPY);
|
1546
|
+
sent_length = tcp_send(tcp->fd, &msg, &saved_errno, MSG_ZEROCOPY);
|
1547
|
+
}
|
1548
|
+
if (tcp->tcp_zerocopy_send_ctx.UpdateZeroCopyOMemStateAfterSend(
|
1549
|
+
saved_errno == ENOBUFS)) {
|
1550
|
+
grpc_fd_set_writable(tcp->em_fd);
|
1381
1551
|
}
|
1382
1552
|
if (sent_length < 0) {
|
1383
1553
|
// If this particular send failed, drop ref taken earlier in this method.
|
1384
1554
|
tcp->tcp_zerocopy_send_ctx.UndoSend();
|
1385
|
-
if (
|
1555
|
+
if (saved_errno == EAGAIN || saved_errno == ENOBUFS) {
|
1386
1556
|
record->UnwindIfThrottled(unwind_slice_idx, unwind_byte_idx);
|
1387
1557
|
return false;
|
1388
|
-
} else if (
|
1389
|
-
*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);
|
1390
1560
|
tcp_shutdown_buffer_list(tcp);
|
1391
1561
|
return true;
|
1392
1562
|
} else {
|
1393
|
-
*error = tcp_annotate_error(GRPC_OS_ERROR(
|
1563
|
+
*error = tcp_annotate_error(GRPC_OS_ERROR(saved_errno, "sendmsg"), tcp);
|
1394
1564
|
tcp_shutdown_buffer_list(tcp);
|
1395
1565
|
return true;
|
1396
1566
|
}
|
@@ -1434,6 +1604,7 @@ static bool tcp_flush(grpc_tcp* tcp, grpc_error_handle* error) {
|
|
1434
1604
|
size_t trailing;
|
1435
1605
|
size_t unwind_slice_idx;
|
1436
1606
|
size_t unwind_byte_idx;
|
1607
|
+
int saved_errno;
|
1437
1608
|
|
1438
1609
|
// We always start at zero, because we eagerly unref and trim the slice
|
1439
1610
|
// buffer as we write
|
@@ -1465,9 +1636,11 @@ static bool tcp_flush(grpc_tcp* tcp, grpc_error_handle* error) {
|
|
1465
1636
|
msg.msg_iovlen = iov_size;
|
1466
1637
|
msg.msg_flags = 0;
|
1467
1638
|
bool tried_sending_message = false;
|
1639
|
+
saved_errno = 0;
|
1468
1640
|
if (tcp->outgoing_buffer_arg != nullptr) {
|
1469
1641
|
if (!tcp->ts_capable ||
|
1470
|
-
!tcp_write_with_timestamps(tcp, &msg, sending_length, &sent_length
|
1642
|
+
!tcp_write_with_timestamps(tcp, &msg, sending_length, &sent_length,
|
1643
|
+
&saved_errno)) {
|
1471
1644
|
/* We could not set socket options to collect Fathom timestamps.
|
1472
1645
|
* Fallback on writing without timestamps. */
|
1473
1646
|
tcp->ts_capable = false;
|
@@ -1483,11 +1656,11 @@ static bool tcp_flush(grpc_tcp* tcp, grpc_error_handle* error) {
|
|
1483
1656
|
GRPC_STATS_INC_TCP_WRITE_SIZE(sending_length);
|
1484
1657
|
GRPC_STATS_INC_TCP_WRITE_IOV_SIZE(iov_size);
|
1485
1658
|
|
1486
|
-
sent_length = tcp_send(tcp->fd, &msg);
|
1659
|
+
sent_length = tcp_send(tcp->fd, &msg, &saved_errno);
|
1487
1660
|
}
|
1488
1661
|
|
1489
1662
|
if (sent_length < 0) {
|
1490
|
-
if (
|
1663
|
+
if (saved_errno == EAGAIN || saved_errno == ENOBUFS) {
|
1491
1664
|
tcp->outgoing_byte_idx = unwind_byte_idx;
|
1492
1665
|
// unref all and forget about all slices that have been written to this
|
1493
1666
|
// point
|
@@ -1495,13 +1668,13 @@ static bool tcp_flush(grpc_tcp* tcp, grpc_error_handle* error) {
|
|
1495
1668
|
grpc_slice_buffer_remove_first(tcp->outgoing_buffer);
|
1496
1669
|
}
|
1497
1670
|
return false;
|
1498
|
-
} else if (
|
1499
|
-
*error = tcp_annotate_error(GRPC_OS_ERROR(
|
1671
|
+
} else if (saved_errno == EPIPE) {
|
1672
|
+
*error = tcp_annotate_error(GRPC_OS_ERROR(saved_errno, "sendmsg"), tcp);
|
1500
1673
|
grpc_slice_buffer_reset_and_unref_internal(tcp->outgoing_buffer);
|
1501
1674
|
tcp_shutdown_buffer_list(tcp);
|
1502
1675
|
return true;
|
1503
1676
|
} else {
|
1504
|
-
*error = tcp_annotate_error(GRPC_OS_ERROR(
|
1677
|
+
*error = tcp_annotate_error(GRPC_OS_ERROR(saved_errno, "sendmsg"), tcp);
|
1505
1678
|
grpc_slice_buffer_reset_and_unref_internal(tcp->outgoing_buffer);
|
1506
1679
|
tcp_shutdown_buffer_list(tcp);
|
1507
1680
|
return true;
|
@@ -1537,7 +1710,7 @@ static void tcp_handle_write(void* arg /* grpc_tcp */,
|
|
1537
1710
|
grpc_tcp* tcp = static_cast<grpc_tcp*>(arg);
|
1538
1711
|
grpc_closure* cb;
|
1539
1712
|
|
1540
|
-
if (error
|
1713
|
+
if (!GRPC_ERROR_IS_NONE(error)) {
|
1541
1714
|
cb = tcp->write_cb;
|
1542
1715
|
tcp->write_cb = nullptr;
|
1543
1716
|
if (tcp->current_zerocopy_send != nullptr) {
|
@@ -1549,7 +1722,6 @@ static void tcp_handle_write(void* arg /* grpc_tcp */,
|
|
1549
1722
|
TCP_UNREF(tcp, "write");
|
1550
1723
|
return;
|
1551
1724
|
}
|
1552
|
-
|
1553
1725
|
bool flush_result =
|
1554
1726
|
tcp->current_zerocopy_send != nullptr
|
1555
1727
|
? tcp_flush_zerocopy(tcp, tcp->current_zerocopy_send, &error)
|
@@ -1560,7 +1732,7 @@ static void tcp_handle_write(void* arg /* grpc_tcp */,
|
|
1560
1732
|
}
|
1561
1733
|
notify_on_write(tcp);
|
1562
1734
|
// tcp_flush does not populate error if it has returned false.
|
1563
|
-
GPR_DEBUG_ASSERT(error
|
1735
|
+
GPR_DEBUG_ASSERT(GRPC_ERROR_IS_NONE(error));
|
1564
1736
|
} else {
|
1565
1737
|
cb = tcp->write_cb;
|
1566
1738
|
tcp->write_cb = nullptr;
|
@@ -1792,6 +1964,8 @@ grpc_endpoint* grpc_tcp_create(grpc_fd* em_fd,
|
|
1792
1964
|
tcp->socket_ts_enabled = false;
|
1793
1965
|
tcp->ts_capable = true;
|
1794
1966
|
tcp->outgoing_buffer_arg = nullptr;
|
1967
|
+
tcp->frame_size_tuning_enabled = ExperimentalTcpFrameSizeTuningEnabled();
|
1968
|
+
tcp->min_progress_size = 1;
|
1795
1969
|
if (tcp_tx_zerocopy_enabled && !tcp->tcp_zerocopy_send_ctx.memory_limited()) {
|
1796
1970
|
#ifdef GRPC_LINUX_ERRQUEUE
|
1797
1971
|
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
|
|
@@ -253,7 +253,7 @@ static void on_read(void* arg, grpc_error_handle err) {
|
|
253
253
|
|
254
254
|
err = grpc_apply_socket_mutator_in_args(fd, GRPC_FD_SERVER_CONNECTION_USAGE,
|
255
255
|
sp->server->channel_args);
|
256
|
-
if (err
|
256
|
+
if (!GRPC_ERROR_IS_NONE(err)) {
|
257
257
|
goto error;
|
258
258
|
}
|
259
259
|
|
@@ -344,14 +344,14 @@ static grpc_error_handle add_wildcard_addrs_to_server(grpc_tcp_server* s,
|
|
344
344
|
}
|
345
345
|
}
|
346
346
|
if (*out_port > 0) {
|
347
|
-
if (v6_err
|
347
|
+
if (!GRPC_ERROR_IS_NONE(v6_err)) {
|
348
348
|
gpr_log(GPR_INFO,
|
349
349
|
"Failed to add :: listener, "
|
350
350
|
"the environment may not support IPv6: %s",
|
351
351
|
grpc_error_std_string(v6_err).c_str());
|
352
352
|
GRPC_ERROR_UNREF(v6_err);
|
353
353
|
}
|
354
|
-
if (v4_err
|
354
|
+
if (!GRPC_ERROR_IS_NONE(v4_err)) {
|
355
355
|
gpr_log(GPR_INFO,
|
356
356
|
"Failed to add 0.0.0.0 listener, "
|
357
357
|
"the environment may not support IPv4: %s",
|
@@ -362,7 +362,7 @@ static grpc_error_handle add_wildcard_addrs_to_server(grpc_tcp_server* s,
|
|
362
362
|
} else {
|
363
363
|
grpc_error_handle root_err = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
364
364
|
"Failed to add any wildcard listeners");
|
365
|
-
GPR_ASSERT(v6_err
|
365
|
+
GPR_ASSERT(!GRPC_ERROR_IS_NONE(v6_err) && !GRPC_ERROR_IS_NONE(v4_err));
|
366
366
|
root_err = grpc_error_add_child(root_err, v6_err);
|
367
367
|
root_err = grpc_error_add_child(root_err, v4_err);
|
368
368
|
return root_err;
|
@@ -385,10 +385,10 @@ static grpc_error_handle clone_port(grpc_tcp_listener* listener,
|
|
385
385
|
grpc_dualstack_mode dsmode;
|
386
386
|
err = grpc_create_dualstack_socket(&listener->addr, SOCK_STREAM, 0, &dsmode,
|
387
387
|
&fd);
|
388
|
-
if (err
|
388
|
+
if (!GRPC_ERROR_IS_NONE(err)) return err;
|
389
389
|
err = grpc_tcp_server_prepare_socket(listener->server, fd, &listener->addr,
|
390
390
|
true, &port);
|
391
|
-
if (err
|
391
|
+
if (!GRPC_ERROR_IS_NONE(err)) return err;
|
392
392
|
listener->server->nports++;
|
393
393
|
addr_str = grpc_sockaddr_to_string(&listener->addr, true);
|
394
394
|
if (!addr_str.ok()) {
|
@@ -90,7 +90,7 @@ static grpc_error_handle add_socket_to_server(grpc_tcp_server* s, int fd,
|
|
90
90
|
|
91
91
|
grpc_error_handle err =
|
92
92
|
grpc_tcp_server_prepare_socket(s, fd, addr, s->so_reuseport, &port);
|
93
|
-
if (err
|
93
|
+
if (!GRPC_ERROR_IS_NONE(err)) return err;
|
94
94
|
GPR_ASSERT(port > 0);
|
95
95
|
absl::StatusOr<std::string> addr_str = grpc_sockaddr_to_string(addr, true);
|
96
96
|
if (!addr_str.ok()) {
|
@@ -137,7 +137,7 @@ grpc_error_handle grpc_tcp_server_add_addr(grpc_tcp_server* s,
|
|
137
137
|
int fd;
|
138
138
|
grpc_error_handle err =
|
139
139
|
grpc_create_dualstack_socket(addr, SOCK_STREAM, 0, dsmode, &fd);
|
140
|
-
if (err
|
140
|
+
if (!GRPC_ERROR_IS_NONE(err)) {
|
141
141
|
return err;
|
142
142
|
}
|
143
143
|
if (*dsmode == GRPC_DSMODE_IPV4 &&
|
@@ -158,36 +158,36 @@ grpc_error_handle grpc_tcp_server_prepare_socket(
|
|
158
158
|
|
159
159
|
if (so_reuseport && !grpc_is_unix_socket(addr)) {
|
160
160
|
err = grpc_set_socket_reuse_port(fd, 1);
|
161
|
-
if (err
|
161
|
+
if (!GRPC_ERROR_IS_NONE(err)) goto error;
|
162
162
|
}
|
163
163
|
|
164
164
|
#ifdef GRPC_LINUX_ERRQUEUE
|
165
165
|
err = grpc_set_socket_zerocopy(fd);
|
166
|
-
if (err
|
166
|
+
if (!GRPC_ERROR_IS_NONE(err)) {
|
167
167
|
/* it's not fatal, so just log it. */
|
168
168
|
gpr_log(GPR_DEBUG, "Node does not support SO_ZEROCOPY, continuing.");
|
169
169
|
GRPC_ERROR_UNREF(err);
|
170
170
|
}
|
171
171
|
#endif
|
172
172
|
err = grpc_set_socket_nonblocking(fd, 1);
|
173
|
-
if (err
|
173
|
+
if (!GRPC_ERROR_IS_NONE(err)) goto error;
|
174
174
|
err = grpc_set_socket_cloexec(fd, 1);
|
175
|
-
if (err
|
175
|
+
if (!GRPC_ERROR_IS_NONE(err)) goto error;
|
176
176
|
if (!grpc_is_unix_socket(addr)) {
|
177
177
|
err = grpc_set_socket_low_latency(fd, 1);
|
178
|
-
if (err
|
178
|
+
if (!GRPC_ERROR_IS_NONE(err)) goto error;
|
179
179
|
err = grpc_set_socket_reuse_addr(fd, 1);
|
180
|
-
if (err
|
180
|
+
if (!GRPC_ERROR_IS_NONE(err)) goto error;
|
181
181
|
err = grpc_set_socket_tcp_user_timeout(fd, s->channel_args,
|
182
182
|
false /* is_client */);
|
183
|
-
if (err
|
183
|
+
if (!GRPC_ERROR_IS_NONE(err)) goto error;
|
184
184
|
}
|
185
185
|
err = grpc_set_socket_no_sigpipe_if_possible(fd);
|
186
|
-
if (err
|
186
|
+
if (!GRPC_ERROR_IS_NONE(err)) goto error;
|
187
187
|
|
188
188
|
err = grpc_apply_socket_mutator_in_args(fd, GRPC_FD_SERVER_LISTENER_USAGE,
|
189
189
|
s->channel_args);
|
190
|
-
if (err
|
190
|
+
if (!GRPC_ERROR_IS_NONE(err)) goto error;
|
191
191
|
|
192
192
|
if (bind(fd, reinterpret_cast<grpc_sockaddr*>(const_cast<char*>(addr->addr)),
|
193
193
|
addr->len) < 0) {
|
@@ -212,7 +212,7 @@ grpc_error_handle grpc_tcp_server_prepare_socket(
|
|
212
212
|
return GRPC_ERROR_NONE;
|
213
213
|
|
214
214
|
error:
|
215
|
-
GPR_ASSERT(err
|
215
|
+
GPR_ASSERT(!GRPC_ERROR_IS_NONE(err));
|
216
216
|
if (fd >= 0) {
|
217
217
|
close(fd);
|
218
218
|
}
|
@@ -65,7 +65,7 @@ static grpc_error_handle get_unused_port(int* port) {
|
|
65
65
|
int fd;
|
66
66
|
grpc_error_handle err =
|
67
67
|
grpc_create_dualstack_socket(&wild, SOCK_STREAM, 0, &dsmode, &fd);
|
68
|
-
if (err
|
68
|
+
if (!GRPC_ERROR_IS_NONE(err)) {
|
69
69
|
return err;
|
70
70
|
}
|
71
71
|
if (dsmode == GRPC_DSMODE_IPV4) {
|
@@ -164,7 +164,7 @@ grpc_error_handle grpc_tcp_server_add_all_local_addrs(grpc_tcp_server* s,
|
|
164
164
|
}
|
165
165
|
}
|
166
166
|
freeifaddrs(ifa);
|
167
|
-
if (err
|
167
|
+
if (!GRPC_ERROR_IS_NONE(err)) {
|
168
168
|
return err;
|
169
169
|
} else if (sp == nullptr) {
|
170
170
|
return GRPC_ERROR_CREATE_FROM_STATIC_STRING("No local addresses");
|