grpc 1.31.0.pre1 → 1.33.0.pre1
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +693 -16022
- data/include/grpc/grpc.h +0 -5
- data/include/grpc/grpc_security.h +47 -14
- data/include/grpc/impl/codegen/README.md +22 -0
- data/include/grpc/impl/codegen/grpc_types.h +0 -5
- data/include/grpc/impl/codegen/port_platform.h +6 -1
- data/src/core/ext/filters/client_channel/backup_poller.cc +3 -2
- data/src/core/ext/filters/client_channel/client_channel.cc +264 -186
- data/src/core/ext/filters/client_channel/client_channel.h +1 -1
- data/src/core/ext/filters/client_channel/client_channel_channelz.h +0 -3
- data/src/core/ext/filters/client_channel/config_selector.cc +0 -4
- data/src/core/ext/filters/client_channel/config_selector.h +34 -5
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +6 -1
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +2 -3
- data/src/core/ext/filters/client_channel/lb_policy.h +3 -1
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +48 -35
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +7 -5
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +9 -6
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +126 -119
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +0 -13
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +0 -3
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +1 -37
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +21 -15
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +32 -13
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +8 -7
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +9 -32
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +26 -16
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +207 -129
- data/src/core/ext/filters/client_channel/lb_policy/xds/eds.cc +453 -255
- data/src/core/ext/filters/client_channel/lb_policy/xds/eds_drop.cc +571 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +727 -0
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +8 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +3 -3
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_libuv.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +602 -58
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +28 -0
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +8 -39
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +4 -3
- data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +49 -47
- data/src/core/ext/filters/client_channel/resolving_lb_policy.h +5 -9
- data/src/core/ext/filters/client_channel/server_address.cc +120 -7
- data/src/core/ext/filters/client_channel/server_address.h +48 -21
- data/src/core/ext/filters/client_channel/service_config.cc +16 -13
- data/src/core/ext/filters/client_channel/service_config.h +7 -4
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +2 -2
- data/src/core/ext/filters/client_channel/service_config_parser.cc +8 -6
- data/src/core/ext/filters/client_channel/service_config_parser.h +8 -5
- data/src/core/ext/filters/client_channel/subchannel.cc +64 -23
- data/src/core/ext/filters/client_channel/subchannel.h +16 -4
- data/src/core/ext/filters/client_channel/subchannel_interface.h +44 -0
- data/src/core/ext/filters/max_age/max_age_filter.cc +2 -1
- data/src/core/ext/filters/message_size/message_size_filter.cc +2 -1
- data/src/core/ext/filters/message_size/message_size_filter.h +2 -1
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +87 -31
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +18 -1
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +10 -35
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +19 -25
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +2 -1
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +2 -2
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +6 -6
- data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +3 -2
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +256 -287
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +11 -3
- data/src/core/ext/transport/chttp2/transport/flow_control.h +10 -0
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/internal.h +10 -1
- data/src/core/ext/transport/chttp2/transport/parsing.cc +17 -30
- data/src/core/ext/transport/chttp2/transport/writing.cc +6 -5
- data/src/core/ext/transport/inproc/inproc_transport.cc +12 -12
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +244 -0
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +766 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +74 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +226 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +458 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +1635 -0
- data/src/core/ext/upb-generated/envoy/{api/v2/cluster → config/cluster/v3}/filter.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +69 -0
- data/src/core/ext/upb-generated/envoy/{api/v2/cluster → config/cluster/v3}/outlier_detection.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +323 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +124 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +379 -0
- data/src/core/ext/upb-generated/envoy/{api/v2/core → config/core/v3}/backoff.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +79 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +310 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +869 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +103 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +351 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +34 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +71 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +53 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +133 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +241 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +752 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +170 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +684 -0
- data/src/core/ext/upb-generated/envoy/{api/v2/core → config/core/v3}/http_uri.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +80 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +176 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +645 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +28 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +58 -0
- data/src/core/ext/upb-generated/envoy/{api/v2/core → config/core/v3}/socket_option.upb.c +6 -6
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +88 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +36 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +85 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +91 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +220 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +91 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +273 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +112 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +332 -0
- data/src/core/ext/upb-generated/envoy/config/listener/{v2 → v3}/api_listener.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +65 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +128 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +467 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +155 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +539 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +41 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +94 -0
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +178 -0
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +616 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +63 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +204 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +900 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +3290 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +60 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +139 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +50 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +108 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +364 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +1336 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +20 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +34 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +110 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +387 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +76 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +214 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +147 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +570 -0
- data/src/core/ext/upb-generated/envoy/{api/v2 → service/cluster/v3}/cds.upb.c +5 -6
- data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.h +49 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/{v2 → v3}/ads.upb.c +5 -4
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +49 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +139 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +449 -0
- data/src/core/ext/upb-generated/envoy/{api/v2 → service/endpoint/v3}/eds.upb.c +5 -6
- data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.h +49 -0
- data/src/core/ext/upb-generated/envoy/{api/v2 → service/listener/v3}/lds.upb.c +5 -6
- data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.h +49 -0
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +55 -0
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +136 -0
- data/src/core/ext/upb-generated/envoy/{api/v2 → service/route/v3}/rds.upb.c +5 -6
- data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.h +49 -0
- data/src/core/ext/upb-generated/envoy/{api/v2 → service/route/v3}/srds.upb.c +5 -6
- data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.h +49 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +47 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +114 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +35 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +77 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +34 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +71 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +64 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +145 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +54 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +133 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +63 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +188 -0
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +88 -0
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +258 -0
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +90 -0
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +250 -0
- data/src/core/ext/upb-generated/envoy/type/{http.upb.c → v3/http.upb.c} +2 -2
- data/src/core/ext/upb-generated/envoy/type/{http.upb.h → v3/http.upb.h} +8 -8
- data/src/core/ext/upb-generated/envoy/type/{percent.upb.c → v3/percent.upb.c} +9 -8
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +86 -0
- data/src/core/ext/upb-generated/envoy/type/{range.upb.c → v3/range.upb.c} +12 -11
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +111 -0
- data/src/core/ext/upb-generated/envoy/type/{semantic_version.upb.c → v3/semantic_version.upb.c} +6 -5
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +61 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +242 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +753 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +234 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +759 -0
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +36 -36
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +1 -1
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +31 -0
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +57 -0
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +27 -0
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +53 -0
- data/src/core/ext/upb-generated/udpa/core/v1/authority.upb.c +28 -0
- data/src/core/ext/upb-generated/udpa/core/v1/authority.upb.h +53 -0
- data/src/core/ext/upb-generated/udpa/core/v1/collection_entry.upb.c +52 -0
- data/src/core/ext/upb-generated/udpa/core/v1/collection_entry.upb.h +129 -0
- data/src/core/ext/upb-generated/udpa/core/v1/context_params.upb.c +42 -0
- data/src/core/ext/upb-generated/udpa/core/v1/context_params.upb.h +77 -0
- data/src/core/ext/upb-generated/udpa/core/v1/resource.upb.c +36 -0
- data/src/core/ext/upb-generated/udpa/core/v1/resource.upb.h +85 -0
- data/src/core/ext/upb-generated/udpa/core/v1/resource_locator.upb.c +54 -0
- data/src/core/ext/upb-generated/udpa/core/v1/resource_locator.upb.h +160 -0
- data/src/core/ext/upb-generated/udpa/core/v1/resource_name.upb.c +36 -0
- data/src/core/ext/upb-generated/udpa/core/v1/resource_name.upb.h +84 -0
- data/src/core/ext/upb-generated/validate/validate.upb.c +11 -11
- data/src/core/ext/upb-generated/validate/validate.upb.h +1 -1
- data/src/core/ext/xds/certificate_provider_factory.h +59 -0
- data/src/core/ext/xds/certificate_provider_registry.cc +103 -0
- data/src/core/ext/xds/certificate_provider_registry.h +57 -0
- data/src/core/ext/xds/certificate_provider_store.h +50 -0
- data/src/core/ext/xds/google_mesh_ca_certificate_provider_factory.cc +377 -0
- data/src/core/ext/xds/google_mesh_ca_certificate_provider_factory.h +102 -0
- data/src/core/ext/xds/xds_api.cc +2596 -0
- data/src/core/ext/xds/xds_api.h +397 -0
- data/src/core/ext/{filters/client_channel/xds → xds}/xds_bootstrap.cc +44 -2
- data/src/core/ext/{filters/client_channel/xds → xds}/xds_bootstrap.h +8 -3
- data/src/core/ext/{filters/client_channel/xds → xds}/xds_channel_args.h +9 -6
- data/src/core/ext/{filters/client_channel/xds → xds}/xds_client.cc +541 -785
- data/src/core/ext/{filters/client_channel/xds → xds}/xds_client.h +114 -93
- data/src/core/ext/{filters/client_channel/xds → xds}/xds_client_stats.cc +20 -14
- data/src/core/ext/{filters/client_channel/xds → xds}/xds_client_stats.h +36 -8
- data/src/core/lib/channel/channel_args.h +0 -1
- data/src/core/lib/channel/channelz.cc +24 -60
- data/src/core/lib/channel/channelz.h +12 -20
- data/src/core/lib/channel/channelz_registry.cc +15 -12
- data/src/core/lib/channel/channelz_registry.h +3 -0
- data/src/core/lib/gpr/sync_posix.cc +2 -8
- data/src/core/lib/gpr/time_precise.cc +2 -0
- data/src/core/lib/gpr/time_precise.h +6 -2
- data/src/core/lib/gprpp/dual_ref_counted.h +336 -0
- data/src/core/lib/gprpp/ref_counted.h +51 -22
- data/src/core/lib/gprpp/ref_counted_ptr.h +153 -0
- data/src/core/lib/iomgr/endpoint.cc +5 -1
- data/src/core/lib/iomgr/endpoint.h +7 -3
- data/src/core/lib/iomgr/endpoint_cfstream.cc +36 -11
- data/src/core/lib/iomgr/ev_posix.cc +0 -2
- data/src/core/lib/iomgr/exec_ctx.h +10 -8
- data/src/core/lib/iomgr/iomgr.cc +0 -10
- data/src/core/lib/iomgr/iomgr.h +0 -10
- data/src/core/{ext/filters/client_channel → lib/iomgr}/parse_address.cc +1 -1
- data/src/core/{ext/filters/client_channel → lib/iomgr}/parse_address.h +3 -3
- data/src/core/lib/iomgr/sockaddr_utils.cc +2 -1
- data/src/core/lib/iomgr/sockaddr_utils.h +2 -1
- data/src/core/lib/iomgr/tcp_custom.cc +32 -16
- data/src/core/lib/iomgr/tcp_posix.cc +31 -13
- data/src/core/lib/iomgr/tcp_windows.cc +26 -10
- data/src/core/lib/json/json_util.cc +58 -0
- data/src/core/lib/json/json_util.h +37 -0
- data/src/core/lib/security/authorization/authorization_engine.cc +177 -0
- data/src/core/lib/security/authorization/authorization_engine.h +84 -0
- data/src/core/lib/security/authorization/evaluate_args.cc +153 -0
- data/src/core/lib/security/authorization/evaluate_args.h +59 -0
- data/src/core/lib/security/authorization/mock_cel/activation.h +57 -0
- data/src/core/lib/security/authorization/mock_cel/cel_expr_builder_factory.h +42 -0
- data/src/core/lib/security/authorization/mock_cel/cel_expression.h +68 -0
- data/src/core/lib/security/authorization/mock_cel/cel_value.h +93 -0
- data/src/core/lib/security/authorization/mock_cel/evaluator_core.h +67 -0
- data/src/core/lib/security/authorization/mock_cel/flat_expr_builder.h +56 -0
- data/src/core/lib/security/authorization/mock_cel/statusor.h +50 -0
- data/src/core/lib/security/certificate_provider.h +60 -0
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +56 -38
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +321 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +214 -0
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +45 -0
- data/src/core/lib/security/credentials/xds/xds_credentials.h +51 -0
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +7 -12
- data/src/core/lib/security/security_connector/ssl_utils.h +5 -0
- data/src/core/lib/security/transport/secure_endpoint.cc +7 -1
- data/src/core/lib/surface/call.cc +12 -12
- data/src/core/lib/surface/call.h +2 -1
- data/src/core/lib/surface/channel.cc +37 -51
- data/src/core/lib/surface/channel.h +18 -3
- data/src/core/lib/surface/completion_queue.cc +10 -272
- data/src/core/lib/surface/completion_queue.h +0 -8
- data/src/core/lib/surface/init.cc +27 -12
- data/src/core/lib/surface/server.cc +1066 -1244
- data/src/core/lib/surface/server.h +363 -87
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/authority_override.cc +38 -0
- data/src/core/lib/transport/authority_override.h +32 -0
- data/src/core/lib/transport/bdp_estimator.h +2 -1
- data/src/core/lib/transport/connectivity_state.cc +18 -13
- data/src/core/lib/transport/connectivity_state.h +20 -8
- data/src/core/lib/transport/error_utils.cc +13 -0
- data/src/core/lib/transport/error_utils.h +6 -0
- data/src/core/lib/transport/metadata.cc +11 -1
- data/src/core/lib/transport/static_metadata.cc +295 -276
- data/src/core/lib/transport/static_metadata.h +80 -73
- data/src/core/lib/transport/transport.h +7 -0
- data/src/core/lib/uri/uri_parser.cc +23 -21
- data/src/core/lib/uri/uri_parser.h +3 -1
- data/src/core/plugin_registry/grpc_plugin_registry.cc +35 -20
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +22 -0
- data/src/core/tsi/ssl_transport_security.cc +2 -2
- data/src/ruby/bin/math_services_pb.rb +4 -4
- data/src/ruby/ext/grpc/rb_channel_credentials.c +9 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +4 -4
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +7 -7
- data/src/ruby/lib/grpc/generic/client_stub.rb +1 -1
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/grpc/health/v1/health_services_pb.rb +2 -2
- data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +5 -0
- data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +28 -12
- data/src/ruby/spec/channel_credentials_spec.rb +10 -0
- data/src/ruby/spec/generic/active_call_spec.rb +19 -8
- data/src/ruby/spec/pb/codegen/grpc/testing/same_package_service_name.proto +27 -0
- data/src/ruby/spec/pb/codegen/grpc/testing/same_ruby_package_service_name.proto +29 -0
- data/src/ruby/spec/pb/codegen/package_option_spec.rb +20 -0
- data/src/ruby/spec/user_agent_spec.rb +74 -0
- data/third_party/abseil-cpp/absl/algorithm/container.h +1727 -0
- data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +161 -0
- data/third_party/abseil-cpp/absl/base/internal/exponential_biased.cc +93 -0
- data/third_party/abseil-cpp/absl/base/internal/exponential_biased.h +130 -0
- data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +620 -0
- data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.h +126 -0
- data/third_party/abseil-cpp/absl/container/fixed_array.h +515 -0
- data/third_party/abseil-cpp/absl/container/flat_hash_set.h +503 -0
- data/third_party/abseil-cpp/absl/container/internal/common.h +202 -0
- data/third_party/abseil-cpp/absl/container/internal/container_memory.h +440 -0
- data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +146 -0
- data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +191 -0
- data/third_party/abseil-cpp/absl/container/internal/hashtable_debug_hooks.h +85 -0
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +269 -0
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +297 -0
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler_force_weak_definition.cc +30 -0
- data/third_party/abseil-cpp/absl/container/internal/have_sse.h +49 -0
- data/third_party/abseil-cpp/absl/container/internal/layout.h +741 -0
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +48 -0
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +1882 -0
- data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc +138 -0
- data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.h +32 -0
- data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +1895 -0
- data/third_party/abseil-cpp/absl/debugging/internal/demangle.h +71 -0
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +382 -0
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +134 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +192 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +125 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +70 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +99 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +248 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_unimplemented-inl.inc +24 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_win32-inl.inc +85 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +346 -0
- data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +128 -0
- data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +194 -0
- data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.h +158 -0
- data/third_party/abseil-cpp/absl/debugging/stacktrace.cc +140 -0
- data/third_party/abseil-cpp/absl/debugging/stacktrace.h +231 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize.cc +25 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize.h +99 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +1480 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize_unimplemented.inc +40 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize_win32.inc +81 -0
- data/third_party/abseil-cpp/absl/functional/function_ref.h +139 -0
- data/third_party/abseil-cpp/absl/functional/internal/function_ref.h +106 -0
- data/third_party/abseil-cpp/absl/hash/hash.h +324 -0
- data/third_party/abseil-cpp/absl/hash/internal/city.cc +346 -0
- data/third_party/abseil-cpp/absl/hash/internal/city.h +96 -0
- data/third_party/abseil-cpp/absl/hash/internal/hash.cc +55 -0
- data/third_party/abseil-cpp/absl/hash/internal/hash.h +988 -0
- data/third_party/abseil-cpp/absl/status/status.cc +447 -0
- data/third_party/abseil-cpp/absl/status/status.h +428 -0
- data/third_party/abseil-cpp/absl/status/status_payload_printer.cc +43 -0
- data/third_party/abseil-cpp/absl/status/status_payload_printer.h +51 -0
- data/third_party/abseil-cpp/absl/strings/cord.cc +2019 -0
- data/third_party/abseil-cpp/absl/strings/cord.h +1121 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +151 -0
- data/third_party/abseil-cpp/absl/synchronization/barrier.cc +52 -0
- data/third_party/abseil-cpp/absl/synchronization/barrier.h +79 -0
- data/third_party/abseil-cpp/absl/synchronization/blocking_counter.cc +57 -0
- data/third_party/abseil-cpp/absl/synchronization/blocking_counter.h +99 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +140 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.h +60 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +697 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.h +141 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +155 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/mutex_nonprod.inc +261 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +106 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +115 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +484 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +159 -0
- data/third_party/abseil-cpp/absl/synchronization/mutex.cc +2728 -0
- data/third_party/abseil-cpp/absl/synchronization/mutex.h +1056 -0
- data/third_party/abseil-cpp/absl/synchronization/notification.cc +78 -0
- data/third_party/abseil-cpp/absl/synchronization/notification.h +123 -0
- data/third_party/abseil-cpp/absl/types/bad_variant_access.cc +64 -0
- data/third_party/abseil-cpp/absl/types/bad_variant_access.h +82 -0
- data/third_party/abseil-cpp/absl/types/internal/variant.h +1646 -0
- data/third_party/abseil-cpp/absl/types/variant.h +861 -0
- data/third_party/boringssl-with-bazel/err_data.c +475 -467
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +0 -6
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +9 -43
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa_asn1.c +55 -4
- data/third_party/boringssl-with-bazel/src/crypto/dsa/internal.h +34 -0
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +16 -0
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_dsa_asn1.c +6 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +30 -10
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +10 -15
- data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +543 -0
- data/third_party/boringssl-with-bazel/src/crypto/hpke/internal.h +237 -0
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +44 -2
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +221 -49
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +64 -20
- data/third_party/boringssl-with-bazel/src/crypto/x509/a_strex.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +0 -8
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_crl.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +7 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_ext.c +21 -18
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_obj.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +24 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_txt.c +67 -67
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +29 -35
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +13 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +9 -8
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +10 -10
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.c +28 -40
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_sig.c +20 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +3 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/ext_dat.h +1 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +7 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_genn.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_info.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +55 -8
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +52 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +0 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +2 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +6 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +12 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +9 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +4 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +48 -9
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +2 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +26 -6
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +199 -78
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +52 -43
- data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +18 -18
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +2 -3
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +1 -1
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +13 -9
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +3 -6
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +8 -9
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +10 -0
- data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +34 -9
- data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +1 -2
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +4 -8
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +7 -2
- data/third_party/boringssl-with-bazel/src/ssl/tls_record.cc +5 -3
- data/third_party/re2/re2/bitmap256.h +117 -0
- data/third_party/re2/re2/bitstate.cc +385 -0
- data/third_party/re2/re2/compile.cc +1279 -0
- data/third_party/re2/re2/dfa.cc +2130 -0
- data/third_party/re2/re2/filtered_re2.cc +121 -0
- data/third_party/re2/re2/filtered_re2.h +109 -0
- data/third_party/re2/re2/mimics_pcre.cc +197 -0
- data/third_party/re2/re2/nfa.cc +713 -0
- data/third_party/re2/re2/onepass.cc +623 -0
- data/third_party/re2/re2/parse.cc +2464 -0
- data/third_party/re2/re2/perl_groups.cc +119 -0
- data/third_party/re2/re2/pod_array.h +55 -0
- data/third_party/re2/re2/prefilter.cc +710 -0
- data/third_party/re2/re2/prefilter.h +108 -0
- data/third_party/re2/re2/prefilter_tree.cc +407 -0
- data/third_party/re2/re2/prefilter_tree.h +139 -0
- data/third_party/re2/re2/prog.cc +988 -0
- data/third_party/re2/re2/prog.h +436 -0
- data/third_party/re2/re2/re2.cc +1362 -0
- data/third_party/re2/re2/re2.h +1002 -0
- data/third_party/re2/re2/regexp.cc +980 -0
- data/third_party/re2/re2/regexp.h +659 -0
- data/third_party/re2/re2/set.cc +154 -0
- data/third_party/re2/re2/set.h +80 -0
- data/third_party/re2/re2/simplify.cc +657 -0
- data/third_party/re2/re2/sparse_array.h +392 -0
- data/third_party/re2/re2/sparse_set.h +264 -0
- data/third_party/re2/re2/stringpiece.cc +65 -0
- data/third_party/re2/re2/stringpiece.h +210 -0
- data/third_party/re2/re2/tostring.cc +351 -0
- data/third_party/re2/re2/unicode_casefold.cc +582 -0
- data/third_party/re2/re2/unicode_casefold.h +78 -0
- data/third_party/re2/re2/unicode_groups.cc +6269 -0
- data/third_party/re2/re2/unicode_groups.h +67 -0
- data/third_party/re2/re2/walker-inl.h +246 -0
- data/third_party/re2/util/benchmark.h +156 -0
- data/third_party/re2/util/flags.h +26 -0
- data/third_party/re2/util/logging.h +109 -0
- data/third_party/re2/util/malloc_counter.h +19 -0
- data/third_party/re2/util/mix.h +41 -0
- data/third_party/re2/util/mutex.h +148 -0
- data/third_party/re2/util/pcre.cc +1025 -0
- data/third_party/re2/util/pcre.h +681 -0
- data/third_party/re2/util/rune.cc +260 -0
- data/third_party/re2/util/strutil.cc +149 -0
- data/third_party/re2/util/strutil.h +21 -0
- data/third_party/re2/util/test.h +50 -0
- data/third_party/re2/util/utf.h +44 -0
- data/third_party/re2/util/util.h +42 -0
- data/third_party/upb/upb/decode.c +64 -15
- data/third_party/upb/upb/encode.c +2 -2
- data/third_party/upb/upb/msg.h +2 -2
- data/third_party/upb/upb/port_def.inc +1 -1
- data/third_party/upb/upb/table.c +0 -11
- data/third_party/upb/upb/table.int.h +0 -9
- data/third_party/upb/upb/upb.c +16 -14
- data/third_party/upb/upb/upb.h +26 -0
- data/third_party/upb/upb/upb.hpp +2 -0
- metadata +340 -153
- data/src/core/ext/filters/client_channel/lb_policy/xds/lrs.cc +0 -528
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_routing.cc +0 -1142
- data/src/core/ext/filters/client_channel/xds/xds_api.cc +0 -2110
- data/src/core/ext/filters/client_channel/xds/xds_api.h +0 -345
- data/src/core/ext/filters/client_channel/xds/xds_channel.h +0 -46
- data/src/core/ext/filters/client_channel/xds/xds_channel_secure.cc +0 -106
- data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.c +0 -21
- data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.h +0 -34
- data/src/core/ext/upb-generated/envoy/api/v2/auth/common.upb.c +0 -114
- data/src/core/ext/upb-generated/envoy/api/v2/auth/common.upb.h +0 -429
- data/src/core/ext/upb-generated/envoy/api/v2/auth/secret.upb.c +0 -72
- data/src/core/ext/upb-generated/envoy/api/v2/auth/secret.upb.h +0 -198
- data/src/core/ext/upb-generated/envoy/api/v2/auth/tls.upb.c +0 -105
- data/src/core/ext/upb-generated/envoy/api/v2/auth/tls.upb.h +0 -388
- data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.h +0 -52
- data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.c +0 -403
- data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.h +0 -1453
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.c +0 -74
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.h +0 -226
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/filter.upb.h +0 -69
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/outlier_detection.upb.h +0 -323
- data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.c +0 -112
- data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.h +0 -334
- data/src/core/ext/upb-generated/envoy/api/v2/core/backoff.upb.h +0 -79
- data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.c +0 -313
- data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.h +0 -891
- data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.c +0 -96
- data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.h +0 -328
- data/src/core/ext/upb-generated/envoy/api/v2/core/event_service_config.upb.c +0 -34
- data/src/core/ext/upb-generated/envoy/api/v2/core/event_service_config.upb.h +0 -71
- data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.c +0 -197
- data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.h +0 -649
- data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.c +0 -172
- data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.h +0 -693
- data/src/core/ext/upb-generated/envoy/api/v2/core/http_uri.upb.h +0 -80
- data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.c +0 -152
- data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.h +0 -536
- data/src/core/ext/upb-generated/envoy/api/v2/core/socket_option.upb.h +0 -88
- data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.c +0 -129
- data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.h +0 -386
- data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.h +0 -52
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.c +0 -92
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.h +0 -224
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.c +0 -18
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.h +0 -32
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.c +0 -91
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.h +0 -273
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.c +0 -112
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.h +0 -332
- data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.h +0 -52
- data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.c +0 -109
- data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.h +0 -415
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.c +0 -18
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.h +0 -32
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.c +0 -145
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.h +0 -538
- data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.c +0 -43
- data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.h +0 -111
- data/src/core/ext/upb-generated/envoy/api/v2/rds.upb.h +0 -52
- data/src/core/ext/upb-generated/envoy/api/v2/route.upb.c +0 -63
- data/src/core/ext/upb-generated/envoy/api/v2/route.upb.h +0 -204
- data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.c +0 -18
- data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.h +0 -32
- data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.c +0 -815
- data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.h +0 -2984
- data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.c +0 -59
- data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.h +0 -135
- data/src/core/ext/upb-generated/envoy/api/v2/srds.upb.h +0 -52
- data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.c +0 -228
- data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.h +0 -732
- data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.c +0 -316
- data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.h +0 -1167
- data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.h +0 -65
- data/src/core/ext/upb-generated/envoy/config/trace/v2/http_tracer.upb.c +0 -51
- data/src/core/ext/upb-generated/envoy/config/trace/v2/http_tracer.upb.h +0 -125
- data/src/core/ext/upb-generated/envoy/service/discovery/v2/ads.upb.h +0 -49
- data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.c +0 -54
- data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.h +0 -136
- data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.c +0 -63
- data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.h +0 -145
- data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.c +0 -53
- data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.h +0 -133
- data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.c +0 -88
- data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.h +0 -258
- data/src/core/ext/upb-generated/envoy/type/percent.upb.h +0 -86
- data/src/core/ext/upb-generated/envoy/type/range.upb.h +0 -111
- data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.h +0 -61
- data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.c +0 -89
- data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.h +0 -250
- data/src/core/ext/upb-generated/gogoproto/gogo.upb.c +0 -17
- data/src/core/ext/upb-generated/gogoproto/gogo.upb.h +0 -29
- data/src/core/lib/security/transport/target_authority_table.cc +0 -75
- data/src/core/lib/security/transport/target_authority_table.h +0 -40
- data/src/core/lib/slice/slice_hash_table.h +0 -199
- data/src/core/lib/slice/slice_weak_hash_table.h +0 -102
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pku.c +0 -110
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_sxnet.c +0 -274
@@ -14,43 +14,50 @@
|
|
14
14
|
// limitations under the License.
|
15
15
|
//
|
16
16
|
|
17
|
-
#ifndef
|
18
|
-
#define
|
17
|
+
#ifndef GRPC_CORE_EXT_XDS_XDS_CLIENT_H
|
18
|
+
#define GRPC_CORE_EXT_XDS_XDS_CLIENT_H
|
19
19
|
|
20
20
|
#include <grpc/support/port_platform.h>
|
21
21
|
|
22
22
|
#include <set>
|
23
|
+
#include <vector>
|
23
24
|
|
24
25
|
#include "absl/strings/string_view.h"
|
25
26
|
#include "absl/types/optional.h"
|
26
27
|
|
27
|
-
#include "src/core/ext/
|
28
|
-
#include "src/core/ext/
|
29
|
-
#include "src/core/ext/
|
30
|
-
#include "src/core/
|
28
|
+
#include "src/core/ext/xds/xds_api.h"
|
29
|
+
#include "src/core/ext/xds/xds_bootstrap.h"
|
30
|
+
#include "src/core/ext/xds/xds_client_stats.h"
|
31
|
+
#include "src/core/lib/channel/channelz.h"
|
32
|
+
#include "src/core/lib/gprpp/dual_ref_counted.h"
|
31
33
|
#include "src/core/lib/gprpp/map.h"
|
32
34
|
#include "src/core/lib/gprpp/memory.h"
|
33
35
|
#include "src/core/lib/gprpp/orphanable.h"
|
34
36
|
#include "src/core/lib/gprpp/ref_counted.h"
|
35
37
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
36
|
-
#include "src/core/lib/
|
38
|
+
#include "src/core/lib/gprpp/sync.h"
|
37
39
|
|
38
40
|
namespace grpc_core {
|
39
41
|
|
40
42
|
extern TraceFlag xds_client_trace;
|
41
43
|
|
42
|
-
class XdsClient : public
|
44
|
+
class XdsClient : public DualRefCounted<XdsClient> {
|
43
45
|
public:
|
44
|
-
//
|
45
|
-
class
|
46
|
+
// Listener data watcher interface. Implemented by callers.
|
47
|
+
class ListenerWatcherInterface {
|
46
48
|
public:
|
47
|
-
virtual ~
|
48
|
-
|
49
|
-
virtual void OnServiceConfigChanged(
|
50
|
-
RefCountedPtr<ServiceConfig> service_config) = 0;
|
51
|
-
|
49
|
+
virtual ~ListenerWatcherInterface() = default;
|
50
|
+
virtual void OnListenerChanged(XdsApi::LdsUpdate listener) = 0;
|
52
51
|
virtual void OnError(grpc_error* error) = 0;
|
52
|
+
virtual void OnResourceDoesNotExist() = 0;
|
53
|
+
};
|
53
54
|
|
55
|
+
// RouteConfiguration data watcher interface. Implemented by callers.
|
56
|
+
class RouteConfigWatcherInterface {
|
57
|
+
public:
|
58
|
+
virtual ~RouteConfigWatcherInterface() = default;
|
59
|
+
virtual void OnRouteConfigChanged(XdsApi::RdsUpdate route_config) = 0;
|
60
|
+
virtual void OnError(grpc_error* error) = 0;
|
54
61
|
virtual void OnResourceDoesNotExist() = 0;
|
55
62
|
};
|
56
63
|
|
@@ -58,11 +65,8 @@ class XdsClient : public InternallyRefCounted<XdsClient> {
|
|
58
65
|
class ClusterWatcherInterface {
|
59
66
|
public:
|
60
67
|
virtual ~ClusterWatcherInterface() = default;
|
61
|
-
|
62
68
|
virtual void OnClusterChanged(XdsApi::CdsUpdate cluster_data) = 0;
|
63
|
-
|
64
69
|
virtual void OnError(grpc_error* error) = 0;
|
65
|
-
|
66
70
|
virtual void OnResourceDoesNotExist() = 0;
|
67
71
|
};
|
68
72
|
|
@@ -70,24 +74,63 @@ class XdsClient : public InternallyRefCounted<XdsClient> {
|
|
70
74
|
class EndpointWatcherInterface {
|
71
75
|
public:
|
72
76
|
virtual ~EndpointWatcherInterface() = default;
|
73
|
-
|
74
77
|
virtual void OnEndpointChanged(XdsApi::EdsUpdate update) = 0;
|
75
|
-
|
76
78
|
virtual void OnError(grpc_error* error) = 0;
|
77
|
-
|
78
79
|
virtual void OnResourceDoesNotExist() = 0;
|
79
80
|
};
|
80
81
|
|
81
|
-
//
|
82
|
+
// Factory function to get or create the global XdsClient instance.
|
83
|
+
// If *error is not GRPC_ERROR_NONE upon return, then there was
|
82
84
|
// an error initializing the client.
|
83
|
-
XdsClient
|
84
|
-
|
85
|
-
|
86
|
-
|
85
|
+
static RefCountedPtr<XdsClient> GetOrCreate(grpc_error** error);
|
86
|
+
|
87
|
+
// Callers should not instantiate directly. Use GetOrCreate() instead.
|
88
|
+
explicit XdsClient(grpc_error** error);
|
87
89
|
~XdsClient();
|
88
90
|
|
91
|
+
grpc_pollset_set* interested_parties() const { return interested_parties_; }
|
92
|
+
|
93
|
+
// TODO(roth): When we add federation, there will be multiple channels
|
94
|
+
// inside the XdsClient, and the set of channels may change over time,
|
95
|
+
// but not every channel may use every one of the child channels, so
|
96
|
+
// this API will need to change. At minumum, we will need to hold a
|
97
|
+
// ref to the parent channelz node so that we can update its list of
|
98
|
+
// children as the set of xDS channels changes. However, we may also
|
99
|
+
// want to make this a bit more selective such that only those
|
100
|
+
// channels on which a given parent channel is actually requesting
|
101
|
+
// resources will actually be marked as its children.
|
102
|
+
void AddChannelzLinkage(channelz::ChannelNode* parent_channelz_node);
|
103
|
+
void RemoveChannelzLinkage(channelz::ChannelNode* parent_channelz_node);
|
104
|
+
|
89
105
|
void Orphan() override;
|
90
106
|
|
107
|
+
// Start and cancel listener data watch for a listener.
|
108
|
+
// The XdsClient takes ownership of the watcher, but the caller may
|
109
|
+
// keep a raw pointer to the watcher, which may be used only for
|
110
|
+
// cancellation. (Because the caller does not own the watcher, the
|
111
|
+
// pointer must not be used for any other purpose.)
|
112
|
+
// If the caller is going to start a new watch after cancelling the
|
113
|
+
// old one, it should set delay_unsubscription to true.
|
114
|
+
void WatchListenerData(absl::string_view listener_name,
|
115
|
+
std::unique_ptr<ListenerWatcherInterface> watcher);
|
116
|
+
void CancelListenerDataWatch(absl::string_view listener_name,
|
117
|
+
ListenerWatcherInterface* watcher,
|
118
|
+
bool delay_unsubscription = false);
|
119
|
+
|
120
|
+
// Start and cancel route config data watch for a listener.
|
121
|
+
// The XdsClient takes ownership of the watcher, but the caller may
|
122
|
+
// keep a raw pointer to the watcher, which may be used only for
|
123
|
+
// cancellation. (Because the caller does not own the watcher, the
|
124
|
+
// pointer must not be used for any other purpose.)
|
125
|
+
// If the caller is going to start a new watch after cancelling the
|
126
|
+
// old one, it should set delay_unsubscription to true.
|
127
|
+
void WatchRouteConfigData(
|
128
|
+
absl::string_view route_config_name,
|
129
|
+
std::unique_ptr<RouteConfigWatcherInterface> watcher);
|
130
|
+
void CancelRouteConfigDataWatch(absl::string_view route_config_name,
|
131
|
+
RouteConfigWatcherInterface* watcher,
|
132
|
+
bool delay_unsubscription = false);
|
133
|
+
|
91
134
|
// Start and cancel cluster data watch for a cluster.
|
92
135
|
// The XdsClient takes ownership of the watcher, but the caller may
|
93
136
|
// keep a raw pointer to the watcher, which may be used only for
|
@@ -138,24 +181,14 @@ class XdsClient : public InternallyRefCounted<XdsClient> {
|
|
138
181
|
// Resets connection backoff state.
|
139
182
|
void ResetBackoff();
|
140
183
|
|
141
|
-
// Helpers for encoding the XdsClient object in channel args.
|
142
|
-
grpc_arg MakeChannelArg() const;
|
143
|
-
static RefCountedPtr<XdsClient> GetFromChannelArgs(
|
144
|
-
const grpc_channel_args& args);
|
145
|
-
static grpc_channel_args* RemoveFromChannelArgs(
|
146
|
-
const grpc_channel_args& args);
|
147
|
-
|
148
184
|
private:
|
149
185
|
// Contains a channel to the xds server and all the data related to the
|
150
186
|
// channel. Holds a ref to the xds client object.
|
151
|
-
//
|
152
|
-
//
|
153
|
-
//
|
154
|
-
//
|
155
|
-
//
|
156
|
-
// for changes. At some point, if we decide that we're never going to
|
157
|
-
// need to do that, then we can eliminate this class and move its
|
158
|
-
// contents directly into the XdsClient class.
|
187
|
+
//
|
188
|
+
// Currently, there is only one ChannelState object per XdsClient
|
189
|
+
// object, and it has essentially the same lifetime. But in the
|
190
|
+
// future, when we add federation support, a single XdsClient may have
|
191
|
+
// multiple underlying channels to talk to different xDS servers.
|
159
192
|
class ChannelState : public InternallyRefCounted<ChannelState> {
|
160
193
|
public:
|
161
194
|
template <typename T>
|
@@ -164,7 +197,8 @@ class XdsClient : public InternallyRefCounted<XdsClient> {
|
|
164
197
|
class AdsCallState;
|
165
198
|
class LrsCallState;
|
166
199
|
|
167
|
-
ChannelState(
|
200
|
+
ChannelState(WeakRefCountedPtr<XdsClient> xds_client,
|
201
|
+
grpc_channel* channel);
|
168
202
|
~ChannelState();
|
169
203
|
|
170
204
|
void Orphan() override;
|
@@ -190,7 +224,7 @@ class XdsClient : public InternallyRefCounted<XdsClient> {
|
|
190
224
|
class StateWatcher;
|
191
225
|
|
192
226
|
// The owning xds client.
|
193
|
-
|
227
|
+
WeakRefCountedPtr<XdsClient> xds_client_;
|
194
228
|
|
195
229
|
// The channel and its status.
|
196
230
|
grpc_channel* channel_;
|
@@ -202,6 +236,22 @@ class XdsClient : public InternallyRefCounted<XdsClient> {
|
|
202
236
|
OrphanablePtr<RetryableCall<LrsCallState>> lrs_calld_;
|
203
237
|
};
|
204
238
|
|
239
|
+
struct ListenerState {
|
240
|
+
std::map<ListenerWatcherInterface*,
|
241
|
+
std::unique_ptr<ListenerWatcherInterface>>
|
242
|
+
watchers;
|
243
|
+
// The latest data seen from LDS.
|
244
|
+
absl::optional<XdsApi::LdsUpdate> update;
|
245
|
+
};
|
246
|
+
|
247
|
+
struct RouteConfigState {
|
248
|
+
std::map<RouteConfigWatcherInterface*,
|
249
|
+
std::unique_ptr<RouteConfigWatcherInterface>>
|
250
|
+
watchers;
|
251
|
+
// The latest data seen from RDS.
|
252
|
+
absl::optional<XdsApi::RdsUpdate> update;
|
253
|
+
};
|
254
|
+
|
205
255
|
struct ClusterState {
|
206
256
|
std::map<ClusterWatcherInterface*, std::unique_ptr<ClusterWatcherInterface>>
|
207
257
|
watchers;
|
@@ -217,6 +267,10 @@ class XdsClient : public InternallyRefCounted<XdsClient> {
|
|
217
267
|
absl::optional<XdsApi::EdsUpdate> update;
|
218
268
|
};
|
219
269
|
|
270
|
+
// TODO(roth): Change this to store exactly one instance of
|
271
|
+
// XdsClusterDropStats and exactly one instance of
|
272
|
+
// XdsClusterLocalityStats per locality. We can return multiple refs
|
273
|
+
// to the same object instead of registering multiple objects.
|
220
274
|
struct LoadReportState {
|
221
275
|
struct LocalityState {
|
222
276
|
std::set<XdsClusterLocalityStats*> locality_stats;
|
@@ -224,7 +278,7 @@ class XdsClient : public InternallyRefCounted<XdsClient> {
|
|
224
278
|
};
|
225
279
|
|
226
280
|
std::set<XdsClusterDropStats*> drop_stats;
|
227
|
-
XdsClusterDropStats::
|
281
|
+
XdsClusterDropStats::Snapshot deleted_drop_stats;
|
228
282
|
std::map<RefCountedPtr<XdsLocalityName>, LocalityState,
|
229
283
|
XdsLocalityName::Less>
|
230
284
|
locality_stats;
|
@@ -232,78 +286,45 @@ class XdsClient : public InternallyRefCounted<XdsClient> {
|
|
232
286
|
};
|
233
287
|
|
234
288
|
// Sends an error notification to all watchers.
|
235
|
-
void
|
236
|
-
|
237
|
-
// Returns the weighted_clusters action name to use from
|
238
|
-
// weighted_cluster_index_map_ for a WeightedClusters route action.
|
239
|
-
std::string WeightedClustersActionName(
|
240
|
-
const std::vector<XdsApi::RdsUpdate::RdsRoute::ClusterWeight>&
|
241
|
-
weighted_clusters);
|
242
|
-
|
243
|
-
// Updates weighted_cluster_index_map_ that will
|
244
|
-
// determine the names of the WeightedCluster actions for the current update.
|
245
|
-
void UpdateWeightedClusterIndexMap(const XdsApi::RdsUpdate& rds_update);
|
289
|
+
void NotifyOnErrorLocked(grpc_error* error);
|
246
290
|
|
247
|
-
|
248
|
-
grpc_error* CreateServiceConfig(const XdsApi::RdsUpdate& rds_update,
|
249
|
-
RefCountedPtr<ServiceConfig>* service_config);
|
250
|
-
|
251
|
-
XdsApi::ClusterLoadReportMap BuildLoadReportSnapshot(
|
291
|
+
XdsApi::ClusterLoadReportMap BuildLoadReportSnapshotLocked(
|
252
292
|
bool send_all_clusters, const std::set<std::string>& clusters);
|
253
293
|
|
254
|
-
// Channel arg vtable functions.
|
255
|
-
static void* ChannelArgCopy(void* p);
|
256
|
-
static void ChannelArgDestroy(void* p);
|
257
|
-
static int ChannelArgCmp(void* p, void* q);
|
258
|
-
|
259
|
-
static const grpc_arg_pointer_vtable kXdsClientVtable;
|
260
|
-
|
261
294
|
const grpc_millis request_timeout_;
|
262
|
-
|
263
|
-
std::shared_ptr<WorkSerializer> work_serializer_;
|
264
295
|
grpc_pollset_set* interested_parties_;
|
265
|
-
|
266
296
|
std::unique_ptr<XdsBootstrap> bootstrap_;
|
267
297
|
XdsApi api_;
|
268
298
|
|
269
|
-
|
270
|
-
|
271
|
-
std::unique_ptr<ServiceConfigWatcherInterface> service_config_watcher_;
|
299
|
+
Mutex mu_;
|
272
300
|
|
273
301
|
// The channel for communicating with the xds server.
|
274
302
|
OrphanablePtr<ChannelState> chand_;
|
275
303
|
|
276
|
-
|
277
|
-
|
278
|
-
|
304
|
+
// One entry for each watched LDS resource.
|
305
|
+
std::map<std::string /*listener_name*/, ListenerState> listener_map_;
|
306
|
+
// One entry for each watched RDS resource.
|
307
|
+
std::map<std::string /*route_config_name*/, RouteConfigState>
|
308
|
+
route_config_map_;
|
279
309
|
// One entry for each watched CDS resource.
|
280
310
|
std::map<std::string /*cluster_name*/, ClusterState> cluster_map_;
|
281
311
|
// One entry for each watched EDS resource.
|
282
312
|
std::map<std::string /*eds_service_name*/, EndpointState> endpoint_map_;
|
313
|
+
|
314
|
+
// Load report data.
|
283
315
|
std::map<
|
284
316
|
std::pair<std::string /*cluster_name*/, std::string /*eds_service_name*/>,
|
285
317
|
LoadReportState>
|
286
318
|
load_report_map_;
|
287
319
|
|
288
|
-
// 2-level map to store WeightedCluster action names.
|
289
|
-
// Top level map is keyed by cluster names without weight like a_b_c; bottom
|
290
|
-
// level map is keyed by cluster names + weights like a10_b50_c40.
|
291
|
-
struct ClusterNamesInfo {
|
292
|
-
uint64_t next_index = 0;
|
293
|
-
std::map<std::string /*cluster names + weights*/,
|
294
|
-
uint64_t /*policy index number*/>
|
295
|
-
cluster_weights_map;
|
296
|
-
};
|
297
|
-
using WeightedClusterIndexMap =
|
298
|
-
std::map<std::string /*cluster names*/, ClusterNamesInfo>;
|
299
|
-
|
300
|
-
// Cache of action names for WeightedCluster targets in the current
|
301
|
-
// service config.
|
302
|
-
WeightedClusterIndexMap weighted_cluster_index_map_;
|
303
|
-
|
304
320
|
bool shutting_down_ = false;
|
305
321
|
};
|
306
322
|
|
323
|
+
namespace internal {
|
324
|
+
void SetXdsChannelArgsForTest(grpc_channel_args* args);
|
325
|
+
void UnsetGlobalXdsClientForTest();
|
326
|
+
} // namespace internal
|
327
|
+
|
307
328
|
} // namespace grpc_core
|
308
329
|
|
309
|
-
#endif /*
|
330
|
+
#endif /* GRPC_CORE_EXT_XDS_XDS_CLIENT_H */
|
@@ -18,17 +18,25 @@
|
|
18
18
|
|
19
19
|
#include <grpc/support/port_platform.h>
|
20
20
|
|
21
|
-
#include "src/core/ext/
|
21
|
+
#include "src/core/ext/xds/xds_client_stats.h"
|
22
22
|
|
23
23
|
#include <string.h>
|
24
24
|
|
25
25
|
#include <grpc/support/atm.h>
|
26
26
|
#include <grpc/support/string_util.h>
|
27
27
|
|
28
|
-
#include "src/core/ext/
|
28
|
+
#include "src/core/ext/xds/xds_client.h"
|
29
29
|
|
30
30
|
namespace grpc_core {
|
31
31
|
|
32
|
+
namespace {
|
33
|
+
|
34
|
+
uint64_t GetAndResetCounter(Atomic<uint64_t>* from) {
|
35
|
+
return from->Exchange(0, MemoryOrder::RELAXED);
|
36
|
+
}
|
37
|
+
|
38
|
+
} // namespace
|
39
|
+
|
32
40
|
//
|
33
41
|
// XdsClusterDropStats
|
34
42
|
//
|
@@ -48,15 +56,21 @@ XdsClusterDropStats::~XdsClusterDropStats() {
|
|
48
56
|
xds_client_.reset(DEBUG_LOCATION, "DropStats");
|
49
57
|
}
|
50
58
|
|
51
|
-
XdsClusterDropStats::
|
52
|
-
|
59
|
+
XdsClusterDropStats::Snapshot XdsClusterDropStats::GetSnapshotAndReset() {
|
60
|
+
Snapshot snapshot;
|
61
|
+
snapshot.uncategorized_drops = GetAndResetCounter(&uncategorized_drops_);
|
53
62
|
MutexLock lock(&mu_);
|
54
|
-
|
63
|
+
snapshot.categorized_drops = std::move(categorized_drops_);
|
64
|
+
return snapshot;
|
65
|
+
}
|
66
|
+
|
67
|
+
void XdsClusterDropStats::AddUncategorizedDrops() {
|
68
|
+
uncategorized_drops_.FetchAdd(1);
|
55
69
|
}
|
56
70
|
|
57
71
|
void XdsClusterDropStats::AddCallDropped(const std::string& category) {
|
58
72
|
MutexLock lock(&mu_);
|
59
|
-
++
|
73
|
+
++categorized_drops_[category];
|
60
74
|
}
|
61
75
|
|
62
76
|
//
|
@@ -79,14 +93,6 @@ XdsClusterLocalityStats::~XdsClusterLocalityStats() {
|
|
79
93
|
xds_client_.reset(DEBUG_LOCATION, "LocalityStats");
|
80
94
|
}
|
81
95
|
|
82
|
-
namespace {
|
83
|
-
|
84
|
-
uint64_t GetAndResetCounter(Atomic<uint64_t>* from) {
|
85
|
-
return from->Exchange(0, MemoryOrder::RELAXED);
|
86
|
-
}
|
87
|
-
|
88
|
-
} // namespace
|
89
|
-
|
90
96
|
XdsClusterLocalityStats::Snapshot
|
91
97
|
XdsClusterLocalityStats::GetSnapshotAndReset() {
|
92
98
|
Snapshot snapshot = {GetAndResetCounter(&total_successful_requests_),
|
@@ -16,8 +16,8 @@
|
|
16
16
|
*
|
17
17
|
*/
|
18
18
|
|
19
|
-
#ifndef
|
20
|
-
#define
|
19
|
+
#ifndef GRPC_CORE_EXT_XDS_XDS_CLIENT_STATS_H
|
20
|
+
#define GRPC_CORE_EXT_XDS_XDS_CLIENT_STATS_H
|
21
21
|
|
22
22
|
#include <grpc/support/port_platform.h>
|
23
23
|
|
@@ -28,6 +28,7 @@
|
|
28
28
|
#include "absl/strings/str_format.h"
|
29
29
|
#include "absl/strings/string_view.h"
|
30
30
|
|
31
|
+
#include "src/core/lib/gpr/useful.h"
|
31
32
|
#include "src/core/lib/gprpp/atomic.h"
|
32
33
|
#include "src/core/lib/gprpp/memory.h"
|
33
34
|
#include "src/core/lib/gprpp/ref_counted.h"
|
@@ -45,6 +46,7 @@ class XdsLocalityName : public RefCounted<XdsLocalityName> {
|
|
45
46
|
struct Less {
|
46
47
|
bool operator()(const XdsLocalityName* lhs,
|
47
48
|
const XdsLocalityName* rhs) const {
|
49
|
+
if (lhs == nullptr || rhs == nullptr) return GPR_ICMP(lhs, rhs);
|
48
50
|
return lhs->Compare(*rhs) < 0;
|
49
51
|
}
|
50
52
|
|
@@ -99,7 +101,31 @@ class XdsLocalityName : public RefCounted<XdsLocalityName> {
|
|
99
101
|
// Drop stats for an xds cluster.
|
100
102
|
class XdsClusterDropStats : public RefCounted<XdsClusterDropStats> {
|
101
103
|
public:
|
102
|
-
|
104
|
+
// The total number of requests dropped for any reason is the sum of
|
105
|
+
// uncategorized_drops, and dropped_requests map.
|
106
|
+
using CategorizedDropsMap = std::map<std::string /* category */, uint64_t>;
|
107
|
+
struct Snapshot {
|
108
|
+
uint64_t uncategorized_drops = 0;
|
109
|
+
// The number of requests dropped for the specific drop categories
|
110
|
+
// outlined in the drop_overloads field in the EDS response.
|
111
|
+
CategorizedDropsMap categorized_drops;
|
112
|
+
|
113
|
+
Snapshot& operator+=(const Snapshot& other) {
|
114
|
+
uncategorized_drops += other.uncategorized_drops;
|
115
|
+
for (const auto& p : other.categorized_drops) {
|
116
|
+
categorized_drops[p.first] += p.second;
|
117
|
+
}
|
118
|
+
return *this;
|
119
|
+
}
|
120
|
+
|
121
|
+
bool IsZero() const {
|
122
|
+
if (uncategorized_drops != 0) return false;
|
123
|
+
for (const auto& p : categorized_drops) {
|
124
|
+
if (p.second != 0) return false;
|
125
|
+
}
|
126
|
+
return true;
|
127
|
+
}
|
128
|
+
};
|
103
129
|
|
104
130
|
XdsClusterDropStats(RefCountedPtr<XdsClient> xds_client,
|
105
131
|
absl::string_view lrs_server_name,
|
@@ -108,8 +134,9 @@ class XdsClusterDropStats : public RefCounted<XdsClusterDropStats> {
|
|
108
134
|
~XdsClusterDropStats();
|
109
135
|
|
110
136
|
// Returns a snapshot of this instance and resets all the counters.
|
111
|
-
|
137
|
+
Snapshot GetSnapshotAndReset();
|
112
138
|
|
139
|
+
void AddUncategorizedDrops();
|
113
140
|
void AddCallDropped(const std::string& category);
|
114
141
|
|
115
142
|
private:
|
@@ -117,11 +144,12 @@ class XdsClusterDropStats : public RefCounted<XdsClusterDropStats> {
|
|
117
144
|
absl::string_view lrs_server_name_;
|
118
145
|
absl::string_view cluster_name_;
|
119
146
|
absl::string_view eds_service_name_;
|
120
|
-
|
121
|
-
//
|
147
|
+
Atomic<uint64_t> uncategorized_drops_{0};
|
148
|
+
// Protects categorized_drops_. A mutex is necessary because the length of
|
149
|
+
// dropped_requests can be accessed by both the picker (from data plane
|
122
150
|
// mutex) and the load reporting thread (from the control plane combiner).
|
123
151
|
Mutex mu_;
|
124
|
-
|
152
|
+
CategorizedDropsMap categorized_drops_;
|
125
153
|
};
|
126
154
|
|
127
155
|
// Locality stats for an xds cluster.
|
@@ -208,4 +236,4 @@ class XdsClusterLocalityStats : public RefCounted<XdsClusterLocalityStats> {
|
|
208
236
|
|
209
237
|
} // namespace grpc_core
|
210
238
|
|
211
|
-
#endif /*
|
239
|
+
#endif /* GRPC_CORE_EXT_XDS_XDS_CLIENT_STATS_H */
|