grpc 1.42.0 → 1.43.1
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 +85 -34
- data/include/grpc/event_engine/event_engine.h +37 -13
- data/include/grpc/event_engine/internal/memory_allocator_impl.h +1 -31
- data/include/grpc/event_engine/memory_allocator.h +27 -11
- data/include/grpc/event_engine/memory_request.h +57 -0
- data/include/grpc/grpc_security.h +276 -145
- data/include/grpc/grpc_security_constants.h +1 -14
- data/include/grpc/impl/codegen/port_platform.h +7 -3
- data/src/core/ext/filters/client_channel/backend_metric.cc +6 -7
- data/src/core/ext/filters/client_channel/backend_metric.h +3 -2
- data/src/core/ext/filters/client_channel/client_channel.cc +81 -40
- data/src/core/ext/filters/client_channel/client_channel.h +5 -4
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +1 -2
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +4 -4
- data/src/core/ext/filters/client_channel/health/health_check_client.h +1 -1
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +12 -14
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +1 -2
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +1 -2
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +2 -2
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +2 -3
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +27 -80
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +82 -34
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +47 -91
- data/src/core/ext/filters/client_channel/lb_policy.h +75 -59
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +3 -3
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +2 -2
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +8 -12
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +3 -3
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +6 -12
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +222 -294
- data/src/core/ext/filters/client_channel/resolver_registry.cc +6 -7
- data/src/core/ext/filters/client_channel/resolver_registry.h +1 -2
- data/src/core/ext/filters/client_channel/subchannel.cc +4 -4
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +1 -1
- data/src/core/ext/filters/http/client/http_client_filter.cc +14 -30
- data/src/core/ext/filters/http/http_filters_plugin.cc +3 -5
- data/src/core/ext/filters/http/server/http_server_filter.cc +11 -28
- data/src/core/ext/filters/server_config_selector/server_config_selector.cc +67 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector.h +70 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +265 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.h +32 -0
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +4 -20
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +0 -2
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +8 -5
- data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +11 -14
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +6 -3
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +54 -79
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +2 -3
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +9 -13
- data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +6 -6
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +53 -62
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +1 -2
- data/src/core/ext/transport/chttp2/transport/context_list.cc +2 -3
- data/src/core/ext/transport/chttp2/transport/context_list.h +2 -3
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +8 -8
- data/src/core/ext/transport/chttp2/transport/flow_control.h +2 -2
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +83 -19
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +33 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +66 -92
- data/src/core/ext/transport/chttp2/transport/internal.h +8 -4
- data/src/core/ext/transport/inproc/inproc_transport.cc +16 -7
- data/src/core/ext/transport/inproc/inproc_transport.h +1 -1
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +197 -165
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c +41 -0
- data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +18 -0
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +26 -2
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +7 -0
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +107 -82
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +188 -160
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +35 -22
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +253 -218
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +16 -5
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +36 -25
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +56 -39
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +16 -5
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +162 -128
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +51 -36
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +15 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +25 -13
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +114 -90
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +89 -71
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +17 -6
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +117 -93
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +13 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +21 -9
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c +18 -7
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +22 -11
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +17 -6
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +41 -27
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +59 -43
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +58 -43
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +15 -4
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +73 -57
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +81 -64
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +25 -14
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +19 -7
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +63 -45
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +66 -47
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +93 -75
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +41 -28
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +503 -440
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +26 -13
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +21 -9
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +13 -2
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +35 -20
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +44 -31
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +22 -11
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +210 -181
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +7 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +5 -3
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +64 -48
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +33 -20
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +81 -65
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.c +12 -1
- data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +12 -1
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +75 -58
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.c +12 -1
- data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.c +12 -1
- data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +25 -13
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.c +12 -1
- data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.c +12 -1
- data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +61 -46
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +26 -12
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +22 -10
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +17 -6
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +16 -5
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +15 -4
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +27 -14
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +25 -13
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +20 -8
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +30 -17
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +38 -21
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +41 -26
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/v3/http.upb.c +7 -0
- data/src/core/ext/upb-generated/envoy/type/v3/http.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c +17 -5
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +22 -9
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +15 -4
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +2 -0
- data/src/core/ext/upb-generated/google/api/annotations.upb.c +20 -0
- data/src/core/ext/upb-generated/google/api/annotations.upb.h +7 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +116 -93
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +2 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/eval.upb.c +102 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/eval.upb.h +306 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/explain.upb.c +56 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/explain.upb.h +135 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +122 -98
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +2 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/value.upb.c +115 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/value.upb.h +371 -0
- data/src/core/ext/upb-generated/google/api/http.upb.c +35 -22
- data/src/core/ext/upb-generated/google/api/http.upb.h +2 -0
- data/src/core/ext/upb-generated/google/protobuf/any.upb.c +14 -3
- data/src/core/ext/upb-generated/google/protobuf/any.upb.h +2 -0
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +247 -210
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +2 -0
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +14 -3
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +2 -0
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +12 -1
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +2 -0
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +37 -23
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +2 -0
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +14 -3
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +2 -0
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +37 -18
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +2 -0
- data/src/core/ext/upb-generated/google/rpc/status.upb.c +17 -6
- data/src/core/ext/upb-generated/google/rpc/status.upb.h +2 -0
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +26 -14
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +2 -0
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +105 -83
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +2 -0
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +20 -8
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +2 -0
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +16 -4
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +2 -0
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +65 -47
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +34 -36
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +26 -13
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +2 -0
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +67 -7
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +27 -0
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +27 -3
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +7 -0
- data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c +19 -0
- data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +7 -0
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +27 -3
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +7 -0
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +26 -2
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +7 -0
- data/src/core/ext/upb-generated/validate/validate.upb.c +320 -251
- data/src/core/ext/upb-generated/validate/validate.upb.h +20 -0
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +54 -9
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +17 -0
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +13 -2
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +2 -0
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +24 -12
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +2 -0
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +19 -7
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +2 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +18 -7
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +2 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +27 -15
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +2 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +18 -7
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +2 -0
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +28 -15
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +2 -0
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c +16 -5
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +2 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +2 -49
- data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c +2 -2
- data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +2 -35
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +2 -41
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +2 -11
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +2 -55
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c +2 -19
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +2 -53
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +2 -15
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c +2 -9
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.c +2 -33
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +2 -21
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +2 -33
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.c +2 -9
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c +2 -13
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +2 -17
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.c +2 -15
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +2 -17
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +2 -19
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +2 -9
- data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.c +2 -21
- data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.c +2 -23
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +2 -11
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +2 -111
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c +2 -11
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c +2 -9
- data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.c +2 -15
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +2 -11
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +2 -43
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +2 -2
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +2 -17
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +2 -11
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +2 -17
- data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +2 -19
- data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +2 -9
- data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +2 -15
- data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.c +2 -13
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.c +2 -9
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +2 -11
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c +2 -9
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.c +2 -9
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.c +2 -11
- data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.c +2 -19
- data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.c +2 -15
- data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.c +2 -2
- data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.c +2 -9
- data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.c +2 -11
- data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.c +2 -2
- data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.c +2 -11
- data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +2 -59
- data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c +2 -13
- data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c +2 -23
- data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c +2 -11
- data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c +2 -2
- data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +2 -51
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.c +2 -13
- data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c +2 -9
- data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c +2 -9
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c +2 -9
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.c +2 -7
- data/src/core/ext/xds/certificate_provider_registry.cc +1 -1
- data/src/core/ext/xds/certificate_provider_store.h +1 -1
- data/src/core/ext/xds/xds_api.cc +409 -304
- data/src/core/ext/xds/xds_api.h +3 -1
- data/src/core/ext/xds/xds_bootstrap.cc +6 -3
- data/src/core/ext/xds/xds_certificate_provider.h +1 -2
- data/src/core/ext/xds/xds_channel_stack_modifier.cc +3 -4
- data/src/core/ext/xds/xds_client.cc +395 -291
- data/src/core/ext/xds/xds_client.h +47 -38
- data/src/core/ext/xds/xds_routing.cc +247 -0
- data/src/core/ext/xds/xds_routing.h +98 -0
- data/src/core/ext/xds/xds_server_config_fetcher.cc +975 -261
- data/src/core/lib/avl/avl.h +389 -88
- data/src/core/lib/backoff/backoff.cc +2 -2
- data/src/core/lib/channel/channel_args.cc +17 -17
- data/src/core/lib/channel/channel_args.h +11 -10
- data/src/core/lib/channel/channel_args_preconditioning.cc +47 -0
- data/src/core/lib/channel/channel_args_preconditioning.h +62 -0
- data/src/core/lib/channel/channel_stack_builder.cc +0 -2
- data/src/core/lib/channel/channel_trace.cc +6 -6
- data/src/core/lib/channel/channelz.cc +1 -1
- data/src/core/lib/compression/compression_args.cc +7 -5
- data/src/core/lib/compression/compression_args.h +6 -4
- data/src/core/lib/config/core_configuration.cc +3 -1
- data/src/core/lib/config/core_configuration.h +11 -0
- data/src/core/lib/debug/trace.h +2 -2
- data/src/core/lib/event_engine/{endpoint_config.cc → channel_args_endpoint_config.cc} +2 -1
- data/src/core/lib/event_engine/{endpoint_config_internal.h → channel_args_endpoint_config.h} +3 -3
- data/src/core/lib/event_engine/event_engine.cc +0 -13
- data/src/core/lib/event_engine/event_engine_factory.cc +49 -0
- data/src/core/lib/event_engine/event_engine_factory.h +33 -0
- data/src/core/lib/event_engine/memory_allocator.cc +70 -0
- data/src/core/lib/gpr/tls.h +6 -0
- data/src/core/lib/gprpp/cpp_impl_of.h +45 -0
- data/src/core/lib/gprpp/global_config_env.cc +7 -7
- data/src/core/lib/gprpp/global_config_env.h +2 -2
- data/src/core/lib/gprpp/manual_constructor.h +2 -3
- data/src/core/lib/gprpp/orphanable.h +1 -1
- data/src/core/lib/gprpp/ref_counted.h +1 -1
- data/src/core/lib/gprpp/ref_counted_ptr.h +2 -4
- data/src/core/lib/gprpp/status_helper.h +1 -1
- data/src/core/lib/gprpp/table.h +13 -1
- data/src/core/lib/http/httpcli.cc +30 -26
- data/src/core/lib/http/httpcli.h +14 -12
- data/src/core/lib/iomgr/buffer_list.cc +9 -9
- data/src/core/lib/iomgr/buffer_list.h +13 -13
- data/src/core/lib/iomgr/call_combiner.cc +2 -3
- data/src/core/lib/iomgr/endpoint.h +0 -1
- data/src/core/lib/iomgr/endpoint_cfstream.cc +7 -24
- data/src/core/lib/iomgr/endpoint_cfstream.h +4 -4
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +9 -11
- data/src/core/lib/iomgr/endpoint_pair_windows.cc +5 -14
- data/src/core/lib/iomgr/event_engine/endpoint.cc +2 -3
- data/src/core/lib/iomgr/event_engine/iomgr.cc +5 -25
- data/src/core/lib/iomgr/event_engine/resolver.cc +3 -2
- data/src/core/lib/iomgr/event_engine/tcp.cc +7 -5
- data/src/core/lib/iomgr/event_engine/timer.cc +4 -3
- data/src/core/lib/iomgr/exec_ctx.h +11 -11
- data/src/core/lib/iomgr/executor.cc +12 -15
- data/src/core/lib/iomgr/executor.h +1 -1
- data/src/core/lib/iomgr/tcp_client.cc +2 -4
- data/src/core/lib/iomgr/tcp_client.h +1 -3
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +1 -9
- data/src/core/lib/iomgr/tcp_client_custom.cc +4 -10
- data/src/core/lib/iomgr/tcp_client_posix.cc +7 -23
- data/src/core/lib/iomgr/tcp_client_posix.h +3 -4
- data/src/core/lib/iomgr/tcp_client_windows.cc +1 -10
- data/src/core/lib/iomgr/tcp_custom.cc +9 -36
- data/src/core/lib/iomgr/tcp_custom.h +0 -1
- data/src/core/lib/iomgr/tcp_posix.cc +28 -33
- data/src/core/lib/iomgr/tcp_posix.h +1 -3
- data/src/core/lib/iomgr/tcp_server.cc +4 -6
- data/src/core/lib/iomgr/tcp_server.h +6 -8
- data/src/core/lib/iomgr/tcp_server_custom.cc +5 -15
- data/src/core/lib/iomgr/tcp_server_posix.cc +18 -22
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +19 -18
- data/src/core/lib/iomgr/tcp_server_windows.cc +5 -12
- data/src/core/lib/iomgr/tcp_windows.cc +2 -7
- data/src/core/lib/iomgr/tcp_windows.h +1 -2
- data/src/core/lib/iomgr/unix_sockets_posix.cc +1 -1
- data/src/core/lib/iomgr/unix_sockets_posix.h +1 -1
- data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +1 -1
- data/src/core/lib/iomgr/work_serializer.cc +115 -44
- data/src/core/lib/iomgr/work_serializer.h +16 -4
- data/src/core/lib/json/json_reader.cc +83 -35
- data/src/core/lib/json/json_util.cc +1 -1
- data/src/core/lib/promise/activity.cc +115 -0
- data/src/core/lib/promise/activity.h +499 -0
- data/src/core/lib/promise/context.h +86 -0
- data/src/core/lib/promise/detail/basic_seq.h +407 -0
- data/src/core/lib/promise/detail/promise_factory.h +189 -0
- data/src/core/lib/promise/detail/promise_like.h +85 -0
- data/src/core/lib/promise/detail/status.h +44 -0
- data/src/core/lib/promise/detail/switch.h +1455 -0
- data/src/core/lib/promise/exec_ctx_wakeup_scheduler.h +48 -0
- data/src/core/lib/promise/loop.h +108 -0
- data/src/core/lib/promise/map.h +88 -0
- data/src/core/lib/promise/poll.h +60 -0
- data/src/core/lib/promise/race.h +84 -0
- data/src/core/lib/promise/seq.h +71 -0
- data/src/core/lib/resource_quota/api.cc +108 -0
- data/src/core/lib/resource_quota/api.h +41 -0
- data/src/core/lib/resource_quota/memory_quota.cc +454 -0
- data/src/core/lib/resource_quota/memory_quota.h +421 -0
- data/src/core/lib/resource_quota/resource_quota.cc +33 -0
- data/src/core/lib/resource_quota/resource_quota.h +58 -0
- data/src/core/lib/resource_quota/thread_quota.cc +43 -0
- data/src/core/lib/resource_quota/thread_quota.h +57 -0
- data/src/core/lib/resource_quota/trace.cc +19 -0
- data/src/core/lib/resource_quota/trace.h +24 -0
- data/src/core/lib/security/authorization/evaluate_args.cc +13 -19
- data/src/core/lib/security/authorization/evaluate_args.h +2 -1
- data/src/core/lib/security/authorization/sdk_server_authz_filter.cc +3 -1
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +11 -12
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +9 -10
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +3 -4
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +4 -6
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +1 -1
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +4 -6
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +18 -22
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +11 -12
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +7 -8
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +201 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +106 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +11 -90
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +19 -82
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +21 -10
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +28 -33
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +3 -3
- data/src/core/lib/security/security_connector/alts/alts_security_connector.h +2 -2
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +3 -4
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +2 -2
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +7 -7
- data/src/core/lib/security/security_connector/load_system_roots_linux.cc +1 -2
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +4 -1
- data/src/core/lib/security/security_connector/ssl_utils.cc +10 -2
- data/src/core/lib/security/security_connector/ssl_utils.h +1 -1
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +344 -195
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +64 -41
- data/src/core/lib/security/transport/security_handshaker.cc +2 -2
- data/src/core/lib/slice/percent_encoding.cc +30 -86
- data/src/core/lib/slice/percent_encoding.h +5 -11
- data/src/core/lib/slice/slice.cc +7 -7
- data/src/core/lib/slice/slice.h +341 -0
- data/src/core/lib/slice/slice_buffer.cc +4 -0
- data/src/core/lib/slice/slice_intern.cc +1 -1
- data/src/core/lib/slice/slice_refcount.h +5 -1
- data/src/core/lib/slice/slice_refcount_base.h +19 -11
- data/src/core/lib/slice/static_slice.cc +331 -483
- data/src/core/lib/slice/static_slice.h +101 -132
- data/src/core/lib/surface/builtins.cc +1 -1
- data/src/core/lib/surface/call.cc +85 -59
- data/src/core/lib/surface/channel.cc +4 -29
- data/src/core/lib/surface/channel.h +2 -12
- data/src/core/lib/surface/completion_queue.cc +2 -2
- data/src/core/lib/surface/init.cc +0 -1
- data/src/core/lib/surface/lame_client.cc +24 -17
- data/src/core/lib/surface/server.cc +22 -22
- data/src/core/lib/surface/server.h +8 -9
- data/src/core/lib/surface/validate_metadata.cc +2 -2
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/bdp_estimator.cc +1 -1
- data/src/core/lib/transport/byte_stream.cc +4 -0
- data/src/core/lib/transport/metadata.h +4 -4
- data/src/core/lib/transport/metadata_batch.cc +5 -0
- data/src/core/lib/transport/metadata_batch.h +174 -99
- data/src/core/lib/transport/parsed_metadata.cc +35 -0
- data/src/core/lib/transport/parsed_metadata.h +180 -61
- data/src/core/lib/transport/pid_controller.cc +4 -4
- data/src/core/lib/transport/static_metadata.cc +529 -614
- data/src/core/lib/transport/static_metadata.h +0 -18
- data/src/core/lib/transport/transport.cc +4 -26
- data/src/core/lib/transport/transport.h +0 -1
- data/src/core/lib/transport/transport_op_string.cc +1 -1
- data/src/core/lib/uri/uri_parser.cc +19 -19
- data/src/core/lib/uri/uri_parser.h +2 -0
- data/src/core/plugin_registry/grpc_plugin_registry.cc +4 -2
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +1 -1
- data/src/core/tsi/local_transport_security.cc +15 -15
- data/src/core/tsi/ssl_transport_security.cc +30 -1
- data/src/core/tsi/ssl_transport_security.h +1 -0
- data/src/ruby/ext/grpc/extconf.rb +1 -1
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +6 -10
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +9 -15
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/third_party/abseil-cpp/absl/algorithm/container.h +101 -91
- data/third_party/abseil-cpp/absl/base/attributes.h +64 -31
- data/third_party/abseil-cpp/absl/base/config.h +67 -37
- data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +1 -26
- data/third_party/abseil-cpp/absl/base/internal/spinlock.h +3 -1
- data/third_party/abseil-cpp/absl/base/internal/spinlock_wait.h +2 -0
- data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +69 -0
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +4 -4
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +16 -0
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +4 -4
- data/third_party/abseil-cpp/absl/base/options.h +1 -1
- data/third_party/abseil-cpp/absl/container/fixed_array.h +0 -5
- data/third_party/abseil-cpp/absl/container/inlined_vector.h +105 -97
- data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +17 -15
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +18 -102
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +37 -78
- data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +388 -423
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +3 -2
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +14 -8
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +251 -120
- data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +11 -1
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +12 -11
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +6 -2
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +12 -5
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_emscripten-inl.inc +110 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +234 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +25 -7
- data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +8 -2
- data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +21 -3
- data/third_party/abseil-cpp/absl/debugging/stacktrace.cc +2 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize.cc +2 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +14 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize_emscripten.inc +72 -0
- data/third_party/abseil-cpp/absl/functional/function_ref.h +4 -1
- data/third_party/abseil-cpp/absl/hash/hash.h +22 -0
- data/third_party/abseil-cpp/absl/hash/internal/hash.cc +15 -16
- data/third_party/abseil-cpp/absl/hash/internal/hash.h +88 -37
- data/third_party/abseil-cpp/absl/hash/internal/{wyhash.cc → low_level_hash.cc} +23 -11
- data/third_party/abseil-cpp/absl/hash/internal/{wyhash.h → low_level_hash.h} +14 -12
- data/third_party/abseil-cpp/absl/memory/memory.h +1 -1
- data/third_party/abseil-cpp/absl/meta/type_traits.h +32 -2
- data/third_party/abseil-cpp/absl/numeric/int128.cc +3 -10
- data/third_party/abseil-cpp/absl/numeric/int128.h +146 -73
- data/third_party/abseil-cpp/absl/numeric/int128_have_intrinsic.inc +19 -25
- data/third_party/abseil-cpp/absl/numeric/int128_no_intrinsic.inc +73 -70
- data/third_party/abseil-cpp/absl/{base → profiling}/internal/exponential_biased.cc +4 -4
- data/third_party/abseil-cpp/absl/{base → profiling}/internal/exponential_biased.h +6 -6
- data/third_party/abseil-cpp/absl/profiling/internal/sample_recorder.h +230 -0
- data/third_party/abseil-cpp/absl/status/internal/status_internal.h +5 -5
- data/third_party/abseil-cpp/absl/status/status.cc +9 -17
- data/third_party/abseil-cpp/absl/status/status.h +19 -15
- data/third_party/abseil-cpp/absl/status/statusor.cc +34 -2
- data/third_party/abseil-cpp/absl/status/statusor.h +31 -21
- data/third_party/abseil-cpp/absl/strings/charconv.cc +3 -3
- data/third_party/abseil-cpp/absl/strings/charconv.h +3 -2
- data/third_party/abseil-cpp/absl/strings/cord.cc +453 -359
- data/third_party/abseil-cpp/absl/strings/cord.h +197 -70
- data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +6 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +140 -63
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +1128 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.h +939 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.cc +185 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.h +265 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.cc +68 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.h +211 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.cc +129 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.h +50 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +7 -7
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +55 -181
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.h +42 -24
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring_reader.h +4 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_functions.cc +96 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_functions.h +85 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.cc +139 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.h +131 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +445 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_info.h +298 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_statistics.h +87 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_update_scope.h +71 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_update_tracker.h +121 -0
- data/third_party/abseil-cpp/absl/strings/internal/resize_uninitialized.h +48 -2
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +8 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +3 -4
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +6 -6
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +36 -18
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +62 -73
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +24 -16
- data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +35 -35
- data/third_party/abseil-cpp/absl/strings/numbers.cc +1 -1
- data/third_party/abseil-cpp/absl/strings/numbers.h +34 -0
- data/third_party/abseil-cpp/absl/strings/str_cat.cc +4 -4
- data/third_party/abseil-cpp/absl/strings/str_format.h +1 -2
- data/third_party/abseil-cpp/absl/strings/string_view.cc +16 -21
- data/third_party/abseil-cpp/absl/strings/string_view.h +120 -39
- data/third_party/abseil-cpp/absl/strings/substitute.cc +2 -1
- data/third_party/abseil-cpp/absl/strings/substitute.h +99 -74
- data/third_party/abseil-cpp/absl/synchronization/blocking_counter.cc +25 -15
- data/third_party/abseil-cpp/absl/synchronization/blocking_counter.h +5 -3
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +1 -1
- data/third_party/abseil-cpp/absl/synchronization/mutex.h +3 -3
- data/third_party/abseil-cpp/absl/time/civil_time.cc +1 -3
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +93 -20
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.cc +1 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.h +2 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +83 -21
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +49 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +1 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +2 -3
- data/third_party/abseil-cpp/absl/time/time.h +67 -36
- data/third_party/abseil-cpp/absl/types/bad_optional_access.h +1 -1
- data/third_party/abseil-cpp/absl/types/bad_variant_access.h +2 -2
- data/third_party/abseil-cpp/absl/types/span.h +3 -3
- data/third_party/boringssl-with-bazel/err_data.c +681 -677
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +19 -11
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +41 -30
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +59 -47
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.c +24 -28
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.c +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +28 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +48 -272
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.c +8 -6
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.c +3 -1
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +7 -7
- data/third_party/boringssl-with-bazel/src/crypto/mem.c +18 -0
- data/third_party/boringssl-with-bazel/src/crypto/pool/internal.h +5 -1
- data/third_party/boringssl-with-bazel/src/crypto/pool/pool.c +59 -23
- data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +2 -18
- data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +8 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +216 -11
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_cache.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_data.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_lib.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_map.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_node.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_tree.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +21 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +971 -253
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +3 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +0 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +4 -12
- data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +17 -41
- data/third_party/boringssl-with-bazel/src/include/openssl/ec_key.h +12 -27
- data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +8 -10
- data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +29 -55
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +3 -9
- data/third_party/boringssl-with-bazel/src/include/openssl/pool.h +7 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +24 -28
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +6 -9
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +12 -43
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +4 -3
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +3 -3
- data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +4 -0
- data/third_party/upb/upb/decode.c +309 -178
- data/third_party/upb/upb/decode_fast.c +1 -1
- data/third_party/upb/upb/decode_internal.h +1 -0
- data/third_party/upb/upb/def.c +330 -85
- data/third_party/upb/upb/def.h +45 -14
- data/third_party/upb/upb/def.hpp +17 -4
- data/third_party/upb/upb/encode.c +100 -40
- data/third_party/upb/upb/msg.c +22 -9
- data/third_party/upb/upb/msg_internal.h +90 -8
- data/third_party/upb/upb/reflection.c +98 -58
- data/third_party/upb/upb/reflection.h +6 -2
- data/third_party/upb/upb/text_encode.c +3 -3
- data/third_party/upb/upb/upb.c +8 -0
- metadata +116 -56
- data/src/core/lib/avl/avl.cc +0 -306
- data/src/core/lib/gprpp/match.h +0 -73
- data/src/core/lib/gprpp/overload.h +0 -59
- data/src/core/lib/iomgr/event_engine/iomgr.h +0 -42
- data/src/core/lib/iomgr/resource_quota.cc +0 -1106
- data/src/core/lib/iomgr/resource_quota.h +0 -226
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_enum.c +0 -93
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_int.h +0 -217
@@ -31,6 +31,7 @@
|
|
31
31
|
#include "src/core/ext/xds/xds_channel_args.h"
|
32
32
|
#include "src/core/ext/xds/xds_client.h"
|
33
33
|
#include "src/core/ext/xds/xds_http_filters.h"
|
34
|
+
#include "src/core/ext/xds/xds_routing.h"
|
34
35
|
#include "src/core/lib/channel/channel_args.h"
|
35
36
|
#include "src/core/lib/iomgr/closure.h"
|
36
37
|
#include "src/core/lib/iomgr/exec_ctx.h"
|
@@ -78,36 +79,39 @@ class XdsResolver : public Resolver {
|
|
78
79
|
}
|
79
80
|
|
80
81
|
private:
|
81
|
-
class Notifier {
|
82
|
-
public:
|
83
|
-
Notifier(RefCountedPtr<XdsResolver> resolver, XdsApi::LdsUpdate update);
|
84
|
-
Notifier(RefCountedPtr<XdsResolver> resolver, XdsApi::RdsUpdate update);
|
85
|
-
Notifier(RefCountedPtr<XdsResolver> resolver, grpc_error_handle error);
|
86
|
-
explicit Notifier(RefCountedPtr<XdsResolver> resolver);
|
87
|
-
|
88
|
-
private:
|
89
|
-
enum Type { kLdsUpdate, kRdsUpdate, kError, kDoesNotExist };
|
90
|
-
|
91
|
-
static void RunInExecCtx(void* arg, grpc_error_handle error);
|
92
|
-
void RunInWorkSerializer(grpc_error_handle error);
|
93
|
-
|
94
|
-
RefCountedPtr<XdsResolver> resolver_;
|
95
|
-
grpc_closure closure_;
|
96
|
-
XdsApi::LdsUpdate update_;
|
97
|
-
Type type_;
|
98
|
-
};
|
99
|
-
|
100
82
|
class ListenerWatcher : public XdsClient::ListenerWatcherInterface {
|
101
83
|
public:
|
102
84
|
explicit ListenerWatcher(RefCountedPtr<XdsResolver> resolver)
|
103
85
|
: resolver_(std::move(resolver)) {}
|
104
86
|
void OnListenerChanged(XdsApi::LdsUpdate listener) override {
|
105
|
-
|
87
|
+
Ref().release(); // ref held by lambda
|
88
|
+
resolver_->work_serializer_->Run(
|
89
|
+
// TODO(yashykt): When we move to C++14, capture listener with
|
90
|
+
// std::move
|
91
|
+
[this, listener]() mutable {
|
92
|
+
resolver_->OnListenerUpdate(std::move(listener));
|
93
|
+
Unref();
|
94
|
+
},
|
95
|
+
DEBUG_LOCATION);
|
106
96
|
}
|
107
97
|
void OnError(grpc_error_handle error) override {
|
108
|
-
|
98
|
+
Ref().release(); // ref held by lambda
|
99
|
+
resolver_->work_serializer_->Run(
|
100
|
+
[this, error]() {
|
101
|
+
resolver_->OnError(error);
|
102
|
+
Unref();
|
103
|
+
},
|
104
|
+
DEBUG_LOCATION);
|
105
|
+
}
|
106
|
+
void OnResourceDoesNotExist() override {
|
107
|
+
Ref().release(); // ref held by lambda
|
108
|
+
resolver_->work_serializer_->Run(
|
109
|
+
[this]() {
|
110
|
+
resolver_->OnResourceDoesNotExist();
|
111
|
+
Unref();
|
112
|
+
},
|
113
|
+
DEBUG_LOCATION);
|
109
114
|
}
|
110
|
-
void OnResourceDoesNotExist() override { new Notifier(resolver_); }
|
111
115
|
|
112
116
|
private:
|
113
117
|
RefCountedPtr<XdsResolver> resolver_;
|
@@ -118,12 +122,34 @@ class XdsResolver : public Resolver {
|
|
118
122
|
explicit RouteConfigWatcher(RefCountedPtr<XdsResolver> resolver)
|
119
123
|
: resolver_(std::move(resolver)) {}
|
120
124
|
void OnRouteConfigChanged(XdsApi::RdsUpdate route_config) override {
|
121
|
-
|
125
|
+
Ref().release(); // ref held by lambda
|
126
|
+
resolver_->work_serializer_->Run(
|
127
|
+
// TODO(yashykt): When we move to C++14, capture route_config with
|
128
|
+
// std::move
|
129
|
+
[this, route_config]() mutable {
|
130
|
+
resolver_->OnRouteConfigUpdate(std::move(route_config));
|
131
|
+
Unref();
|
132
|
+
},
|
133
|
+
DEBUG_LOCATION);
|
122
134
|
}
|
123
135
|
void OnError(grpc_error_handle error) override {
|
124
|
-
|
136
|
+
Ref().release(); // ref held by lambda
|
137
|
+
resolver_->work_serializer_->Run(
|
138
|
+
[this, error]() {
|
139
|
+
resolver_->OnError(error);
|
140
|
+
Unref();
|
141
|
+
},
|
142
|
+
DEBUG_LOCATION);
|
143
|
+
}
|
144
|
+
void OnResourceDoesNotExist() override {
|
145
|
+
Ref().release(); // ref held by lambda
|
146
|
+
resolver_->work_serializer_->Run(
|
147
|
+
[this]() {
|
148
|
+
resolver_->OnResourceDoesNotExist();
|
149
|
+
Unref();
|
150
|
+
},
|
151
|
+
DEBUG_LOCATION);
|
125
152
|
}
|
126
|
-
void OnResourceDoesNotExist() override { new Notifier(resolver_); }
|
127
153
|
|
128
154
|
private:
|
129
155
|
RefCountedPtr<XdsResolver> resolver_;
|
@@ -232,6 +258,8 @@ class XdsResolver : public Resolver {
|
|
232
258
|
};
|
233
259
|
using RouteTable = std::vector<Route>;
|
234
260
|
|
261
|
+
class RouteListIterator;
|
262
|
+
|
235
263
|
void MaybeAddCluster(const std::string& name);
|
236
264
|
grpc_error_handle CreateMethodConfig(
|
237
265
|
const XdsApi::Route& route,
|
@@ -275,71 +303,6 @@ class XdsResolver : public Resolver {
|
|
275
303
|
ClusterState::ClusterStateMap cluster_state_map_;
|
276
304
|
};
|
277
305
|
|
278
|
-
//
|
279
|
-
// XdsResolver::Notifier
|
280
|
-
//
|
281
|
-
|
282
|
-
XdsResolver::Notifier::Notifier(RefCountedPtr<XdsResolver> resolver,
|
283
|
-
XdsApi::LdsUpdate update)
|
284
|
-
: resolver_(std::move(resolver)),
|
285
|
-
update_(std::move(update)),
|
286
|
-
type_(kLdsUpdate) {
|
287
|
-
GRPC_CLOSURE_INIT(&closure_, &RunInExecCtx, this, nullptr);
|
288
|
-
ExecCtx::Run(DEBUG_LOCATION, &closure_, GRPC_ERROR_NONE);
|
289
|
-
}
|
290
|
-
|
291
|
-
XdsResolver::Notifier::Notifier(RefCountedPtr<XdsResolver> resolver,
|
292
|
-
XdsApi::RdsUpdate update)
|
293
|
-
: resolver_(std::move(resolver)), type_(kRdsUpdate) {
|
294
|
-
update_.http_connection_manager.rds_update = std::move(update);
|
295
|
-
GRPC_CLOSURE_INIT(&closure_, &RunInExecCtx, this, nullptr);
|
296
|
-
ExecCtx::Run(DEBUG_LOCATION, &closure_, GRPC_ERROR_NONE);
|
297
|
-
}
|
298
|
-
|
299
|
-
XdsResolver::Notifier::Notifier(RefCountedPtr<XdsResolver> resolver,
|
300
|
-
grpc_error_handle error)
|
301
|
-
: resolver_(std::move(resolver)), type_(kError) {
|
302
|
-
GRPC_CLOSURE_INIT(&closure_, &RunInExecCtx, this, nullptr);
|
303
|
-
ExecCtx::Run(DEBUG_LOCATION, &closure_, error);
|
304
|
-
}
|
305
|
-
|
306
|
-
XdsResolver::Notifier::Notifier(RefCountedPtr<XdsResolver> resolver)
|
307
|
-
: resolver_(std::move(resolver)), type_(kDoesNotExist) {
|
308
|
-
GRPC_CLOSURE_INIT(&closure_, &RunInExecCtx, this, nullptr);
|
309
|
-
ExecCtx::Run(DEBUG_LOCATION, &closure_, GRPC_ERROR_NONE);
|
310
|
-
}
|
311
|
-
|
312
|
-
void XdsResolver::Notifier::RunInExecCtx(void* arg, grpc_error_handle error) {
|
313
|
-
Notifier* self = static_cast<Notifier*>(arg);
|
314
|
-
(void)GRPC_ERROR_REF(error);
|
315
|
-
self->resolver_->work_serializer_->Run(
|
316
|
-
[self, error]() { self->RunInWorkSerializer(error); }, DEBUG_LOCATION);
|
317
|
-
}
|
318
|
-
|
319
|
-
void XdsResolver::Notifier::RunInWorkSerializer(grpc_error_handle error) {
|
320
|
-
if (resolver_->xds_client_ == nullptr) {
|
321
|
-
GRPC_ERROR_UNREF(error);
|
322
|
-
delete this;
|
323
|
-
return;
|
324
|
-
}
|
325
|
-
switch (type_) {
|
326
|
-
case kLdsUpdate:
|
327
|
-
resolver_->OnListenerUpdate(std::move(update_));
|
328
|
-
break;
|
329
|
-
case kRdsUpdate:
|
330
|
-
resolver_->OnRouteConfigUpdate(
|
331
|
-
std::move(*update_.http_connection_manager.rds_update));
|
332
|
-
break;
|
333
|
-
case kError:
|
334
|
-
resolver_->OnError(error);
|
335
|
-
break;
|
336
|
-
case kDoesNotExist:
|
337
|
-
resolver_->OnResourceDoesNotExist();
|
338
|
-
break;
|
339
|
-
};
|
340
|
-
delete this;
|
341
|
-
}
|
342
|
-
|
343
306
|
//
|
344
307
|
// XdsResolver::XdsConfigSelector::Route
|
345
308
|
//
|
@@ -363,6 +326,25 @@ bool XdsResolver::XdsConfigSelector::Route::operator==(
|
|
363
326
|
MethodConfigsEqual(method_config.get(), other.method_config.get());
|
364
327
|
}
|
365
328
|
|
329
|
+
// Implementation of XdsRouting::RouteListIterator for getting the matching
|
330
|
+
// route for a request.
|
331
|
+
class XdsResolver::XdsConfigSelector::RouteListIterator
|
332
|
+
: public XdsRouting::RouteListIterator {
|
333
|
+
public:
|
334
|
+
explicit RouteListIterator(const RouteTable* route_table)
|
335
|
+
: route_table_(route_table) {}
|
336
|
+
|
337
|
+
size_t Size() const override { return route_table_->size(); }
|
338
|
+
|
339
|
+
const XdsApi::Route::Matchers& GetMatchersForRoute(
|
340
|
+
size_t index) const override {
|
341
|
+
return (*route_table_)[index].route.matchers;
|
342
|
+
}
|
343
|
+
|
344
|
+
private:
|
345
|
+
const RouteTable* route_table_;
|
346
|
+
};
|
347
|
+
|
366
348
|
//
|
367
349
|
// XdsResolver::XdsConfigSelector
|
368
350
|
//
|
@@ -448,25 +430,6 @@ XdsResolver::XdsConfigSelector::~XdsConfigSelector() {
|
|
448
430
|
resolver_->MaybeRemoveUnusedClusters();
|
449
431
|
}
|
450
432
|
|
451
|
-
const XdsHttpFilterImpl::FilterConfig* FindFilterConfigOverride(
|
452
|
-
const std::string& instance_name,
|
453
|
-
const XdsApi::RdsUpdate::VirtualHost& vhost, const XdsApi::Route& route,
|
454
|
-
const XdsApi::Route::RouteAction::ClusterWeight* cluster_weight) {
|
455
|
-
// Check ClusterWeight, if any.
|
456
|
-
if (cluster_weight != nullptr) {
|
457
|
-
auto it = cluster_weight->typed_per_filter_config.find(instance_name);
|
458
|
-
if (it != cluster_weight->typed_per_filter_config.end()) return &it->second;
|
459
|
-
}
|
460
|
-
// Check Route.
|
461
|
-
auto it = route.typed_per_filter_config.find(instance_name);
|
462
|
-
if (it != route.typed_per_filter_config.end()) return &it->second;
|
463
|
-
// Check VirtualHost.
|
464
|
-
it = vhost.typed_per_filter_config.find(instance_name);
|
465
|
-
if (it != vhost.typed_per_filter_config.end()) return &it->second;
|
466
|
-
// Not found.
|
467
|
-
return nullptr;
|
468
|
-
}
|
469
|
-
|
470
433
|
grpc_error_handle XdsResolver::XdsConfigSelector::CreateMethodConfig(
|
471
434
|
const XdsApi::Route& route,
|
472
435
|
const XdsApi::Route::RouteAction::ClusterWeight* cluster_weight,
|
@@ -523,39 +486,15 @@ grpc_error_handle XdsResolver::XdsConfigSelector::CreateMethodConfig(
|
|
523
486
|
route_action.max_stream_duration->nanos));
|
524
487
|
}
|
525
488
|
// Handle xDS HTTP filters.
|
526
|
-
|
527
|
-
|
528
|
-
|
529
|
-
|
530
|
-
|
531
|
-
|
532
|
-
|
533
|
-
|
534
|
-
|
535
|
-
GPR_ASSERT(filter_impl != nullptr);
|
536
|
-
// If there is not actually any C-core filter associated with this
|
537
|
-
// xDS filter, then it won't need any config, so skip it.
|
538
|
-
if (filter_impl->channel_filter() == nullptr) continue;
|
539
|
-
// Allow filter to add channel args that may affect service config
|
540
|
-
// parsing.
|
541
|
-
args = filter_impl->ModifyChannelArgs(args);
|
542
|
-
// Find config override, if any.
|
543
|
-
const XdsHttpFilterImpl::FilterConfig* config_override =
|
544
|
-
FindFilterConfigOverride(http_filter.name,
|
545
|
-
resolver_->current_virtual_host_, route,
|
546
|
-
cluster_weight);
|
547
|
-
// Generate service config for filter.
|
548
|
-
auto method_config_field =
|
549
|
-
filter_impl->GenerateServiceConfig(http_filter.config, config_override);
|
550
|
-
if (!method_config_field.ok()) {
|
551
|
-
return GRPC_ERROR_CREATE_FROM_CPP_STRING(absl::StrCat(
|
552
|
-
"failed to generate method config for HTTP filter ", http_filter.name,
|
553
|
-
": ", method_config_field.status().ToString()));
|
554
|
-
}
|
555
|
-
per_filter_configs[method_config_field->service_config_field_name]
|
556
|
-
.push_back(method_config_field->element);
|
557
|
-
}
|
558
|
-
for (const auto& p : per_filter_configs) {
|
489
|
+
XdsRouting::GeneratePerHttpFilterConfigsResult result =
|
490
|
+
XdsRouting::GeneratePerHTTPFilterConfigs(
|
491
|
+
resolver_->current_listener_.http_connection_manager.http_filters,
|
492
|
+
resolver_->current_virtual_host_, route, cluster_weight,
|
493
|
+
grpc_channel_args_copy(resolver_->args_));
|
494
|
+
if (result.error != GRPC_ERROR_NONE) {
|
495
|
+
return result.error;
|
496
|
+
}
|
497
|
+
for (const auto& p : result.per_filter_configs) {
|
559
498
|
fields.emplace_back(absl::StrCat(" \"", p.first, "\": [\n",
|
560
499
|
absl::StrJoin(p.second, ",\n"),
|
561
500
|
"\n ]"));
|
@@ -573,9 +512,9 @@ grpc_error_handle XdsResolver::XdsConfigSelector::CreateMethodConfig(
|
|
573
512
|
absl::StrJoin(fields, ",\n"),
|
574
513
|
"\n } ]\n"
|
575
514
|
"}");
|
576
|
-
*method_config = ServiceConfig::Create(args, json.c_str(), &error);
|
515
|
+
*method_config = ServiceConfig::Create(result.args, json.c_str(), &error);
|
577
516
|
}
|
578
|
-
grpc_channel_args_destroy(args);
|
517
|
+
grpc_channel_args_destroy(result.args);
|
579
518
|
return error;
|
580
519
|
}
|
581
520
|
|
@@ -596,39 +535,13 @@ void XdsResolver::XdsConfigSelector::MaybeAddCluster(const std::string& name) {
|
|
596
535
|
}
|
597
536
|
}
|
598
537
|
|
599
|
-
absl::optional<absl::string_view> GetHeaderValue(
|
600
|
-
grpc_metadata_batch* initial_metadata, absl::string_view header_name,
|
601
|
-
std::string* concatenated_value) {
|
602
|
-
// Note: If we ever allow binary headers here, we still need to
|
603
|
-
// special-case ignore "grpc-tags-bin" and "grpc-trace-bin", since
|
604
|
-
// they are not visible to the LB policy in grpc-go.
|
605
|
-
if (absl::EndsWith(header_name, "-bin")) {
|
606
|
-
return absl::nullopt;
|
607
|
-
} else if (header_name == "content-type") {
|
608
|
-
return "application/grpc";
|
609
|
-
}
|
610
|
-
return initial_metadata->GetValue(header_name, concatenated_value);
|
611
|
-
}
|
612
|
-
|
613
|
-
bool HeadersMatch(const std::vector<HeaderMatcher>& header_matchers,
|
614
|
-
grpc_metadata_batch* initial_metadata) {
|
615
|
-
for (const auto& header_matcher : header_matchers) {
|
616
|
-
std::string concatenated_value;
|
617
|
-
if (!header_matcher.Match(GetHeaderValue(
|
618
|
-
initial_metadata, header_matcher.name(), &concatenated_value))) {
|
619
|
-
return false;
|
620
|
-
}
|
621
|
-
}
|
622
|
-
return true;
|
623
|
-
}
|
624
|
-
|
625
538
|
absl::optional<uint64_t> HeaderHashHelper(
|
626
539
|
const XdsApi::Route::RouteAction::HashPolicy& policy,
|
627
540
|
grpc_metadata_batch* initial_metadata) {
|
628
541
|
GPR_ASSERT(policy.type == XdsApi::Route::RouteAction::HashPolicy::HEADER);
|
629
542
|
std::string value_buffer;
|
630
|
-
absl::optional<absl::string_view> header_value =
|
631
|
-
|
543
|
+
absl::optional<absl::string_view> header_value = XdsRouting::GetHeaderValue(
|
544
|
+
initial_metadata, policy.header_name, &value_buffer);
|
632
545
|
if (!header_value.has_value()) {
|
633
546
|
return absl::nullopt;
|
634
547
|
}
|
@@ -644,129 +557,112 @@ absl::optional<uint64_t> HeaderHashHelper(
|
|
644
557
|
return XXH64(header_value->data(), header_value->size(), 0);
|
645
558
|
}
|
646
559
|
|
647
|
-
bool UnderFraction(const uint32_t fraction_per_million) {
|
648
|
-
// Generate a random number in [0, 1000000).
|
649
|
-
const uint32_t random_number = rand() % 1000000;
|
650
|
-
return random_number < fraction_per_million;
|
651
|
-
}
|
652
|
-
|
653
560
|
ConfigSelector::CallConfig XdsResolver::XdsConfigSelector::GetCallConfig(
|
654
561
|
GetCallConfigArgs args) {
|
655
|
-
|
656
|
-
|
657
|
-
|
658
|
-
|
659
|
-
|
660
|
-
|
661
|
-
|
662
|
-
|
663
|
-
|
664
|
-
|
665
|
-
|
666
|
-
|
667
|
-
|
668
|
-
|
669
|
-
|
670
|
-
|
671
|
-
|
672
|
-
|
673
|
-
|
674
|
-
|
675
|
-
|
676
|
-
|
677
|
-
|
678
|
-
|
679
|
-
|
680
|
-
|
681
|
-
|
682
|
-
|
683
|
-
|
684
|
-
|
685
|
-
|
686
|
-
|
687
|
-
|
688
|
-
|
689
|
-
|
690
|
-
|
691
|
-
|
692
|
-
|
693
|
-
|
694
|
-
|
695
|
-
|
696
|
-
size_t index = 0;
|
697
|
-
while (end_index > start_index) {
|
698
|
-
mid = (start_index + end_index) / 2;
|
699
|
-
if (entry.weighted_cluster_state[mid].range_end > key) {
|
700
|
-
end_index = mid;
|
701
|
-
} else if (entry.weighted_cluster_state[mid].range_end < key) {
|
702
|
-
start_index = mid + 1;
|
703
|
-
} else {
|
704
|
-
index = mid + 1;
|
705
|
-
break;
|
706
|
-
}
|
707
|
-
}
|
708
|
-
if (index == 0) index = start_index;
|
709
|
-
GPR_ASSERT(entry.weighted_cluster_state[index].range_end > key);
|
710
|
-
cluster_name = entry.weighted_cluster_state[index].cluster;
|
711
|
-
method_config = entry.weighted_cluster_state[index].method_config;
|
712
|
-
}
|
713
|
-
auto it = clusters_.find(cluster_name);
|
714
|
-
GPR_ASSERT(it != clusters_.end());
|
715
|
-
// Generate a hash.
|
716
|
-
absl::optional<uint64_t> hash;
|
717
|
-
for (const auto& hash_policy : route_action->hash_policies) {
|
718
|
-
absl::optional<uint64_t> new_hash;
|
719
|
-
switch (hash_policy.type) {
|
720
|
-
case XdsApi::Route::RouteAction::HashPolicy::HEADER:
|
721
|
-
new_hash = HeaderHashHelper(hash_policy, args.initial_metadata);
|
722
|
-
break;
|
723
|
-
case XdsApi::Route::RouteAction::HashPolicy::CHANNEL_ID:
|
724
|
-
new_hash = static_cast<uint64_t>(
|
725
|
-
reinterpret_cast<uintptr_t>(resolver_.get()));
|
726
|
-
break;
|
727
|
-
default:
|
728
|
-
GPR_ASSERT(0);
|
729
|
-
}
|
730
|
-
if (new_hash.has_value()) {
|
731
|
-
// Rotating the old value prevents duplicate hash rules from cancelling
|
732
|
-
// each other out and preserves all of the entropy
|
733
|
-
const uint64_t old_value =
|
734
|
-
hash.has_value() ? ((hash.value() << 1) | (hash.value() >> 63)) : 0;
|
735
|
-
hash = old_value ^ new_hash.value();
|
736
|
-
}
|
737
|
-
// If the policy is a terminal policy and a hash has been generated,
|
738
|
-
// ignore the rest of the hash policies.
|
739
|
-
if (hash_policy.terminal && hash.has_value()) {
|
562
|
+
auto route_index = XdsRouting::GetRouteForRequest(
|
563
|
+
RouteListIterator(&route_table_), StringViewFromSlice(*args.path),
|
564
|
+
args.initial_metadata);
|
565
|
+
if (!route_index.has_value()) {
|
566
|
+
return CallConfig();
|
567
|
+
}
|
568
|
+
auto& entry = route_table_[*route_index];
|
569
|
+
// Found a route match
|
570
|
+
const auto* route_action =
|
571
|
+
absl::get_if<XdsApi::Route::RouteAction>(&entry.route.action);
|
572
|
+
if (route_action == nullptr) {
|
573
|
+
CallConfig call_config;
|
574
|
+
call_config.error =
|
575
|
+
grpc_error_set_int(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
576
|
+
"Matching route has inappropriate action"),
|
577
|
+
GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE);
|
578
|
+
return call_config;
|
579
|
+
}
|
580
|
+
absl::string_view cluster_name;
|
581
|
+
RefCountedPtr<ServiceConfig> method_config;
|
582
|
+
if (route_action->weighted_clusters.empty()) {
|
583
|
+
cluster_name = route_action->cluster_name;
|
584
|
+
method_config = entry.method_config;
|
585
|
+
} else {
|
586
|
+
const uint32_t key =
|
587
|
+
rand() %
|
588
|
+
entry.weighted_cluster_state[entry.weighted_cluster_state.size() - 1]
|
589
|
+
.range_end;
|
590
|
+
// Find the index in weighted clusters corresponding to key.
|
591
|
+
size_t mid = 0;
|
592
|
+
size_t start_index = 0;
|
593
|
+
size_t end_index = entry.weighted_cluster_state.size() - 1;
|
594
|
+
size_t index = 0;
|
595
|
+
while (end_index > start_index) {
|
596
|
+
mid = (start_index + end_index) / 2;
|
597
|
+
if (entry.weighted_cluster_state[mid].range_end > key) {
|
598
|
+
end_index = mid;
|
599
|
+
} else if (entry.weighted_cluster_state[mid].range_end < key) {
|
600
|
+
start_index = mid + 1;
|
601
|
+
} else {
|
602
|
+
index = mid + 1;
|
740
603
|
break;
|
741
604
|
}
|
742
605
|
}
|
743
|
-
if (
|
744
|
-
|
745
|
-
|
746
|
-
|
747
|
-
|
748
|
-
|
749
|
-
|
750
|
-
|
606
|
+
if (index == 0) index = start_index;
|
607
|
+
GPR_ASSERT(entry.weighted_cluster_state[index].range_end > key);
|
608
|
+
cluster_name = entry.weighted_cluster_state[index].cluster;
|
609
|
+
method_config = entry.weighted_cluster_state[index].method_config;
|
610
|
+
}
|
611
|
+
auto it = clusters_.find(cluster_name);
|
612
|
+
GPR_ASSERT(it != clusters_.end());
|
613
|
+
// Generate a hash.
|
614
|
+
absl::optional<uint64_t> hash;
|
615
|
+
for (const auto& hash_policy : route_action->hash_policies) {
|
616
|
+
absl::optional<uint64_t> new_hash;
|
617
|
+
switch (hash_policy.type) {
|
618
|
+
case XdsApi::Route::RouteAction::HashPolicy::HEADER:
|
619
|
+
new_hash = HeaderHashHelper(hash_policy, args.initial_metadata);
|
620
|
+
break;
|
621
|
+
case XdsApi::Route::RouteAction::HashPolicy::CHANNEL_ID:
|
622
|
+
new_hash =
|
623
|
+
static_cast<uint64_t>(reinterpret_cast<uintptr_t>(resolver_.get()));
|
624
|
+
break;
|
625
|
+
default:
|
626
|
+
GPR_ASSERT(0);
|
627
|
+
}
|
628
|
+
if (new_hash.has_value()) {
|
629
|
+
// Rotating the old value prevents duplicate hash rules from cancelling
|
630
|
+
// each other out and preserves all of the entropy
|
631
|
+
const uint64_t old_value =
|
632
|
+
hash.has_value() ? ((hash.value() << 1) | (hash.value() >> 63)) : 0;
|
633
|
+
hash = old_value ^ new_hash.value();
|
634
|
+
}
|
635
|
+
// If the policy is a terminal policy and a hash has been generated,
|
636
|
+
// ignore the rest of the hash policies.
|
637
|
+
if (hash_policy.terminal && hash.has_value()) {
|
638
|
+
break;
|
751
639
|
}
|
752
|
-
CallConfig call_config;
|
753
|
-
if (method_config != nullptr) {
|
754
|
-
call_config.method_configs =
|
755
|
-
method_config->GetMethodParsedConfigVector(grpc_empty_slice());
|
756
|
-
call_config.service_config = std::move(method_config);
|
757
|
-
}
|
758
|
-
call_config.call_attributes[kXdsClusterAttribute] = it->first;
|
759
|
-
std::string hash_string = absl::StrCat(hash.value());
|
760
|
-
char* hash_value =
|
761
|
-
static_cast<char*>(args.arena->Alloc(hash_string.size() + 1));
|
762
|
-
memcpy(hash_value, hash_string.c_str(), hash_string.size());
|
763
|
-
hash_value[hash_string.size()] = '\0';
|
764
|
-
call_config.call_attributes[kRequestRingHashAttribute] = hash_value;
|
765
|
-
call_config.call_dispatch_controller =
|
766
|
-
args.arena->New<XdsCallDispatchController>(it->second->Ref());
|
767
|
-
return call_config;
|
768
640
|
}
|
769
|
-
|
641
|
+
if (!hash.has_value()) {
|
642
|
+
// If there is no hash, we just choose a random value as a default.
|
643
|
+
// We cannot directly use the result of rand() as the hash value,
|
644
|
+
// since it is a 32-bit number and not a 64-bit number and will
|
645
|
+
// therefore not be evenly distributed.
|
646
|
+
uint32_t upper = rand();
|
647
|
+
uint32_t lower = rand();
|
648
|
+
hash = (static_cast<uint64_t>(upper) << 32) | lower;
|
649
|
+
}
|
650
|
+
CallConfig call_config;
|
651
|
+
if (method_config != nullptr) {
|
652
|
+
call_config.method_configs =
|
653
|
+
method_config->GetMethodParsedConfigVector(grpc_empty_slice());
|
654
|
+
call_config.service_config = std::move(method_config);
|
655
|
+
}
|
656
|
+
call_config.call_attributes[kXdsClusterAttribute] = it->first;
|
657
|
+
std::string hash_string = absl::StrCat(hash.value());
|
658
|
+
char* hash_value =
|
659
|
+
static_cast<char*>(args.arena->Alloc(hash_string.size() + 1));
|
660
|
+
memcpy(hash_value, hash_string.c_str(), hash_string.size());
|
661
|
+
hash_value[hash_string.size()] = '\0';
|
662
|
+
call_config.call_attributes[kRequestRingHashAttribute] = hash_value;
|
663
|
+
call_config.call_dispatch_controller =
|
664
|
+
args.arena->New<XdsCallDispatchController>(it->second->Ref());
|
665
|
+
return call_config;
|
770
666
|
}
|
771
667
|
|
772
668
|
//
|
@@ -786,7 +682,7 @@ void XdsResolver::StartLocked() {
|
|
786
682
|
}
|
787
683
|
grpc_pollset_set_add_pollset_set(xds_client_->interested_parties(),
|
788
684
|
interested_parties_);
|
789
|
-
auto watcher =
|
685
|
+
auto watcher = MakeRefCounted<ListenerWatcher>(Ref());
|
790
686
|
listener_watcher_ = watcher.get();
|
791
687
|
xds_client_->WatchListenerData(server_name_, std::move(watcher));
|
792
688
|
}
|
@@ -814,6 +710,9 @@ void XdsResolver::OnListenerUpdate(XdsApi::LdsUpdate listener) {
|
|
814
710
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_resolver_trace)) {
|
815
711
|
gpr_log(GPR_INFO, "[xds_resolver %p] received updated listener data", this);
|
816
712
|
}
|
713
|
+
if (xds_client_ == nullptr) {
|
714
|
+
return;
|
715
|
+
}
|
817
716
|
if (listener.http_connection_manager.route_config_name !=
|
818
717
|
route_config_name_) {
|
819
718
|
if (route_config_watcher_ != nullptr) {
|
@@ -827,7 +726,7 @@ void XdsResolver::OnListenerUpdate(XdsApi::LdsUpdate listener) {
|
|
827
726
|
std::move(listener.http_connection_manager.route_config_name);
|
828
727
|
if (!route_config_name_.empty()) {
|
829
728
|
current_virtual_host_.routes.clear();
|
830
|
-
auto watcher =
|
729
|
+
auto watcher = MakeRefCounted<RouteConfigWatcher>(Ref());
|
831
730
|
route_config_watcher_ = watcher.get();
|
832
731
|
xds_client_->WatchRouteConfigData(route_config_name_, std::move(watcher));
|
833
732
|
}
|
@@ -845,21 +744,43 @@ void XdsResolver::OnListenerUpdate(XdsApi::LdsUpdate listener) {
|
|
845
744
|
}
|
846
745
|
}
|
847
746
|
|
747
|
+
namespace {
|
748
|
+
class VirtualHostListIterator : public XdsRouting::VirtualHostListIterator {
|
749
|
+
public:
|
750
|
+
explicit VirtualHostListIterator(
|
751
|
+
const std::vector<XdsApi::RdsUpdate::VirtualHost>* virtual_hosts)
|
752
|
+
: virtual_hosts_(virtual_hosts) {}
|
753
|
+
|
754
|
+
size_t Size() const override { return virtual_hosts_->size(); }
|
755
|
+
|
756
|
+
const std::vector<std::string>& GetDomainsForVirtualHost(
|
757
|
+
size_t index) const override {
|
758
|
+
return (*virtual_hosts_)[index].domains;
|
759
|
+
}
|
760
|
+
|
761
|
+
private:
|
762
|
+
const std::vector<XdsApi::RdsUpdate::VirtualHost>* virtual_hosts_;
|
763
|
+
};
|
764
|
+
} // namespace
|
765
|
+
|
848
766
|
void XdsResolver::OnRouteConfigUpdate(XdsApi::RdsUpdate rds_update) {
|
849
767
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_resolver_trace)) {
|
850
768
|
gpr_log(GPR_INFO, "[xds_resolver %p] received updated route config", this);
|
851
769
|
}
|
770
|
+
if (xds_client_ == nullptr) {
|
771
|
+
return;
|
772
|
+
}
|
852
773
|
// Find the relevant VirtualHost from the RouteConfiguration.
|
853
|
-
|
854
|
-
rds_update.
|
855
|
-
if (
|
774
|
+
auto vhost_index = XdsRouting::FindVirtualHostForDomain(
|
775
|
+
VirtualHostListIterator(&rds_update.virtual_hosts), server_name_);
|
776
|
+
if (!vhost_index.has_value()) {
|
856
777
|
OnError(GRPC_ERROR_CREATE_FROM_CPP_STRING(
|
857
778
|
absl::StrCat("could not find VirtualHost for ", server_name_,
|
858
779
|
" in RouteConfiguration")));
|
859
780
|
return;
|
860
781
|
}
|
861
782
|
// Save the virtual host in the resolver.
|
862
|
-
current_virtual_host_ = std::move(*
|
783
|
+
current_virtual_host_ = std::move(rds_update.virtual_hosts[*vhost_index]);
|
863
784
|
// Send a new result to the channel.
|
864
785
|
GenerateResult();
|
865
786
|
}
|
@@ -867,6 +788,10 @@ void XdsResolver::OnRouteConfigUpdate(XdsApi::RdsUpdate rds_update) {
|
|
867
788
|
void XdsResolver::OnError(grpc_error_handle error) {
|
868
789
|
gpr_log(GPR_ERROR, "[xds_resolver %p] received error from XdsClient: %s",
|
869
790
|
this, grpc_error_std_string(error).c_str());
|
791
|
+
if (xds_client_ == nullptr) {
|
792
|
+
GRPC_ERROR_UNREF(error);
|
793
|
+
return;
|
794
|
+
}
|
870
795
|
Result result;
|
871
796
|
grpc_arg new_arg = xds_client_->MakeChannelArg();
|
872
797
|
result.args = grpc_channel_args_copy_and_add(args_, &new_arg, 1);
|
@@ -879,6 +804,9 @@ void XdsResolver::OnResourceDoesNotExist() {
|
|
879
804
|
"[xds_resolver %p] LDS/RDS resource does not exist -- clearing "
|
880
805
|
"update and returning empty service config",
|
881
806
|
this);
|
807
|
+
if (xds_client_ == nullptr) {
|
808
|
+
return;
|
809
|
+
}
|
882
810
|
current_virtual_host_.routes.clear();
|
883
811
|
Result result;
|
884
812
|
result.service_config =
|