grpc 1.45.0 → 1.46.3
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 +36 -29
- data/include/grpc/impl/codegen/grpc_types.h +7 -13
- data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +309 -0
- data/src/core/ext/filters/channel_idle/channel_idle_filter.h +122 -0
- data/src/core/ext/filters/{client_idle → channel_idle}/idle_filter_state.cc +1 -1
- data/src/core/ext/filters/{client_idle → channel_idle}/idle_filter_state.h +3 -3
- data/src/core/ext/filters/client_channel/client_channel.cc +163 -96
- data/src/core/ext/filters/client_channel/client_channel.h +2 -0
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +124 -581
- data/src/core/ext/filters/client_channel/health/health_check_client.h +24 -160
- data/src/core/ext/filters/client_channel/http_proxy.cc +88 -110
- data/src/core/ext/filters/client_channel/http_proxy.h +17 -0
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +182 -142
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +2 -6
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +1 -10
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +87 -58
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +51 -48
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +14 -7
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +229 -284
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +92 -257
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +51 -221
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +201 -0
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +106 -0
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +102 -55
- data/src/core/ext/filters/client_channel/retry_filter.cc +18 -3
- data/src/core/ext/filters/client_channel/subchannel.cc +5 -5
- data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +544 -0
- data/src/core/ext/filters/client_channel/subchannel_stream_client.h +214 -0
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +127 -367
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +24 -1
- data/src/core/ext/filters/http/client/http_client_filter.cc +78 -458
- data/src/core/ext/filters/http/client/http_client_filter.h +21 -4
- data/src/core/ext/filters/http/client_authority_filter.cc +17 -22
- data/src/core/ext/filters/http/client_authority_filter.h +6 -5
- data/src/core/ext/filters/http/http_filters_plugin.cc +9 -6
- data/src/core/ext/filters/http/server/http_server_filter.cc +2 -116
- data/src/core/ext/filters/server_config_selector/server_config_selector.cc +2 -8
- data/src/core/ext/filters/server_config_selector/server_config_selector.h +2 -2
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +73 -201
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +2 -1
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +5 -4
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +139 -28
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +2 -0
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +2 -6
- data/src/core/ext/transport/chttp2/transport/internal.h +4 -2
- data/src/core/ext/transport/chttp2/transport/parsing.cc +8 -0
- data/src/core/ext/transport/chttp2/transport/writing.cc +24 -13
- data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.c +27 -24
- data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.h +143 -63
- data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.c +37 -35
- data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.h +177 -77
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +115 -111
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +547 -207
- data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.h +26 -13
- data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.h +23 -9
- data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.h +18 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.h +13 -4
- data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.h +9 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.c +49 -46
- data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.h +217 -78
- data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.h +10 -2
- data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c +12 -12
- data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +40 -8
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +20 -2
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +55 -55
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +289 -110
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +133 -125
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +656 -267
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +24 -18
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +96 -23
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +185 -173
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +860 -309
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +10 -2
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +44 -24
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +165 -40
- data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.c +72 -63
- data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.h +433 -174
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +33 -31
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +154 -52
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +5 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +14 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +89 -89
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +460 -166
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +76 -33
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +379 -69
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +14 -6
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +5 -25
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +10 -91
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.h +26 -13
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +70 -68
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +369 -131
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +94 -65
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +447 -161
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +27 -11
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +104 -85
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +378 -113
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +3 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +6 -6
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +30 -13
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +43 -16
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +58 -24
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +14 -4
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +18 -18
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +100 -43
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +31 -30
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +171 -71
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +32 -32
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +196 -95
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +7 -2
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +53 -46
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +284 -129
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +56 -50
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +337 -146
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +13 -11
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +49 -14
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +14 -4
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.h +20 -4
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +33 -32
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +205 -86
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +34 -34
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +175 -74
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +56 -52
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +370 -146
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +27 -23
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +173 -74
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +362 -341
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +2056 -845
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +11 -11
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +49 -16
- data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.c +56 -50
- data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.h +293 -111
- data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.h +6 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.h +10 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +26 -10
- data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.h +27 -12
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.c +17 -16
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.h +83 -36
- data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.h +7 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.h +46 -17
- data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.c +9 -9
- data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.h +38 -12
- data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.h +30 -10
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +10 -6
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +15 -15
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +71 -28
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +25 -25
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +149 -65
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c +8 -7
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +30 -12
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +9 -9
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +42 -15
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +173 -144
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +898 -323
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +51 -45
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +261 -116
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +13 -13
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +70 -25
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +80 -55
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +410 -124
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h +23 -9
- 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/discovery.upb.c +44 -44
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +261 -122
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +47 -21
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +32 -32
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +175 -66
- data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.h +17 -6
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +38 -17
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h +12 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +43 -18
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +20 -9
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +24 -9
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +14 -6
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +40 -16
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +9 -9
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +70 -25
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +37 -18
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +12 -12
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +81 -30
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +16 -16
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +76 -30
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +20 -20
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +90 -30
- data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.h +28 -10
- data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.h +3 -0
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +13 -4
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +9 -9
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +18 -0
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +9 -0
- data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.h +17 -4
- data/src/core/ext/upb-generated/google/api/annotations.upb.c +3 -3
- data/src/core/ext/upb-generated/google/api/annotations.upb.h +17 -2
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +70 -66
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +410 -162
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +80 -74
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +440 -158
- data/src/core/ext/upb-generated/google/api/http.upb.c +17 -17
- data/src/core/ext/upb-generated/google/api/http.upb.h +116 -43
- data/src/core/ext/upb-generated/google/api/httpbody.upb.c +4 -4
- data/src/core/ext/upb-generated/google/api/httpbody.upb.h +19 -7
- data/src/core/ext/upb-generated/google/protobuf/any.upb.c +3 -3
- data/src/core/ext/upb-generated/google/protobuf/any.upb.h +6 -0
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +163 -162
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +1157 -435
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +3 -3
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +10 -4
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +15 -15
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +108 -40
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +3 -3
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +10 -4
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +18 -18
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +27 -0
- data/src/core/ext/upb-generated/google/rpc/status.upb.c +4 -4
- data/src/core/ext/upb-generated/google/rpc/status.upb.h +19 -7
- data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.c +15 -15
- data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.h +65 -22
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +12 -12
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +49 -12
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +69 -65
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +364 -149
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +8 -7
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +20 -4
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +4 -4
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +6 -0
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +31 -31
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +150 -58
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +11 -11
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +51 -18
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.c +175 -0
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.h +764 -0
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +22 -22
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +97 -10
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +6 -6
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +23 -2
- data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c +3 -3
- data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +10 -2
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +6 -6
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +27 -6
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +5 -5
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +20 -2
- data/src/core/ext/upb-generated/validate/validate.upb.c +261 -250
- data/src/core/ext/upb-generated/validate/validate.upb.h +1836 -663
- data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.c +22 -22
- data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.h +97 -10
- data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.c +6 -6
- data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.h +23 -2
- data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.c +3 -3
- data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.h +10 -2
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +18 -18
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +70 -10
- data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.c +5 -5
- data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.h +20 -2
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +2 -2
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +3 -0
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +8 -8
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +38 -12
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +5 -5
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +27 -10
- data/src/core/ext/upb-generated/xds/core/v3/extension.upb.c +3 -3
- data/src/core/ext/upb-generated/xds/core/v3/extension.upb.h +10 -2
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +5 -5
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +21 -8
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +10 -10
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +71 -30
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +5 -5
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +16 -2
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +12 -12
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +69 -26
- data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.c +43 -39
- data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.h +255 -103
- data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.c +4 -4
- data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.h +19 -8
- data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.c +9 -9
- data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.h +70 -25
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c +3 -3
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +10 -2
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +50 -46
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +195 -185
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +16 -12
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +129 -94
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.h +10 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c +18 -33
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.h +0 -5
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +163 -155
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +141 -138
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +26 -20
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +738 -730
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +271 -251
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +207 -193
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.c +99 -0
- data/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.h +75 -0
- data/src/core/ext/xds/certificate_provider_store.cc +8 -0
- data/src/core/ext/xds/certificate_provider_store.h +9 -0
- data/src/core/ext/xds/xds_api.cc +20 -0
- data/src/core/ext/xds/xds_bootstrap.cc +2 -2
- data/src/core/ext/xds/xds_bootstrap.h +2 -0
- data/src/core/ext/xds/xds_certificate_provider.cc +2 -0
- data/src/core/ext/xds/xds_certificate_provider.h +8 -0
- data/src/core/ext/xds/xds_client.cc +87 -95
- data/src/core/ext/xds/xds_client.h +13 -5
- data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +142 -0
- data/src/core/ext/xds/xds_cluster_specifier_plugin.h +79 -0
- data/src/core/ext/xds/xds_common_types.cc +9 -9
- data/src/core/ext/xds/xds_common_types.h +3 -3
- data/src/core/ext/xds/xds_endpoint.cc +12 -5
- data/src/core/ext/xds/xds_http_fault_filter.cc +1 -1
- data/src/core/ext/xds/xds_listener.cc +1 -1
- data/src/core/ext/xds/xds_route_config.cc +162 -25
- data/src/core/ext/xds/xds_route_config.h +13 -10
- data/src/core/ext/xds/xds_server_config_fetcher.cc +17 -22
- data/src/core/lib/avl/avl.h +68 -5
- data/src/core/lib/channel/call_tracer.h +4 -1
- data/src/core/lib/channel/channel_args.cc +138 -59
- data/src/core/lib/channel/channel_args.h +210 -9
- data/src/core/lib/channel/channel_args_preconditioning.cc +3 -9
- data/src/core/lib/channel/channel_args_preconditioning.h +1 -2
- data/src/core/lib/channel/channel_stack.h +2 -5
- data/src/core/lib/channel/channel_stack_builder.cc +0 -65
- data/src/core/lib/channel/channel_stack_builder.h +27 -6
- data/src/core/lib/channel/channel_stack_builder_impl.cc +102 -0
- data/src/core/lib/channel/channel_stack_builder_impl.h +48 -0
- data/src/core/lib/channel/connected_channel.h +1 -0
- data/src/core/lib/channel/promise_based_filter.cc +495 -162
- data/src/core/lib/channel/promise_based_filter.h +55 -41
- data/src/core/lib/compression/compression_internal.cc +1 -7
- data/src/core/lib/debug/stats_data.cc +2 -6
- data/src/core/lib/debug/stats_data.h +18 -21
- data/src/core/lib/gpr/tls.h +1 -0
- data/src/core/lib/gprpp/bitset.h +12 -0
- data/src/core/lib/gprpp/cpp_impl_of.h +4 -0
- data/src/core/lib/gprpp/match.h +73 -0
- data/src/core/lib/gprpp/overload.h +59 -0
- data/src/core/lib/gprpp/ref_counted.h +2 -0
- data/src/core/lib/gprpp/single_set_ptr.h +87 -0
- data/src/core/lib/gprpp/status_helper.cc +18 -2
- data/src/core/lib/gprpp/time.cc +12 -0
- data/src/core/lib/gprpp/time.h +1 -1
- data/src/core/lib/http/format_request.cc +1 -2
- data/src/core/lib/http/httpcli_security_connector.cc +5 -5
- data/src/core/lib/http/parser.cc +80 -9
- data/src/core/lib/http/parser.h +14 -1
- data/src/core/lib/iomgr/ev_posix.cc +6 -7
- data/src/core/lib/iomgr/fork_posix.cc +1 -1
- data/src/core/lib/iomgr/port.h +0 -2
- data/src/core/lib/iomgr/tcp_client_posix.cc +2 -2
- data/src/core/lib/iomgr/tcp_posix.cc +93 -35
- data/src/core/lib/iomgr/tcp_server_posix.cc +26 -17
- data/src/core/lib/json/json_util.h +3 -3
- data/src/core/lib/promise/call_push_pull.h +144 -0
- data/src/core/lib/promise/detail/status.h +2 -1
- data/src/core/lib/promise/intra_activity_waiter.h +49 -0
- data/src/core/lib/promise/latch.h +104 -0
- data/src/core/lib/resource_quota/api.cc +5 -30
- data/src/core/lib/resource_quota/api.h +1 -1
- data/src/core/lib/resource_quota/resource_quota.h +8 -0
- data/src/core/lib/security/authorization/authorization_policy_provider.h +7 -0
- data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +9 -12
- data/src/core/lib/security/authorization/grpc_server_authz_filter.h +5 -6
- data/src/core/lib/security/context/security_context.h +8 -1
- data/src/core/lib/security/credentials/alts/alts_credentials.cc +6 -5
- data/src/core/lib/security/credentials/alts/alts_credentials.h +4 -0
- data/src/core/lib/security/credentials/call_creds_util.cc +3 -3
- data/src/core/lib/security/credentials/call_creds_util.h +2 -2
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +15 -10
- data/src/core/lib/security/credentials/composite/composite_credentials.h +9 -8
- data/src/core/lib/security/credentials/credentials.h +16 -33
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +8 -12
- data/src/core/lib/security/credentials/fake/fake_credentials.h +8 -5
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +4 -0
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +3 -3
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +5 -4
- data/src/core/lib/security/credentials/iam/iam_credentials.h +6 -2
- data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +22 -29
- data/src/core/lib/security/credentials/insecure/insecure_credentials.h +57 -0
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +7 -3
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +6 -2
- data/src/core/lib/security/credentials/local/local_credentials.cc +6 -6
- data/src/core/lib/security/credentials/local/local_credentials.h +4 -0
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +17 -9
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +14 -6
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +8 -6
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +8 -6
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +6 -4
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +8 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +49 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +8 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +42 -3
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +66 -95
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +9 -6
- data/src/core/lib/security/credentials/tls/tls_credentials.h +5 -5
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +48 -50
- data/src/core/lib/security/credentials/xds/xds_credentials.h +31 -5
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +2 -2
- data/src/core/lib/security/security_connector/security_connector.h +9 -0
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +4 -2
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +4 -2
- data/src/core/lib/security/transport/auth_filters.h +7 -7
- data/src/core/lib/security/transport/client_auth_filter.cc +28 -20
- data/src/core/lib/security/transport/secure_endpoint.cc +198 -129
- data/src/core/lib/security/transport/secure_endpoint.h +1 -1
- data/src/core/lib/security/transport/security_handshaker.cc +6 -4
- data/src/core/lib/surface/call.cc +1023 -903
- data/src/core/lib/surface/call.h +0 -14
- data/src/core/lib/surface/channel.cc +4 -3
- data/src/core/lib/surface/channel_init.cc +2 -3
- data/src/core/lib/surface/channel_init.h +2 -6
- data/src/core/lib/surface/init.cc +1 -1
- data/src/core/lib/surface/server.cc +3 -14
- data/src/core/lib/surface/server.h +1 -2
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/byte_stream.cc +2 -0
- data/src/core/lib/transport/metadata_batch.h +12 -8
- data/src/core/lib/transport/transport.h +20 -5
- data/src/core/lib/transport/transport_impl.h +4 -3
- data/src/core/plugin_registry/grpc_plugin_registry.cc +2 -4
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +2 -2
- data/src/core/tsi/ssl_transport_security.cc +75 -38
- data/src/core/tsi/ssl_transport_security.h +8 -2
- data/src/core/tsi/transport_security_interface.h +2 -0
- data/src/ruby/ext/grpc/extconf.rb +1 -1
- data/src/ruby/lib/grpc/generic/active_call.rb +7 -1
- data/src/ruby/lib/grpc/grpc.rb +1 -1
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/generate_proto_ruby.sh +1 -0
- data/src/ruby/pb/test/client.rb +769 -0
- data/src/ruby/pb/test/server.rb +252 -0
- data/src/ruby/pb/test/xds_client.rb +415 -0
- data/third_party/upb/third_party/utf8_range/utf8_range.h +1 -1
- data/third_party/upb/upb/decode.c +32 -16
- data/third_party/upb/upb/def.c +118 -55
- data/third_party/upb/upb/def.h +12 -3
- data/third_party/upb/upb/encode.c +14 -8
- data/third_party/upb/upb/json_encode.c +776 -0
- data/third_party/upb/upb/json_encode.h +62 -0
- data/third_party/upb/upb/msg.c +5 -7
- data/third_party/upb/upb/msg.h +1 -2
- data/third_party/upb/upb/msg_internal.h +49 -36
- data/third_party/upb/upb/port_def.inc +8 -0
- data/third_party/upb/upb/port_undef.inc +1 -0
- data/third_party/upb/upb/table.c +10 -6
- data/third_party/upb/upb/table_internal.h +2 -0
- data/third_party/upb/upb/upb.h +41 -11
- data/third_party/zlib/crc32.c +966 -292
- data/third_party/zlib/crc32.h +9441 -436
- data/third_party/zlib/deflate.c +78 -30
- data/third_party/zlib/deflate.h +12 -15
- data/third_party/zlib/gzguts.h +3 -2
- data/third_party/zlib/gzlib.c +5 -3
- data/third_party/zlib/gzread.c +5 -7
- data/third_party/zlib/gzwrite.c +25 -13
- data/third_party/zlib/infback.c +2 -1
- data/third_party/zlib/inffast.c +14 -14
- data/third_party/zlib/inflate.c +39 -8
- data/third_party/zlib/inflate.h +3 -2
- data/third_party/zlib/inftrees.c +3 -3
- data/third_party/zlib/trees.c +27 -48
- data/third_party/zlib/zlib.h +123 -100
- data/third_party/zlib/zutil.c +2 -2
- data/third_party/zlib/zutil.h +12 -9
- metadata +66 -45
- data/src/core/ext/filters/client_idle/client_idle_filter.cc +0 -201
- data/src/core/ext/filters/max_age/max_age_filter.cc +0 -566
- data/src/core/ext/filters/max_age/max_age_filter.h +0 -26
- data/src/core/lib/iomgr/ev_epollex_linux.cc +0 -1657
- data/src/core/lib/iomgr/ev_epollex_linux.h +0 -30
- data/src/core/lib/iomgr/is_epollexclusive_available.cc +0 -119
- data/src/core/lib/iomgr/is_epollexclusive_available.h +0 -36
- data/src/core/lib/iomgr/sys_epoll_wrapper.h +0 -30
@@ -365,23 +365,23 @@ grpc_error_handle CommonTlsContext::Parse(
|
|
365
365
|
&errors);
|
366
366
|
}
|
367
367
|
|
368
|
-
grpc_error_handle
|
369
|
-
|
370
|
-
|
371
|
-
*
|
372
|
-
if (*
|
373
|
-
*
|
368
|
+
grpc_error_handle ExtractExtensionTypeName(const XdsEncodingContext& context,
|
369
|
+
const google_protobuf_Any* any,
|
370
|
+
absl::string_view* extension_type) {
|
371
|
+
*extension_type = UpbStringToAbsl(google_protobuf_Any_type_url(any));
|
372
|
+
if (*extension_type == "type.googleapis.com/xds.type.v3.TypedStruct" ||
|
373
|
+
*extension_type == "type.googleapis.com/udpa.type.v1.TypedStruct") {
|
374
374
|
upb_StringView any_value = google_protobuf_Any_value(any);
|
375
375
|
const auto* typed_struct = xds_type_v3_TypedStruct_parse(
|
376
376
|
any_value.data, any_value.size, context.arena);
|
377
377
|
if (typed_struct == nullptr) {
|
378
378
|
return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
379
|
-
"could not parse TypedStruct from
|
379
|
+
"could not parse TypedStruct from extension");
|
380
380
|
}
|
381
|
-
*
|
381
|
+
*extension_type =
|
382
382
|
UpbStringToAbsl(xds_type_v3_TypedStruct_type_url(typed_struct));
|
383
383
|
}
|
384
|
-
*
|
384
|
+
*extension_type = absl::StripPrefix(*extension_type, "type.googleapis.com/");
|
385
385
|
return GRPC_ERROR_NONE;
|
386
386
|
}
|
387
387
|
|
@@ -86,9 +86,9 @@ struct CommonTlsContext {
|
|
86
86
|
CommonTlsContext* common_tls_context);
|
87
87
|
};
|
88
88
|
|
89
|
-
grpc_error_handle
|
90
|
-
|
91
|
-
|
89
|
+
grpc_error_handle ExtractExtensionTypeName(const XdsEncodingContext& context,
|
90
|
+
const google_protobuf_Any* any,
|
91
|
+
absl::string_view* extension_type);
|
92
92
|
|
93
93
|
} // namespace grpc_core
|
94
94
|
|
@@ -202,7 +202,7 @@ grpc_error_handle LocalityParse(
|
|
202
202
|
std::string region =
|
203
203
|
UpbStringToStdString(envoy_config_core_v3_Locality_region(locality));
|
204
204
|
std::string zone =
|
205
|
-
UpbStringToStdString(
|
205
|
+
UpbStringToStdString(envoy_config_core_v3_Locality_zone(locality));
|
206
206
|
std::string sub_zone =
|
207
207
|
UpbStringToStdString(envoy_config_core_v3_Locality_sub_zone(locality));
|
208
208
|
output_locality->name = MakeRefCounted<XdsLocalityName>(
|
@@ -285,11 +285,18 @@ grpc_error_handle EdsResourceParse(
|
|
285
285
|
if (locality.lb_weight == 0) continue;
|
286
286
|
// Make sure prorities is big enough. Note that they might not
|
287
287
|
// arrive in priority order.
|
288
|
-
|
289
|
-
eds_update->priorities.
|
288
|
+
if (eds_update->priorities.size() < priority + 1) {
|
289
|
+
eds_update->priorities.resize(priority + 1);
|
290
|
+
}
|
291
|
+
auto& locality_map = eds_update->priorities[priority].localities;
|
292
|
+
auto it = locality_map.find(locality.name.get());
|
293
|
+
if (it != locality_map.end()) {
|
294
|
+
errors.push_back(GRPC_ERROR_CREATE_FROM_CPP_STRING(absl::StrCat(
|
295
|
+
"duplicate locality ", locality.name->AsHumanReadableString(),
|
296
|
+
" found in priority ", priority)));
|
297
|
+
} else {
|
298
|
+
locality_map.emplace(locality.name.get(), std::move(locality));
|
290
299
|
}
|
291
|
-
eds_update->priorities[priority].localities.emplace(locality.name.get(),
|
292
|
-
std::move(locality));
|
293
300
|
}
|
294
301
|
for (const auto& priority : eds_update->priorities) {
|
295
302
|
if (priority.localities.empty()) {
|
@@ -198,7 +198,7 @@ XdsHttpFaultFilter::GenerateFilterConfigOverride(
|
|
198
198
|
}
|
199
199
|
|
200
200
|
const grpc_channel_filter* XdsHttpFaultFilter::channel_filter() const {
|
201
|
-
return &
|
201
|
+
return &FaultInjectionFilter::kFilter;
|
202
202
|
}
|
203
203
|
|
204
204
|
grpc_channel_args* XdsHttpFaultFilter::ModifyChannelArgs(
|
@@ -332,7 +332,7 @@ grpc_error_handle HttpConnectionManagerParse(
|
|
332
332
|
}
|
333
333
|
absl::string_view filter_type;
|
334
334
|
grpc_error_handle error =
|
335
|
-
|
335
|
+
ExtractExtensionTypeName(context, any, &filter_type);
|
336
336
|
if (error != GRPC_ERROR_NONE) return error;
|
337
337
|
const XdsHttpFilterImpl* filter_impl =
|
338
338
|
XdsHttpFilterRegistry::GetFilterForType(filter_type);
|
@@ -23,6 +23,7 @@
|
|
23
23
|
#include "absl/strings/str_split.h"
|
24
24
|
#include "absl/strings/string_view.h"
|
25
25
|
#include "envoy/config/core/v3/base.upb.h"
|
26
|
+
#include "envoy/config/core/v3/extension.upb.h"
|
26
27
|
#include "envoy/config/route/v3/route.upb.h"
|
27
28
|
#include "envoy/config/route/v3/route.upbdefs.h"
|
28
29
|
#include "envoy/config/route/v3/route_components.upb.h"
|
@@ -39,12 +40,14 @@
|
|
39
40
|
|
40
41
|
#include "src/core/ext/xds/upb_utils.h"
|
41
42
|
#include "src/core/ext/xds/xds_api.h"
|
43
|
+
#include "src/core/ext/xds/xds_cluster_specifier_plugin.h"
|
42
44
|
#include "src/core/ext/xds/xds_common_types.h"
|
43
45
|
#include "src/core/ext/xds/xds_resource_type.h"
|
44
46
|
#include "src/core/ext/xds/xds_routing.h"
|
45
47
|
#include "src/core/lib/gpr/env.h"
|
46
48
|
#include "src/core/lib/gpr/string.h"
|
47
49
|
#include "src/core/lib/iomgr/error.h"
|
50
|
+
#include "src/core/lib/transport/error_utils.h"
|
48
51
|
|
49
52
|
namespace grpc_core {
|
50
53
|
|
@@ -57,6 +60,15 @@ bool XdsRbacEnabled() {
|
|
57
60
|
return parse_succeeded && parsed_value;
|
58
61
|
}
|
59
62
|
|
63
|
+
// TODO(donnadionne): Remove once RLS is no longer experimental
|
64
|
+
bool XdsRlsEnabled() {
|
65
|
+
char* value = gpr_getenv("GRPC_EXPERIMENTAL_XDS_RLS_LB");
|
66
|
+
bool parsed_value;
|
67
|
+
bool parse_succeeded = gpr_parse_bool_value(value, &parsed_value);
|
68
|
+
gpr_free(value);
|
69
|
+
return parse_succeeded && parsed_value;
|
70
|
+
}
|
71
|
+
|
60
72
|
//
|
61
73
|
// XdsRouteConfigResource::RetryPolicy
|
62
74
|
//
|
@@ -212,11 +224,18 @@ std::string XdsRouteConfigResource::Route::RouteAction::ToString() const {
|
|
212
224
|
if (retry_policy.has_value()) {
|
213
225
|
contents.push_back(absl::StrCat("retry_policy=", retry_policy->ToString()));
|
214
226
|
}
|
215
|
-
if (
|
216
|
-
contents.push_back(
|
217
|
-
|
218
|
-
|
219
|
-
|
227
|
+
if (action.index() == kClusterIndex) {
|
228
|
+
contents.push_back(
|
229
|
+
absl::StrFormat("Cluster name: %s", absl::get<kClusterIndex>(action)));
|
230
|
+
} else if (action.index() == kWeightedClustersIndex) {
|
231
|
+
auto& action_weighted_clusters = absl::get<kWeightedClustersIndex>(action);
|
232
|
+
for (const ClusterWeight& cluster_weight : action_weighted_clusters) {
|
233
|
+
contents.push_back(cluster_weight.ToString());
|
234
|
+
}
|
235
|
+
} else if (action.index() == kClusterSpecifierPluginIndex) {
|
236
|
+
contents.push_back(
|
237
|
+
absl::StrFormat("Cluster specifier plugin name: %s",
|
238
|
+
absl::get<kClusterSpecifierPluginIndex>(action)));
|
220
239
|
}
|
221
240
|
if (max_stream_duration.has_value()) {
|
222
241
|
contents.push_back(max_stream_duration->ToString());
|
@@ -258,35 +277,95 @@ std::string XdsRouteConfigResource::Route::ToString() const {
|
|
258
277
|
//
|
259
278
|
|
260
279
|
std::string XdsRouteConfigResource::ToString() const {
|
261
|
-
std::vector<std::string>
|
280
|
+
std::vector<std::string> parts;
|
262
281
|
for (const VirtualHost& vhost : virtual_hosts) {
|
263
|
-
|
282
|
+
parts.push_back(
|
264
283
|
absl::StrCat("vhost={\n"
|
265
284
|
" domains=[",
|
266
285
|
absl::StrJoin(vhost.domains, ", "),
|
267
286
|
"]\n"
|
268
287
|
" routes=[\n"));
|
269
288
|
for (const XdsRouteConfigResource::Route& route : vhost.routes) {
|
270
|
-
|
271
|
-
|
272
|
-
|
289
|
+
parts.push_back(" {\n");
|
290
|
+
parts.push_back(route.ToString());
|
291
|
+
parts.push_back("\n }\n");
|
273
292
|
}
|
274
|
-
|
275
|
-
|
293
|
+
parts.push_back(" ]\n");
|
294
|
+
parts.push_back(" typed_per_filter_config={\n");
|
276
295
|
for (const auto& p : vhost.typed_per_filter_config) {
|
277
296
|
const std::string& name = p.first;
|
278
297
|
const auto& config = p.second;
|
279
|
-
|
280
|
-
absl::StrCat(" ", name, "=", config.ToString(), "\n"));
|
298
|
+
parts.push_back(absl::StrCat(" ", name, "=", config.ToString(), "\n"));
|
281
299
|
}
|
282
|
-
|
283
|
-
|
300
|
+
parts.push_back(" }\n");
|
301
|
+
parts.push_back("]\n");
|
284
302
|
}
|
285
|
-
|
303
|
+
parts.push_back("cluster_specifier_plugins={\n");
|
304
|
+
for (const auto& it : cluster_specifier_plugin_map) {
|
305
|
+
parts.push_back(absl::StrFormat("%s={%s}\n", it.first, it.second));
|
306
|
+
}
|
307
|
+
parts.push_back("}");
|
308
|
+
return absl::StrJoin(parts, "");
|
286
309
|
}
|
287
310
|
|
288
311
|
namespace {
|
289
312
|
|
313
|
+
grpc_error_handle ClusterSpecifierPluginParse(
|
314
|
+
const XdsEncodingContext& context,
|
315
|
+
const envoy_config_route_v3_RouteConfiguration* route_config,
|
316
|
+
XdsRouteConfigResource* rds_update) {
|
317
|
+
size_t num_cluster_specifier_plugins;
|
318
|
+
const envoy_config_route_v3_ClusterSpecifierPlugin* const*
|
319
|
+
cluster_specifier_plugin =
|
320
|
+
envoy_config_route_v3_RouteConfiguration_cluster_specifier_plugins(
|
321
|
+
route_config, &num_cluster_specifier_plugins);
|
322
|
+
for (size_t i = 0; i < num_cluster_specifier_plugins; ++i) {
|
323
|
+
const envoy_config_core_v3_TypedExtensionConfig* extension =
|
324
|
+
envoy_config_route_v3_ClusterSpecifierPlugin_extension(
|
325
|
+
cluster_specifier_plugin[i]);
|
326
|
+
std::string name = UpbStringToStdString(
|
327
|
+
envoy_config_core_v3_TypedExtensionConfig_name(extension));
|
328
|
+
if (rds_update->cluster_specifier_plugin_map.find(name) !=
|
329
|
+
rds_update->cluster_specifier_plugin_map.end()) {
|
330
|
+
return GRPC_ERROR_CREATE_FROM_CPP_STRING(absl::StrCat(
|
331
|
+
"Duplicated definition of cluster_specifier_plugin ", name));
|
332
|
+
}
|
333
|
+
const google_protobuf_Any* any =
|
334
|
+
envoy_config_core_v3_TypedExtensionConfig_typed_config(extension);
|
335
|
+
if (any == nullptr) {
|
336
|
+
return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
337
|
+
"Could not obtrain TypedExtensionConfig for plugin config.");
|
338
|
+
}
|
339
|
+
absl::string_view plugin_type;
|
340
|
+
grpc_error_handle error =
|
341
|
+
ExtractExtensionTypeName(context, any, &plugin_type);
|
342
|
+
if (error != GRPC_ERROR_NONE) return error;
|
343
|
+
bool is_optional = envoy_config_route_v3_ClusterSpecifierPlugin_is_optional(
|
344
|
+
cluster_specifier_plugin[i]);
|
345
|
+
const XdsClusterSpecifierPluginImpl* cluster_specifier_plugin_impl =
|
346
|
+
XdsClusterSpecifierPluginRegistry::GetPluginForType(plugin_type);
|
347
|
+
std::string lb_policy_config;
|
348
|
+
if (cluster_specifier_plugin_impl == nullptr) {
|
349
|
+
if (!is_optional) {
|
350
|
+
return GRPC_ERROR_CREATE_FROM_CPP_STRING(
|
351
|
+
absl::StrCat("Unknown ClusterSpecifierPlugin type ", plugin_type));
|
352
|
+
}
|
353
|
+
// Optional plugin, leave lb_policy_config empty.
|
354
|
+
} else {
|
355
|
+
auto config =
|
356
|
+
cluster_specifier_plugin_impl->GenerateLoadBalancingPolicyConfig(
|
357
|
+
google_protobuf_Any_value(any), context.arena, context.symtab);
|
358
|
+
if (!config.ok()) {
|
359
|
+
return absl_status_to_grpc_error(config.status());
|
360
|
+
}
|
361
|
+
lb_policy_config = std::move(*config);
|
362
|
+
}
|
363
|
+
rds_update->cluster_specifier_plugin_map[std::move(name)] =
|
364
|
+
std::move(lb_policy_config);
|
365
|
+
}
|
366
|
+
return GRPC_ERROR_NONE;
|
367
|
+
}
|
368
|
+
|
290
369
|
grpc_error_handle RoutePathMatchParse(
|
291
370
|
const envoy_config_route_v3_RouteMatch* match,
|
292
371
|
XdsRouteConfigResource::Route* route, bool* ignore_route) {
|
@@ -523,7 +602,7 @@ grpc_error_handle ParseTypedPerFilterConfig(
|
|
523
602
|
}
|
524
603
|
}
|
525
604
|
grpc_error_handle error =
|
526
|
-
|
605
|
+
ExtractExtensionTypeName(context, any, &filter_type);
|
527
606
|
if (error != GRPC_ERROR_NONE) return error;
|
528
607
|
const XdsHttpFilterImpl* filter_impl =
|
529
608
|
XdsHttpFilterRegistry::GetFilterForType(filter_type);
|
@@ -623,19 +702,27 @@ grpc_error_handle RetryPolicyParse(
|
|
623
702
|
grpc_error_handle RouteActionParse(
|
624
703
|
const XdsEncodingContext& context,
|
625
704
|
const envoy_config_route_v3_Route* route_msg,
|
705
|
+
const std::map<std::string /*cluster_specifier_plugin_name*/,
|
706
|
+
std::string /*LB policy config*/>&
|
707
|
+
cluster_specifier_plugin_map,
|
626
708
|
XdsRouteConfigResource::Route::RouteAction* route, bool* ignore_route) {
|
627
709
|
const envoy_config_route_v3_RouteAction* route_action =
|
628
710
|
envoy_config_route_v3_Route_route(route_msg);
|
629
711
|
// Get the cluster or weighted_clusters in the RouteAction.
|
630
712
|
if (envoy_config_route_v3_RouteAction_has_cluster(route_action)) {
|
631
|
-
|
713
|
+
std::string cluster_name = UpbStringToStdString(
|
632
714
|
envoy_config_route_v3_RouteAction_cluster(route_action));
|
633
|
-
if (
|
715
|
+
if (cluster_name.empty()) {
|
634
716
|
return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
635
717
|
"RouteAction cluster contains empty cluster name.");
|
636
718
|
}
|
719
|
+
route->action
|
720
|
+
.emplace<XdsRouteConfigResource::Route::RouteAction::kClusterIndex>(
|
721
|
+
std::move(cluster_name));
|
637
722
|
} else if (envoy_config_route_v3_RouteAction_has_weighted_clusters(
|
638
723
|
route_action)) {
|
724
|
+
std::vector<XdsRouteConfigResource::Route::RouteAction::ClusterWeight>
|
725
|
+
action_weighted_clusters;
|
639
726
|
const envoy_config_route_v3_WeightedCluster* weighted_cluster =
|
640
727
|
envoy_config_route_v3_RouteAction_weighted_clusters(route_action);
|
641
728
|
uint32_t total_weight = 100;
|
@@ -682,18 +769,41 @@ grpc_error_handle RouteActionParse(
|
|
682
769
|
&cluster.typed_per_filter_config);
|
683
770
|
if (error != GRPC_ERROR_NONE) return error;
|
684
771
|
}
|
685
|
-
|
772
|
+
action_weighted_clusters.emplace_back(std::move(cluster));
|
686
773
|
}
|
687
774
|
if (total_weight != sum_of_weights) {
|
688
775
|
return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
689
776
|
"RouteAction weighted_cluster has incorrect total weight");
|
690
777
|
}
|
691
|
-
if (
|
778
|
+
if (action_weighted_clusters.empty()) {
|
692
779
|
return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
693
780
|
"RouteAction weighted_cluster has no valid clusters specified.");
|
694
781
|
}
|
782
|
+
route->action = std::move(action_weighted_clusters);
|
783
|
+
} else if (XdsRlsEnabled() &&
|
784
|
+
envoy_config_route_v3_RouteAction_has_cluster_specifier_plugin(
|
785
|
+
route_action)) {
|
786
|
+
std::string plugin_name = UpbStringToStdString(
|
787
|
+
envoy_config_route_v3_RouteAction_cluster_specifier_plugin(
|
788
|
+
route_action));
|
789
|
+
if (plugin_name.empty()) {
|
790
|
+
return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
791
|
+
"RouteAction cluster contains empty cluster specifier plugin name.");
|
792
|
+
}
|
793
|
+
auto it = cluster_specifier_plugin_map.find(plugin_name);
|
794
|
+
if (it == cluster_specifier_plugin_map.end()) {
|
795
|
+
return GRPC_ERROR_CREATE_FROM_CPP_STRING(
|
796
|
+
absl::StrCat("RouteAction cluster contains cluster specifier plugin "
|
797
|
+
"name not configured: ",
|
798
|
+
plugin_name));
|
799
|
+
}
|
800
|
+
if (it->second.empty()) *ignore_route = true;
|
801
|
+
route->action.emplace<XdsRouteConfigResource::Route::RouteAction::
|
802
|
+
kClusterSpecifierPluginIndex>(
|
803
|
+
std::move(plugin_name));
|
695
804
|
} else {
|
696
|
-
// No cluster or weighted_clusters found in RouteAction, ignore
|
805
|
+
// No cluster or weighted_clusters or plugin found in RouteAction, ignore
|
806
|
+
// this route.
|
697
807
|
*ignore_route = true;
|
698
808
|
}
|
699
809
|
if (!*ignore_route) {
|
@@ -808,6 +918,12 @@ grpc_error_handle XdsRouteConfigResource::Parse(
|
|
808
918
|
const XdsEncodingContext& context,
|
809
919
|
const envoy_config_route_v3_RouteConfiguration* route_config,
|
810
920
|
XdsRouteConfigResource* rds_update) {
|
921
|
+
// Get the cluster spcifier plugins
|
922
|
+
if (XdsRlsEnabled()) {
|
923
|
+
grpc_error_handle error =
|
924
|
+
ClusterSpecifierPluginParse(context, route_config, rds_update);
|
925
|
+
if (error != GRPC_ERROR_NONE) return error;
|
926
|
+
}
|
811
927
|
// Get the virtual hosts.
|
812
928
|
size_t num_virtual_hosts;
|
813
929
|
const envoy_config_route_v3_VirtualHost* const* virtual_hosts =
|
@@ -862,6 +978,12 @@ grpc_error_handle XdsRouteConfigResource::Parse(
|
|
862
978
|
return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
863
979
|
"No route found in the virtual host.");
|
864
980
|
}
|
981
|
+
// Build a set of cluster_specifier_plugin configured to make sure each is
|
982
|
+
// actually referenced by a route action.
|
983
|
+
std::set<absl::string_view> cluster_specifier_plugins;
|
984
|
+
for (auto& plugin : rds_update->cluster_specifier_plugin_map) {
|
985
|
+
cluster_specifier_plugins.emplace(plugin.first);
|
986
|
+
}
|
865
987
|
// Loop over the whole list of routes
|
866
988
|
for (size_t j = 0; j < num_routes; ++j) {
|
867
989
|
const envoy_config_route_v3_RouteMatch* match =
|
@@ -889,14 +1011,23 @@ grpc_error_handle XdsRouteConfigResource::Parse(
|
|
889
1011
|
route.action.emplace<XdsRouteConfigResource::Route::RouteAction>();
|
890
1012
|
auto& route_action =
|
891
1013
|
absl::get<XdsRouteConfigResource::Route::RouteAction>(route.action);
|
892
|
-
error =
|
893
|
-
|
1014
|
+
error = RouteActionParse(context, routes[j],
|
1015
|
+
rds_update->cluster_specifier_plugin_map,
|
1016
|
+
&route_action, &ignore_route);
|
894
1017
|
if (error != GRPC_ERROR_NONE) return error;
|
895
1018
|
if (ignore_route) continue;
|
896
1019
|
if (route_action.retry_policy == absl::nullopt &&
|
897
1020
|
retry_policy != nullptr) {
|
898
1021
|
route_action.retry_policy = virtual_host_retry_policy;
|
899
1022
|
}
|
1023
|
+
// Mark off plugins used in route action.
|
1024
|
+
std::string* cluster_specifier_action =
|
1025
|
+
absl::get_if<XdsRouteConfigResource::Route::RouteAction::
|
1026
|
+
kClusterSpecifierPluginIndex>(
|
1027
|
+
&route_action.action);
|
1028
|
+
if (cluster_specifier_action != nullptr) {
|
1029
|
+
cluster_specifier_plugins.erase(*cluster_specifier_action);
|
1030
|
+
}
|
900
1031
|
} else if (envoy_config_route_v3_Route_has_non_forwarding_action(
|
901
1032
|
routes[j])) {
|
902
1033
|
route.action
|
@@ -918,6 +1049,12 @@ grpc_error_handle XdsRouteConfigResource::Parse(
|
|
918
1049
|
if (vhost.routes.empty()) {
|
919
1050
|
return GRPC_ERROR_CREATE_FROM_STATIC_STRING("No valid routes specified.");
|
920
1051
|
}
|
1052
|
+
// For plugins not used in route action, delete from the update to prevent
|
1053
|
+
// further use.
|
1054
|
+
for (auto& unused_plugin : cluster_specifier_plugins) {
|
1055
|
+
rds_update->cluster_specifier_plugin_map.erase(
|
1056
|
+
std::string(unused_plugin));
|
1057
|
+
}
|
921
1058
|
}
|
922
1059
|
return GRPC_ERROR_NONE;
|
923
1060
|
}
|
@@ -30,6 +30,7 @@
|
|
30
30
|
#include "re2/re2.h"
|
31
31
|
|
32
32
|
#include "src/core/ext/xds/xds_client.h"
|
33
|
+
#include "src/core/ext/xds/xds_cluster_specifier_plugin.h"
|
33
34
|
#include "src/core/ext/xds/xds_common_types.h"
|
34
35
|
#include "src/core/ext/xds/xds_http_filters.h"
|
35
36
|
#include "src/core/ext/xds/xds_resource_type_impl.h"
|
@@ -67,8 +68,6 @@ struct XdsRouteConfigResource {
|
|
67
68
|
std::string ToString() const;
|
68
69
|
};
|
69
70
|
|
70
|
-
// TODO(donnadionne): When we can use absl::variant<>, consider using that
|
71
|
-
// for: PathMatcher, HeaderMatcher, cluster_name and weighted_clusters
|
72
71
|
struct Route {
|
73
72
|
// Matchers for this route.
|
74
73
|
struct Matchers {
|
@@ -130,10 +129,11 @@ struct XdsRouteConfigResource {
|
|
130
129
|
absl::optional<RetryPolicy> retry_policy;
|
131
130
|
|
132
131
|
// Action for this route.
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
std::vector<ClusterWeight>
|
132
|
+
static constexpr size_t kClusterIndex = 0;
|
133
|
+
static constexpr size_t kWeightedClustersIndex = 1;
|
134
|
+
static constexpr size_t kClusterSpecifierPluginIndex = 2;
|
135
|
+
absl::variant<std::string, std::vector<ClusterWeight>, std::string>
|
136
|
+
action;
|
137
137
|
// Storing the timeout duration from route action:
|
138
138
|
// RouteAction.max_stream_duration.grpc_timeout_header_max or
|
139
139
|
// RouteAction.max_stream_duration.max_stream_duration if the former is
|
@@ -142,9 +142,7 @@ struct XdsRouteConfigResource {
|
|
142
142
|
|
143
143
|
bool operator==(const RouteAction& other) const {
|
144
144
|
return hash_policies == other.hash_policies &&
|
145
|
-
retry_policy == other.retry_policy &&
|
146
|
-
cluster_name == other.cluster_name &&
|
147
|
-
weighted_clusters == other.weighted_clusters &&
|
145
|
+
retry_policy == other.retry_policy && action == other.action &&
|
148
146
|
max_stream_duration == other.max_stream_duration;
|
149
147
|
}
|
150
148
|
std::string ToString() const;
|
@@ -178,9 +176,13 @@ struct XdsRouteConfigResource {
|
|
178
176
|
};
|
179
177
|
|
180
178
|
std::vector<VirtualHost> virtual_hosts;
|
179
|
+
std::map<std::string /*cluster_specifier_plugin_name*/,
|
180
|
+
std::string /*LB policy config*/>
|
181
|
+
cluster_specifier_plugin_map;
|
181
182
|
|
182
183
|
bool operator==(const XdsRouteConfigResource& other) const {
|
183
|
-
return virtual_hosts == other.virtual_hosts
|
184
|
+
return virtual_hosts == other.virtual_hosts &&
|
185
|
+
cluster_specifier_plugin_map == other.cluster_specifier_plugin_map;
|
184
186
|
}
|
185
187
|
std::string ToString() const;
|
186
188
|
|
@@ -207,6 +209,7 @@ class XdsRouteConfigResourceType
|
|
207
209
|
|
208
210
|
void InitUpbSymtab(upb_DefPool* symtab) const override {
|
209
211
|
envoy_config_route_v3_RouteConfiguration_getmsgdef(symtab);
|
212
|
+
XdsClusterSpecifierPluginRegistry::PopulateSymtab(symtab);
|
210
213
|
}
|
211
214
|
};
|
212
215
|
|
@@ -100,7 +100,7 @@ class XdsServerConfigFetcher::ListenerWatcher
|
|
100
100
|
|
101
101
|
void OnResourceChanged(XdsListenerResource listener) override;
|
102
102
|
|
103
|
-
void OnError(
|
103
|
+
void OnError(absl::Status status) override;
|
104
104
|
|
105
105
|
void OnResourceDoesNotExist() override;
|
106
106
|
|
@@ -195,7 +195,7 @@ class XdsServerConfigFetcher::ListenerWatcher::FilterChainMatchManager
|
|
195
195
|
// RDS resources.
|
196
196
|
void OnRouteConfigChanged(const std::string& resource_name,
|
197
197
|
XdsRouteConfigResource route_config);
|
198
|
-
void OnError(const std::string& resource_name,
|
198
|
+
void OnError(const std::string& resource_name, absl::Status status);
|
199
199
|
void OnResourceDoesNotExist(const std::string& resource_name);
|
200
200
|
|
201
201
|
RefCountedPtr<XdsClient> xds_client_;
|
@@ -233,8 +233,8 @@ class XdsServerConfigFetcher::ListenerWatcher::FilterChainMatchManager::
|
|
233
233
|
std::move(route_config));
|
234
234
|
}
|
235
235
|
|
236
|
-
void OnError(
|
237
|
-
filter_chain_match_manager_->OnError(resource_name_,
|
236
|
+
void OnError(absl::Status status) override {
|
237
|
+
filter_chain_match_manager_->OnError(resource_name_, status);
|
238
238
|
}
|
239
239
|
|
240
240
|
void OnResourceDoesNotExist() override {
|
@@ -370,7 +370,7 @@ class XdsServerConfigFetcher::ListenerWatcher::FilterChainMatchManager::
|
|
370
370
|
class RouteConfigWatcher;
|
371
371
|
|
372
372
|
void OnRouteConfigChanged(XdsRouteConfigResource rds_update);
|
373
|
-
void OnError(
|
373
|
+
void OnError(absl::Status status);
|
374
374
|
void OnResourceDoesNotExist();
|
375
375
|
|
376
376
|
RefCountedPtr<XdsClient> xds_client_;
|
@@ -398,7 +398,7 @@ class XdsServerConfigFetcher::ListenerWatcher::FilterChainMatchManager::
|
|
398
398
|
parent_->OnRouteConfigChanged(std::move(route_config));
|
399
399
|
}
|
400
400
|
|
401
|
-
void OnError(
|
401
|
+
void OnError(absl::Status status) override { parent_->OnError(status); }
|
402
402
|
|
403
403
|
void OnResourceDoesNotExist() override { parent_->OnResourceDoesNotExist(); }
|
404
404
|
|
@@ -510,29 +510,26 @@ void XdsServerConfigFetcher::ListenerWatcher::OnResourceChanged(
|
|
510
510
|
}
|
511
511
|
}
|
512
512
|
|
513
|
-
void XdsServerConfigFetcher::ListenerWatcher::OnError(
|
513
|
+
void XdsServerConfigFetcher::ListenerWatcher::OnError(absl::Status status) {
|
514
514
|
MutexLock lock(&mu_);
|
515
515
|
if (filter_chain_match_manager_ != nullptr ||
|
516
516
|
pending_filter_chain_match_manager_ != nullptr) {
|
517
517
|
gpr_log(GPR_ERROR,
|
518
518
|
"ListenerWatcher:%p XdsClient reports error: %s for %s; "
|
519
519
|
"ignoring in favor of existing resource",
|
520
|
-
this,
|
521
|
-
listening_address_.c_str());
|
520
|
+
this, status.ToString().c_str(), listening_address_.c_str());
|
522
521
|
} else {
|
523
522
|
if (serving_status_notifier_.on_serving_status_update != nullptr) {
|
524
523
|
serving_status_notifier_.on_serving_status_update(
|
525
524
|
serving_status_notifier_.user_data, listening_address_.c_str(),
|
526
|
-
{GRPC_STATUS_UNAVAILABLE,
|
525
|
+
{GRPC_STATUS_UNAVAILABLE, status.ToString().c_str()});
|
527
526
|
} else {
|
528
527
|
gpr_log(GPR_ERROR,
|
529
528
|
"ListenerWatcher:%p error obtaining xDS Listener resource: %s; "
|
530
529
|
"not serving on %s",
|
531
|
-
this,
|
532
|
-
listening_address_.c_str());
|
530
|
+
this, status.ToString().c_str(), listening_address_.c_str());
|
533
531
|
}
|
534
532
|
}
|
535
|
-
GRPC_ERROR_UNREF(error);
|
536
533
|
}
|
537
534
|
|
538
535
|
void XdsServerConfigFetcher::ListenerWatcher::OnFatalError(
|
@@ -778,7 +775,7 @@ void XdsServerConfigFetcher::ListenerWatcher::FilterChainMatchManager::
|
|
778
775
|
}
|
779
776
|
|
780
777
|
void XdsServerConfigFetcher::ListenerWatcher::FilterChainMatchManager::OnError(
|
781
|
-
const std::string& resource_name,
|
778
|
+
const std::string& resource_name, absl::Status status) {
|
782
779
|
RefCountedPtr<ListenerWatcher> listener_watcher;
|
783
780
|
{
|
784
781
|
MutexLock lock(&mu_);
|
@@ -787,11 +784,11 @@ void XdsServerConfigFetcher::ListenerWatcher::FilterChainMatchManager::OnError(
|
|
787
784
|
if (--rds_resources_yet_to_fetch_ == 0) {
|
788
785
|
listener_watcher = std::move(listener_watcher_);
|
789
786
|
}
|
790
|
-
state.rds_update =
|
787
|
+
state.rds_update = status;
|
791
788
|
} else {
|
792
789
|
// Prefer existing good version over current errored version
|
793
790
|
if (!state.rds_update->ok()) {
|
794
|
-
state.rds_update =
|
791
|
+
state.rds_update = status;
|
795
792
|
}
|
796
793
|
}
|
797
794
|
}
|
@@ -800,7 +797,6 @@ void XdsServerConfigFetcher::ListenerWatcher::FilterChainMatchManager::OnError(
|
|
800
797
|
if (listener_watcher != nullptr) {
|
801
798
|
listener_watcher->PendingFilterChainMatchManagerReady(this);
|
802
799
|
}
|
803
|
-
GRPC_ERROR_UNREF(error);
|
804
800
|
}
|
805
801
|
|
806
802
|
void XdsServerConfigFetcher::ListenerWatcher::FilterChainMatchManager::
|
@@ -1051,7 +1047,8 @@ absl::StatusOr<grpc_channel_args*> XdsServerConfigFetcher::ListenerWatcher::
|
|
1051
1047
|
// Add XdsCertificateProvider if credentials are xDS.
|
1052
1048
|
grpc_server_credentials* server_creds =
|
1053
1049
|
grpc_find_server_credentials_in_args(args);
|
1054
|
-
if (server_creds != nullptr &&
|
1050
|
+
if (server_creds != nullptr &&
|
1051
|
+
server_creds->type() == XdsServerCredentials::Type()) {
|
1055
1052
|
absl::StatusOr<RefCountedPtr<XdsCertificateProvider>> result =
|
1056
1053
|
CreateOrGetXdsCertificateProviderFromFilterChainData(filter_chain);
|
1057
1054
|
if (!result.ok()) {
|
@@ -1258,15 +1255,13 @@ void XdsServerConfigFetcher::ListenerWatcher::FilterChainMatchManager::
|
|
1258
1255
|
}
|
1259
1256
|
|
1260
1257
|
void XdsServerConfigFetcher::ListenerWatcher::FilterChainMatchManager::
|
1261
|
-
DynamicXdsServerConfigSelectorProvider::OnError(
|
1258
|
+
DynamicXdsServerConfigSelectorProvider::OnError(absl::Status status) {
|
1262
1259
|
MutexLock lock(&mu_);
|
1263
1260
|
// Prefer existing good update.
|
1264
1261
|
if (resource_.ok()) {
|
1265
|
-
GRPC_ERROR_UNREF(error);
|
1266
1262
|
return;
|
1267
1263
|
}
|
1268
|
-
resource_ =
|
1269
|
-
GRPC_ERROR_UNREF(error);
|
1264
|
+
resource_ = status;
|
1270
1265
|
if (watcher_ == nullptr) {
|
1271
1266
|
return;
|
1272
1267
|
}
|