grpc 1.48.0 → 1.50.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +114 -150
- data/include/grpc/event_engine/endpoint_config.h +11 -5
- data/include/grpc/event_engine/event_engine.h +20 -17
- data/include/grpc/impl/codegen/atm_gcc_atomic.h +19 -28
- data/include/grpc/impl/codegen/atm_gcc_sync.h +0 -2
- data/include/grpc/impl/codegen/atm_windows.h +0 -2
- data/include/grpc/impl/codegen/grpc_types.h +9 -8
- data/include/grpc/impl/codegen/port_platform.h +0 -8
- data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +6 -6
- data/src/core/ext/filters/channel_idle/channel_idle_filter.h +2 -2
- data/src/core/ext/filters/client_channel/backup_poller.cc +4 -6
- data/src/core/ext/filters/client_channel/client_channel.cc +154 -218
- data/src/core/ext/filters/client_channel/client_channel.h +16 -9
- 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 +0 -16
- data/src/core/ext/filters/client_channel/config_selector.h +12 -4
- data/src/core/ext/filters/client_channel/connector.h +4 -5
- data/src/core/ext/filters/client_channel/http_proxy.cc +55 -74
- data/src/core/ext/filters/client_channel/http_proxy.h +15 -11
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +20 -16
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +11 -10
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +0 -2
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +181 -194
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +12 -3
- 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 +20 -11
- 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 +250 -146
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +41 -1
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +35 -32
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +195 -299
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +237 -250
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +12 -7
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +431 -498
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +31 -30
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +27 -27
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +108 -124
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +68 -76
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +131 -227
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +126 -121
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +325 -304
- data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +4 -8
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +431 -145
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +172 -101
- 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 +18 -16
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +7 -17
- 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 +51 -32
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +87 -41
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +16 -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 +167 -168
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +40 -32
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +7 -10
- data/src/core/ext/filters/client_channel/retry_filter.cc +25 -36
- 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 +6 -7
- data/src/core/ext/filters/client_channel/subchannel.cc +86 -121
- data/src/core/ext/filters/client_channel/subchannel.h +20 -11
- 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 +4 -6
- data/src/core/ext/filters/deadline/deadline_filter.cc +6 -6
- data/src/core/ext/filters/deadline/deadline_filter.h +2 -3
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +24 -19
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +9 -1
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +17 -12
- data/src/core/ext/filters/fault_injection/service_config_parser.h +4 -5
- data/src/core/ext/filters/http/client/http_client_filter.cc +3 -5
- data/src/core/ext/filters/http/client/http_client_filter.h +1 -1
- data/src/core/ext/filters/http/client_authority_filter.cc +1 -2
- data/src/core/ext/filters/http/client_authority_filter.h +1 -1
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +2 -4
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +0 -2
- data/src/core/ext/filters/http/server/http_server_filter.cc +3 -5
- data/src/core/ext/filters/http/server/http_server_filter.h +1 -1
- data/src/core/ext/filters/message_size/message_size_filter.cc +13 -7
- data/src/core/ext/filters/message_size/message_size_filter.h +3 -6
- data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +16 -12
- data/src/core/ext/filters/rbac/rbac_service_config_parser.h +4 -6
- data/src/core/ext/filters/server_config_selector/server_config_selector.h +5 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +3 -5
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +40 -63
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +86 -107
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +4 -6
- data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +155 -295
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +3 -2
- data/src/core/ext/transport/chttp2/transport/decode_huff.cc +287 -0
- data/src/core/ext/transport/chttp2/transport/decode_huff.h +1018 -0
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +139 -42
- data/src/core/ext/transport/chttp2/transport/flow_control.h +12 -6
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +1 -2
- data/src/core/ext/transport/chttp2/transport/hpack_constants.h +7 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +27 -28
- 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 +30 -38
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +1 -10
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +11 -6
- data/src/core/ext/transport/chttp2/transport/internal.h +4 -1
- data/src/core/ext/transport/chttp2/transport/parsing.cc +44 -0
- data/src/core/ext/transport/chttp2/transport/writing.cc +3 -14
- data/src/core/ext/transport/inproc/inproc_transport.cc +41 -77
- 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.h +6 -2
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.h +6 -2
- 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_store.cc +63 -3
- data/src/core/ext/xds/certificate_provider_store.h +9 -1
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +5 -5
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +1 -1
- data/src/core/ext/xds/upb_utils.h +0 -21
- data/src/core/ext/xds/xds_api.cc +73 -102
- data/src/core/ext/xds/xds_api.h +26 -28
- data/src/core/ext/xds/xds_bootstrap.cc +5 -550
- data/src/core/ext/xds/xds_bootstrap.h +39 -91
- data/src/core/ext/xds/xds_bootstrap_grpc.cc +370 -0
- data/src/core/ext/xds/xds_bootstrap_grpc.h +169 -0
- data/src/core/ext/xds/xds_certificate_provider.h +9 -0
- data/src/core/ext/xds/xds_channel_stack_modifier.cc +6 -4
- data/src/core/ext/xds/xds_channel_stack_modifier.h +8 -0
- data/src/core/ext/xds/xds_client.cc +732 -1317
- data/src/core/ext/xds/xds_client.h +33 -59
- data/src/core/ext/xds/xds_client_grpc.cc +229 -0
- data/src/core/ext/xds/xds_client_grpc.h +79 -0
- data/src/core/ext/xds/xds_client_stats.cc +4 -4
- data/src/core/ext/xds/xds_cluster.cc +162 -165
- data/src/core/ext/xds/xds_cluster.h +8 -7
- data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +12 -14
- data/src/core/ext/xds/xds_cluster_specifier_plugin.h +1 -0
- data/src/core/ext/xds/xds_common_types.cc +140 -108
- data/src/core/ext/xds/xds_common_types.h +6 -7
- data/src/core/ext/xds/xds_endpoint.cc +87 -85
- data/src/core/ext/xds/xds_endpoint.h +4 -5
- data/src/core/ext/xds/xds_http_fault_filter.cc +4 -11
- data/src/core/ext/xds/xds_http_fault_filter.h +3 -3
- data/src/core/ext/xds/xds_http_filters.h +3 -3
- data/src/core/ext/xds/xds_http_rbac_filter.cc +39 -58
- data/src/core/ext/xds/xds_http_rbac_filter.h +3 -3
- data/src/core/ext/xds/xds_lb_policy_registry.cc +21 -22
- data/src/core/ext/xds/xds_lb_policy_registry.h +4 -4
- data/src/core/ext/xds/xds_listener.cc +348 -313
- data/src/core/ext/xds/xds_listener.h +4 -5
- data/src/core/ext/xds/xds_resource_type.h +23 -9
- data/src/core/ext/xds/xds_route_config.cc +193 -191
- data/src/core/ext/xds/xds_route_config.h +31 -17
- data/src/core/ext/xds/xds_routing.cc +3 -6
- data/src/core/ext/xds/xds_routing.h +7 -9
- data/src/core/ext/xds/xds_server_config_fetcher.cc +81 -84
- data/src/core/ext/xds/xds_transport.h +86 -0
- data/src/core/ext/xds/xds_transport_grpc.cc +357 -0
- data/src/core/ext/xds/xds_transport_grpc.h +135 -0
- data/src/core/lib/address_utils/parse_address.cc +19 -17
- data/src/core/lib/address_utils/parse_address.h +8 -5
- data/src/core/lib/avl/avl.h +47 -25
- data/src/core/lib/backoff/backoff.cc +2 -4
- data/src/core/lib/channel/call_finalization.h +1 -3
- data/src/core/lib/channel/call_tracer.h +1 -1
- data/src/core/lib/channel/channel_args.cc +88 -19
- data/src/core/lib/channel/channel_args.h +218 -67
- data/src/core/lib/channel/channel_stack.cc +0 -1
- data/src/core/lib/channel/channel_stack_builder.cc +3 -3
- data/src/core/lib/channel/channel_stack_builder.h +2 -2
- data/src/core/lib/channel/channel_stack_builder_impl.cc +2 -4
- data/src/core/lib/channel/channel_trace.cc +3 -4
- data/src/core/lib/channel/channelz.cc +27 -37
- data/src/core/lib/channel/channelz.h +9 -0
- data/src/core/lib/channel/promise_based_filter.cc +18 -19
- data/src/core/lib/channel/promise_based_filter.h +0 -1
- data/src/core/lib/channel/status_util.cc +27 -0
- data/src/core/lib/channel/status_util.h +10 -0
- data/src/core/lib/config/core_configuration.cc +5 -1
- data/src/core/lib/config/core_configuration.h +81 -35
- data/src/core/lib/debug/stats.cc +39 -46
- data/src/core/lib/debug/stats.h +11 -13
- data/src/core/lib/debug/stats_data.cc +118 -614
- data/src/core/lib/debug/stats_data.h +67 -465
- data/src/core/lib/debug/trace.cc +0 -2
- data/src/core/lib/event_engine/channel_args_endpoint_config.cc +12 -20
- data/src/core/lib/event_engine/channel_args_endpoint_config.h +13 -7
- data/src/core/lib/event_engine/{event_engine.cc → default_event_engine.cc} +9 -5
- data/src/core/lib/event_engine/{event_engine_factory.h → default_event_engine.h} +4 -8
- 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 +101 -0
- data/src/core/lib/event_engine/forkable.h +61 -0
- data/src/core/lib/event_engine/poller.h +56 -0
- data/src/core/lib/event_engine/{iomgr_engine/iomgr_engine.cc → posix_engine/posix_engine.cc} +30 -47
- data/src/core/lib/event_engine/{iomgr_engine/iomgr_engine.h → posix_engine/posix_engine.h} +27 -28
- data/src/core/lib/event_engine/{iomgr_engine → posix_engine}/timer.cc +4 -5
- data/src/core/lib/event_engine/{iomgr_engine → posix_engine}/timer.h +8 -8
- data/src/core/lib/event_engine/{iomgr_engine → posix_engine}/timer_heap.cc +4 -4
- data/src/core/lib/event_engine/{iomgr_engine → posix_engine}/timer_heap.h +5 -5
- data/src/core/lib/event_engine/{iomgr_engine → posix_engine}/timer_manager.cc +87 -30
- data/src/core/lib/event_engine/{iomgr_engine → posix_engine}/timer_manager.h +40 -9
- data/src/core/lib/event_engine/socket_notifier.h +55 -0
- data/src/core/lib/event_engine/thread_pool.cc +195 -0
- data/src/core/lib/event_engine/thread_pool.h +114 -0
- data/src/core/lib/event_engine/time_util.cc +30 -0
- data/src/core/lib/event_engine/time_util.h +32 -0
- data/src/core/lib/event_engine/utils.cc +44 -0
- data/src/core/lib/event_engine/utils.h +36 -0
- data/src/core/lib/event_engine/windows/iocp.cc +155 -0
- data/src/core/lib/event_engine/windows/iocp.h +69 -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/experiments/config.cc +146 -0
- data/src/core/lib/experiments/config.h +43 -0
- data/src/core/lib/experiments/experiments.cc +75 -0
- data/src/core/lib/experiments/experiments.h +56 -0
- data/src/core/lib/gpr/alloc.cc +1 -9
- data/src/core/lib/gpr/log_windows.cc +0 -1
- data/src/core/lib/gpr/string_util_windows.cc +3 -30
- data/src/core/lib/gpr/sync_abseil.cc +0 -14
- data/src/core/lib/gpr/sync_posix.cc +0 -14
- data/src/core/lib/gpr/time.cc +11 -9
- data/src/core/lib/gpr/time_posix.cc +0 -6
- data/src/core/lib/gpr/time_precise.h +1 -1
- data/src/core/lib/gpr/tmpfile_windows.cc +5 -7
- data/src/core/lib/gpr/useful.h +40 -0
- data/src/core/lib/gprpp/bitset.h +3 -13
- data/src/core/lib/gprpp/debug_location.h +39 -7
- data/src/core/lib/{gpr → gprpp}/env.h +25 -12
- data/src/core/lib/{gpr → gprpp}/env_linux.cc +20 -15
- data/src/core/lib/{gpr → gprpp}/env_posix.cc +11 -10
- data/src/core/lib/gprpp/env_windows.cc +56 -0
- data/src/core/lib/gprpp/fork.cc +14 -22
- data/src/core/lib/gprpp/fork.h +0 -8
- data/src/core/lib/gprpp/global_config_env.cc +7 -6
- data/src/core/lib/gprpp/manual_constructor.h +0 -1
- data/src/core/lib/gprpp/no_destruct.h +94 -0
- data/src/core/lib/gprpp/notification.h +67 -0
- data/src/core/lib/gprpp/packed_table.h +40 -0
- data/src/core/lib/gprpp/ref_counted_ptr.h +20 -34
- data/src/core/lib/gprpp/sorted_pack.h +98 -0
- data/src/core/lib/gprpp/status_helper.cc +1 -0
- data/src/core/lib/gprpp/status_helper.h +6 -0
- data/src/core/lib/gprpp/table.h +9 -2
- data/src/core/lib/gprpp/tchar.cc +49 -0
- data/src/core/lib/gprpp/tchar.h +33 -0
- data/src/core/lib/gprpp/time.cc +21 -0
- data/src/core/lib/gprpp/time.h +55 -0
- data/src/core/lib/{event_engine/iomgr_engine → gprpp}/time_averaged_stats.cc +3 -5
- data/src/core/lib/{event_engine/iomgr_engine → gprpp}/time_averaged_stats.h +5 -7
- data/src/core/lib/gprpp/validation_errors.cc +61 -0
- data/src/core/lib/gprpp/validation_errors.h +110 -0
- data/src/core/lib/{iomgr → gprpp}/work_serializer.cc +34 -18
- data/src/core/lib/{iomgr → gprpp}/work_serializer.h +21 -27
- data/src/core/{ext/filters/client_channel → lib/handshaker}/proxy_mapper.h +16 -17
- data/src/core/lib/handshaker/proxy_mapper_registry.cc +71 -0
- data/src/core/lib/handshaker/proxy_mapper_registry.h +75 -0
- data/src/core/lib/http/httpcli.cc +12 -24
- data/src/core/lib/http/httpcli_security_connector.cc +11 -11
- data/src/core/lib/iomgr/call_combiner.cc +0 -34
- data/src/core/lib/iomgr/closure.h +0 -10
- data/src/core/lib/iomgr/combiner.cc +0 -20
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +14 -9
- data/src/core/lib/iomgr/endpoint_pair_windows.cc +2 -2
- data/src/core/lib/iomgr/error.cc +0 -773
- data/src/core/lib/iomgr/error.h +0 -145
- data/src/core/lib/iomgr/error_cfstream.cc +0 -5
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +1 -38
- data/src/core/lib/iomgr/ev_poll_posix.cc +19 -26
- data/src/core/lib/iomgr/exec_ctx.cc +0 -22
- data/src/core/lib/iomgr/exec_ctx.h +7 -31
- data/src/core/lib/iomgr/executor.cc +0 -10
- data/src/core/lib/iomgr/executor.h +0 -3
- data/src/core/lib/iomgr/iocp_windows.cc +1 -2
- data/src/core/lib/iomgr/iomgr.cc +6 -8
- data/src/core/lib/iomgr/iomgr_fwd.h +1 -0
- data/src/core/lib/iomgr/lockfree_event.cc +0 -17
- data/src/core/lib/iomgr/pollset.h +1 -1
- data/src/core/lib/iomgr/pollset_set.h +0 -1
- data/src/core/lib/iomgr/port.h +3 -0
- data/src/core/lib/iomgr/resolve_address.h +30 -6
- data/src/core/lib/iomgr/resolve_address_impl.h +1 -0
- data/src/core/lib/iomgr/resolve_address_posix.cc +43 -8
- data/src/core/lib/iomgr/resolve_address_posix.h +19 -5
- data/src/core/lib/iomgr/resolve_address_windows.cc +45 -10
- data/src/core/lib/iomgr/resolve_address_windows.h +19 -5
- data/src/core/lib/iomgr/sockaddr_utils_posix.cc +2 -1
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +12 -34
- data/src/core/lib/iomgr/socket_utils_posix.cc +83 -1
- data/src/core/lib/iomgr/socket_utils_posix.h +98 -6
- data/src/core/lib/iomgr/socket_windows.h +0 -2
- data/src/core/lib/iomgr/tcp_client.cc +6 -7
- data/src/core/lib/iomgr/tcp_client.h +11 -11
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +6 -6
- data/src/core/lib/iomgr/tcp_client_posix.cc +33 -29
- data/src/core/lib/iomgr/tcp_client_posix.h +12 -9
- data/src/core/lib/iomgr/tcp_client_windows.cc +6 -6
- data/src/core/lib/iomgr/tcp_posix.cc +249 -120
- data/src/core/lib/iomgr/tcp_posix.h +3 -1
- data/src/core/lib/iomgr/tcp_server.cc +5 -4
- data/src/core/lib/iomgr/tcp_server.h +9 -6
- data/src/core/lib/iomgr/tcp_server_posix.cc +17 -28
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +2 -2
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +3 -3
- data/src/core/lib/iomgr/tcp_server_windows.cc +6 -7
- data/src/core/lib/iomgr/tcp_windows.cc +0 -1
- data/src/core/lib/iomgr/tcp_windows.h +0 -1
- data/src/core/lib/iomgr/timer_generic.cc +10 -12
- data/src/core/lib/iomgr/timer_manager.cc +1 -2
- data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +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 +202 -0
- data/src/core/lib/json/json_object_loader.h +598 -0
- data/src/core/lib/json/json_reader.cc +86 -62
- data/src/core/lib/json/json_util.cc +9 -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 +20 -29
- data/src/core/lib/load_balancing/lb_policy_factory.h +49 -0
- data/src/core/lib/load_balancing/lb_policy_registry.cc +141 -0
- data/src/core/lib/load_balancing/lb_policy_registry.h +82 -0
- data/src/core/{ext/filters/client_channel → lib/load_balancing}/subchannel_interface.h +6 -6
- data/src/core/lib/promise/activity.h +57 -10
- data/src/core/lib/promise/arena_promise.h +84 -81
- data/src/core/lib/promise/context.h +1 -2
- 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/map.h +0 -1
- data/src/core/lib/promise/seq.h +25 -4
- data/src/core/lib/promise/sleep.cc +50 -42
- data/src/core/lib/promise/sleep.h +32 -23
- data/src/core/lib/promise/try_seq.h +26 -6
- data/src/core/lib/resolver/resolver.cc +0 -47
- data/src/core/lib/resolver/resolver.h +15 -15
- data/src/core/lib/resolver/resolver_factory.h +2 -3
- data/src/core/lib/resolver/resolver_registry.cc +1 -1
- data/src/core/lib/resolver/resolver_registry.h +2 -3
- data/src/core/lib/resolver/server_address.cc +11 -15
- data/src/core/lib/resolver/server_address.h +4 -8
- data/src/core/lib/resource_quota/api.cc +10 -1
- data/src/core/lib/resource_quota/api.h +6 -0
- data/src/core/lib/resource_quota/arena.cc +19 -1
- data/src/core/lib/resource_quota/arena.h +24 -2
- data/src/core/lib/resource_quota/memory_quota.cc +143 -19
- data/src/core/lib/resource_quota/memory_quota.h +85 -17
- data/src/core/lib/resource_quota/periodic_update.cc +78 -0
- data/src/core/lib/resource_quota/periodic_update.h +71 -0
- data/src/core/lib/security/authorization/evaluate_args.cc +10 -7
- data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +1 -2
- data/src/core/lib/security/authorization/grpc_server_authz_filter.h +1 -1
- data/src/core/lib/security/authorization/matchers.cc +13 -10
- data/src/core/lib/security/authorization/rbac_policy.cc +0 -1
- data/src/core/{ext/xds → lib/security/certificate_provider}/certificate_provider_factory.h +3 -3
- data/src/core/lib/security/certificate_provider/certificate_provider_registry.cc +60 -0
- data/src/core/lib/security/certificate_provider/certificate_provider_registry.h +70 -0
- data/src/core/lib/security/credentials/alts/alts_credentials.cc +2 -3
- data/src/core/lib/security/credentials/alts/alts_credentials.h +3 -4
- data/src/core/lib/security/credentials/channel_creds_registry_init.cc +1 -0
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +3 -7
- data/src/core/lib/security/credentials/composite/composite_credentials.h +2 -4
- data/src/core/lib/security/credentials/credentials.h +16 -12
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +33 -27
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +34 -24
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +5 -6
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +4 -6
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +3 -12
- data/src/core/lib/security/credentials/fake/fake_credentials.h +0 -4
- data/src/core/lib/security/credentials/google_default/credentials_generic.cc +5 -8
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +35 -32
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +1 -3
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +0 -1
- data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +3 -3
- data/src/core/lib/security/credentials/insecure/insecure_credentials.h +3 -4
- data/src/core/lib/security/credentials/jwt/json_token.cc +12 -3
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +4 -8
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +14 -15
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +1 -1
- data/src/core/lib/security/credentials/local/local_credentials.cc +3 -4
- data/src/core/lib/security/credentials/local/local_credentials.h +3 -4
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +18 -20
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +0 -1
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +13 -21
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +3 -4
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +4 -3
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +10 -2
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +13 -25
- data/src/core/lib/security/credentials/tls/tls_credentials.h +3 -4
- data/src/core/lib/security/credentials/tls/tls_utils.cc +3 -1
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +13 -30
- data/src/core/lib/security/credentials/xds/xds_credentials.h +3 -3
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +10 -18
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +26 -38
- data/src/core/lib/security/security_connector/fake/fake_security_connector.h +2 -2
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +5 -5
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +6 -5
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +13 -11
- data/src/core/lib/security/security_connector/local/local_security_connector.h +2 -2
- data/src/core/lib/security/security_connector/security_connector.h +5 -3
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +5 -4
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +5 -5
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +5 -5
- data/src/core/lib/security/transport/auth_filters.h +1 -1
- data/src/core/lib/security/transport/client_auth_filter.cc +15 -5
- data/src/core/lib/security/transport/secure_endpoint.cc +0 -4
- data/src/core/lib/security/transport/security_handshaker.cc +32 -44
- data/src/core/lib/security/transport/security_handshaker.h +2 -1
- data/src/core/lib/service_config/service_config.h +11 -0
- data/src/core/lib/service_config/service_config_impl.cc +98 -97
- data/src/core/lib/service_config/service_config_impl.h +11 -13
- data/src/core/lib/service_config/service_config_parser.cc +26 -27
- 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/surface/call.cc +9 -13
- data/src/core/lib/surface/channel.cc +9 -8
- data/src/core/lib/surface/channel.h +1 -1
- data/src/core/lib/surface/completion_queue.cc +16 -30
- data/src/core/lib/surface/completion_queue.h +1 -4
- data/src/core/lib/surface/completion_queue_factory.cc +5 -0
- data/src/core/lib/surface/init.cc +17 -16
- data/src/core/lib/surface/init_internally.cc +24 -0
- data/src/core/lib/surface/init_internally.h +28 -0
- data/src/core/lib/surface/lame_client.cc +2 -3
- data/src/core/lib/surface/lame_client.h +1 -1
- data/src/core/lib/surface/server.cc +8 -19
- data/src/core/lib/surface/server.h +11 -13
- data/src/core/lib/surface/validate_metadata.cc +4 -14
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/bdp_estimator.cc +1 -3
- 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 +0 -36
- data/src/core/lib/transport/handshaker.cc +7 -9
- 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 +16 -16
- data/src/core/lib/transport/metadata_batch.cc +7 -3
- data/src/core/lib/transport/metadata_batch.h +61 -14
- data/src/core/lib/transport/parsed_metadata.h +4 -3
- data/src/core/lib/transport/status_conversion.cc +1 -3
- data/src/core/lib/transport/tcp_connect_handshaker.cc +20 -22
- data/src/core/lib/transport/transport.h +0 -8
- data/src/core/lib/transport/transport_impl.h +0 -1
- data/src/core/plugin_registry/grpc_plugin_registry.cc +23 -46
- data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +13 -25
- 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 +14 -7
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +1 -1
- data/src/core/tsi/fake_transport_security.cc +53 -30
- 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 +47 -23
- data/src/core/tsi/transport_security.cc +18 -6
- data/src/core/tsi/transport_security.h +2 -1
- data/src/core/tsi/transport_security_interface.h +17 -5
- data/src/ruby/ext/grpc/extconf.rb +2 -0
- data/src/ruby/ext/grpc/rb_loader.c +6 -2
- 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/channel_spec.rb +5 -0
- data/src/ruby/spec/generic/server_interceptors_spec.rb +1 -1
- data/src/ruby/spec/user_agent_spec.rb +1 -1
- data/third_party/abseil-cpp/absl/functional/any_invocable.h +313 -0
- data/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +857 -0
- 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 +117 -51
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +0 -50
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +0 -190
- data/src/core/ext/filters/client_channel/lb_policy_registry.h +0 -70
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +0 -90
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.h +0 -55
- data/src/core/ext/xds/certificate_provider_registry.cc +0 -103
- data/src/core/ext/xds/certificate_provider_registry.h +0 -59
- data/src/core/lib/event_engine/iomgr_engine/thread_pool.cc +0 -123
- data/src/core/lib/event_engine/iomgr_engine/thread_pool.h +0 -70
- data/src/core/lib/event_engine/promise.h +0 -69
- data/src/core/lib/gpr/env_windows.cc +0 -74
- data/src/core/lib/gpr/string_windows.h +0 -32
- 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/iomgr/time_averaged_stats.h +0 -72
- data/src/core/lib/profiling/basic_timers.cc +0 -295
- data/src/core/lib/profiling/stap_timers.cc +0 -50
- data/src/core/lib/profiling/timers.h +0 -94
- data/src/core/lib/promise/detail/switch.h +0 -1455
@@ -24,13 +24,13 @@
|
|
24
24
|
|
25
25
|
#ifdef GRPC_WINSOCK_SOCKET
|
26
26
|
|
27
|
+
#include <grpc/event_engine/endpoint_config.h>
|
27
28
|
#include <grpc/slice_buffer.h>
|
28
29
|
#include <grpc/support/alloc.h>
|
29
30
|
#include <grpc/support/log.h>
|
30
31
|
#include <grpc/support/log_windows.h>
|
31
32
|
|
32
33
|
#include "src/core/lib/address_utils/sockaddr_utils.h"
|
33
|
-
#include "src/core/lib/channel/channel_args.h"
|
34
34
|
#include "src/core/lib/iomgr/iocp_windows.h"
|
35
35
|
#include "src/core/lib/iomgr/sockaddr.h"
|
36
36
|
#include "src/core/lib/iomgr/sockaddr_windows.h"
|
@@ -38,8 +38,11 @@
|
|
38
38
|
#include "src/core/lib/iomgr/tcp_client.h"
|
39
39
|
#include "src/core/lib/iomgr/tcp_windows.h"
|
40
40
|
#include "src/core/lib/iomgr/timer.h"
|
41
|
+
#include "src/core/lib/resource_quota/api.h"
|
41
42
|
#include "src/core/lib/slice/slice_internal.h"
|
42
43
|
|
44
|
+
using ::grpc_event_engine::experimental::EndpointConfig;
|
45
|
+
|
43
46
|
struct async_connect {
|
44
47
|
grpc_closure* on_done;
|
45
48
|
gpr_mu mu;
|
@@ -50,7 +53,6 @@ struct async_connect {
|
|
50
53
|
int refs;
|
51
54
|
grpc_closure on_connect;
|
52
55
|
grpc_endpoint** endpoint;
|
53
|
-
grpc_channel_args* channel_args;
|
54
56
|
};
|
55
57
|
|
56
58
|
static void async_connect_unlock_and_cleanup(async_connect* ac,
|
@@ -58,7 +60,6 @@ static void async_connect_unlock_and_cleanup(async_connect* ac,
|
|
58
60
|
int done = (--ac->refs == 0);
|
59
61
|
gpr_mu_unlock(&ac->mu);
|
60
62
|
if (done) {
|
61
|
-
grpc_channel_args_destroy(ac->channel_args);
|
62
63
|
gpr_mu_destroy(&ac->mu);
|
63
64
|
delete ac;
|
64
65
|
}
|
@@ -105,7 +106,7 @@ static void on_connect(void* acp, grpc_error_handle error) {
|
|
105
106
|
error = GRPC_WSA_ERROR(WSAGetLastError(), "ConnectEx");
|
106
107
|
closesocket(socket->socket);
|
107
108
|
} else {
|
108
|
-
*ep = grpc_tcp_create(socket, ac->
|
109
|
+
*ep = grpc_tcp_create(socket, ac->addr_name);
|
109
110
|
socket = nullptr;
|
110
111
|
}
|
111
112
|
} else {
|
@@ -123,7 +124,7 @@ static void on_connect(void* acp, grpc_error_handle error) {
|
|
123
124
|
notification request for the connection, and one timeout alert. */
|
124
125
|
static int64_t tcp_connect(grpc_closure* on_done, grpc_endpoint** endpoint,
|
125
126
|
grpc_pollset_set* interested_parties,
|
126
|
-
const
|
127
|
+
const EndpointConfig& config,
|
127
128
|
const grpc_resolved_address* addr,
|
128
129
|
grpc_core::Timestamp deadline) {
|
129
130
|
SOCKET sock = INVALID_SOCKET;
|
@@ -208,7 +209,6 @@ static int64_t tcp_connect(grpc_closure* on_done, grpc_endpoint** endpoint,
|
|
208
209
|
ac->refs = 2;
|
209
210
|
ac->addr_name = addr_uri.value();
|
210
211
|
ac->endpoint = endpoint;
|
211
|
-
ac->channel_args = grpc_channel_args_copy(channel_args);
|
212
212
|
GRPC_CLOSURE_INIT(&ac->on_connect, on_connect, ac, grpc_schedule_on_exec_ctx);
|
213
213
|
|
214
214
|
GRPC_CLOSURE_INIT(&ac->on_alarm, on_alarm, ac, grpc_schedule_on_exec_ctx);
|
@@ -20,6 +20,7 @@
|
|
20
20
|
|
21
21
|
#include <grpc/impl/codegen/grpc_types.h>
|
22
22
|
|
23
|
+
#include "src/core/lib/gprpp/global_config_generic.h"
|
23
24
|
#include "src/core/lib/iomgr/port.h"
|
24
25
|
|
25
26
|
#ifdef GRPC_POSIX_SOCKET_TCP
|
@@ -47,9 +48,9 @@
|
|
47
48
|
#include <grpc/support/time.h>
|
48
49
|
|
49
50
|
#include "src/core/lib/address_utils/sockaddr_utils.h"
|
50
|
-
#include "src/core/lib/channel/channel_args.h"
|
51
51
|
#include "src/core/lib/debug/stats.h"
|
52
52
|
#include "src/core/lib/debug/trace.h"
|
53
|
+
#include "src/core/lib/experiments/experiments.h"
|
53
54
|
#include "src/core/lib/gpr/string.h"
|
54
55
|
#include "src/core/lib/gpr/useful.h"
|
55
56
|
#include "src/core/lib/gprpp/sync.h"
|
@@ -58,7 +59,6 @@
|
|
58
59
|
#include "src/core/lib/iomgr/executor.h"
|
59
60
|
#include "src/core/lib/iomgr/socket_utils_posix.h"
|
60
61
|
#include "src/core/lib/iomgr/tcp_posix.h"
|
61
|
-
#include "src/core/lib/profiling/timers.h"
|
62
62
|
#include "src/core/lib/resource_quota/api.h"
|
63
63
|
#include "src/core/lib/resource_quota/memory_quota.h"
|
64
64
|
#include "src/core/lib/resource_quota/trace.h"
|
@@ -97,8 +97,6 @@ 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
|
-
|
102
100
|
namespace grpc_core {
|
103
101
|
|
104
102
|
class TcpZerocopySendRecord {
|
@@ -234,7 +232,11 @@ class TcpZerocopySendCtx {
|
|
234
232
|
// buffers that were sent with the corresponding call to sendmsg().
|
235
233
|
void NoteSend(TcpZerocopySendRecord* record) {
|
236
234
|
record->Ref();
|
237
|
-
|
235
|
+
{
|
236
|
+
MutexLock guard(&lock_);
|
237
|
+
is_in_write_ = true;
|
238
|
+
AssociateSeqWithSendRecordLocked(last_send_, record);
|
239
|
+
}
|
238
240
|
++last_send_;
|
239
241
|
}
|
240
242
|
|
@@ -255,8 +257,8 @@ class TcpZerocopySendCtx {
|
|
255
257
|
|
256
258
|
// Simply associate this send record (and the underlying sent data buffers)
|
257
259
|
// with the implicit sequence number for this zerocopy sendmsg().
|
258
|
-
void
|
259
|
-
|
260
|
+
void AssociateSeqWithSendRecordLocked(uint32_t seq,
|
261
|
+
TcpZerocopySendRecord* record) {
|
260
262
|
ctx_lookup_.emplace(seq, record);
|
261
263
|
}
|
262
264
|
|
@@ -314,7 +316,107 @@ class TcpZerocopySendCtx {
|
|
314
316
|
// zerocopy is not useful for small transfers.
|
315
317
|
size_t threshold_bytes() const { return threshold_bytes_; }
|
316
318
|
|
319
|
+
// Expected to be called by handler reading messages from the err queue.
|
320
|
+
// It is used to indicate that some OMem meory is now available. It returns
|
321
|
+
// true to tell the caller to mark the file descriptor as immediately
|
322
|
+
// writable.
|
323
|
+
//
|
324
|
+
// If a write is currently in progress on the socket (ie. we have issued a
|
325
|
+
// sendmsg() and are about to check its return value) then we set omem state
|
326
|
+
// to CHECK to make the sending thread know that some tcp_omem was
|
327
|
+
// concurrently freed even if sendmsg() returns ENOBUFS. In this case, since
|
328
|
+
// there is already an active send thread, we do not need to mark the
|
329
|
+
// socket writeable, so we return false.
|
330
|
+
//
|
331
|
+
// If there was no write in progress on the socket, and the socket was not
|
332
|
+
// marked as FULL, then we need not mark the socket writeable now that some
|
333
|
+
// tcp_omem memory is freed since it was not considered as blocked on
|
334
|
+
// tcp_omem to begin with. So in this case, return false.
|
335
|
+
//
|
336
|
+
// But, if a write was not in progress and the omem state was FULL, then we
|
337
|
+
// need to mark the socket writeable since it is no longer blocked by
|
338
|
+
// tcp_omem. In this case, return true.
|
339
|
+
//
|
340
|
+
// Please refer to the STATE TRANSITION DIAGRAM below for more details.
|
341
|
+
//
|
342
|
+
bool UpdateZeroCopyOMemStateAfterFree() {
|
343
|
+
MutexLock guard(&lock_);
|
344
|
+
if (is_in_write_) {
|
345
|
+
zcopy_enobuf_state_ = OMemState::CHECK;
|
346
|
+
return false;
|
347
|
+
}
|
348
|
+
GPR_DEBUG_ASSERT(zcopy_enobuf_state_ != OMemState::CHECK);
|
349
|
+
if (zcopy_enobuf_state_ == OMemState::FULL) {
|
350
|
+
// A previous sendmsg attempt was blocked by ENOBUFS. Return true to
|
351
|
+
// mark the fd as writable so the next write attempt could be made.
|
352
|
+
zcopy_enobuf_state_ = OMemState::OPEN;
|
353
|
+
return true;
|
354
|
+
} else if (zcopy_enobuf_state_ == OMemState::OPEN) {
|
355
|
+
// No need to mark the fd as writable because the previous write
|
356
|
+
// attempt did not encounter ENOBUFS.
|
357
|
+
return false;
|
358
|
+
} else {
|
359
|
+
// This state should never be reached because it implies that the previous
|
360
|
+
// state was CHECK and is_in_write is false. This means that after the
|
361
|
+
// previous sendmsg returned and set is_in_write to false, it did
|
362
|
+
// not update the z-copy change from CHECK to OPEN.
|
363
|
+
GPR_ASSERT(false && "OMem state error!");
|
364
|
+
}
|
365
|
+
}
|
366
|
+
|
367
|
+
// Expected to be called by the thread calling sendmsg after the syscall
|
368
|
+
// invocation. is complete. If an ENOBUF is seen, it checks if the error
|
369
|
+
// handler (Tx0cp completions) has already run and free'ed up some OMem. It
|
370
|
+
// returns true indicating that the write can be attempted again immediately.
|
371
|
+
// If ENOBUFS was seen but no Tx0cp completions have been received between the
|
372
|
+
// sendmsg() and us taking this lock, then tcp_omem is still full from our
|
373
|
+
// point of view. Therefore, we do not signal that the socket is writeable
|
374
|
+
// with respect to the availability of tcp_omem. Therefore the function
|
375
|
+
// returns false. This indicates that another write should not be attempted
|
376
|
+
// immediately and the calling thread should wait until the socket is writable
|
377
|
+
// again. If ENOBUFS was not seen, then again return false because the next
|
378
|
+
// write should be attempted only when the socket is writable again.
|
379
|
+
//
|
380
|
+
// Please refer to the STATE TRANSITION DIAGRAM below for more details.
|
381
|
+
//
|
382
|
+
bool UpdateZeroCopyOMemStateAfterSend(bool seen_enobuf) {
|
383
|
+
MutexLock guard(&lock_);
|
384
|
+
is_in_write_ = false;
|
385
|
+
if (seen_enobuf) {
|
386
|
+
if (zcopy_enobuf_state_ == OMemState::CHECK) {
|
387
|
+
zcopy_enobuf_state_ = OMemState::OPEN;
|
388
|
+
return true;
|
389
|
+
} else {
|
390
|
+
zcopy_enobuf_state_ = OMemState::FULL;
|
391
|
+
}
|
392
|
+
} else if (zcopy_enobuf_state_ != OMemState::OPEN) {
|
393
|
+
zcopy_enobuf_state_ = OMemState::OPEN;
|
394
|
+
}
|
395
|
+
return false;
|
396
|
+
}
|
397
|
+
|
317
398
|
private:
|
399
|
+
// STATE TRANSITION DIAGRAM
|
400
|
+
//
|
401
|
+
// sendmsg succeeds Tx-zero copy succeeds and there is no active sendmsg
|
402
|
+
// ----<<--+ +------<<-------------------------------------+
|
403
|
+
// | | | |
|
404
|
+
// | | v sendmsg returns ENOBUFS |
|
405
|
+
// +-----> OPEN ------------->>-------------------------> FULL
|
406
|
+
// ^ |
|
407
|
+
// | |
|
408
|
+
// | sendmsg completes |
|
409
|
+
// +----<<---------- CHECK <-------<<-------------+
|
410
|
+
// Tx-zero copy succeeds and there is
|
411
|
+
// an active sendmsg
|
412
|
+
//
|
413
|
+
enum class OMemState : int8_t {
|
414
|
+
OPEN, // Everything is clear and omem is not full.
|
415
|
+
FULL, // The last sendmsg() has returned with an errno of ENOBUFS.
|
416
|
+
CHECK, // Error queue is read while is_in_write_ was true, so we should
|
417
|
+
// check this state after the sendmsg.
|
418
|
+
};
|
419
|
+
|
318
420
|
TcpZerocopySendRecord* ReleaseSendRecordLocked(uint32_t seq) {
|
319
421
|
auto iter = ctx_lookup_.find(seq);
|
320
422
|
GPR_DEBUG_ASSERT(iter != ctx_lookup_.end());
|
@@ -351,6 +453,8 @@ class TcpZerocopySendCtx {
|
|
351
453
|
size_t threshold_bytes_ = kDefaultSendBytesThreshold;
|
352
454
|
std::unordered_map<uint32_t, TcpZerocopySendRecord*> ctx_lookup_;
|
353
455
|
bool memory_limited_ = false;
|
456
|
+
bool is_in_write_ = false;
|
457
|
+
OMemState zcopy_enobuf_state_;
|
354
458
|
};
|
355
459
|
|
356
460
|
} // namespace grpc_core
|
@@ -360,22 +464,20 @@ using grpc_core::TcpZerocopySendRecord;
|
|
360
464
|
|
361
465
|
namespace {
|
362
466
|
|
363
|
-
bool ExperimentalTcpFrameSizeTuningEnabled() {
|
364
|
-
static const bool kEnableTcpFrameSizeTuning =
|
365
|
-
GPR_GLOBAL_CONFIG_GET(grpc_experimental_enable_tcp_frame_size_tuning);
|
366
|
-
return kEnableTcpFrameSizeTuning;
|
367
|
-
}
|
368
|
-
|
369
467
|
struct grpc_tcp {
|
370
|
-
grpc_tcp(
|
371
|
-
:
|
468
|
+
explicit grpc_tcp(const grpc_core::PosixTcpOptions& tcp_options)
|
469
|
+
: min_read_chunk_size(tcp_options.tcp_min_read_chunk_size),
|
470
|
+
max_read_chunk_size(tcp_options.tcp_max_read_chunk_size),
|
471
|
+
tcp_zerocopy_send_ctx(
|
472
|
+
tcp_options.tcp_tx_zerocopy_max_simultaneous_sends,
|
473
|
+
tcp_options.tcp_tx_zerocopy_send_bytes_threshold) {}
|
372
474
|
grpc_endpoint base;
|
373
475
|
grpc_fd* em_fd;
|
374
476
|
int fd;
|
375
477
|
/* Used by the endpoint read function to distinguish the very first read call
|
376
478
|
* from the rest */
|
377
479
|
bool is_first_read;
|
378
|
-
bool has_posted_reclaimer;
|
480
|
+
bool has_posted_reclaimer ABSL_GUARDED_BY(read_mu) = false;
|
379
481
|
double target_length;
|
380
482
|
double bytes_read_this_round;
|
381
483
|
grpc_core::RefCount refcount;
|
@@ -383,6 +485,7 @@ struct grpc_tcp {
|
|
383
485
|
|
384
486
|
int min_read_chunk_size;
|
385
487
|
int max_read_chunk_size;
|
488
|
+
int set_rcvlowat = 0;
|
386
489
|
|
387
490
|
/* garbage after the last read */
|
388
491
|
grpc_slice_buffer last_read_buffer;
|
@@ -479,8 +582,7 @@ static void run_poller(void* bp, grpc_error_handle /*error_ignored*/) {
|
|
479
582
|
}
|
480
583
|
gpr_mu_lock(p->pollset_mu);
|
481
584
|
grpc_core::Timestamp deadline =
|
482
|
-
grpc_core::
|
483
|
-
GRPC_STATS_INC_TCP_BACKUP_POLLER_POLLS();
|
585
|
+
grpc_core::Timestamp::Now() + grpc_core::Duration::Seconds(10);
|
484
586
|
GRPC_LOG_IF_ERROR(
|
485
587
|
"backup_poller:pollset_work",
|
486
588
|
grpc_pollset_work(BACKUP_POLLER_POLLSET(p), nullptr, deadline));
|
@@ -541,7 +643,6 @@ static void cover_self(grpc_tcp* tcp) {
|
|
541
643
|
g_backup_poller = p;
|
542
644
|
grpc_pollset_init(BACKUP_POLLER_POLLSET(p), &p->pollset_mu);
|
543
645
|
g_backup_poller_mu->Unlock();
|
544
|
-
GRPC_STATS_INC_TCP_BACKUP_POLLERS_CREATED();
|
545
646
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
|
546
647
|
gpr_log(GPR_INFO, "BACKUP_POLLER:%p create", p);
|
547
648
|
}
|
@@ -687,8 +788,8 @@ static void perform_reclamation(grpc_tcp* tcp)
|
|
687
788
|
if (tcp->incoming_buffer != nullptr) {
|
688
789
|
grpc_slice_buffer_reset_and_unref_internal(tcp->incoming_buffer);
|
689
790
|
}
|
690
|
-
tcp->read_mu.Unlock();
|
691
791
|
tcp->has_posted_reclaimer = false;
|
792
|
+
tcp->read_mu.Unlock();
|
692
793
|
}
|
693
794
|
|
694
795
|
static void maybe_post_reclaimer(grpc_tcp* tcp)
|
@@ -723,11 +824,54 @@ static void tcp_trace_read(grpc_tcp* tcp, grpc_error_handle error)
|
|
723
824
|
}
|
724
825
|
}
|
725
826
|
|
827
|
+
static void update_rcvlowat(grpc_tcp* tcp)
|
828
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(tcp->read_mu) {
|
829
|
+
if (!grpc_core::IsTcpRcvLowatEnabled()) return;
|
830
|
+
|
831
|
+
// TODO(ctiller): Check if supported by OS.
|
832
|
+
// TODO(ctiller): Allow some adjustments instead of hardcoding things.
|
833
|
+
|
834
|
+
static constexpr int kRcvLowatMax = 16 * 1024 * 1024;
|
835
|
+
static constexpr int kRcvLowatThreshold = 16 * 1024;
|
836
|
+
|
837
|
+
int remaining = std::min(static_cast<int>(tcp->incoming_buffer->length),
|
838
|
+
tcp->min_progress_size);
|
839
|
+
remaining = std::min(remaining, kRcvLowatMax);
|
840
|
+
|
841
|
+
// Setting SO_RCVLOWAT for small quantities does not save on CPU.
|
842
|
+
if (remaining < kRcvLowatThreshold) {
|
843
|
+
remaining = 0;
|
844
|
+
}
|
845
|
+
|
846
|
+
// If zerocopy is off, wake shortly before the full RPC is here. More can
|
847
|
+
// show up partway through recvmsg() since it takes a while to copy data.
|
848
|
+
// So an early wakeup aids latency.
|
849
|
+
if (!tcp->tcp_zerocopy_send_ctx.enabled() && remaining > 0) {
|
850
|
+
remaining -= kRcvLowatThreshold;
|
851
|
+
}
|
852
|
+
|
853
|
+
// We still do not know the RPC size. Do not set SO_RCVLOWAT.
|
854
|
+
if (tcp->set_rcvlowat <= 1 && remaining <= 1) return;
|
855
|
+
|
856
|
+
// Previous value is still valid. No change needed in SO_RCVLOWAT.
|
857
|
+
if (tcp->set_rcvlowat == remaining) {
|
858
|
+
return;
|
859
|
+
}
|
860
|
+
if (setsockopt(tcp->fd, SOL_SOCKET, SO_RCVLOWAT, &remaining,
|
861
|
+
sizeof(remaining)) != 0) {
|
862
|
+
gpr_log(GPR_ERROR, "%s",
|
863
|
+
absl::StrCat("Cannot set SO_RCVLOWAT on fd=", tcp->fd,
|
864
|
+
" err=", strerror(errno))
|
865
|
+
.c_str());
|
866
|
+
return;
|
867
|
+
}
|
868
|
+
tcp->set_rcvlowat = remaining;
|
869
|
+
}
|
870
|
+
|
726
871
|
/* Returns true if data available to read or error other than EAGAIN. */
|
727
|
-
#define MAX_READ_IOVEC
|
872
|
+
#define MAX_READ_IOVEC 64
|
728
873
|
static bool tcp_do_read(grpc_tcp* tcp, grpc_error_handle* error)
|
729
874
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(tcp->read_mu) {
|
730
|
-
GPR_TIMER_SCOPE("tcp_do_read", 0);
|
731
875
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
|
732
876
|
gpr_log(GPR_INFO, "TCP:%p do_read", tcp);
|
733
877
|
}
|
@@ -775,7 +919,6 @@ static bool tcp_do_read(grpc_tcp* tcp, grpc_error_handle* error)
|
|
775
919
|
GRPC_STATS_INC_TCP_READ_OFFER_IOV_SIZE(tcp->incoming_buffer->count);
|
776
920
|
|
777
921
|
do {
|
778
|
-
GPR_TIMER_SCOPE("recvmsg", 0);
|
779
922
|
GRPC_STATS_INC_SYSCALL_READ();
|
780
923
|
read_bytes = recvmsg(tcp->fd, &msg, 0);
|
781
924
|
} while (read_bytes < 0 && errno == EINTR);
|
@@ -904,31 +1047,66 @@ static bool tcp_do_read(grpc_tcp* tcp, grpc_error_handle* error)
|
|
904
1047
|
|
905
1048
|
static void maybe_make_read_slices(grpc_tcp* tcp)
|
906
1049
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(tcp->read_mu) {
|
907
|
-
if (
|
908
|
-
|
909
|
-
|
910
|
-
if (
|
911
|
-
|
912
|
-
|
913
|
-
|
914
|
-
|
915
|
-
|
1050
|
+
if (grpc_core::IsTcpReadChunksEnabled()) {
|
1051
|
+
static const int kBigAlloc = 64 * 1024;
|
1052
|
+
static const int kSmallAlloc = 8 * 1024;
|
1053
|
+
if (tcp->incoming_buffer->length <
|
1054
|
+
static_cast<size_t>(tcp->min_progress_size)) {
|
1055
|
+
size_t allocate_length = tcp->min_progress_size;
|
1056
|
+
const size_t target_length = static_cast<size_t>(tcp->target_length);
|
1057
|
+
// If memory pressure is low and we think there will be more than
|
1058
|
+
// min_progress_size bytes to read, allocate a bit more.
|
1059
|
+
const bool low_memory_pressure =
|
1060
|
+
tcp->memory_owner.GetPressureInfo().pressure_control_value < 0.8;
|
1061
|
+
if (low_memory_pressure && target_length > allocate_length) {
|
1062
|
+
allocate_length = target_length;
|
1063
|
+
}
|
1064
|
+
int extra_wanted =
|
1065
|
+
allocate_length - static_cast<int>(tcp->incoming_buffer->length);
|
1066
|
+
if (extra_wanted >=
|
1067
|
+
(low_memory_pressure ? kSmallAlloc * 3 / 2 : kBigAlloc)) {
|
1068
|
+
while (extra_wanted > 0) {
|
1069
|
+
extra_wanted -= kBigAlloc;
|
1070
|
+
grpc_slice_buffer_add_indexed(tcp->incoming_buffer,
|
1071
|
+
tcp->memory_owner.MakeSlice(kBigAlloc));
|
1072
|
+
GRPC_STATS_INC_TCP_READ_ALLOC_64K();
|
1073
|
+
}
|
1074
|
+
} else {
|
1075
|
+
while (extra_wanted > 0) {
|
1076
|
+
extra_wanted -= kSmallAlloc;
|
1077
|
+
grpc_slice_buffer_add_indexed(
|
1078
|
+
tcp->incoming_buffer, tcp->memory_owner.MakeSlice(kSmallAlloc));
|
1079
|
+
GRPC_STATS_INC_TCP_READ_ALLOC_8K();
|
1080
|
+
}
|
1081
|
+
}
|
1082
|
+
maybe_post_reclaimer(tcp);
|
1083
|
+
}
|
1084
|
+
} else {
|
1085
|
+
if (tcp->incoming_buffer->length <
|
1086
|
+
static_cast<size_t>(tcp->min_progress_size) &&
|
1087
|
+
tcp->incoming_buffer->count < MAX_READ_IOVEC) {
|
1088
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
|
1089
|
+
gpr_log(GPR_INFO,
|
1090
|
+
"TCP:%p alloc_slices; min_chunk=%d max_chunk=%d target=%lf "
|
1091
|
+
"buf_len=%" PRIdPTR,
|
1092
|
+
tcp, tcp->min_read_chunk_size, tcp->max_read_chunk_size,
|
1093
|
+
tcp->target_length, tcp->incoming_buffer->length);
|
1094
|
+
}
|
1095
|
+
int target_length = std::max(static_cast<int>(tcp->target_length),
|
1096
|
+
tcp->min_progress_size);
|
1097
|
+
int extra_wanted =
|
1098
|
+
target_length - static_cast<int>(tcp->incoming_buffer->length);
|
1099
|
+
int min_read_chunk_size =
|
1100
|
+
std::max(tcp->min_read_chunk_size, tcp->min_progress_size);
|
1101
|
+
int max_read_chunk_size =
|
1102
|
+
std::max(tcp->max_read_chunk_size, tcp->min_progress_size);
|
1103
|
+
grpc_slice slice = tcp->memory_owner.MakeSlice(grpc_core::MemoryRequest(
|
1104
|
+
min_read_chunk_size,
|
1105
|
+
grpc_core::Clamp(extra_wanted, min_read_chunk_size,
|
1106
|
+
max_read_chunk_size)));
|
1107
|
+
grpc_slice_buffer_add_indexed(tcp->incoming_buffer, slice);
|
1108
|
+
maybe_post_reclaimer(tcp);
|
916
1109
|
}
|
917
|
-
int target_length =
|
918
|
-
std::max(static_cast<int>(tcp->target_length), tcp->min_progress_size);
|
919
|
-
int extra_wanted =
|
920
|
-
target_length - static_cast<int>(tcp->incoming_buffer->length);
|
921
|
-
int min_read_chunk_size =
|
922
|
-
std::max(tcp->min_read_chunk_size, tcp->min_progress_size);
|
923
|
-
int max_read_chunk_size =
|
924
|
-
std::max(tcp->max_read_chunk_size, tcp->min_progress_size);
|
925
|
-
grpc_slice_buffer_add_indexed(
|
926
|
-
tcp->incoming_buffer,
|
927
|
-
tcp->memory_owner.MakeSlice(grpc_core::MemoryRequest(
|
928
|
-
min_read_chunk_size,
|
929
|
-
grpc_core::Clamp(extra_wanted, min_read_chunk_size,
|
930
|
-
max_read_chunk_size))));
|
931
|
-
maybe_post_reclaimer(tcp);
|
932
1110
|
}
|
933
1111
|
}
|
934
1112
|
|
@@ -944,6 +1122,7 @@ static void tcp_handle_read(void* arg /* grpc_tcp */, grpc_error_handle error) {
|
|
944
1122
|
maybe_make_read_slices(tcp);
|
945
1123
|
if (!tcp_do_read(tcp, &tcp_read_error)) {
|
946
1124
|
/* We've consumed the edge, request a new one */
|
1125
|
+
update_rcvlowat(tcp);
|
947
1126
|
tcp->read_mu.Unlock();
|
948
1127
|
notify_on_read(tcp);
|
949
1128
|
return;
|
@@ -973,19 +1152,23 @@ static void tcp_read(grpc_endpoint* ep, grpc_slice_buffer* incoming_buffer,
|
|
973
1152
|
tcp->frame_size_tuning_enabled ? min_progress_size : 1;
|
974
1153
|
grpc_slice_buffer_reset_and_unref_internal(incoming_buffer);
|
975
1154
|
grpc_slice_buffer_swap(incoming_buffer, &tcp->last_read_buffer);
|
976
|
-
tcp->read_mu.Unlock();
|
977
1155
|
TCP_REF(tcp, "read");
|
978
1156
|
if (tcp->is_first_read) {
|
1157
|
+
update_rcvlowat(tcp);
|
1158
|
+
tcp->read_mu.Unlock();
|
979
1159
|
/* Endpoint read called for the very first time. Register read callback with
|
980
1160
|
* the polling engine */
|
981
1161
|
tcp->is_first_read = false;
|
982
1162
|
notify_on_read(tcp);
|
983
1163
|
} else if (!urgent && tcp->inq == 0) {
|
1164
|
+
update_rcvlowat(tcp);
|
1165
|
+
tcp->read_mu.Unlock();
|
984
1166
|
/* Upper layer asked to read more but we know there is no pending data
|
985
1167
|
* to read from previous reads. So, wait for POLLIN.
|
986
1168
|
*/
|
987
1169
|
notify_on_read(tcp);
|
988
1170
|
} else {
|
1171
|
+
tcp->read_mu.Unlock();
|
989
1172
|
/* Not the first time. We may or may not have more bytes available. In any
|
990
1173
|
* case call tcp->read_done_closure (i.e tcp_handle_read()) which does the
|
991
1174
|
* right thing (i.e calls tcp_do_read() which either reads the available
|
@@ -1000,7 +1183,6 @@ static void tcp_read(grpc_endpoint* ep, grpc_slice_buffer* incoming_buffer,
|
|
1000
1183
|
* of bytes sent. */
|
1001
1184
|
ssize_t tcp_send(int fd, const struct msghdr* msg, int* saved_errno,
|
1002
1185
|
int additional_flags = 0) {
|
1003
|
-
GPR_TIMER_SCOPE("sendmsg", 1);
|
1004
1186
|
ssize_t sent_length;
|
1005
1187
|
do {
|
1006
1188
|
/* TODO(klempner): Cork if this is a partial write */
|
@@ -1126,6 +1308,9 @@ static void process_zerocopy(grpc_tcp* tcp, struct cmsghdr* cmsg) {
|
|
1126
1308
|
GPR_DEBUG_ASSERT(record);
|
1127
1309
|
UnrefMaybePutZerocopySendRecord(tcp, record, seq, "CALLBACK RCVD");
|
1128
1310
|
}
|
1311
|
+
if (tcp->tcp_zerocopy_send_ctx.UpdateZeroCopyOMemStateAfterFree()) {
|
1312
|
+
grpc_fd_set_writable(tcp->em_fd);
|
1313
|
+
}
|
1129
1314
|
}
|
1130
1315
|
|
1131
1316
|
// Whether the cmsg received from error queue is of the IPv4 or IPv6 levels.
|
@@ -1436,10 +1621,14 @@ static bool do_tcp_flush_zerocopy(grpc_tcp* tcp, TcpZerocopySendRecord* record,
|
|
1436
1621
|
GRPC_STATS_INC_TCP_WRITE_IOV_SIZE(iov_size);
|
1437
1622
|
sent_length = tcp_send(tcp->fd, &msg, &saved_errno, MSG_ZEROCOPY);
|
1438
1623
|
}
|
1624
|
+
if (tcp->tcp_zerocopy_send_ctx.UpdateZeroCopyOMemStateAfterSend(
|
1625
|
+
saved_errno == ENOBUFS)) {
|
1626
|
+
grpc_fd_set_writable(tcp->em_fd);
|
1627
|
+
}
|
1439
1628
|
if (sent_length < 0) {
|
1440
1629
|
// If this particular send failed, drop ref taken earlier in this method.
|
1441
1630
|
tcp->tcp_zerocopy_send_ctx.UndoSend();
|
1442
|
-
if (saved_errno == EAGAIN) {
|
1631
|
+
if (saved_errno == EAGAIN || saved_errno == ENOBUFS) {
|
1443
1632
|
record->UnwindIfThrottled(unwind_slice_idx, unwind_byte_idx);
|
1444
1633
|
return false;
|
1445
1634
|
} else if (saved_errno == EPIPE) {
|
@@ -1547,7 +1736,7 @@ static bool tcp_flush(grpc_tcp* tcp, grpc_error_handle* error) {
|
|
1547
1736
|
}
|
1548
1737
|
|
1549
1738
|
if (sent_length < 0) {
|
1550
|
-
if (saved_errno == EAGAIN) {
|
1739
|
+
if (saved_errno == EAGAIN || saved_errno == ENOBUFS) {
|
1551
1740
|
tcp->outgoing_byte_idx = unwind_byte_idx;
|
1552
1741
|
// unref all and forget about all slices that have been written to this
|
1553
1742
|
// point
|
@@ -1609,7 +1798,6 @@ static void tcp_handle_write(void* arg /* grpc_tcp */,
|
|
1609
1798
|
TCP_UNREF(tcp, "write");
|
1610
1799
|
return;
|
1611
1800
|
}
|
1612
|
-
|
1613
1801
|
bool flush_result =
|
1614
1802
|
tcp->current_zerocopy_send != nullptr
|
1615
1803
|
? tcp_flush_zerocopy(tcp, tcp->current_zerocopy_send, &error)
|
@@ -1636,7 +1824,6 @@ static void tcp_handle_write(void* arg /* grpc_tcp */,
|
|
1636
1824
|
|
1637
1825
|
static void tcp_write(grpc_endpoint* ep, grpc_slice_buffer* buf,
|
1638
1826
|
grpc_closure* cb, void* arg, int /*max_frame_size*/) {
|
1639
|
-
GPR_TIMER_SCOPE("tcp_write", 0);
|
1640
1827
|
grpc_tcp* tcp = reinterpret_cast<grpc_tcp*>(ep);
|
1641
1828
|
grpc_error_handle error = GRPC_ERROR_NONE;
|
1642
1829
|
TcpZerocopySendRecord* zerocopy_send_record = nullptr;
|
@@ -1757,72 +1944,16 @@ static const grpc_endpoint_vtable vtable = {tcp_read,
|
|
1757
1944
|
tcp_get_fd,
|
1758
1945
|
tcp_can_track_err};
|
1759
1946
|
|
1760
|
-
#define MAX_CHUNK_SIZE (32 * 1024 * 1024)
|
1761
|
-
|
1762
1947
|
grpc_endpoint* grpc_tcp_create(grpc_fd* em_fd,
|
1763
|
-
const
|
1948
|
+
const grpc_core::PosixTcpOptions& options,
|
1764
1949
|
absl::string_view peer_string) {
|
1765
|
-
|
1766
|
-
int tcp_read_chunk_size = GRPC_TCP_DEFAULT_READ_SLICE_SIZE;
|
1767
|
-
int tcp_max_read_chunk_size = 4 * 1024 * 1024;
|
1768
|
-
int tcp_min_read_chunk_size = 256;
|
1769
|
-
bool tcp_tx_zerocopy_enabled = kZerocpTxEnabledDefault;
|
1770
|
-
int tcp_tx_zerocopy_send_bytes_thresh =
|
1771
|
-
grpc_core::TcpZerocopySendCtx::kDefaultSendBytesThreshold;
|
1772
|
-
int tcp_tx_zerocopy_max_simult_sends =
|
1773
|
-
grpc_core::TcpZerocopySendCtx::kDefaultMaxSends;
|
1774
|
-
if (channel_args != nullptr) {
|
1775
|
-
for (size_t i = 0; i < channel_args->num_args; i++) {
|
1776
|
-
if (0 ==
|
1777
|
-
strcmp(channel_args->args[i].key, GRPC_ARG_TCP_READ_CHUNK_SIZE)) {
|
1778
|
-
grpc_integer_options options = {tcp_read_chunk_size, 1, MAX_CHUNK_SIZE};
|
1779
|
-
tcp_read_chunk_size =
|
1780
|
-
grpc_channel_arg_get_integer(&channel_args->args[i], options);
|
1781
|
-
} else if (0 == strcmp(channel_args->args[i].key,
|
1782
|
-
GRPC_ARG_TCP_MIN_READ_CHUNK_SIZE)) {
|
1783
|
-
grpc_integer_options options = {tcp_read_chunk_size, 1, MAX_CHUNK_SIZE};
|
1784
|
-
tcp_min_read_chunk_size =
|
1785
|
-
grpc_channel_arg_get_integer(&channel_args->args[i], options);
|
1786
|
-
} else if (0 == strcmp(channel_args->args[i].key,
|
1787
|
-
GRPC_ARG_TCP_MAX_READ_CHUNK_SIZE)) {
|
1788
|
-
grpc_integer_options options = {tcp_read_chunk_size, 1, MAX_CHUNK_SIZE};
|
1789
|
-
tcp_max_read_chunk_size =
|
1790
|
-
grpc_channel_arg_get_integer(&channel_args->args[i], options);
|
1791
|
-
} else if (0 == strcmp(channel_args->args[i].key,
|
1792
|
-
GRPC_ARG_TCP_TX_ZEROCOPY_ENABLED)) {
|
1793
|
-
tcp_tx_zerocopy_enabled = grpc_channel_arg_get_bool(
|
1794
|
-
&channel_args->args[i], kZerocpTxEnabledDefault);
|
1795
|
-
} else if (0 == strcmp(channel_args->args[i].key,
|
1796
|
-
GRPC_ARG_TCP_TX_ZEROCOPY_SEND_BYTES_THRESHOLD)) {
|
1797
|
-
grpc_integer_options options = {
|
1798
|
-
grpc_core::TcpZerocopySendCtx::kDefaultSendBytesThreshold, 0,
|
1799
|
-
INT_MAX};
|
1800
|
-
tcp_tx_zerocopy_send_bytes_thresh =
|
1801
|
-
grpc_channel_arg_get_integer(&channel_args->args[i], options);
|
1802
|
-
} else if (0 == strcmp(channel_args->args[i].key,
|
1803
|
-
GRPC_ARG_TCP_TX_ZEROCOPY_MAX_SIMULT_SENDS)) {
|
1804
|
-
grpc_integer_options options = {
|
1805
|
-
grpc_core::TcpZerocopySendCtx::kDefaultMaxSends, 0, INT_MAX};
|
1806
|
-
tcp_tx_zerocopy_max_simult_sends =
|
1807
|
-
grpc_channel_arg_get_integer(&channel_args->args[i], options);
|
1808
|
-
}
|
1809
|
-
}
|
1810
|
-
}
|
1811
|
-
|
1812
|
-
if (tcp_min_read_chunk_size > tcp_max_read_chunk_size) {
|
1813
|
-
tcp_min_read_chunk_size = tcp_max_read_chunk_size;
|
1814
|
-
}
|
1815
|
-
tcp_read_chunk_size = grpc_core::Clamp(
|
1816
|
-
tcp_read_chunk_size, tcp_min_read_chunk_size, tcp_max_read_chunk_size);
|
1817
|
-
|
1818
|
-
grpc_tcp* tcp = new grpc_tcp(tcp_tx_zerocopy_max_simult_sends,
|
1819
|
-
tcp_tx_zerocopy_send_bytes_thresh);
|
1950
|
+
grpc_tcp* tcp = new grpc_tcp(options);
|
1820
1951
|
tcp->base.vtable = &vtable;
|
1821
1952
|
tcp->peer_string = std::string(peer_string);
|
1822
1953
|
tcp->fd = grpc_fd_wrapped_fd(em_fd);
|
1823
|
-
|
1824
|
-
|
1825
|
-
|
1954
|
+
GPR_ASSERT(options.resource_quota != nullptr);
|
1955
|
+
tcp->memory_owner =
|
1956
|
+
options.resource_quota->memory_quota()->CreateMemoryOwner(peer_string);
|
1826
1957
|
tcp->self_reservation = tcp->memory_owner.MakeReservation(sizeof(grpc_tcp));
|
1827
1958
|
grpc_resolved_address resolved_local_addr;
|
1828
1959
|
memset(&resolved_local_addr, 0, sizeof(resolved_local_addr));
|
@@ -1841,20 +1972,18 @@ grpc_endpoint* grpc_tcp_create(grpc_fd* em_fd,
|
|
1841
1972
|
tcp->current_zerocopy_send = nullptr;
|
1842
1973
|
tcp->release_fd_cb = nullptr;
|
1843
1974
|
tcp->release_fd = nullptr;
|
1844
|
-
tcp->target_length = static_cast<double>(tcp_read_chunk_size);
|
1845
|
-
tcp->min_read_chunk_size = tcp_min_read_chunk_size;
|
1846
|
-
tcp->max_read_chunk_size = tcp_max_read_chunk_size;
|
1975
|
+
tcp->target_length = static_cast<double>(options.tcp_read_chunk_size);
|
1847
1976
|
tcp->bytes_read_this_round = 0;
|
1848
1977
|
/* Will be set to false by the very first endpoint read function */
|
1849
1978
|
tcp->is_first_read = true;
|
1850
|
-
tcp->has_posted_reclaimer = false;
|
1851
1979
|
tcp->bytes_counter = -1;
|
1852
1980
|
tcp->socket_ts_enabled = false;
|
1853
1981
|
tcp->ts_capable = true;
|
1854
1982
|
tcp->outgoing_buffer_arg = nullptr;
|
1855
|
-
tcp->frame_size_tuning_enabled =
|
1983
|
+
tcp->frame_size_tuning_enabled = grpc_core::IsTcpFrameSizeTuningEnabled();
|
1856
1984
|
tcp->min_progress_size = 1;
|
1857
|
-
if (
|
1985
|
+
if (options.tcp_tx_zero_copy_enabled &&
|
1986
|
+
!tcp->tcp_zerocopy_send_ctx.memory_limited()) {
|
1858
1987
|
#ifdef GRPC_LINUX_ERRQUEUE
|
1859
1988
|
const int enable = 1;
|
1860
1989
|
auto err =
|
@@ -36,12 +36,14 @@
|
|
36
36
|
#include "src/core/lib/iomgr/endpoint.h"
|
37
37
|
#include "src/core/lib/iomgr/ev_posix.h"
|
38
38
|
#include "src/core/lib/iomgr/port.h"
|
39
|
+
#include "src/core/lib/iomgr/socket_utils_posix.h"
|
39
40
|
|
40
41
|
extern grpc_core::TraceFlag grpc_tcp_trace;
|
41
42
|
|
42
43
|
/// Create a tcp endpoint given a file desciptor and a read slice size.
|
43
44
|
/// Takes ownership of \a fd. Takes ownership of the \a slice_allocator.
|
44
|
-
grpc_endpoint* grpc_tcp_create(grpc_fd* fd,
|
45
|
+
grpc_endpoint* grpc_tcp_create(grpc_fd* fd,
|
46
|
+
const grpc_core::PosixTcpOptions& options,
|
45
47
|
absl::string_view peer_string);
|
46
48
|
|
47
49
|
/// Return the tcp endpoint's fd, or -1 if this is not available. Does not
|