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
@@ -79,4 +79,4 @@ void grpc_client_channel_stop_connectivity_watch(
|
|
79
79
|
grpc_core::RefCountedPtr<grpc_core::SubchannelCall>
|
80
80
|
grpc_client_channel_get_subchannel_call(grpc_call_element* elem);
|
81
81
|
|
82
|
-
#endif
|
82
|
+
#endif // GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_CLIENT_CHANNEL_H
|
@@ -17,12 +17,8 @@
|
|
17
17
|
#include <grpc/support/port_platform.h>
|
18
18
|
|
19
19
|
#include "src/core/ext/filters/client_channel/config_selector.h"
|
20
|
-
|
21
20
|
#include "src/core/lib/channel/channel_args.h"
|
22
21
|
|
23
|
-
// Channel arg key for ConfigSelector.
|
24
|
-
#define GRPC_ARG_CONFIG_SELECTOR "grpc.internal.config_selector"
|
25
|
-
|
26
22
|
namespace grpc_core {
|
27
23
|
|
28
24
|
namespace {
|
@@ -34,6 +34,9 @@
|
|
34
34
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
35
35
|
#include "src/core/lib/transport/metadata_batch.h"
|
36
36
|
|
37
|
+
// Channel arg key for ConfigSelector.
|
38
|
+
#define GRPC_ARG_CONFIG_SELECTOR "grpc.internal.config_selector"
|
39
|
+
|
37
40
|
namespace grpc_core {
|
38
41
|
|
39
42
|
// Internal API used to allow resolver implementations to override
|
@@ -52,6 +55,9 @@ class ConfigSelector : public RefCounted<ConfigSelector> {
|
|
52
55
|
// The per-method parsed configs that will be passed to
|
53
56
|
// ServiceConfigCallData.
|
54
57
|
const ServiceConfigParser::ParsedConfigVector* method_configs = nullptr;
|
58
|
+
// A ref to the service config that contains method_configs, held by
|
59
|
+
// the call to ensure that method_configs lives long enough.
|
60
|
+
RefCountedPtr<ServiceConfig> service_config;
|
55
61
|
// Call attributes that will be accessible to LB policy implementations.
|
56
62
|
std::map<const char*, absl::string_view> call_attributes;
|
57
63
|
// A callback that, if set, will be invoked when the call is
|
@@ -62,6 +68,19 @@ class ConfigSelector : public RefCounted<ConfigSelector> {
|
|
62
68
|
|
63
69
|
virtual ~ConfigSelector() = default;
|
64
70
|
|
71
|
+
virtual const char* name() const = 0;
|
72
|
+
|
73
|
+
// Will be called only if the two objects have the same name, so
|
74
|
+
// subclasses can be free to safely down-cast the argument.
|
75
|
+
virtual bool Equals(const ConfigSelector* other) const = 0;
|
76
|
+
|
77
|
+
static bool Equals(const ConfigSelector* cs1, const ConfigSelector* cs2) {
|
78
|
+
if (cs1 == nullptr) return cs2 == nullptr;
|
79
|
+
if (cs2 == nullptr) return false;
|
80
|
+
if (strcmp(cs1->name(), cs2->name()) != 0) return false;
|
81
|
+
return cs1->Equals(cs2);
|
82
|
+
}
|
83
|
+
|
65
84
|
virtual CallConfig GetCallConfig(GetCallConfigArgs args) = 0;
|
66
85
|
|
67
86
|
grpc_arg MakeChannelArg() const;
|
@@ -73,14 +92,24 @@ class ConfigSelector : public RefCounted<ConfigSelector> {
|
|
73
92
|
class DefaultConfigSelector : public ConfigSelector {
|
74
93
|
public:
|
75
94
|
explicit DefaultConfigSelector(RefCountedPtr<ServiceConfig> service_config)
|
76
|
-
: service_config_(std::move(service_config)) {
|
95
|
+
: service_config_(std::move(service_config)) {
|
96
|
+
// The client channel code ensures that this will never be null.
|
97
|
+
// If neither the resolver nor the client application provide a
|
98
|
+
// config, a default empty config will be used.
|
99
|
+
GPR_DEBUG_ASSERT(service_config_ != nullptr);
|
100
|
+
}
|
101
|
+
|
102
|
+
const char* name() const override { return "default"; }
|
103
|
+
|
104
|
+
// Only comparing the ConfigSelector itself, not the underlying
|
105
|
+
// service config, so we always return true.
|
106
|
+
bool Equals(const ConfigSelector* other) const override { return true; }
|
77
107
|
|
78
108
|
CallConfig GetCallConfig(GetCallConfigArgs args) override {
|
79
109
|
CallConfig call_config;
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
}
|
110
|
+
call_config.method_configs =
|
111
|
+
service_config_->GetMethodParsedConfigVector(*args.path);
|
112
|
+
call_config.service_config = service_config_;
|
84
113
|
return call_config;
|
85
114
|
}
|
86
115
|
|
@@ -91,7 +91,12 @@ void HealthCheckClient::SetHealthStatusLocked(grpc_connectivity_state state,
|
|
91
91
|
gpr_log(GPR_INFO, "HealthCheckClient %p: setting state=%s reason=%s", this,
|
92
92
|
ConnectivityStateName(state), reason);
|
93
93
|
}
|
94
|
-
if (watcher_ != nullptr)
|
94
|
+
if (watcher_ != nullptr) {
|
95
|
+
watcher_->Notify(state,
|
96
|
+
state == GRPC_CHANNEL_TRANSIENT_FAILURE
|
97
|
+
? absl::Status(absl::StatusCode::kUnavailable, reason)
|
98
|
+
: absl::Status());
|
99
|
+
}
|
95
100
|
}
|
96
101
|
|
97
102
|
void HealthCheckClient::Orphan() {
|
@@ -325,10 +325,9 @@ void HttpConnectHandshaker::DoHandshake(grpc_tcp_server_acceptor* /*acceptor*/,
|
|
325
325
|
args_ = args;
|
326
326
|
on_handshake_done_ = on_handshake_done;
|
327
327
|
// Log connection via proxy.
|
328
|
-
|
328
|
+
std::string proxy_name(grpc_endpoint_get_peer(args->endpoint));
|
329
329
|
gpr_log(GPR_INFO, "Connecting to server %s via HTTP proxy %s", server_name,
|
330
|
-
proxy_name);
|
331
|
-
gpr_free(proxy_name);
|
330
|
+
proxy_name.c_str());
|
332
331
|
// Construct HTTP CONNECT request.
|
333
332
|
grpc_httpcli_request request;
|
334
333
|
request.host = server_name;
|
@@ -24,6 +24,7 @@
|
|
24
24
|
#include <functional>
|
25
25
|
#include <iterator>
|
26
26
|
|
27
|
+
#include "absl/status/status.h"
|
27
28
|
#include "absl/strings/string_view.h"
|
28
29
|
|
29
30
|
#include "src/core/ext/filters/client_channel/server_address.h"
|
@@ -278,11 +279,12 @@ class LoadBalancingPolicy : public InternallyRefCounted<LoadBalancingPolicy> {
|
|
278
279
|
|
279
280
|
/// Creates a new subchannel with the specified channel args.
|
280
281
|
virtual RefCountedPtr<SubchannelInterface> CreateSubchannel(
|
281
|
-
const grpc_channel_args& args) = 0;
|
282
|
+
ServerAddress address, const grpc_channel_args& args) = 0;
|
282
283
|
|
283
284
|
/// Sets the connectivity state and returns a new picker to be used
|
284
285
|
/// by the client channel.
|
285
286
|
virtual void UpdateState(grpc_connectivity_state state,
|
287
|
+
const absl::Status& status,
|
286
288
|
std::unique_ptr<SubchannelPicker>) = 0;
|
287
289
|
|
288
290
|
/// Requests that the resolver re-resolve.
|
@@ -18,64 +18,77 @@
|
|
18
18
|
|
19
19
|
#include "src/core/ext/filters/client_channel/lb_policy/address_filtering.h"
|
20
20
|
|
21
|
+
#include "absl/strings/str_cat.h"
|
22
|
+
#include "absl/strings/str_join.h"
|
23
|
+
|
21
24
|
#include "src/core/lib/channel/channel_args.h"
|
22
25
|
|
23
26
|
#define GRPC_ARG_HIERARCHICAL_PATH "grpc.internal.address.hierarchical_path"
|
24
27
|
|
25
28
|
namespace grpc_core {
|
26
29
|
|
30
|
+
const char* kHierarchicalPathAttributeKey = "hierarchical_path";
|
31
|
+
|
27
32
|
namespace {
|
28
33
|
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
}
|
34
|
+
class HierarchicalPathAttribute : public ServerAddress::AttributeInterface {
|
35
|
+
public:
|
36
|
+
explicit HierarchicalPathAttribute(std::vector<std::string> path)
|
37
|
+
: path_(std::move(path)) {}
|
33
38
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
}
|
39
|
+
std::unique_ptr<AttributeInterface> Copy() const override {
|
40
|
+
return absl::make_unique<HierarchicalPathAttribute>(path_);
|
41
|
+
}
|
38
42
|
|
39
|
-
int
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
43
|
+
int Cmp(const AttributeInterface* other) const override {
|
44
|
+
const std::vector<std::string>& other_path =
|
45
|
+
static_cast<const HierarchicalPathAttribute*>(other)->path_;
|
46
|
+
for (size_t i = 0; i < path_.size(); ++i) {
|
47
|
+
if (other_path.size() == i) return 1;
|
48
|
+
int r = path_[i].compare(other_path[i]);
|
49
|
+
if (r != 0) return r;
|
50
|
+
}
|
51
|
+
if (other_path.size() > path_.size()) return -1;
|
52
|
+
return 0;
|
46
53
|
}
|
47
|
-
if (path2->size() > path1->size()) return -1;
|
48
|
-
return 0;
|
49
|
-
}
|
50
54
|
|
51
|
-
|
52
|
-
|
55
|
+
std::string ToString() const override {
|
56
|
+
return absl::StrCat("[", absl::StrJoin(path_, ", "), "]");
|
57
|
+
}
|
58
|
+
|
59
|
+
const std::vector<std::string>& path() const { return path_; }
|
60
|
+
|
61
|
+
private:
|
62
|
+
std::vector<std::string> path_;
|
63
|
+
};
|
53
64
|
|
54
65
|
} // namespace
|
55
66
|
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
const_cast<std::vector<std::string>*>(&path),
|
60
|
-
&hierarchical_path_arg_vtable);
|
67
|
+
std::unique_ptr<ServerAddress::AttributeInterface>
|
68
|
+
MakeHierarchicalPathAttribute(std::vector<std::string> path) {
|
69
|
+
return absl::make_unique<HierarchicalPathAttribute>(std::move(path));
|
61
70
|
}
|
62
71
|
|
63
72
|
HierarchicalAddressMap MakeHierarchicalAddressMap(
|
64
73
|
const ServerAddressList& addresses) {
|
65
74
|
HierarchicalAddressMap result;
|
66
75
|
for (const ServerAddress& address : addresses) {
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
76
|
+
const HierarchicalPathAttribute* path_attribute =
|
77
|
+
static_cast<const HierarchicalPathAttribute*>(
|
78
|
+
address.GetAttribute(kHierarchicalPathAttributeKey));
|
79
|
+
if (path_attribute == nullptr) continue;
|
80
|
+
const std::vector<std::string>& path = path_attribute->path();
|
81
|
+
auto it = path.begin();
|
71
82
|
ServerAddressList& target_list = result[*it];
|
83
|
+
std::unique_ptr<HierarchicalPathAttribute> new_attribute;
|
72
84
|
++it;
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
target_list.emplace_back(address.
|
85
|
+
if (it != path.end()) {
|
86
|
+
std::vector<std::string> remaining_path(it, path.end());
|
87
|
+
new_attribute = absl::make_unique<HierarchicalPathAttribute>(
|
88
|
+
std::move(remaining_path));
|
89
|
+
}
|
90
|
+
target_list.emplace_back(address.WithAttribute(
|
91
|
+
kHierarchicalPathAttributeKey, std::move(new_attribute)));
|
79
92
|
}
|
80
93
|
return result;
|
81
94
|
}
|
@@ -23,8 +23,6 @@
|
|
23
23
|
#include <string>
|
24
24
|
#include <vector>
|
25
25
|
|
26
|
-
#include "absl/strings/string_view.h"
|
27
|
-
|
28
26
|
#include "src/core/ext/filters/client_channel/server_address.h"
|
29
27
|
|
30
28
|
// The resolver returns a flat list of addresses. When a hierarchy of
|
@@ -81,9 +79,13 @@
|
|
81
79
|
|
82
80
|
namespace grpc_core {
|
83
81
|
|
84
|
-
//
|
85
|
-
|
86
|
-
|
82
|
+
// The attribute key to be used for hierarchical paths in ServerAddress.
|
83
|
+
extern const char* kHierarchicalPathAttributeKey;
|
84
|
+
|
85
|
+
// Constructs an address attribute containing the hierarchical path
|
86
|
+
// to be associated with the address.
|
87
|
+
std::unique_ptr<ServerAddress::AttributeInterface>
|
88
|
+
MakeHierarchicalPathAttribute(std::vector<std::string> path);
|
87
89
|
|
88
90
|
// A map from the next path element to the addresses that fall under
|
89
91
|
// that path element.
|
@@ -39,13 +39,14 @@ class ChildPolicyHandler::Helper
|
|
39
39
|
~Helper() { parent_.reset(DEBUG_LOCATION, "Helper"); }
|
40
40
|
|
41
41
|
RefCountedPtr<SubchannelInterface> CreateSubchannel(
|
42
|
-
const grpc_channel_args& args) override {
|
42
|
+
ServerAddress address, const grpc_channel_args& args) override {
|
43
43
|
if (parent_->shutting_down_) return nullptr;
|
44
44
|
if (!CalledByCurrentChild() && !CalledByPendingChild()) return nullptr;
|
45
|
-
return parent_->channel_control_helper()->CreateSubchannel(
|
45
|
+
return parent_->channel_control_helper()->CreateSubchannel(
|
46
|
+
std::move(address), args);
|
46
47
|
}
|
47
48
|
|
48
|
-
void UpdateState(grpc_connectivity_state state,
|
49
|
+
void UpdateState(grpc_connectivity_state state, const absl::Status& status,
|
49
50
|
std::unique_ptr<SubchannelPicker> picker) override {
|
50
51
|
if (parent_->shutting_down_) return;
|
51
52
|
// If this request is from the pending child policy, ignore it until
|
@@ -55,8 +56,9 @@ class ChildPolicyHandler::Helper
|
|
55
56
|
if (GRPC_TRACE_FLAG_ENABLED(*(parent_->tracer_))) {
|
56
57
|
gpr_log(GPR_INFO,
|
57
58
|
"[child_policy_handler %p] helper %p: pending child policy %p "
|
58
|
-
"reports state=%s",
|
59
|
-
parent_.get(), this, child_, ConnectivityStateName(state)
|
59
|
+
"reports state=%s (%s)",
|
60
|
+
parent_.get(), this, child_, ConnectivityStateName(state),
|
61
|
+
status.ToString().c_str());
|
60
62
|
}
|
61
63
|
if (state == GRPC_CHANNEL_CONNECTING) return;
|
62
64
|
grpc_pollset_set_del_pollset_set(
|
@@ -67,7 +69,8 @@ class ChildPolicyHandler::Helper
|
|
67
69
|
// This request is from an outdated child, so ignore it.
|
68
70
|
return;
|
69
71
|
}
|
70
|
-
parent_->channel_control_helper()->UpdateState(state,
|
72
|
+
parent_->channel_control_helper()->UpdateState(state, status,
|
73
|
+
std::move(picker));
|
71
74
|
}
|
72
75
|
|
73
76
|
void RequestReresolution() override {
|
@@ -87,7 +87,6 @@
|
|
87
87
|
#include "src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h"
|
88
88
|
#include "src/core/ext/filters/client_channel/lb_policy_factory.h"
|
89
89
|
#include "src/core/ext/filters/client_channel/lb_policy_registry.h"
|
90
|
-
#include "src/core/ext/filters/client_channel/parse_address.h"
|
91
90
|
#include "src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h"
|
92
91
|
#include "src/core/ext/filters/client_channel/server_address.h"
|
93
92
|
#include "src/core/lib/backoff/backoff.h"
|
@@ -98,10 +97,10 @@
|
|
98
97
|
#include "src/core/lib/gprpp/memory.h"
|
99
98
|
#include "src/core/lib/gprpp/orphanable.h"
|
100
99
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
100
|
+
#include "src/core/lib/iomgr/parse_address.h"
|
101
101
|
#include "src/core/lib/iomgr/sockaddr.h"
|
102
102
|
#include "src/core/lib/iomgr/sockaddr_utils.h"
|
103
103
|
#include "src/core/lib/iomgr/timer.h"
|
104
|
-
#include "src/core/lib/slice/slice_hash_table.h"
|
105
104
|
#include "src/core/lib/slice/slice_internal.h"
|
106
105
|
#include "src/core/lib/slice/slice_string_helpers.h"
|
107
106
|
#include "src/core/lib/surface/call.h"
|
@@ -125,6 +124,8 @@ TraceFlag grpc_lb_glb_trace(false, "glb");
|
|
125
124
|
const char kGrpcLbClientStatsMetadataKey[] = "grpclb_client_stats";
|
126
125
|
const char kGrpcLbLbTokenMetadataKey[] = "lb-token";
|
127
126
|
|
127
|
+
const char kGrpcLbAddressAttributeKey[] = "grpclb";
|
128
|
+
|
128
129
|
namespace {
|
129
130
|
|
130
131
|
constexpr char kGrpclb[] = "grpclb";
|
@@ -234,6 +235,40 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
234
235
|
grpc_closure client_load_report_closure_;
|
235
236
|
};
|
236
237
|
|
238
|
+
class TokenAndClientStatsAttribute
|
239
|
+
: public ServerAddress::AttributeInterface {
|
240
|
+
public:
|
241
|
+
TokenAndClientStatsAttribute(std::string lb_token,
|
242
|
+
RefCountedPtr<GrpcLbClientStats> client_stats)
|
243
|
+
: lb_token_(std::move(lb_token)),
|
244
|
+
client_stats_(std::move(client_stats)) {}
|
245
|
+
|
246
|
+
std::unique_ptr<AttributeInterface> Copy() const override {
|
247
|
+
return absl::make_unique<TokenAndClientStatsAttribute>(lb_token_,
|
248
|
+
client_stats_);
|
249
|
+
}
|
250
|
+
|
251
|
+
int Cmp(const AttributeInterface* other_base) const override {
|
252
|
+
const TokenAndClientStatsAttribute* other =
|
253
|
+
static_cast<const TokenAndClientStatsAttribute*>(other_base);
|
254
|
+
int r = lb_token_.compare(other->lb_token_);
|
255
|
+
if (r != 0) return r;
|
256
|
+
return GPR_ICMP(client_stats_.get(), other->client_stats_.get());
|
257
|
+
}
|
258
|
+
|
259
|
+
std::string ToString() const override {
|
260
|
+
return absl::StrFormat("lb_token=\"%s\" client_stats=%p", lb_token_,
|
261
|
+
client_stats_.get());
|
262
|
+
}
|
263
|
+
|
264
|
+
const std::string& lb_token() const { return lb_token_; }
|
265
|
+
GrpcLbClientStats* client_stats() const { return client_stats_.get(); }
|
266
|
+
|
267
|
+
private:
|
268
|
+
std::string lb_token_;
|
269
|
+
RefCountedPtr<GrpcLbClientStats> client_stats_;
|
270
|
+
};
|
271
|
+
|
237
272
|
class Serverlist : public RefCounted<Serverlist> {
|
238
273
|
public:
|
239
274
|
// Takes ownership of serverlist.
|
@@ -303,8 +338,8 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
303
338
|
: parent_(std::move(parent)) {}
|
304
339
|
|
305
340
|
RefCountedPtr<SubchannelInterface> CreateSubchannel(
|
306
|
-
const grpc_channel_args& args) override;
|
307
|
-
void UpdateState(grpc_connectivity_state state,
|
341
|
+
ServerAddress address, const grpc_channel_args& args) override;
|
342
|
+
void UpdateState(grpc_connectivity_state state, const absl::Status& status,
|
308
343
|
std::unique_ptr<SubchannelPicker> picker) override;
|
309
344
|
void RequestReresolution() override;
|
310
345
|
void AddTraceEvent(TraceSeverity severity,
|
@@ -323,15 +358,16 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
323
358
|
~StateWatcher() { parent_.reset(DEBUG_LOCATION, "StateWatcher"); }
|
324
359
|
|
325
360
|
private:
|
326
|
-
void OnConnectivityStateChange(grpc_connectivity_state new_state
|
361
|
+
void OnConnectivityStateChange(grpc_connectivity_state new_state,
|
362
|
+
const absl::Status& status) override {
|
327
363
|
if (parent_->fallback_at_startup_checks_pending_ &&
|
328
364
|
new_state == GRPC_CHANNEL_TRANSIENT_FAILURE) {
|
329
365
|
// In TRANSIENT_FAILURE. Cancel the fallback timer and go into
|
330
366
|
// fallback mode immediately.
|
331
367
|
gpr_log(GPR_INFO,
|
332
|
-
"[grpclb %p] balancer channel in state
|
368
|
+
"[grpclb %p] balancer channel in state:TRANSIENT_FAILURE (%s); "
|
333
369
|
"entering fallback mode",
|
334
|
-
parent_.get());
|
370
|
+
parent_.get(), status.ToString().c_str());
|
335
371
|
parent_->fallback_at_startup_checks_pending_ = false;
|
336
372
|
grpc_timer_cancel(&parent_->lb_fallback_timer_);
|
337
373
|
parent_->fallback_mode_ = true;
|
@@ -352,6 +388,8 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
352
388
|
// Helper functions used in UpdateLocked().
|
353
389
|
void ProcessAddressesAndChannelArgsLocked(const ServerAddressList& addresses,
|
354
390
|
const grpc_channel_args& args);
|
391
|
+
static ServerAddressList AddNullLbTokenToAddresses(
|
392
|
+
const ServerAddressList& addresses);
|
355
393
|
|
356
394
|
void CancelBalancerChannelConnectivityWatchLocked();
|
357
395
|
|
@@ -389,6 +427,8 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
389
427
|
StateWatcher* watcher_ = nullptr;
|
390
428
|
// Response generator to inject address updates into lb_channel_.
|
391
429
|
RefCountedPtr<FakeResolverResponseGenerator> response_generator_;
|
430
|
+
// Parent channelz node.
|
431
|
+
RefCountedPtr<channelz::ChannelNode> parent_channelz_node_;
|
392
432
|
|
393
433
|
// The data associated with the current LB call. It holds a ref to this LB
|
394
434
|
// policy. It's initialized every time we query for backends. It's reset to
|
@@ -473,44 +513,6 @@ std::string GrpcLb::Serverlist::AsText() const {
|
|
473
513
|
return absl::StrJoin(entries, "");
|
474
514
|
}
|
475
515
|
|
476
|
-
// vtables for channel args for LB token and client stats.
|
477
|
-
void* lb_token_copy(void* token) {
|
478
|
-
return gpr_strdup(static_cast<char*>(token));
|
479
|
-
}
|
480
|
-
void lb_token_destroy(void* token) { gpr_free(token); }
|
481
|
-
void* client_stats_copy(void* p) {
|
482
|
-
GrpcLbClientStats* client_stats = static_cast<GrpcLbClientStats*>(p);
|
483
|
-
client_stats->Ref().release();
|
484
|
-
return p;
|
485
|
-
}
|
486
|
-
void client_stats_destroy(void* p) {
|
487
|
-
GrpcLbClientStats* client_stats = static_cast<GrpcLbClientStats*>(p);
|
488
|
-
client_stats->Unref();
|
489
|
-
}
|
490
|
-
int equal_cmp(void* /*p1*/, void* /*p2*/) {
|
491
|
-
// Always indicate a match, since we don't want this channel arg to
|
492
|
-
// affect the subchannel's key in the index.
|
493
|
-
// TODO(roth): Is this right? This does prevent us from needlessly
|
494
|
-
// recreating the subchannel whenever the LB token or client stats
|
495
|
-
// changes (i.e., when the balancer call is terminated and reestablished).
|
496
|
-
// However, it means that we don't actually recreate the subchannel,
|
497
|
-
// which means that we won't ever switch over to using the new LB
|
498
|
-
// token or client stats. A better approach might be to find somewhere
|
499
|
-
// other than the subchannel args to store the LB token and client
|
500
|
-
// stats. They could be stored in a map and then looked up for each
|
501
|
-
// call. Or we could do something more complicated whereby
|
502
|
-
// we create our own subchannel wrapper to store them, although that would
|
503
|
-
// involve a lot of refcounting overhead.
|
504
|
-
// Given that we're trying to move from grpclb to xds at this point,
|
505
|
-
// and that no one has actually reported any problems with this, we
|
506
|
-
// probably won't bother fixing this at this point.
|
507
|
-
return 0;
|
508
|
-
}
|
509
|
-
const grpc_arg_pointer_vtable lb_token_arg_vtable = {
|
510
|
-
lb_token_copy, lb_token_destroy, equal_cmp};
|
511
|
-
const grpc_arg_pointer_vtable client_stats_arg_vtable = {
|
512
|
-
client_stats_copy, client_stats_destroy, equal_cmp};
|
513
|
-
|
514
516
|
bool IsServerValid(const GrpcLbServer& server, size_t idx, bool log) {
|
515
517
|
if (server.drop) return false;
|
516
518
|
if (GPR_UNLIKELY(server.port >> 16 != 0)) {
|
@@ -536,6 +538,8 @@ bool IsServerValid(const GrpcLbServer& server, size_t idx, bool log) {
|
|
536
538
|
// Returns addresses extracted from the serverlist.
|
537
539
|
ServerAddressList GrpcLb::Serverlist::GetServerAddressList(
|
538
540
|
GrpcLbClientStats* client_stats) const {
|
541
|
+
RefCountedPtr<GrpcLbClientStats> stats;
|
542
|
+
if (client_stats != nullptr) stats = client_stats->Ref();
|
539
543
|
ServerAddressList addresses;
|
540
544
|
for (size_t i = 0; i < serverlist_.size(); ++i) {
|
541
545
|
const GrpcLbServer& server = serverlist_[i];
|
@@ -544,34 +548,23 @@ ServerAddressList GrpcLb::Serverlist::GetServerAddressList(
|
|
544
548
|
grpc_resolved_address addr;
|
545
549
|
ParseServer(server, &addr);
|
546
550
|
// LB token processing.
|
547
|
-
|
548
|
-
|
549
|
-
|
550
|
-
|
551
|
-
const size_t lb_token_length =
|
552
|
-
strnlen(server.load_balance_token, lb_token_max_length);
|
553
|
-
memcpy(lb_token, server.load_balance_token, lb_token_length);
|
554
|
-
lb_token[lb_token_length] = '\0';
|
555
|
-
} else {
|
551
|
+
const size_t lb_token_length = strnlen(
|
552
|
+
server.load_balance_token, GPR_ARRAY_SIZE(server.load_balance_token));
|
553
|
+
std::string lb_token(server.load_balance_token, lb_token_length);
|
554
|
+
if (lb_token.empty()) {
|
556
555
|
gpr_log(GPR_INFO,
|
557
556
|
"Missing LB token for backend address '%s'. The empty token will "
|
558
557
|
"be used instead",
|
559
558
|
grpc_sockaddr_to_uri(&addr).c_str());
|
560
|
-
lb_token[0] = '\0';
|
561
559
|
}
|
560
|
+
// Attach attribute to address containing LB token and stats object.
|
561
|
+
std::map<const char*, std::unique_ptr<ServerAddress::AttributeInterface>>
|
562
|
+
attributes;
|
563
|
+
attributes[kGrpcLbAddressAttributeKey] =
|
564
|
+
absl::make_unique<TokenAndClientStatsAttribute>(std::move(lb_token),
|
565
|
+
stats);
|
562
566
|
// Add address.
|
563
|
-
|
564
|
-
args_to_add.emplace_back(grpc_channel_arg_pointer_create(
|
565
|
-
const_cast<char*>(GRPC_ARG_GRPCLB_ADDRESS_LB_TOKEN), lb_token,
|
566
|
-
&lb_token_arg_vtable));
|
567
|
-
if (client_stats != nullptr) {
|
568
|
-
args_to_add.emplace_back(grpc_channel_arg_pointer_create(
|
569
|
-
const_cast<char*>(GRPC_ARG_GRPCLB_ADDRESS_CLIENT_STATS), client_stats,
|
570
|
-
&client_stats_arg_vtable));
|
571
|
-
}
|
572
|
-
grpc_channel_args* args = grpc_channel_args_copy_and_add(
|
573
|
-
nullptr, args_to_add.data(), args_to_add.size());
|
574
|
-
addresses.emplace_back(addr, args);
|
567
|
+
addresses.emplace_back(addr, /*args=*/nullptr, std::move(attributes));
|
575
568
|
}
|
576
569
|
return addresses;
|
577
570
|
}
|
@@ -616,15 +609,18 @@ GrpcLb::PickResult GrpcLb::Picker::Pick(PickArgs args) {
|
|
616
609
|
// If pick succeeded, add LB token to initial metadata.
|
617
610
|
if (result.type == PickResult::PICK_COMPLETE &&
|
618
611
|
result.subchannel != nullptr) {
|
612
|
+
const TokenAndClientStatsAttribute* attribute =
|
613
|
+
static_cast<const TokenAndClientStatsAttribute*>(
|
614
|
+
result.subchannel->GetAttribute(kGrpcLbAddressAttributeKey));
|
615
|
+
if (attribute == nullptr) {
|
616
|
+
gpr_log(GPR_ERROR, "[grpclb %p picker %p] No LB token for subchannel %p",
|
617
|
+
parent_, this, result.subchannel.get());
|
618
|
+
abort();
|
619
|
+
}
|
619
620
|
// Encode client stats object into metadata for use by
|
620
621
|
// client_load_reporting filter.
|
621
|
-
|
622
|
-
|
623
|
-
GRPC_ARG_GRPCLB_ADDRESS_CLIENT_STATS);
|
624
|
-
if (arg != nullptr && arg->type == GRPC_ARG_POINTER &&
|
625
|
-
arg->value.pointer.p != nullptr) {
|
626
|
-
GrpcLbClientStats* client_stats =
|
627
|
-
static_cast<GrpcLbClientStats*>(arg->value.pointer.p);
|
622
|
+
GrpcLbClientStats* client_stats = attribute->client_stats();
|
623
|
+
if (client_stats != nullptr) {
|
628
624
|
client_stats->Ref().release(); // Ref passed via metadata.
|
629
625
|
// The metadata value is a hack: we pretend the pointer points to
|
630
626
|
// a string and rely on the client_load_reporting filter to know
|
@@ -636,15 +632,13 @@ GrpcLb::PickResult GrpcLb::Picker::Pick(PickArgs args) {
|
|
636
632
|
client_stats->AddCallStarted();
|
637
633
|
}
|
638
634
|
// Encode the LB token in metadata.
|
639
|
-
|
640
|
-
|
641
|
-
|
642
|
-
|
643
|
-
|
644
|
-
|
645
|
-
|
646
|
-
args.initial_metadata->Add(kGrpcLbLbTokenMetadataKey,
|
647
|
-
static_cast<char*>(arg->value.pointer.p));
|
635
|
+
// Create a new copy on the call arena, since the subchannel list
|
636
|
+
// may get refreshed between when we return this pick and when the
|
637
|
+
// initial metadata goes out on the wire.
|
638
|
+
char* lb_token = static_cast<char*>(
|
639
|
+
args.call_state->Alloc(attribute->lb_token().size() + 1));
|
640
|
+
strcpy(lb_token, attribute->lb_token().c_str());
|
641
|
+
args.initial_metadata->Add(kGrpcLbLbTokenMetadataKey, lb_token);
|
648
642
|
}
|
649
643
|
return result;
|
650
644
|
}
|
@@ -654,12 +648,14 @@ GrpcLb::PickResult GrpcLb::Picker::Pick(PickArgs args) {
|
|
654
648
|
//
|
655
649
|
|
656
650
|
RefCountedPtr<SubchannelInterface> GrpcLb::Helper::CreateSubchannel(
|
657
|
-
const grpc_channel_args& args) {
|
651
|
+
ServerAddress address, const grpc_channel_args& args) {
|
658
652
|
if (parent_->shutting_down_) return nullptr;
|
659
|
-
return parent_->channel_control_helper()->CreateSubchannel(
|
653
|
+
return parent_->channel_control_helper()->CreateSubchannel(std::move(address),
|
654
|
+
args);
|
660
655
|
}
|
661
656
|
|
662
657
|
void GrpcLb::Helper::UpdateState(grpc_connectivity_state state,
|
658
|
+
const absl::Status& status,
|
663
659
|
std::unique_ptr<SubchannelPicker> picker) {
|
664
660
|
if (parent_->shutting_down_) return;
|
665
661
|
// Record whether child policy reports READY.
|
@@ -690,16 +686,22 @@ void GrpcLb::Helper::UpdateState(grpc_connectivity_state state,
|
|
690
686
|
state != GRPC_CHANNEL_READY)) {
|
691
687
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
692
688
|
gpr_log(GPR_INFO,
|
693
|
-
"[grpclb %p helper %p] state=%s passing
|
694
|
-
|
689
|
+
"[grpclb %p helper %p] state=%s (%s) passing "
|
690
|
+
"child picker %p as-is",
|
691
|
+
parent_.get(), this, ConnectivityStateName(state),
|
692
|
+
status.ToString().c_str(), picker.get());
|
695
693
|
}
|
696
|
-
parent_->channel_control_helper()->UpdateState(state,
|
694
|
+
parent_->channel_control_helper()->UpdateState(state, status,
|
695
|
+
std::move(picker));
|
697
696
|
return;
|
698
697
|
}
|
699
698
|
// Cases 2 and 3a: wrap picker from the child in our own picker.
|
700
699
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
701
|
-
gpr_log(GPR_INFO,
|
702
|
-
|
700
|
+
gpr_log(GPR_INFO,
|
701
|
+
"[grpclb %p helper %p] state=%s (%s) wrapping child "
|
702
|
+
"picker %p",
|
703
|
+
parent_.get(), this, ConnectivityStateName(state),
|
704
|
+
status.ToString().c_str(), picker.get());
|
703
705
|
}
|
704
706
|
RefCountedPtr<GrpcLbClientStats> client_stats;
|
705
707
|
if (parent_->lb_calld_ != nullptr &&
|
@@ -707,7 +709,7 @@ void GrpcLb::Helper::UpdateState(grpc_connectivity_state state,
|
|
707
709
|
client_stats = parent_->lb_calld_->client_stats()->Ref();
|
708
710
|
}
|
709
711
|
parent_->channel_control_helper()->UpdateState(
|
710
|
-
state,
|
712
|
+
state, status,
|
711
713
|
absl::make_unique<Picker>(parent_.get(), parent_->serverlist_,
|
712
714
|
std::move(picker), std::move(client_stats)));
|
713
715
|
}
|
@@ -794,7 +796,7 @@ void GrpcLb::BalancerCallState::Orphan() {
|
|
794
796
|
// lb_on_balancer_status_received_ will complete the cancellation and clean
|
795
797
|
// up. Otherwise, we are here because grpclb_policy has to orphan a failed
|
796
798
|
// call, then the following cancellation will be a no-op.
|
797
|
-
|
799
|
+
grpc_call_cancel_internal(lb_call_);
|
798
800
|
if (client_load_report_timer_callback_pending_) {
|
799
801
|
grpc_timer_cancel(&client_load_report_timer_);
|
800
802
|
}
|
@@ -1280,25 +1282,18 @@ grpc_channel_args* BuildBalancerChannelArgs(
|
|
1280
1282
|
GRPC_ARG_CHANNELZ_CHANNEL_NODE,
|
1281
1283
|
};
|
1282
1284
|
// Channel args to add.
|
1283
|
-
absl::InlinedVector<grpc_arg, 3> args_to_add
|
1284
|
-
|
1285
|
-
|
1286
|
-
args_to_add.emplace_back(
|
1285
|
+
absl::InlinedVector<grpc_arg, 3> args_to_add = {
|
1286
|
+
// The fake resolver response generator, which we use to inject
|
1287
|
+
// address updates into the LB channel.
|
1287
1288
|
grpc_core::FakeResolverResponseGenerator::MakeChannelArg(
|
1288
|
-
response_generator)
|
1289
|
-
|
1290
|
-
|
1291
|
-
|
1292
|
-
|
1293
|
-
|
1294
|
-
|
1295
|
-
|
1296
|
-
if (arg != nullptr && arg->type == GRPC_ARG_POINTER &&
|
1297
|
-
arg->value.pointer.p != nullptr) {
|
1298
|
-
channelz_node = static_cast<channelz::ChannelNode*>(arg->value.pointer.p);
|
1299
|
-
args_to_add.emplace_back(
|
1300
|
-
channelz::MakeParentUuidArg(channelz_node->uuid()));
|
1301
|
-
}
|
1289
|
+
response_generator),
|
1290
|
+
// A channel arg indicating the target is a grpclb load balancer.
|
1291
|
+
grpc_channel_arg_integer_create(
|
1292
|
+
const_cast<char*>(GRPC_ARG_ADDRESS_IS_GRPCLB_LOAD_BALANCER), 1),
|
1293
|
+
// Tells channelz that this is an internal channel.
|
1294
|
+
grpc_channel_arg_integer_create(
|
1295
|
+
const_cast<char*>(GRPC_ARG_CHANNELZ_IS_INTERNAL_CHANNEL), 1),
|
1296
|
+
};
|
1302
1297
|
// Construct channel args.
|
1303
1298
|
grpc_channel_args* new_args = grpc_channel_args_copy_and_add_and_remove(
|
1304
1299
|
args, args_to_remove, GPR_ARRAY_SIZE(args_to_remove), args_to_add.data(),
|
@@ -1375,6 +1370,12 @@ void GrpcLb::ShutdownLocked() {
|
|
1375
1370
|
// OnBalancerChannelConnectivityChangedLocked(), and we need to be
|
1376
1371
|
// alive when that callback is invoked.
|
1377
1372
|
if (lb_channel_ != nullptr) {
|
1373
|
+
if (parent_channelz_node_ != nullptr) {
|
1374
|
+
channelz::ChannelNode* child_channelz_node =
|
1375
|
+
grpc_channel_get_channelz_node(lb_channel_);
|
1376
|
+
GPR_ASSERT(child_channelz_node != nullptr);
|
1377
|
+
parent_channelz_node_->RemoveChildChannel(child_channelz_node->uuid());
|
1378
|
+
}
|
1378
1379
|
grpc_channel_destroy(lb_channel_);
|
1379
1380
|
lb_channel_ = nullptr;
|
1380
1381
|
}
|
@@ -1428,17 +1429,13 @@ void GrpcLb::UpdateLocked(UpdateArgs args) {
|
|
1428
1429
|
// helpers for UpdateLocked()
|
1429
1430
|
//
|
1430
1431
|
|
1431
|
-
ServerAddressList AddNullLbTokenToAddresses(
|
1432
|
+
ServerAddressList GrpcLb::AddNullLbTokenToAddresses(
|
1432
1433
|
const ServerAddressList& addresses) {
|
1433
|
-
static const char* lb_token = "";
|
1434
|
-
grpc_arg arg = grpc_channel_arg_pointer_create(
|
1435
|
-
const_cast<char*>(GRPC_ARG_GRPCLB_ADDRESS_LB_TOKEN),
|
1436
|
-
const_cast<char*>(lb_token), &lb_token_arg_vtable);
|
1437
1434
|
ServerAddressList addresses_out;
|
1438
|
-
for (
|
1439
|
-
addresses_out.emplace_back(
|
1440
|
-
|
1441
|
-
|
1435
|
+
for (const ServerAddress& address : addresses) {
|
1436
|
+
addresses_out.emplace_back(address.WithAttribute(
|
1437
|
+
kGrpcLbAddressAttributeKey,
|
1438
|
+
absl::make_unique<TokenAndClientStatsAttribute>("", nullptr)));
|
1442
1439
|
}
|
1443
1440
|
return addresses_out;
|
1444
1441
|
}
|
@@ -1465,6 +1462,16 @@ void GrpcLb::ProcessAddressesAndChannelArgsLocked(
|
|
1465
1462
|
lb_channel_ =
|
1466
1463
|
CreateGrpclbBalancerChannel(uri_str.c_str(), *lb_channel_args);
|
1467
1464
|
GPR_ASSERT(lb_channel_ != nullptr);
|
1465
|
+
// Set up channelz linkage.
|
1466
|
+
channelz::ChannelNode* child_channelz_node =
|
1467
|
+
grpc_channel_get_channelz_node(lb_channel_);
|
1468
|
+
channelz::ChannelNode* parent_channelz_node =
|
1469
|
+
grpc_channel_args_find_pointer<channelz::ChannelNode>(
|
1470
|
+
&args, GRPC_ARG_CHANNELZ_CHANNEL_NODE);
|
1471
|
+
if (child_channelz_node != nullptr && parent_channelz_node != nullptr) {
|
1472
|
+
parent_channelz_node->AddChildChannel(child_channelz_node->uuid());
|
1473
|
+
parent_channelz_node_ = parent_channelz_node->Ref();
|
1474
|
+
}
|
1468
1475
|
}
|
1469
1476
|
// Propagate updates to the LB channel (pick_first) through the fake
|
1470
1477
|
// resolver.
|