grpc 1.48.0 → 1.49.0.pre1
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +104 -41
- data/include/grpc/event_engine/event_engine.h +19 -16
- data/include/grpc/impl/codegen/grpc_types.h +3 -8
- data/include/grpc/impl/codegen/port_platform.h +0 -8
- data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +3 -3
- data/src/core/ext/filters/channel_idle/channel_idle_filter.h +2 -2
- data/src/core/ext/filters/client_channel/client_channel.cc +117 -200
- data/src/core/ext/filters/client_channel/client_channel.h +15 -8
- 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 +12 -4
- data/src/core/ext/filters/client_channel/connector.h +4 -5
- 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/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/grpclb.cc +100 -124
- 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.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +169 -63
- 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 +15 -19
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +66 -78
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +44 -44
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +6 -5
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +65 -77
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +15 -14
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +19 -14
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +60 -67
- 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 +81 -97
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +53 -61
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +171 -102
- data/src/core/ext/filters/client_channel/proxy_mapper.h +13 -14
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +19 -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 +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 +170 -99
- 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 +17 -15
- 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 +13 -14
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +3 -4
- 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 +4 -13
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +162 -165
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +37 -30
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +7 -10
- data/src/core/ext/filters/client_channel/retry_filter.cc +0 -7
- 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 +49 -89
- data/src/core/ext/filters/client_channel/subchannel.h +8 -8
- 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 +3 -4
- 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 +1 -3
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +1 -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 +2 -3
- 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/server/http_server_filter.cc +2 -3
- 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 +35 -62
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +62 -89
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +4 -6
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +130 -165
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +3 -2
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +67 -2
- data/src/core/ext/transport/chttp2/transport/flow_control.h +1 -0
- 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 +2 -10
- data/src/core/ext/transport/chttp2/transport/internal.h +2 -1
- data/src/core/ext/transport/inproc/inproc_transport.cc +40 -74
- 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/upb_utils.h +0 -21
- data/src/core/ext/xds/xds_api.cc +53 -86
- data/src/core/ext/xds/xds_api.h +19 -28
- data/src/core/ext/xds/xds_bootstrap.cc +39 -52
- data/src/core/ext/xds/xds_bootstrap.h +28 -8
- 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 +555 -1214
- data/src/core/ext/xds/xds_client.h +16 -44
- 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_cluster.cc +92 -103
- data/src/core/ext/xds/xds_cluster.h +6 -5
- data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +10 -14
- data/src/core/ext/xds/xds_cluster_specifier_plugin.h +1 -0
- data/src/core/ext/xds/xds_common_types.cc +134 -110
- data/src/core/ext/xds/xds_common_types.h +6 -7
- data/src/core/ext/xds/xds_endpoint.cc +80 -80
- data/src/core/ext/xds/xds_endpoint.h +4 -4
- 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 +17 -20
- data/src/core/ext/xds/xds_lb_policy_registry.h +4 -4
- data/src/core/ext/xds/xds_listener.cc +329 -299
- data/src/core/ext/xds/xds_listener.h +4 -4
- data/src/core/ext/xds/xds_resource_type.h +13 -2
- data/src/core/ext/xds/xds_route_config.cc +180 -177
- 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 +76 -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 +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/channel/call_tracer.h +1 -1
- data/src/core/lib/channel/channel_args.cc +88 -19
- data/src/core/lib/channel/channel_args.h +113 -62
- 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/channelz.cc +27 -37
- data/src/core/lib/channel/channelz.h +9 -0
- data/src/core/lib/channel/promise_based_filter.h +0 -1
- data/src/core/lib/config/core_configuration.h +48 -35
- data/src/core/lib/debug/stats.cc +12 -15
- data/src/core/lib/debug/stats.h +11 -3
- 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 +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/{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 +46 -10
- data/src/core/lib/event_engine/{iomgr_engine → posix_engine}/timer_manager.h +17 -8
- data/src/core/lib/event_engine/promise.h +11 -2
- data/src/core/lib/event_engine/socket_notifier.h +55 -0
- data/src/core/lib/event_engine/{iomgr_engine/thread_pool.cc → thread_pool.cc} +49 -14
- data/src/core/lib/event_engine/{iomgr_engine/thread_pool.h → thread_pool.h} +21 -10
- 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/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 -1
- 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 +1 -0
- data/src/core/lib/gprpp/table.h +0 -1
- 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/{iomgr → gprpp}/work_serializer.cc +34 -18
- data/src/core/lib/{iomgr → gprpp}/work_serializer.h +21 -27
- 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 -26
- data/src/core/lib/iomgr/closure.h +0 -9
- data/src/core/lib/iomgr/combiner.cc +0 -20
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +2 -1
- 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_poll_posix.cc +17 -9
- 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/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 +38 -8
- data/src/core/lib/iomgr/resolve_address_posix.h +19 -5
- data/src/core/lib/iomgr/resolve_address_windows.cc +40 -10
- 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_posix.cc +118 -6
- data/src/core/lib/iomgr/timer_generic.cc +6 -8
- 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 -24
- 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 +49 -72
- 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 +6 -6
- data/src/core/lib/promise/activity.h +56 -8
- 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/map.h +0 -1
- data/src/core/lib/promise/seq.h +25 -4
- data/src/core/lib/promise/sleep.cc +38 -42
- data/src/core/lib/promise/sleep.h +27 -24
- 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 +2 -12
- 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 +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 +157 -17
- data/src/core/lib/resource_quota/memory_quota.h +98 -17
- 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/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/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/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 +18 -11
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +32 -23
- 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/google_default_credentials.cc +29 -26
- 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 +11 -13
- 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 +17 -18
- 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.h +6 -0
- 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/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 +3 -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 +8 -2
- data/src/core/lib/surface/channel.cc +6 -6
- data/src/core/lib/surface/channel.h +1 -1
- data/src/core/lib/surface/completion_queue.cc +0 -2
- data/src/core/lib/surface/completion_queue.h +0 -3
- data/src/core/lib/surface/init.cc +2 -6
- 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 +7 -12
- data/src/core/lib/surface/server.h +7 -7
- data/src/core/lib/surface/validate_metadata.cc +4 -14
- 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 +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 +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 +12 -18
- data/src/core/lib/transport/transport.h +0 -7
- 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/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 +90 -38
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +0 -50
- 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/promise/detail/switch.h +0 -1455
@@ -34,11 +34,19 @@
|
|
34
34
|
#include <grpc/event_engine/memory_request.h>
|
35
35
|
#include <grpc/support/log.h>
|
36
36
|
|
37
|
+
#include "src/core/lib/gprpp/global_config_generic.h"
|
37
38
|
#include "src/core/lib/gprpp/orphanable.h"
|
38
39
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
39
40
|
#include "src/core/lib/gprpp/sync.h"
|
41
|
+
#include "src/core/lib/gprpp/time.h"
|
40
42
|
#include "src/core/lib/promise/activity.h"
|
41
43
|
#include "src/core/lib/promise/poll.h"
|
44
|
+
#include "src/core/lib/resource_quota/periodic_update.h"
|
45
|
+
|
46
|
+
GPR_GLOBAL_CONFIG_DECLARE_BOOL(grpc_experimental_smooth_memory_presure);
|
47
|
+
GPR_GLOBAL_CONFIG_DECLARE_BOOL(
|
48
|
+
grpc_experimental_enable_periodic_resource_quota_reclamation);
|
49
|
+
GPR_GLOBAL_CONFIG_DECLARE_INT32(grpc_experimental_max_quota_buffer_size);
|
42
50
|
|
43
51
|
namespace grpc_core {
|
44
52
|
|
@@ -80,7 +88,6 @@ enum class ReclamationPass {
|
|
80
88
|
kDestructive = 3,
|
81
89
|
};
|
82
90
|
static constexpr size_t kNumReclamationPasses = 4;
|
83
|
-
static constexpr size_t kMaxQuotaBufferSize = 1024 * 1024;
|
84
91
|
|
85
92
|
// For each reclamation function run we construct a ReclamationSweep.
|
86
93
|
// When this object is finally destroyed (it may be moved several times first),
|
@@ -220,9 +227,72 @@ class ReclaimerQueue {
|
|
220
227
|
std::shared_ptr<State> state_;
|
221
228
|
};
|
222
229
|
|
230
|
+
namespace memory_quota_detail {
|
231
|
+
// Controller: tries to adjust a control variable up or down to get memory
|
232
|
+
// pressure to some target. We use the control variable to size buffers
|
233
|
+
// throughout the stack.
|
234
|
+
class PressureController {
|
235
|
+
public:
|
236
|
+
PressureController(uint8_t max_ticks_same, uint8_t max_reduction_per_tick)
|
237
|
+
: max_ticks_same_(max_ticks_same),
|
238
|
+
max_reduction_per_tick_(max_reduction_per_tick) {}
|
239
|
+
// Update the controller, returns the new control value.
|
240
|
+
double Update(double error);
|
241
|
+
// Textual representation of the controller.
|
242
|
+
std::string DebugString() const;
|
243
|
+
|
244
|
+
private:
|
245
|
+
// How many update periods have we reached the same decision in a row?
|
246
|
+
// Too many and we should start expanding the search space since we're not
|
247
|
+
// being agressive enough.
|
248
|
+
uint8_t ticks_same_ = 0;
|
249
|
+
// Maximum number of ticks with the same value until we start expanding the
|
250
|
+
// control space.
|
251
|
+
const uint8_t max_ticks_same_;
|
252
|
+
// Maximum amount to reduce the reporting value per iteration (in tenths of a
|
253
|
+
// percentile).
|
254
|
+
const uint8_t max_reduction_per_tick_;
|
255
|
+
// Was the last error indicating a too low pressure (or if false,
|
256
|
+
// a too high pressure).
|
257
|
+
bool last_was_low_ = true;
|
258
|
+
// Current minimum value to report.
|
259
|
+
double min_ = 0.0;
|
260
|
+
// Current maximum value to report.
|
261
|
+
// Set so that the first change over will choose 1.0 for max.
|
262
|
+
double max_ = 2.0;
|
263
|
+
// Last control value reported.
|
264
|
+
double last_control_ = 0.0;
|
265
|
+
};
|
266
|
+
|
267
|
+
// Utility to track memory pressure.
|
268
|
+
// Tries to be conservative (returns a higher pressure than there may actually
|
269
|
+
// be) but to be eventually accurate.
|
270
|
+
class PressureTracker {
|
271
|
+
public:
|
272
|
+
double AddSampleAndGetControlValue(double sample);
|
273
|
+
|
274
|
+
private:
|
275
|
+
std::atomic<double> max_this_round_{0.0};
|
276
|
+
std::atomic<double> report_{0.0};
|
277
|
+
PeriodicUpdate update_{Duration::Seconds(1)};
|
278
|
+
PressureController controller_{100, 3};
|
279
|
+
};
|
280
|
+
} // namespace memory_quota_detail
|
281
|
+
|
223
282
|
class BasicMemoryQuota final
|
224
283
|
: public std::enable_shared_from_this<BasicMemoryQuota> {
|
225
284
|
public:
|
285
|
+
// Data about current memory pressure.
|
286
|
+
struct PressureInfo {
|
287
|
+
// The current instantaneously measured memory pressure.
|
288
|
+
double instantaneous_pressure;
|
289
|
+
// A control value that can be used to scale buffer sizes up or down to
|
290
|
+
// adjust memory pressure to our target set point.
|
291
|
+
double pressure_control_value;
|
292
|
+
// Maximum recommended individual allocation size.
|
293
|
+
size_t max_recommended_allocation_size;
|
294
|
+
};
|
295
|
+
|
226
296
|
explicit BasicMemoryQuota(std::string name) : name_(std::move(name)) {}
|
227
297
|
|
228
298
|
// Start the reclamation activity.
|
@@ -243,8 +313,7 @@ class BasicMemoryQuota final
|
|
243
313
|
// Return some memory to the quota.
|
244
314
|
void Return(size_t amount);
|
245
315
|
// Instantaneous memory pressure approximation.
|
246
|
-
|
247
|
-
InstantaneousPressureAndMaxRecommendedAllocationSize() const;
|
316
|
+
PressureInfo GetPressureInfo();
|
248
317
|
// Get a reclamation queue
|
249
318
|
ReclaimerQueue* reclaimer_queue(size_t i) { return &reclaimers_[i]; }
|
250
319
|
|
@@ -276,6 +345,8 @@ class BasicMemoryQuota final
|
|
276
345
|
// We also increment this counter on completion of a sweep, as an indicator
|
277
346
|
// that the wait has ended.
|
278
347
|
std::atomic<uint64_t> reclamation_counter_{0};
|
348
|
+
// Memory pressure smoothing
|
349
|
+
memory_quota_detail::PressureTracker pressure_tracker_;
|
279
350
|
// The name of this quota - used for debugging/tracing/etc..
|
280
351
|
std::string name_;
|
281
352
|
};
|
@@ -299,7 +370,9 @@ class GrpcMemoryAllocatorImpl final : public EventEngineMemoryAllocatorImpl {
|
|
299
370
|
// from 0 to non-zero, then we have more to do, otherwise, we're actually
|
300
371
|
// done.
|
301
372
|
size_t prev_free = free_bytes_.fetch_add(n, std::memory_order_release);
|
302
|
-
if (
|
373
|
+
if ((max_quota_buffer_size() > 0 &&
|
374
|
+
prev_free + n > max_quota_buffer_size()) ||
|
375
|
+
(periodic_donate_back() && donate_back_.Tick([](Duration) {}))) {
|
303
376
|
// Try to immediately return some free'ed memory back to the total quota.
|
304
377
|
MaybeDonateBack();
|
305
378
|
}
|
@@ -319,22 +392,28 @@ class GrpcMemoryAllocatorImpl final : public EventEngineMemoryAllocatorImpl {
|
|
319
392
|
void Shutdown() override;
|
320
393
|
|
321
394
|
// Read the instantaneous memory pressure
|
322
|
-
|
323
|
-
return memory_quota_->
|
324
|
-
.first;
|
395
|
+
BasicMemoryQuota::PressureInfo GetPressureInfo() const {
|
396
|
+
return memory_quota_->GetPressureInfo();
|
325
397
|
}
|
326
398
|
|
327
399
|
// Name of this allocator
|
328
400
|
absl::string_view name() const { return name_; }
|
329
401
|
|
330
402
|
private:
|
403
|
+
static bool periodic_donate_back() {
|
404
|
+
static const bool value = GPR_GLOBAL_CONFIG_GET(
|
405
|
+
grpc_experimental_enable_periodic_resource_quota_reclamation);
|
406
|
+
return value;
|
407
|
+
}
|
408
|
+
static size_t max_quota_buffer_size() {
|
409
|
+
static const size_t value =
|
410
|
+
GPR_GLOBAL_CONFIG_GET(grpc_experimental_max_quota_buffer_size);
|
411
|
+
return value;
|
412
|
+
}
|
331
413
|
// Primitive reservation function.
|
332
414
|
absl::optional<size_t> TryReserve(MemoryRequest request) GRPC_MUST_USE_RESULT;
|
333
|
-
// This function may be invoked during a memory release operation.
|
334
|
-
//
|
335
|
-
// kMaxQuotaBufferSize / 2, donate the excess free_bytes in this cache back
|
336
|
-
// to the total quota immediately. This helps prevent free bytes in any
|
337
|
-
// particular allocator from growing too large.
|
415
|
+
// This function may be invoked during a memory release operation.
|
416
|
+
// It will try to return half of our free pool to the quota.
|
338
417
|
void MaybeDonateBack();
|
339
418
|
// Replenish bytes from the quota, without blocking, possibly entering
|
340
419
|
// overcommit.
|
@@ -359,6 +438,8 @@ class GrpcMemoryAllocatorImpl final : public EventEngineMemoryAllocatorImpl {
|
|
359
438
|
// Amount of memory taken from the quota by this allocator.
|
360
439
|
std::atomic<size_t> taken_bytes_{sizeof(GrpcMemoryAllocatorImpl)};
|
361
440
|
std::atomic<bool> registered_reclaimer_{false};
|
441
|
+
// We try to donate back some memory periodically to the central quota.
|
442
|
+
PeriodicUpdate donate_back_{Duration::Seconds(10)};
|
362
443
|
Mutex reclaimer_mu_;
|
363
444
|
bool shutdown_ ABSL_GUARDED_BY(reclaimer_mu_) = false;
|
364
445
|
// Indices into the various reclaimer queues, used so that we can cancel
|
@@ -392,8 +473,8 @@ class MemoryOwner final : public MemoryAllocator {
|
|
392
473
|
}
|
393
474
|
|
394
475
|
// Instantaneous memory pressure in the underlying quota.
|
395
|
-
|
396
|
-
return impl()->
|
476
|
+
BasicMemoryQuota::PressureInfo GetPressureInfo() const {
|
477
|
+
return impl()->GetPressureInfo();
|
397
478
|
}
|
398
479
|
|
399
480
|
template <typename T, typename... Args>
|
@@ -442,9 +523,9 @@ class MemoryQuota final
|
|
442
523
|
|
443
524
|
// Return true if the instantaneous memory pressure is high.
|
444
525
|
bool IsMemoryPressureHigh() const {
|
445
|
-
static constexpr double kMemoryPressureHighThreshold = 0
|
446
|
-
return memory_quota_->
|
447
|
-
|
526
|
+
static constexpr double kMemoryPressureHighThreshold = 1.0;
|
527
|
+
return memory_quota_->GetPressureInfo().instantaneous_pressure >
|
528
|
+
kMemoryPressureHighThreshold;
|
448
529
|
}
|
449
530
|
|
450
531
|
private:
|
@@ -0,0 +1,79 @@
|
|
1
|
+
// Copyright 2022 gRPC authors.
|
2
|
+
//
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
// you may not use this file except in compliance with the License.
|
5
|
+
// You may obtain a copy of the License at
|
6
|
+
//
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
//
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
// See the License for the specific language governing permissions and
|
13
|
+
// limitations under the License.
|
14
|
+
|
15
|
+
#include <grpc/support/port_platform.h>
|
16
|
+
|
17
|
+
#include "src/core/lib/resource_quota/periodic_update.h"
|
18
|
+
|
19
|
+
#include <atomic>
|
20
|
+
|
21
|
+
#include "src/core/lib/gpr/useful.h"
|
22
|
+
#include "src/core/lib/iomgr/exec_ctx.h"
|
23
|
+
|
24
|
+
namespace grpc_core {
|
25
|
+
|
26
|
+
bool PeriodicUpdate::MaybeEndPeriod(absl::FunctionRef<void(Duration)> f) {
|
27
|
+
if (period_start_ == Timestamp::ProcessEpoch()) {
|
28
|
+
period_start_ = ExecCtx::Get()->Now();
|
29
|
+
updates_remaining_.store(1, std::memory_order_release);
|
30
|
+
return false;
|
31
|
+
}
|
32
|
+
// updates_remaining_ just reached 0 and the thread calling this function was
|
33
|
+
// the decrementer that got us there.
|
34
|
+
// We can now safely mutate any non-atomic mutable variables (we've got a
|
35
|
+
// guarantee that no other thread will), and by the time this function returns
|
36
|
+
// we must store a postive number into updates_remaining_.
|
37
|
+
auto now = ExecCtx::Get()->Now();
|
38
|
+
Duration time_so_far = now - period_start_;
|
39
|
+
if (time_so_far < period_) {
|
40
|
+
// At most double the number of updates remaining until the next period.
|
41
|
+
// At least try to estimate when we'll reach it.
|
42
|
+
int64_t better_guess;
|
43
|
+
if (time_so_far.millis() == 0) {
|
44
|
+
better_guess = expected_updates_per_period_ * 2;
|
45
|
+
} else {
|
46
|
+
// Determine a scaling factor that would have gotten us to the next
|
47
|
+
// period, but clamp between 1.01 (at least 1% increase in guesses)
|
48
|
+
// and 2.0 (at most doubling) - to avoid running completely out of
|
49
|
+
// control.
|
50
|
+
const double scale =
|
51
|
+
Clamp(period_.seconds() / time_so_far.seconds(), 1.01, 2.0);
|
52
|
+
better_guess = expected_updates_per_period_ * scale;
|
53
|
+
if (better_guess <= expected_updates_per_period_) {
|
54
|
+
better_guess = expected_updates_per_period_ + 1;
|
55
|
+
}
|
56
|
+
}
|
57
|
+
// Store the remainder left. Note that updates_remaining_ may have been
|
58
|
+
// decremented by another thread whilst we performed the above calculations:
|
59
|
+
// we simply discard those decrements.
|
60
|
+
updates_remaining_.store(better_guess - expected_updates_per_period_,
|
61
|
+
std::memory_order_release);
|
62
|
+
// Not quite done, return, try for longer.
|
63
|
+
return false;
|
64
|
+
}
|
65
|
+
// Finished period, start a new one and return true.
|
66
|
+
// We try to predict how many update periods we'd need to cover the full time
|
67
|
+
// span, and we increase that by 1% to attempt to tend to not enter the above
|
68
|
+
// stanza.
|
69
|
+
expected_updates_per_period_ =
|
70
|
+
period_.seconds() * expected_updates_per_period_ / time_so_far.seconds();
|
71
|
+
if (expected_updates_per_period_ < 1) expected_updates_per_period_ = 1;
|
72
|
+
period_start_ = now;
|
73
|
+
f(time_so_far);
|
74
|
+
updates_remaining_.store(expected_updates_per_period_,
|
75
|
+
std::memory_order_release);
|
76
|
+
return true;
|
77
|
+
}
|
78
|
+
|
79
|
+
} // namespace grpc_core
|
@@ -0,0 +1,71 @@
|
|
1
|
+
// Copyright 2022 gRPC authors.
|
2
|
+
//
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
// you may not use this file except in compliance with the License.
|
5
|
+
// You may obtain a copy of the License at
|
6
|
+
//
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
//
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
// See the License for the specific language governing permissions and
|
13
|
+
// limitations under the License.
|
14
|
+
|
15
|
+
#ifndef GRPC_CORE_LIB_RESOURCE_QUOTA_PERIODIC_UPDATE_H
|
16
|
+
#define GRPC_CORE_LIB_RESOURCE_QUOTA_PERIODIC_UPDATE_H
|
17
|
+
|
18
|
+
#include <grpc/support/port_platform.h>
|
19
|
+
|
20
|
+
#include <inttypes.h>
|
21
|
+
|
22
|
+
#include <atomic>
|
23
|
+
|
24
|
+
#include "absl/functional/function_ref.h"
|
25
|
+
|
26
|
+
#include "src/core/lib/gprpp/time.h"
|
27
|
+
|
28
|
+
namespace grpc_core {
|
29
|
+
|
30
|
+
// Lightweight timer-like mechanism for periodic updates.
|
31
|
+
// Fast path only decrements an atomic int64.
|
32
|
+
// Slow path runs corrections and estimates how many ticks are required to hit
|
33
|
+
// the target period.
|
34
|
+
// This is super inaccurate of course, but for places where we can't run timers,
|
35
|
+
// or places where continuous registration/unregistration would cause problems
|
36
|
+
// it can be quite useful.
|
37
|
+
class PeriodicUpdate {
|
38
|
+
public:
|
39
|
+
explicit PeriodicUpdate(Duration period) : period_(period) {}
|
40
|
+
|
41
|
+
// Tick the update, call f and return true if we think the period expired.
|
42
|
+
bool Tick(absl::FunctionRef<void(Duration)> f) {
|
43
|
+
// Atomically decrement the remaining ticks counter.
|
44
|
+
// If we hit 0 our estimate of period length has expired.
|
45
|
+
// See the comment next to the data members for a description of thread
|
46
|
+
// safety.
|
47
|
+
if (updates_remaining_.fetch_sub(1, std::memory_order_acquire) == 1) {
|
48
|
+
return MaybeEndPeriod(f);
|
49
|
+
}
|
50
|
+
return false;
|
51
|
+
}
|
52
|
+
|
53
|
+
private:
|
54
|
+
bool MaybeEndPeriod(absl::FunctionRef<void(Duration)> f);
|
55
|
+
|
56
|
+
// Thread safety:
|
57
|
+
// When updates_remaining_ reaches 0 the thread that decremented becomes
|
58
|
+
// responsible for updating any mutable variables and then setting
|
59
|
+
// updates_remaining_ to a value greater than zero.
|
60
|
+
// Whilst in this state other threads *may* decrement updates_remaining_, but
|
61
|
+
// this is fine because they'll observe an ignorable negative value.
|
62
|
+
|
63
|
+
std::atomic<int64_t> updates_remaining_{1};
|
64
|
+
const Duration period_;
|
65
|
+
Timestamp period_start_ = Timestamp::ProcessEpoch();
|
66
|
+
int64_t expected_updates_per_period_ = 1;
|
67
|
+
};
|
68
|
+
|
69
|
+
} // namespace grpc_core
|
70
|
+
|
71
|
+
#endif // GRPC_CORE_LIB_RESOURCE_QUOTA_PERIODIC_UPDATE_H
|
@@ -16,6 +16,9 @@
|
|
16
16
|
|
17
17
|
#include "src/core/lib/security/authorization/evaluate_args.h"
|
18
18
|
|
19
|
+
#include <string.h>
|
20
|
+
|
21
|
+
#include "absl/status/status.h"
|
19
22
|
#include "absl/status/statusor.h"
|
20
23
|
#include "absl/strings/match.h"
|
21
24
|
#include "absl/strings/numbers.h"
|
@@ -25,7 +28,6 @@
|
|
25
28
|
|
26
29
|
#include "src/core/lib/address_utils/parse_address.h"
|
27
30
|
#include "src/core/lib/gprpp/host_port.h"
|
28
|
-
#include "src/core/lib/iomgr/error.h"
|
29
31
|
#include "src/core/lib/security/credentials/tls/tls_utils.h"
|
30
32
|
#include "src/core/lib/slice/slice.h"
|
31
33
|
#include "src/core/lib/uri/uri_parser.h"
|
@@ -54,13 +56,14 @@ EvaluateArgs::PerChannelArgs::Address ParseEndpointUri(
|
|
54
56
|
std::string(port_view).c_str());
|
55
57
|
}
|
56
58
|
address.address_str = std::string(host_view);
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
59
|
+
auto resolved_address = StringToSockaddr(uri->path());
|
60
|
+
if (!resolved_address.ok()) {
|
61
|
+
gpr_log(GPR_DEBUG, "Address \"%s\" is not IPv4/IPv6. Error: %s",
|
62
|
+
uri->path().c_str(), resolved_address.status().ToString().c_str());
|
63
|
+
memset(&address.address, 0, sizeof(address.address));
|
64
|
+
} else {
|
65
|
+
address.address = *resolved_address;
|
62
66
|
}
|
63
|
-
GRPC_ERROR_UNREF(error);
|
64
67
|
return address;
|
65
68
|
}
|
66
69
|
|
@@ -29,7 +29,6 @@
|
|
29
29
|
#include "src/core/lib/channel/channel_stack.h"
|
30
30
|
#include "src/core/lib/channel/promise_based_filter.h"
|
31
31
|
#include "src/core/lib/debug/trace.h"
|
32
|
-
#include "src/core/lib/promise/poll.h"
|
33
32
|
#include "src/core/lib/promise/promise.h"
|
34
33
|
#include "src/core/lib/security/authorization/authorization_engine.h"
|
35
34
|
#include "src/core/lib/security/authorization/evaluate_args.h"
|
@@ -47,7 +46,7 @@ GrpcServerAuthzFilter::GrpcServerAuthzFilter(
|
|
47
46
|
provider_(std::move(provider)) {}
|
48
47
|
|
49
48
|
absl::StatusOr<GrpcServerAuthzFilter> GrpcServerAuthzFilter::Create(
|
50
|
-
ChannelArgs args, ChannelFilter::Args) {
|
49
|
+
const ChannelArgs& args, ChannelFilter::Args) {
|
51
50
|
auto* auth_context = args.GetObject<grpc_auth_context>();
|
52
51
|
auto* provider = args.GetObject<grpc_authorization_policy_provider>();
|
53
52
|
if (provider == nullptr) {
|
@@ -38,7 +38,7 @@ class GrpcServerAuthzFilter final : public ChannelFilter {
|
|
38
38
|
public:
|
39
39
|
static const grpc_channel_filter kFilterVtable;
|
40
40
|
|
41
|
-
static absl::StatusOr<GrpcServerAuthzFilter> Create(ChannelArgs args,
|
41
|
+
static absl::StatusOr<GrpcServerAuthzFilter> Create(const ChannelArgs& args,
|
42
42
|
ChannelFilter::Args);
|
43
43
|
|
44
44
|
ArenaPromise<ServerMetadataHandle> MakeCallPromise(
|
@@ -16,10 +16,14 @@
|
|
16
16
|
|
17
17
|
#include "src/core/lib/security/authorization/matchers.h"
|
18
18
|
|
19
|
+
#include <string.h>
|
20
|
+
|
19
21
|
#include <algorithm>
|
20
22
|
#include <string>
|
21
23
|
|
22
24
|
#include "absl/memory/memory.h"
|
25
|
+
#include "absl/status/status.h"
|
26
|
+
#include "absl/status/statusor.h"
|
23
27
|
#include "absl/strings/string_view.h"
|
24
28
|
|
25
29
|
#include <grpc/grpc_security_constants.h>
|
@@ -27,7 +31,6 @@
|
|
27
31
|
|
28
32
|
#include "src/core/lib/address_utils/parse_address.h"
|
29
33
|
#include "src/core/lib/address_utils/sockaddr_utils.h"
|
30
|
-
#include "src/core/lib/iomgr/error.h"
|
31
34
|
|
32
35
|
namespace grpc_core {
|
33
36
|
|
@@ -150,16 +153,16 @@ bool HeaderAuthorizationMatcher::Matches(const EvaluateArgs& args) const {
|
|
150
153
|
|
151
154
|
IpAuthorizationMatcher::IpAuthorizationMatcher(Type type, Rbac::CidrRange range)
|
152
155
|
: type_(type), prefix_len_(range.prefix_len) {
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
range.address_prefix.c_str(), grpc_error_std_string(error).c_str());
|
156
|
+
auto address =
|
157
|
+
StringToSockaddr(range.address_prefix, 0); // Port does not matter here.
|
158
|
+
if (!address.ok()) {
|
159
|
+
gpr_log(GPR_DEBUG, "CidrRange address \"%s\" is not IPv4/IPv6. Error: %s",
|
160
|
+
range.address_prefix.c_str(), address.status().ToString().c_str());
|
161
|
+
memset(&subnet_address_, 0, sizeof(subnet_address_));
|
162
|
+
return;
|
161
163
|
}
|
162
|
-
|
164
|
+
subnet_address_ = *address;
|
165
|
+
grpc_sockaddr_mask_bits(&subnet_address_, prefix_len_);
|
163
166
|
}
|
164
167
|
|
165
168
|
bool IpAuthorizationMatcher::Matches(const EvaluateArgs& args) const {
|
@@ -52,8 +52,7 @@ grpc_alts_credentials::~grpc_alts_credentials() {
|
|
52
52
|
grpc_core::RefCountedPtr<grpc_channel_security_connector>
|
53
53
|
grpc_alts_credentials::create_security_connector(
|
54
54
|
grpc_core::RefCountedPtr<grpc_call_credentials> call_creds,
|
55
|
-
const char* target_name,
|
56
|
-
grpc_channel_args** /*new_args*/) {
|
55
|
+
const char* target_name, grpc_core::ChannelArgs* /*args*/) {
|
57
56
|
return grpc_alts_channel_security_connector_create(
|
58
57
|
this->Ref(), std::move(call_creds), target_name);
|
59
58
|
}
|
@@ -75,7 +74,7 @@ grpc_alts_server_credentials::grpc_alts_server_credentials(
|
|
75
74
|
|
76
75
|
grpc_core::RefCountedPtr<grpc_server_security_connector>
|
77
76
|
grpc_alts_server_credentials::create_security_connector(
|
78
|
-
const
|
77
|
+
const grpc_core::ChannelArgs& /* args */) {
|
79
78
|
return grpc_alts_server_security_connector_create(this->Ref());
|
80
79
|
}
|
81
80
|
|
@@ -23,8 +23,8 @@
|
|
23
23
|
|
24
24
|
#include <grpc/grpc.h>
|
25
25
|
#include <grpc/grpc_security.h>
|
26
|
-
#include <grpc/impl/codegen/grpc_types.h>
|
27
26
|
|
27
|
+
#include "src/core/lib/channel/channel_args.h"
|
28
28
|
#include "src/core/lib/gpr/useful.h"
|
29
29
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
30
30
|
#include "src/core/lib/gprpp/unique_type_name.h"
|
@@ -41,8 +41,7 @@ class grpc_alts_credentials final : public grpc_channel_credentials {
|
|
41
41
|
grpc_core::RefCountedPtr<grpc_channel_security_connector>
|
42
42
|
create_security_connector(
|
43
43
|
grpc_core::RefCountedPtr<grpc_call_credentials> call_creds,
|
44
|
-
const char* target_name,
|
45
|
-
grpc_channel_args** new_args) override;
|
44
|
+
const char* target_name, grpc_core::ChannelArgs* args) override;
|
46
45
|
|
47
46
|
grpc_core::UniqueTypeName type() const override;
|
48
47
|
|
@@ -69,7 +68,7 @@ class grpc_alts_server_credentials final : public grpc_server_credentials {
|
|
69
68
|
~grpc_alts_server_credentials() override;
|
70
69
|
|
71
70
|
grpc_core::RefCountedPtr<grpc_server_security_connector>
|
72
|
-
create_security_connector(const
|
71
|
+
create_security_connector(const grpc_core::ChannelArgs& /* args */) override;
|
73
72
|
|
74
73
|
grpc_core::UniqueTypeName type() const override;
|
75
74
|
|
@@ -31,8 +31,6 @@
|
|
31
31
|
|
32
32
|
#include "src/core/lib/debug/trace.h"
|
33
33
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
34
|
-
#include "src/core/lib/promise/detail/basic_seq.h"
|
35
|
-
#include "src/core/lib/promise/poll.h"
|
36
34
|
#include "src/core/lib/promise/try_seq.h"
|
37
35
|
#include "src/core/lib/surface/api_trace.h"
|
38
36
|
#include "src/core/lib/transport/transport.h"
|
@@ -146,18 +144,16 @@ grpc_call_credentials* grpc_composite_call_credentials_create(
|
|
146
144
|
grpc_core::RefCountedPtr<grpc_channel_security_connector>
|
147
145
|
grpc_composite_channel_credentials::create_security_connector(
|
148
146
|
grpc_core::RefCountedPtr<grpc_call_credentials> call_creds,
|
149
|
-
const char* target,
|
150
|
-
grpc_channel_args** new_args) {
|
147
|
+
const char* target, grpc_core::ChannelArgs* args) {
|
151
148
|
GPR_ASSERT(inner_creds_ != nullptr && call_creds_ != nullptr);
|
152
149
|
/* If we are passed a call_creds, create a call composite to pass it
|
153
150
|
downstream. */
|
154
151
|
if (call_creds != nullptr) {
|
155
152
|
return inner_creds_->create_security_connector(
|
156
153
|
composite_call_credentials_create(call_creds_, std::move(call_creds)),
|
157
|
-
target, args
|
154
|
+
target, args);
|
158
155
|
} else {
|
159
|
-
return inner_creds_->create_security_connector(call_creds_, target, args
|
160
|
-
new_args);
|
156
|
+
return inner_creds_->create_security_connector(call_creds_, target, args);
|
161
157
|
}
|
162
158
|
}
|
163
159
|
|
@@ -31,7 +31,6 @@
|
|
31
31
|
#include <grpc/grpc.h>
|
32
32
|
#include <grpc/grpc_security.h>
|
33
33
|
#include <grpc/grpc_security_constants.h>
|
34
|
-
#include <grpc/impl/codegen/grpc_types.h>
|
35
34
|
|
36
35
|
#include "src/core/lib/channel/channel_args.h"
|
37
36
|
#include "src/core/lib/gpr/useful.h"
|
@@ -62,12 +61,11 @@ class grpc_composite_channel_credentials : public grpc_channel_credentials {
|
|
62
61
|
grpc_core::RefCountedPtr<grpc_channel_security_connector>
|
63
62
|
create_security_connector(
|
64
63
|
grpc_core::RefCountedPtr<grpc_call_credentials> call_creds,
|
65
|
-
const char* target,
|
66
|
-
grpc_channel_args** new_args) override;
|
64
|
+
const char* target, grpc_core::ChannelArgs* args) override;
|
67
65
|
|
68
66
|
grpc_core::ChannelArgs update_arguments(
|
69
67
|
grpc_core::ChannelArgs args) override {
|
70
|
-
return inner_creds_->update_arguments(args);
|
68
|
+
return inner_creds_->update_arguments(std::move(args));
|
71
69
|
}
|
72
70
|
|
73
71
|
grpc_core::UniqueTypeName type() const override;
|
@@ -105,15 +105,12 @@ struct grpc_channel_credentials
|
|
105
105
|
return args1->cmp(args2);
|
106
106
|
}
|
107
107
|
|
108
|
-
// Creates a security connector for the channel.
|
109
|
-
// args for the channel
|
110
|
-
// returned non NULL. In that case the caller is responsible for destroying
|
111
|
-
// new_args after channel creation.
|
108
|
+
// Creates a security connector for the channel. Also updates passed in
|
109
|
+
// channel args for the channel.
|
112
110
|
virtual grpc_core::RefCountedPtr<grpc_channel_security_connector>
|
113
111
|
create_security_connector(
|
114
112
|
grpc_core::RefCountedPtr<grpc_call_credentials> call_creds,
|
115
|
-
const char* target,
|
116
|
-
grpc_channel_args** new_args) = 0;
|
113
|
+
const char* target, grpc_core::ChannelArgs* args) = 0;
|
117
114
|
|
118
115
|
// Creates a version of the channel credentials without any attached call
|
119
116
|
// credentials. This can be used in order to open a channel to a non-trusted
|
@@ -125,9 +122,7 @@ struct grpc_channel_credentials
|
|
125
122
|
}
|
126
123
|
|
127
124
|
// Allows credentials to optionally modify a parent channel's args.
|
128
|
-
// By default, leave channel args as is.
|
129
|
-
// of the passed-in channel args, and the caller takes ownership
|
130
|
-
// of the returned channel args.
|
125
|
+
// By default, leave channel args as is.
|
131
126
|
virtual grpc_core::ChannelArgs update_arguments(grpc_core::ChannelArgs args) {
|
132
127
|
return args;
|
133
128
|
}
|
@@ -253,6 +248,8 @@ grpc_call_credentials* grpc_md_only_test_credentials_create(
|
|
253
248
|
|
254
249
|
/* --- grpc_server_credentials. --- */
|
255
250
|
|
251
|
+
#define GRPC_SERVER_CREDENTIALS_ARG "grpc.internal.server_credentials"
|
252
|
+
|
256
253
|
// This type is forward declared as a C struct and we cannot define it as a
|
257
254
|
// class. Otherwise, compiler will complain about type mismatch due to
|
258
255
|
// -Wmismatched-tags.
|
@@ -261,9 +258,18 @@ struct grpc_server_credentials
|
|
261
258
|
public:
|
262
259
|
~grpc_server_credentials() override { DestroyProcessor(); }
|
263
260
|
|
261
|
+
static absl::string_view ChannelArgName() {
|
262
|
+
return GRPC_SERVER_CREDENTIALS_ARG;
|
263
|
+
}
|
264
|
+
|
265
|
+
static int ChannelArgsCompare(const grpc_server_credentials* a,
|
266
|
+
const grpc_server_credentials* b) {
|
267
|
+
return grpc_core::QsortCompare(a, b);
|
268
|
+
}
|
269
|
+
|
264
270
|
// Ownership of \a args is not passed.
|
265
271
|
virtual grpc_core::RefCountedPtr<grpc_server_security_connector>
|
266
|
-
create_security_connector(const
|
272
|
+
create_security_connector(const grpc_core::ChannelArgs& args) = 0;
|
267
273
|
|
268
274
|
virtual grpc_core::UniqueTypeName type() const = 0;
|
269
275
|
|
@@ -284,8 +290,6 @@ struct grpc_server_credentials
|
|
284
290
|
grpc_auth_metadata_processor(); // Zero-initialize the C struct.
|
285
291
|
};
|
286
292
|
|
287
|
-
#define GRPC_SERVER_CREDENTIALS_ARG "grpc.server_credentials"
|
288
|
-
|
289
293
|
grpc_arg grpc_server_credentials_to_arg(grpc_server_credentials* c);
|
290
294
|
grpc_server_credentials* grpc_server_credentials_from_arg(const grpc_arg* arg);
|
291
295
|
grpc_server_credentials* grpc_find_server_credentials_in_args(
|