grpc 1.48.0-x86_64-linux → 1.49.0.pre1-x86_64-linux
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +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/2.5/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/2.6/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/2.7/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/3.0/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/3.1/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +4 -0
- data/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
@@ -25,7 +25,6 @@
|
|
25
25
|
#include <memory>
|
26
26
|
#include <set>
|
27
27
|
#include <string>
|
28
|
-
#include <type_traits>
|
29
28
|
#include <utility>
|
30
29
|
#include <vector>
|
31
30
|
|
@@ -60,6 +59,7 @@
|
|
60
59
|
#include <grpc/support/log.h>
|
61
60
|
|
62
61
|
#include "src/core/ext/xds/upb_utils.h"
|
62
|
+
#include "src/core/ext/xds/xds_bootstrap.h"
|
63
63
|
#include "src/core/ext/xds/xds_cluster_specifier_plugin.h"
|
64
64
|
#include "src/core/ext/xds/xds_common_types.h"
|
65
65
|
#include "src/core/ext/xds/xds_http_filters.h"
|
@@ -70,11 +70,10 @@
|
|
70
70
|
#include "src/core/lib/debug/trace.h"
|
71
71
|
#include "src/core/lib/gpr/env.h"
|
72
72
|
#include "src/core/lib/gpr/string.h"
|
73
|
-
#include "src/core/lib/gprpp/
|
73
|
+
#include "src/core/lib/gprpp/match.h"
|
74
74
|
#include "src/core/lib/gprpp/time.h"
|
75
75
|
#include "src/core/lib/iomgr/error.h"
|
76
76
|
#include "src/core/lib/matchers/matchers.h"
|
77
|
-
#include "src/core/lib/transport/error_utils.h"
|
78
77
|
|
79
78
|
namespace grpc_core {
|
80
79
|
|
@@ -251,19 +250,23 @@ std::string XdsRouteConfigResource::Route::RouteAction::ToString() const {
|
|
251
250
|
if (retry_policy.has_value()) {
|
252
251
|
contents.push_back(absl::StrCat("retry_policy=", retry_policy->ToString()));
|
253
252
|
}
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
contents
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
253
|
+
Match(
|
254
|
+
action,
|
255
|
+
[&contents](const ClusterName& cluster_name) {
|
256
|
+
contents.push_back(
|
257
|
+
absl::StrFormat("Cluster name: %s", cluster_name.cluster_name));
|
258
|
+
},
|
259
|
+
[&contents](const std::vector<ClusterWeight>& weighted_clusters) {
|
260
|
+
for (const ClusterWeight& cluster_weight : weighted_clusters) {
|
261
|
+
contents.push_back(cluster_weight.ToString());
|
262
|
+
}
|
263
|
+
},
|
264
|
+
[&contents](
|
265
|
+
const ClusterSpecifierPluginName& cluster_specifier_plugin_name) {
|
266
|
+
contents.push_back(absl::StrFormat(
|
267
|
+
"Cluster specifier plugin name: %s",
|
268
|
+
cluster_specifier_plugin_name.cluster_specifier_plugin_name));
|
269
|
+
});
|
267
270
|
if (max_stream_duration.has_value()) {
|
268
271
|
contents.push_back(max_stream_duration->ToString());
|
269
272
|
}
|
@@ -337,10 +340,12 @@ std::string XdsRouteConfigResource::ToString() const {
|
|
337
340
|
|
338
341
|
namespace {
|
339
342
|
|
340
|
-
|
341
|
-
|
342
|
-
const
|
343
|
-
|
343
|
+
absl::StatusOr<XdsRouteConfigResource::ClusterSpecifierPluginMap>
|
344
|
+
ClusterSpecifierPluginParse(
|
345
|
+
const XdsResourceType::DecodeContext& context,
|
346
|
+
const envoy_config_route_v3_RouteConfiguration* route_config) {
|
347
|
+
XdsRouteConfigResource::ClusterSpecifierPluginMap
|
348
|
+
cluster_specifier_plugin_map;
|
344
349
|
size_t num_cluster_specifier_plugins;
|
345
350
|
const envoy_config_route_v3_ClusterSpecifierPlugin* const*
|
346
351
|
cluster_specifier_plugin =
|
@@ -352,21 +357,19 @@ grpc_error_handle ClusterSpecifierPluginParse(
|
|
352
357
|
cluster_specifier_plugin[i]);
|
353
358
|
std::string name = UpbStringToStdString(
|
354
359
|
envoy_config_core_v3_TypedExtensionConfig_name(extension));
|
355
|
-
if (
|
356
|
-
|
357
|
-
return
|
360
|
+
if (cluster_specifier_plugin_map.find(name) !=
|
361
|
+
cluster_specifier_plugin_map.end()) {
|
362
|
+
return absl::InvalidArgumentError(absl::StrCat(
|
358
363
|
"Duplicated definition of cluster_specifier_plugin ", name));
|
359
364
|
}
|
360
365
|
const google_protobuf_Any* any =
|
361
366
|
envoy_config_core_v3_TypedExtensionConfig_typed_config(extension);
|
362
367
|
if (any == nullptr) {
|
363
|
-
return
|
368
|
+
return absl::InvalidArgumentError(
|
364
369
|
"Could not obtrain TypedExtensionConfig for plugin config.");
|
365
370
|
}
|
366
371
|
auto plugin_type = ExtractExtensionTypeName(context, any);
|
367
|
-
if (!plugin_type.ok())
|
368
|
-
return absl_status_to_grpc_error(plugin_type.status());
|
369
|
-
}
|
372
|
+
if (!plugin_type.ok()) return plugin_type.status();
|
370
373
|
bool is_optional = envoy_config_route_v3_ClusterSpecifierPlugin_is_optional(
|
371
374
|
cluster_specifier_plugin[i]);
|
372
375
|
const XdsClusterSpecifierPluginImpl* cluster_specifier_plugin_impl =
|
@@ -374,7 +377,7 @@ grpc_error_handle ClusterSpecifierPluginParse(
|
|
374
377
|
std::string lb_policy_config;
|
375
378
|
if (cluster_specifier_plugin_impl == nullptr) {
|
376
379
|
if (!is_optional) {
|
377
|
-
return
|
380
|
+
return absl::InvalidArgumentError(absl::StrCat(
|
378
381
|
"Unknown ClusterSpecifierPlugin type ", plugin_type->type));
|
379
382
|
}
|
380
383
|
// Optional plugin, leave lb_policy_config empty.
|
@@ -382,20 +385,17 @@ grpc_error_handle ClusterSpecifierPluginParse(
|
|
382
385
|
auto config =
|
383
386
|
cluster_specifier_plugin_impl->GenerateLoadBalancingPolicyConfig(
|
384
387
|
google_protobuf_Any_value(any), context.arena, context.symtab);
|
385
|
-
if (!config.ok())
|
386
|
-
return absl_status_to_grpc_error(config.status());
|
387
|
-
}
|
388
|
+
if (!config.ok()) return config.status();
|
388
389
|
lb_policy_config = std::move(*config);
|
389
390
|
}
|
390
|
-
|
391
|
-
std::move(lb_policy_config);
|
391
|
+
cluster_specifier_plugin_map[std::move(name)] = std::move(lb_policy_config);
|
392
392
|
}
|
393
|
-
return
|
393
|
+
return cluster_specifier_plugin_map;
|
394
394
|
}
|
395
395
|
|
396
|
-
|
397
|
-
|
398
|
-
|
396
|
+
absl::Status RoutePathMatchParse(const envoy_config_route_v3_RouteMatch* match,
|
397
|
+
XdsRouteConfigResource::Route* route,
|
398
|
+
bool* ignore_route) {
|
399
399
|
auto* case_sensitive_ptr =
|
400
400
|
envoy_config_route_v3_RouteMatch_case_sensitive(match);
|
401
401
|
bool case_sensitive = true;
|
@@ -414,18 +414,18 @@ grpc_error_handle RoutePathMatchParse(
|
|
414
414
|
// Prefix which does not start with a / will never match anything, so
|
415
415
|
// ignore this route.
|
416
416
|
*ignore_route = true;
|
417
|
-
return
|
417
|
+
return absl::OkStatus();
|
418
418
|
}
|
419
419
|
std::vector<absl::string_view> prefix_elements =
|
420
420
|
absl::StrSplit(prefix.substr(1), absl::MaxSplits('/', 2));
|
421
421
|
if (prefix_elements.size() > 2) {
|
422
422
|
// Prefix cannot have more than 2 slashes.
|
423
423
|
*ignore_route = true;
|
424
|
-
return
|
424
|
+
return absl::OkStatus();
|
425
425
|
} else if (prefix_elements.size() == 2 && prefix_elements[0].empty()) {
|
426
426
|
// Prefix contains empty string between the 2 slashes
|
427
427
|
*ignore_route = true;
|
428
|
-
return
|
428
|
+
return absl::OkStatus();
|
429
429
|
}
|
430
430
|
}
|
431
431
|
type = StringMatcher::Type::kPrefix;
|
@@ -436,13 +436,13 @@ grpc_error_handle RoutePathMatchParse(
|
|
436
436
|
if (path.empty()) {
|
437
437
|
// Path that is empty will never match anything, so ignore this route.
|
438
438
|
*ignore_route = true;
|
439
|
-
return
|
439
|
+
return absl::OkStatus();
|
440
440
|
}
|
441
441
|
if (path[0] != '/') {
|
442
442
|
// Path which does not start with a / will never match anything, so
|
443
443
|
// ignore this route.
|
444
444
|
*ignore_route = true;
|
445
|
-
return
|
445
|
+
return absl::OkStatus();
|
446
446
|
}
|
447
447
|
std::vector<absl::string_view> path_elements =
|
448
448
|
absl::StrSplit(path.substr(1), absl::MaxSplits('/', 2));
|
@@ -450,17 +450,17 @@ grpc_error_handle RoutePathMatchParse(
|
|
450
450
|
// Path not in the required format of /service/method will never match
|
451
451
|
// anything, so ignore this route.
|
452
452
|
*ignore_route = true;
|
453
|
-
return
|
453
|
+
return absl::OkStatus();
|
454
454
|
} else if (path_elements[0].empty()) {
|
455
455
|
// Path contains empty service name will never match anything, so ignore
|
456
456
|
// this route.
|
457
457
|
*ignore_route = true;
|
458
|
-
return
|
458
|
+
return absl::OkStatus();
|
459
459
|
} else if (path_elements[1].empty()) {
|
460
460
|
// Path contains empty method name will never match anything, so ignore
|
461
461
|
// this route.
|
462
462
|
*ignore_route = true;
|
463
|
-
return
|
463
|
+
return absl::OkStatus();
|
464
464
|
}
|
465
465
|
type = StringMatcher::Type::kExact;
|
466
466
|
match_string = std::string(path);
|
@@ -472,20 +472,20 @@ grpc_error_handle RoutePathMatchParse(
|
|
472
472
|
match_string = UpbStringToStdString(
|
473
473
|
envoy_type_matcher_v3_RegexMatcher_regex(regex_matcher));
|
474
474
|
} else {
|
475
|
-
return
|
475
|
+
return absl::InvalidArgumentError(
|
476
476
|
"Invalid route path specifier specified.");
|
477
477
|
}
|
478
478
|
absl::StatusOr<StringMatcher> string_matcher =
|
479
479
|
StringMatcher::Create(type, match_string, case_sensitive);
|
480
480
|
if (!string_matcher.ok()) {
|
481
|
-
return
|
481
|
+
return absl::InvalidArgumentError(
|
482
482
|
absl::StrCat("path matcher: ", string_matcher.status().message()));
|
483
483
|
}
|
484
484
|
route->matchers.path_matcher = std::move(string_matcher.value());
|
485
|
-
return
|
485
|
+
return absl::OkStatus();
|
486
486
|
}
|
487
487
|
|
488
|
-
|
488
|
+
absl::Status RouteHeaderMatchersParse(
|
489
489
|
const envoy_config_route_v3_RouteMatch* match,
|
490
490
|
XdsRouteConfigResource::Route* route) {
|
491
491
|
size_t size;
|
@@ -534,7 +534,7 @@ grpc_error_handle RouteHeaderMatchersParse(
|
|
534
534
|
match_string = UpbStringToStdString(
|
535
535
|
envoy_config_route_v3_HeaderMatcher_contains_match(header));
|
536
536
|
} else {
|
537
|
-
return
|
537
|
+
return absl::InvalidArgumentError(
|
538
538
|
"Invalid route header matcher specified.");
|
539
539
|
}
|
540
540
|
bool invert_match =
|
@@ -543,16 +543,16 @@ grpc_error_handle RouteHeaderMatchersParse(
|
|
543
543
|
HeaderMatcher::Create(name, type, match_string, range_start, range_end,
|
544
544
|
present_match, invert_match);
|
545
545
|
if (!header_matcher.ok()) {
|
546
|
-
return
|
546
|
+
return absl::InvalidArgumentError(
|
547
547
|
absl::StrCat("header matcher: ", header_matcher.status().message()));
|
548
548
|
}
|
549
549
|
route->matchers.header_matchers.emplace_back(
|
550
550
|
std::move(header_matcher.value()));
|
551
551
|
}
|
552
|
-
return
|
552
|
+
return absl::OkStatus();
|
553
553
|
}
|
554
554
|
|
555
|
-
|
555
|
+
absl::Status RouteRuntimeFractionParse(
|
556
556
|
const envoy_config_route_v3_RouteMatch* match,
|
557
557
|
XdsRouteConfigResource::Route* route) {
|
558
558
|
const envoy_config_core_v3_RuntimeFractionalPercent* runtime_fraction =
|
@@ -577,8 +577,7 @@ grpc_error_handle RouteRuntimeFractionParse(
|
|
577
577
|
case envoy_type_v3_FractionalPercent_MILLION:
|
578
578
|
break;
|
579
579
|
default:
|
580
|
-
return
|
581
|
-
"Unknown denominator type");
|
580
|
+
return absl::InvalidArgumentError("Unknown denominator type");
|
582
581
|
}
|
583
582
|
route->matchers.fraction_per_million = numerator;
|
584
583
|
}
|
@@ -587,26 +586,27 @@ grpc_error_handle RouteRuntimeFractionParse(
|
|
587
586
|
}
|
588
587
|
|
589
588
|
template <typename ParentType, typename EntryType>
|
590
|
-
|
591
|
-
|
589
|
+
absl::StatusOr<XdsRouteConfigResource::TypedPerFilterConfig>
|
590
|
+
ParseTypedPerFilterConfig(
|
591
|
+
const XdsResourceType::DecodeContext& context, const ParentType* parent,
|
592
592
|
const EntryType* (*entry_func)(const ParentType*, size_t*),
|
593
593
|
upb_StringView (*key_func)(const EntryType*),
|
594
|
-
const google_protobuf_Any* (*value_func)(const EntryType*)
|
595
|
-
|
594
|
+
const google_protobuf_Any* (*value_func)(const EntryType*)) {
|
595
|
+
XdsRouteConfigResource::TypedPerFilterConfig typed_per_filter_config;
|
596
596
|
size_t filter_it = kUpb_Map_Begin;
|
597
597
|
while (true) {
|
598
598
|
const auto* filter_entry = entry_func(parent, &filter_it);
|
599
599
|
if (filter_entry == nullptr) break;
|
600
600
|
absl::string_view key = UpbStringToAbsl(key_func(filter_entry));
|
601
601
|
if (key.empty()) {
|
602
|
-
return
|
602
|
+
return absl::InvalidArgumentError("empty filter name in map");
|
603
603
|
}
|
604
604
|
const google_protobuf_Any* any = value_func(filter_entry);
|
605
605
|
GPR_ASSERT(any != nullptr);
|
606
606
|
absl::string_view filter_type =
|
607
607
|
UpbStringToAbsl(google_protobuf_Any_type_url(any));
|
608
608
|
if (filter_type.empty()) {
|
609
|
-
return
|
609
|
+
return absl::InvalidArgumentError(
|
610
610
|
absl::StrCat("no filter config specified for filter name ", key));
|
611
611
|
}
|
612
612
|
bool is_optional = false;
|
@@ -616,7 +616,7 @@ grpc_error_handle ParseTypedPerFilterConfig(
|
|
616
616
|
const auto* filter_config = envoy_config_route_v3_FilterConfig_parse(
|
617
617
|
any_value.data, any_value.size, context.arena);
|
618
618
|
if (filter_config == nullptr) {
|
619
|
-
return
|
619
|
+
return absl::InvalidArgumentError(
|
620
620
|
absl::StrCat("could not parse FilterConfig wrapper for ", key));
|
621
621
|
}
|
622
622
|
is_optional =
|
@@ -624,39 +624,37 @@ grpc_error_handle ParseTypedPerFilterConfig(
|
|
624
624
|
any = envoy_config_route_v3_FilterConfig_config(filter_config);
|
625
625
|
if (any == nullptr) {
|
626
626
|
if (is_optional) continue;
|
627
|
-
return
|
627
|
+
return absl::InvalidArgumentError(
|
628
628
|
absl::StrCat("no filter config specified for filter name ", key));
|
629
629
|
}
|
630
630
|
}
|
631
631
|
auto type = ExtractExtensionTypeName(context, any);
|
632
|
-
if (!type.ok())
|
633
|
-
return absl_status_to_grpc_error(type.status());
|
634
|
-
}
|
632
|
+
if (!type.ok()) return type.status();
|
635
633
|
const XdsHttpFilterImpl* filter_impl =
|
636
634
|
XdsHttpFilterRegistry::GetFilterForType(type->type);
|
637
635
|
if (filter_impl == nullptr) {
|
638
636
|
if (is_optional) continue;
|
639
|
-
return
|
637
|
+
return absl::InvalidArgumentError(
|
640
638
|
absl::StrCat("no filter registered for config type ", type->type));
|
641
639
|
}
|
642
640
|
absl::StatusOr<XdsHttpFilterImpl::FilterConfig> filter_config =
|
643
641
|
filter_impl->GenerateFilterConfigOverride(
|
644
642
|
google_protobuf_Any_value(any), context.arena);
|
645
643
|
if (!filter_config.ok()) {
|
646
|
-
return
|
647
|
-
"filter config for type ", type->type,
|
648
|
-
|
644
|
+
return absl::InvalidArgumentError(
|
645
|
+
absl::StrCat("filter config for type ", type->type,
|
646
|
+
" failed to parse: ", filter_config.status().message()));
|
649
647
|
}
|
650
|
-
|
648
|
+
typed_per_filter_config[std::string(key)] = std::move(*filter_config);
|
651
649
|
}
|
652
|
-
return
|
650
|
+
return typed_per_filter_config;
|
653
651
|
}
|
654
652
|
|
655
|
-
|
656
|
-
const
|
653
|
+
absl::Status RetryPolicyParse(
|
654
|
+
const XdsResourceType::DecodeContext& context,
|
657
655
|
const envoy_config_route_v3_RetryPolicy* retry_policy,
|
658
656
|
absl::optional<XdsRouteConfigResource::RetryPolicy>* retry) {
|
659
|
-
std::vector<
|
657
|
+
std::vector<std::string> errors;
|
660
658
|
XdsRouteConfigResource::RetryPolicy retry_to_return;
|
661
659
|
auto retry_on = UpbStringToStdString(
|
662
660
|
envoy_config_route_v3_RetryPolicy_retry_on(retry_policy));
|
@@ -684,8 +682,8 @@ grpc_error_handle RetryPolicyParse(
|
|
684
682
|
if (num_retries != nullptr) {
|
685
683
|
uint32_t num_retries_value = google_protobuf_UInt32Value_value(num_retries);
|
686
684
|
if (num_retries_value == 0) {
|
687
|
-
errors.
|
688
|
-
"RouteAction RetryPolicy num_retries set to invalid value 0.")
|
685
|
+
errors.emplace_back(
|
686
|
+
"RouteAction RetryPolicy num_retries set to invalid value 0.");
|
689
687
|
} else {
|
690
688
|
retry_to_return.num_retries = num_retries_value;
|
691
689
|
}
|
@@ -698,8 +696,8 @@ grpc_error_handle RetryPolicyParse(
|
|
698
696
|
const google_protobuf_Duration* base_interval =
|
699
697
|
envoy_config_route_v3_RetryPolicy_RetryBackOff_base_interval(backoff);
|
700
698
|
if (base_interval == nullptr) {
|
701
|
-
errors.
|
702
|
-
"RouteAction RetryPolicy RetryBackoff missing base interval.")
|
699
|
+
errors.emplace_back(
|
700
|
+
"RouteAction RetryPolicy RetryBackoff missing base interval.");
|
703
701
|
} else {
|
704
702
|
retry_to_return.retry_back_off.base_interval =
|
705
703
|
ParseDuration(base_interval);
|
@@ -718,22 +716,23 @@ grpc_error_handle RetryPolicyParse(
|
|
718
716
|
retry_to_return.retry_back_off.base_interval = Duration::Milliseconds(25);
|
719
717
|
retry_to_return.retry_back_off.max_interval = Duration::Milliseconds(250);
|
720
718
|
}
|
721
|
-
|
722
|
-
|
723
|
-
return
|
724
|
-
|
725
|
-
return GRPC_ERROR_CREATE_FROM_VECTOR("errors parsing retry policy",
|
726
|
-
&errors);
|
719
|
+
// Return result.
|
720
|
+
if (!errors.empty()) {
|
721
|
+
return absl::InvalidArgumentError(absl::StrCat(
|
722
|
+
"Errors parsing retry policy: [", absl::StrJoin(errors, "; "), "]"));
|
727
723
|
}
|
724
|
+
*retry = retry_to_return;
|
725
|
+
return absl::OkStatus();
|
728
726
|
}
|
729
727
|
|
730
|
-
|
731
|
-
const
|
728
|
+
absl::StatusOr<XdsRouteConfigResource::Route::RouteAction> RouteActionParse(
|
729
|
+
const XdsResourceType::DecodeContext& context,
|
732
730
|
const envoy_config_route_v3_Route* route_msg,
|
733
731
|
const std::map<std::string /*cluster_specifier_plugin_name*/,
|
734
732
|
std::string /*LB policy config*/>&
|
735
733
|
cluster_specifier_plugin_map,
|
736
|
-
|
734
|
+
bool* ignore_route) {
|
735
|
+
XdsRouteConfigResource::Route::RouteAction route;
|
737
736
|
const envoy_config_route_v3_RouteAction* route_action =
|
738
737
|
envoy_config_route_v3_Route_route(route_msg);
|
739
738
|
// Get the cluster or weighted_clusters in the RouteAction.
|
@@ -741,12 +740,11 @@ grpc_error_handle RouteActionParse(
|
|
741
740
|
std::string cluster_name = UpbStringToStdString(
|
742
741
|
envoy_config_route_v3_RouteAction_cluster(route_action));
|
743
742
|
if (cluster_name.empty()) {
|
744
|
-
return
|
743
|
+
return absl::InvalidArgumentError(
|
745
744
|
"RouteAction cluster contains empty cluster name.");
|
746
745
|
}
|
747
|
-
route
|
748
|
-
|
749
|
-
std::move(cluster_name));
|
746
|
+
route.action = XdsRouteConfigResource::Route::RouteAction::ClusterName{
|
747
|
+
std::move(cluster_name)};
|
750
748
|
} else if (envoy_config_route_v3_RouteAction_has_weighted_clusters(
|
751
749
|
route_action)) {
|
752
750
|
std::vector<XdsRouteConfigResource::Route::RouteAction::ClusterWeight>
|
@@ -772,7 +770,7 @@ grpc_error_handle RouteActionParse(
|
|
772
770
|
envoy_config_route_v3_WeightedCluster_ClusterWeight_name(
|
773
771
|
cluster_weight));
|
774
772
|
if (cluster.name.empty()) {
|
775
|
-
return
|
773
|
+
return absl::InvalidArgumentError(
|
776
774
|
"RouteAction weighted_cluster cluster contains empty cluster "
|
777
775
|
"name.");
|
778
776
|
}
|
@@ -780,34 +778,36 @@ grpc_error_handle RouteActionParse(
|
|
780
778
|
envoy_config_route_v3_WeightedCluster_ClusterWeight_weight(
|
781
779
|
cluster_weight);
|
782
780
|
if (weight == nullptr) {
|
783
|
-
return
|
781
|
+
return absl::InvalidArgumentError(
|
784
782
|
"RouteAction weighted_cluster cluster missing weight");
|
785
783
|
}
|
786
784
|
cluster.weight = google_protobuf_UInt32Value_value(weight);
|
787
785
|
if (cluster.weight == 0) continue;
|
788
786
|
sum_of_weights += cluster.weight;
|
789
|
-
if (context.
|
790
|
-
|
787
|
+
if (context.server.ShouldUseV3()) {
|
788
|
+
auto typed_per_filter_config = ParseTypedPerFilterConfig<
|
791
789
|
envoy_config_route_v3_WeightedCluster_ClusterWeight,
|
792
790
|
envoy_config_route_v3_WeightedCluster_ClusterWeight_TypedPerFilterConfigEntry>(
|
793
791
|
context, cluster_weight,
|
794
792
|
envoy_config_route_v3_WeightedCluster_ClusterWeight_typed_per_filter_config_next,
|
795
793
|
envoy_config_route_v3_WeightedCluster_ClusterWeight_TypedPerFilterConfigEntry_key,
|
796
|
-
envoy_config_route_v3_WeightedCluster_ClusterWeight_TypedPerFilterConfigEntry_value
|
797
|
-
|
798
|
-
|
794
|
+
envoy_config_route_v3_WeightedCluster_ClusterWeight_TypedPerFilterConfigEntry_value);
|
795
|
+
if (!typed_per_filter_config.ok()) {
|
796
|
+
return typed_per_filter_config.status();
|
797
|
+
}
|
798
|
+
cluster.typed_per_filter_config = std::move(*typed_per_filter_config);
|
799
799
|
}
|
800
800
|
action_weighted_clusters.emplace_back(std::move(cluster));
|
801
801
|
}
|
802
802
|
if (total_weight != sum_of_weights) {
|
803
|
-
return
|
803
|
+
return absl::InvalidArgumentError(
|
804
804
|
"RouteAction weighted_cluster has incorrect total weight");
|
805
805
|
}
|
806
806
|
if (action_weighted_clusters.empty()) {
|
807
|
-
return
|
807
|
+
return absl::InvalidArgumentError(
|
808
808
|
"RouteAction weighted_cluster has no valid clusters specified.");
|
809
809
|
}
|
810
|
-
route
|
810
|
+
route.action = std::move(action_weighted_clusters);
|
811
811
|
} else if (XdsRlsEnabled() &&
|
812
812
|
envoy_config_route_v3_RouteAction_has_cluster_specifier_plugin(
|
813
813
|
route_action)) {
|
@@ -815,20 +815,20 @@ grpc_error_handle RouteActionParse(
|
|
815
815
|
envoy_config_route_v3_RouteAction_cluster_specifier_plugin(
|
816
816
|
route_action));
|
817
817
|
if (plugin_name.empty()) {
|
818
|
-
return
|
818
|
+
return absl::InvalidArgumentError(
|
819
819
|
"RouteAction cluster contains empty cluster specifier plugin name.");
|
820
820
|
}
|
821
821
|
auto it = cluster_specifier_plugin_map.find(plugin_name);
|
822
822
|
if (it == cluster_specifier_plugin_map.end()) {
|
823
|
-
return
|
823
|
+
return absl::InvalidArgumentError(
|
824
824
|
absl::StrCat("RouteAction cluster contains cluster specifier plugin "
|
825
825
|
"name not configured: ",
|
826
826
|
plugin_name));
|
827
827
|
}
|
828
828
|
if (it->second.empty()) *ignore_route = true;
|
829
|
-
route
|
830
|
-
|
831
|
-
|
829
|
+
route.action =
|
830
|
+
XdsRouteConfigResource::Route::RouteAction::ClusterSpecifierPluginName{
|
831
|
+
std::move(plugin_name)};
|
832
832
|
} else {
|
833
833
|
// No cluster or weighted_clusters or plugin found in RouteAction, ignore
|
834
834
|
// this route.
|
@@ -848,7 +848,7 @@ grpc_error_handle RouteActionParse(
|
|
848
848
|
max_stream_duration);
|
849
849
|
}
|
850
850
|
if (duration != nullptr) {
|
851
|
-
route
|
851
|
+
route.max_stream_duration = ParseDuration(duration);
|
852
852
|
}
|
853
853
|
}
|
854
854
|
}
|
@@ -926,31 +926,35 @@ grpc_error_handle RouteActionParse(
|
|
926
926
|
"RouteAction HashPolicy contains unsupported policy specifier.");
|
927
927
|
continue;
|
928
928
|
}
|
929
|
-
route
|
929
|
+
route.hash_policies.emplace_back(std::move(policy));
|
930
930
|
}
|
931
931
|
// Get retry policy
|
932
932
|
const envoy_config_route_v3_RetryPolicy* retry_policy =
|
933
933
|
envoy_config_route_v3_RouteAction_retry_policy(route_action);
|
934
934
|
if (retry_policy != nullptr) {
|
935
935
|
absl::optional<XdsRouteConfigResource::RetryPolicy> retry;
|
936
|
-
|
937
|
-
if (!
|
938
|
-
route
|
936
|
+
absl::Status status = RetryPolicyParse(context, retry_policy, &retry);
|
937
|
+
if (!status.ok()) return status;
|
938
|
+
route.retry_policy = retry;
|
939
939
|
}
|
940
|
-
return
|
940
|
+
return route;
|
941
941
|
}
|
942
942
|
|
943
943
|
} // namespace
|
944
944
|
|
945
|
-
|
946
|
-
const
|
947
|
-
const envoy_config_route_v3_RouteConfiguration* route_config
|
948
|
-
|
945
|
+
absl::StatusOr<XdsRouteConfigResource> XdsRouteConfigResource::Parse(
|
946
|
+
const XdsResourceType::DecodeContext& context,
|
947
|
+
const envoy_config_route_v3_RouteConfiguration* route_config) {
|
948
|
+
XdsRouteConfigResource rds_update;
|
949
949
|
// Get the cluster spcifier plugins
|
950
950
|
if (XdsRlsEnabled()) {
|
951
|
-
|
952
|
-
ClusterSpecifierPluginParse(context, route_config
|
953
|
-
if (!
|
951
|
+
auto cluster_specifier_plugin_map =
|
952
|
+
ClusterSpecifierPluginParse(context, route_config);
|
953
|
+
if (!cluster_specifier_plugin_map.ok()) {
|
954
|
+
return cluster_specifier_plugin_map.status();
|
955
|
+
}
|
956
|
+
rds_update.cluster_specifier_plugin_map =
|
957
|
+
std::move(*cluster_specifier_plugin_map);
|
954
958
|
}
|
955
959
|
// Get the virtual hosts.
|
956
960
|
size_t num_virtual_hosts;
|
@@ -958,9 +962,9 @@ grpc_error_handle XdsRouteConfigResource::Parse(
|
|
958
962
|
envoy_config_route_v3_RouteConfiguration_virtual_hosts(
|
959
963
|
route_config, &num_virtual_hosts);
|
960
964
|
for (size_t i = 0; i < num_virtual_hosts; ++i) {
|
961
|
-
rds_update
|
965
|
+
rds_update.virtual_hosts.emplace_back();
|
962
966
|
XdsRouteConfigResource::VirtualHost& vhost =
|
963
|
-
rds_update
|
967
|
+
rds_update.virtual_hosts.back();
|
964
968
|
// Parse domains.
|
965
969
|
size_t domain_size;
|
966
970
|
upb_StringView const* domains = envoy_config_route_v3_VirtualHost_domains(
|
@@ -968,25 +972,27 @@ grpc_error_handle XdsRouteConfigResource::Parse(
|
|
968
972
|
for (size_t j = 0; j < domain_size; ++j) {
|
969
973
|
std::string domain_pattern = UpbStringToStdString(domains[j]);
|
970
974
|
if (!XdsRouting::IsValidDomainPattern(domain_pattern)) {
|
971
|
-
return
|
975
|
+
return absl::InvalidArgumentError(
|
972
976
|
absl::StrCat("Invalid domain pattern \"", domain_pattern, "\"."));
|
973
977
|
}
|
974
978
|
vhost.domains.emplace_back(std::move(domain_pattern));
|
975
979
|
}
|
976
980
|
if (vhost.domains.empty()) {
|
977
|
-
return
|
981
|
+
return absl::InvalidArgumentError("VirtualHost has no domains");
|
978
982
|
}
|
979
983
|
// Parse typed_per_filter_config.
|
980
|
-
if (context.
|
981
|
-
|
984
|
+
if (context.server.ShouldUseV3()) {
|
985
|
+
auto typed_per_filter_config = ParseTypedPerFilterConfig<
|
982
986
|
envoy_config_route_v3_VirtualHost,
|
983
987
|
envoy_config_route_v3_VirtualHost_TypedPerFilterConfigEntry>(
|
984
988
|
context, virtual_hosts[i],
|
985
989
|
envoy_config_route_v3_VirtualHost_typed_per_filter_config_next,
|
986
990
|
envoy_config_route_v3_VirtualHost_TypedPerFilterConfigEntry_key,
|
987
|
-
envoy_config_route_v3_VirtualHost_TypedPerFilterConfigEntry_value
|
988
|
-
|
989
|
-
|
991
|
+
envoy_config_route_v3_VirtualHost_TypedPerFilterConfigEntry_value);
|
992
|
+
if (!typed_per_filter_config.ok()) {
|
993
|
+
return typed_per_filter_config.status();
|
994
|
+
}
|
995
|
+
vhost.typed_per_filter_config = std::move(*typed_per_filter_config);
|
990
996
|
}
|
991
997
|
// Parse retry policy.
|
992
998
|
absl::optional<XdsRouteConfigResource::RetryPolicy>
|
@@ -994,22 +1000,21 @@ grpc_error_handle XdsRouteConfigResource::Parse(
|
|
994
1000
|
const envoy_config_route_v3_RetryPolicy* retry_policy =
|
995
1001
|
envoy_config_route_v3_VirtualHost_retry_policy(virtual_hosts[i]);
|
996
1002
|
if (retry_policy != nullptr) {
|
997
|
-
|
1003
|
+
absl::Status status =
|
998
1004
|
RetryPolicyParse(context, retry_policy, &virtual_host_retry_policy);
|
999
|
-
if (!
|
1005
|
+
if (!status.ok()) return status;
|
1000
1006
|
}
|
1001
1007
|
// Parse routes.
|
1002
1008
|
size_t num_routes;
|
1003
1009
|
const envoy_config_route_v3_Route* const* routes =
|
1004
1010
|
envoy_config_route_v3_VirtualHost_routes(virtual_hosts[i], &num_routes);
|
1005
1011
|
if (num_routes < 1) {
|
1006
|
-
return
|
1007
|
-
"No route found in the virtual host.");
|
1012
|
+
return absl::InvalidArgumentError("No route found in the virtual host.");
|
1008
1013
|
}
|
1009
1014
|
// Build a set of cluster_specifier_plugin configured to make sure each is
|
1010
1015
|
// actually referenced by a route action.
|
1011
1016
|
std::set<absl::string_view> cluster_specifier_plugins;
|
1012
|
-
for (auto& plugin : rds_update
|
1017
|
+
for (auto& plugin : rds_update.cluster_specifier_plugin_map) {
|
1013
1018
|
cluster_specifier_plugins.emplace(plugin.first);
|
1014
1019
|
}
|
1015
1020
|
// Loop over the whole list of routes
|
@@ -1017,7 +1022,7 @@ grpc_error_handle XdsRouteConfigResource::Parse(
|
|
1017
1022
|
const envoy_config_route_v3_RouteMatch* match =
|
1018
1023
|
envoy_config_route_v3_Route_match(routes[j]);
|
1019
1024
|
if (match == nullptr) {
|
1020
|
-
return
|
1025
|
+
return absl::InvalidArgumentError("Match can't be null.");
|
1021
1026
|
}
|
1022
1027
|
size_t query_parameters_size;
|
1023
1028
|
static_cast<void>(envoy_config_route_v3_RouteMatch_query_parameters(
|
@@ -1027,64 +1032,63 @@ grpc_error_handle XdsRouteConfigResource::Parse(
|
|
1027
1032
|
}
|
1028
1033
|
XdsRouteConfigResource::Route route;
|
1029
1034
|
bool ignore_route = false;
|
1030
|
-
|
1031
|
-
|
1032
|
-
if (!GRPC_ERROR_IS_NONE(error)) return error;
|
1035
|
+
absl::Status status = RoutePathMatchParse(match, &route, &ignore_route);
|
1036
|
+
if (!status.ok()) return status;
|
1033
1037
|
if (ignore_route) continue;
|
1034
|
-
|
1035
|
-
if (!
|
1036
|
-
|
1037
|
-
if (!
|
1038
|
+
status = RouteHeaderMatchersParse(match, &route);
|
1039
|
+
if (!status.ok()) return status;
|
1040
|
+
status = RouteRuntimeFractionParse(match, &route);
|
1041
|
+
if (!status.ok()) return status;
|
1038
1042
|
if (envoy_config_route_v3_Route_has_route(routes[j])) {
|
1039
1043
|
route.action.emplace<XdsRouteConfigResource::Route::RouteAction>();
|
1040
|
-
auto
|
1041
|
-
|
1042
|
-
|
1043
|
-
|
1044
|
-
&route_action, &ignore_route);
|
1045
|
-
if (!GRPC_ERROR_IS_NONE(error)) return error;
|
1044
|
+
auto route_action = RouteActionParse(
|
1045
|
+
context, routes[j], rds_update.cluster_specifier_plugin_map,
|
1046
|
+
&ignore_route);
|
1047
|
+
if (!route_action.ok()) return route_action.status();
|
1046
1048
|
if (ignore_route) continue;
|
1047
|
-
if (route_action
|
1049
|
+
if (route_action->retry_policy == absl::nullopt &&
|
1048
1050
|
retry_policy != nullptr) {
|
1049
|
-
route_action
|
1051
|
+
route_action->retry_policy = virtual_host_retry_policy;
|
1050
1052
|
}
|
1051
1053
|
// Mark off plugins used in route action.
|
1052
|
-
|
1054
|
+
auto* cluster_specifier_action =
|
1053
1055
|
absl::get_if<XdsRouteConfigResource::Route::RouteAction::
|
1054
|
-
|
1055
|
-
&route_action.action);
|
1056
|
+
ClusterSpecifierPluginName>(&route_action->action);
|
1056
1057
|
if (cluster_specifier_action != nullptr) {
|
1057
|
-
cluster_specifier_plugins.erase(
|
1058
|
+
cluster_specifier_plugins.erase(
|
1059
|
+
cluster_specifier_action->cluster_specifier_plugin_name);
|
1058
1060
|
}
|
1061
|
+
route.action = std::move(*route_action);
|
1059
1062
|
} else if (envoy_config_route_v3_Route_has_non_forwarding_action(
|
1060
1063
|
routes[j])) {
|
1061
1064
|
route.action
|
1062
1065
|
.emplace<XdsRouteConfigResource::Route::NonForwardingAction>();
|
1063
1066
|
}
|
1064
|
-
if (context.
|
1065
|
-
|
1067
|
+
if (context.server.ShouldUseV3()) {
|
1068
|
+
auto typed_per_filter_config = ParseTypedPerFilterConfig<
|
1066
1069
|
envoy_config_route_v3_Route,
|
1067
1070
|
envoy_config_route_v3_Route_TypedPerFilterConfigEntry>(
|
1068
1071
|
context, routes[j],
|
1069
1072
|
envoy_config_route_v3_Route_typed_per_filter_config_next,
|
1070
1073
|
envoy_config_route_v3_Route_TypedPerFilterConfigEntry_key,
|
1071
|
-
envoy_config_route_v3_Route_TypedPerFilterConfigEntry_value
|
1072
|
-
|
1073
|
-
|
1074
|
+
envoy_config_route_v3_Route_TypedPerFilterConfigEntry_value);
|
1075
|
+
if (!typed_per_filter_config.ok()) {
|
1076
|
+
return typed_per_filter_config.status();
|
1077
|
+
}
|
1078
|
+
route.typed_per_filter_config = std::move(*typed_per_filter_config);
|
1074
1079
|
}
|
1075
1080
|
vhost.routes.emplace_back(std::move(route));
|
1076
1081
|
}
|
1077
1082
|
if (vhost.routes.empty()) {
|
1078
|
-
return
|
1083
|
+
return absl::InvalidArgumentError("No valid routes specified.");
|
1079
1084
|
}
|
1080
1085
|
// For plugins not used in route action, delete from the update to prevent
|
1081
1086
|
// further use.
|
1082
1087
|
for (auto& unused_plugin : cluster_specifier_plugins) {
|
1083
|
-
rds_update
|
1084
|
-
std::string(unused_plugin));
|
1088
|
+
rds_update.cluster_specifier_plugin_map.erase(std::string(unused_plugin));
|
1085
1089
|
}
|
1086
1090
|
}
|
1087
|
-
return
|
1091
|
+
return rds_update;
|
1088
1092
|
}
|
1089
1093
|
|
1090
1094
|
//
|
@@ -1094,7 +1098,7 @@ grpc_error_handle XdsRouteConfigResource::Parse(
|
|
1094
1098
|
namespace {
|
1095
1099
|
|
1096
1100
|
void MaybeLogRouteConfiguration(
|
1097
|
-
const
|
1101
|
+
const XdsResourceType::DecodeContext& context,
|
1098
1102
|
const envoy_config_route_v3_RouteConfiguration* route_config) {
|
1099
1103
|
if (GRPC_TRACE_FLAG_ENABLED(*context.tracer) &&
|
1100
1104
|
gpr_should_log(GPR_LOG_SEVERITY_DEBUG)) {
|
@@ -1110,9 +1114,9 @@ void MaybeLogRouteConfiguration(
|
|
1110
1114
|
} // namespace
|
1111
1115
|
|
1112
1116
|
absl::StatusOr<XdsResourceType::DecodeResult>
|
1113
|
-
XdsRouteConfigResourceType::Decode(
|
1114
|
-
|
1115
|
-
|
1117
|
+
XdsRouteConfigResourceType::Decode(
|
1118
|
+
const XdsResourceType::DecodeContext& context,
|
1119
|
+
absl::string_view serialized_resource, bool /*is_v2*/) const {
|
1116
1120
|
// Parse serialized proto.
|
1117
1121
|
auto* resource = envoy_config_route_v3_RouteConfiguration_parse(
|
1118
1122
|
serialized_resource.data(), serialized_resource.size(), context.arena);
|
@@ -1125,24 +1129,23 @@ XdsRouteConfigResourceType::Decode(const XdsEncodingContext& context,
|
|
1125
1129
|
DecodeResult result;
|
1126
1130
|
result.name = UpbStringToStdString(
|
1127
1131
|
envoy_config_route_v3_RouteConfiguration_name(resource));
|
1128
|
-
auto
|
1129
|
-
|
1130
|
-
context, resource, &route_config_data->resource);
|
1131
|
-
if (!GRPC_ERROR_IS_NONE(error)) {
|
1132
|
-
std::string error_str = grpc_error_std_string(error);
|
1133
|
-
GRPC_ERROR_UNREF(error);
|
1132
|
+
auto rds_update = XdsRouteConfigResource::Parse(context, resource);
|
1133
|
+
if (!rds_update.ok()) {
|
1134
1134
|
if (GRPC_TRACE_FLAG_ENABLED(*context.tracer)) {
|
1135
1135
|
gpr_log(GPR_ERROR, "[xds_client %p] invalid RouteConfiguration %s: %s",
|
1136
|
-
context.client, result.name.c_str(),
|
1136
|
+
context.client, result.name.c_str(),
|
1137
|
+
rds_update.status().ToString().c_str());
|
1137
1138
|
}
|
1138
|
-
result.resource =
|
1139
|
+
result.resource = rds_update.status();
|
1139
1140
|
} else {
|
1140
1141
|
if (GRPC_TRACE_FLAG_ENABLED(*context.tracer)) {
|
1141
1142
|
gpr_log(GPR_INFO, "[xds_client %p] parsed RouteConfiguration %s: %s",
|
1142
1143
|
context.client, result.name.c_str(),
|
1143
|
-
|
1144
|
+
rds_update->ToString().c_str());
|
1144
1145
|
}
|
1145
|
-
|
1146
|
+
auto resource = absl::make_unique<ResourceDataSubclass>();
|
1147
|
+
resource->resource = std::move(*rds_update);
|
1148
|
+
result.resource = std::move(resource);
|
1146
1149
|
}
|
1147
1150
|
return std::move(result);
|
1148
1151
|
}
|