grpc 1.31.0.pre2 → 1.34.0
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 +1030 -16151
- data/include/grpc/grpc.h +1 -7
- data/include/grpc/grpc_security.h +196 -186
- data/include/grpc/impl/codegen/README.md +22 -0
- data/include/grpc/impl/codegen/grpc_types.h +9 -7
- data/include/grpc/impl/codegen/port_platform.h +28 -56
- data/src/core/ext/filters/client_channel/backup_poller.cc +3 -2
- data/src/core/ext/filters/client_channel/client_channel.cc +243 -188
- 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 +36 -8
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +10 -2
- data/src/core/ext/filters/client_channel/health/health_check_client.h +2 -2
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +3 -4
- data/src/core/ext/filters/client_channel/lb_policy.cc +5 -1
- data/src/core/ext/filters/client_channel/lb_policy.h +6 -4
- 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 +10 -7
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +178 -162
- 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/grpclb/grpclb_client_stats.cc +3 -1
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +23 -17
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +79 -30
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +10 -9
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +14 -34
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +26 -15
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +208 -130
- data/src/core/ext/filters/client_channel/lb_policy/xds/eds.cc +299 -328
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +53 -17
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +809 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +722 -0
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +8 -1
- data/src/core/ext/filters/client_channel/resolver.cc +3 -1
- data/src/core/ext/filters/client_channel/resolver.h +4 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +2 -2
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.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/dns/native/dns_resolver.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +2 -2
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +1 -1
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +21 -1
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +661 -58
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +28 -0
- data/src/core/ext/filters/client_channel/resolver_registry.cc +4 -4
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +18 -61
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +4 -3
- data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +50 -48
- data/src/core/ext/filters/client_channel/resolving_lb_policy.h +7 -11
- data/src/core/ext/filters/client_channel/retry_throttle.h +1 -1
- data/src/core/ext/filters/client_channel/server_address.cc +120 -7
- data/src/core/ext/filters/client_channel/server_address.h +44 -21
- data/src/core/ext/filters/client_channel/service_config.cc +18 -13
- data/src/core/ext/filters/client_channel/service_config.h +8 -5
- 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 +82 -38
- data/src/core/ext/filters/client_channel/subchannel.h +18 -6
- data/src/core/ext/filters/client_channel/subchannel_interface.h +41 -5
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +6 -2
- data/src/core/ext/filters/deadline/deadline_filter.cc +83 -77
- data/src/core/ext/filters/deadline/deadline_filter.h +7 -11
- data/src/core/ext/filters/http/client/http_client_filter.cc +1 -1
- data/src/core/ext/filters/http/server/http_server_filter.cc +3 -3
- data/src/core/ext/filters/max_age/max_age_filter.cc +3 -2
- 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 +19 -2
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +10 -35
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +36 -28
- 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/bin_decoder.cc +7 -7
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +260 -311
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +11 -3
- data/src/core/ext/transport/chttp2/transport/flow_control.h +12 -2
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +2 -1
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +12 -8
- data/src/core/ext/transport/chttp2/transport/internal.h +10 -2
- data/src/core/ext/transport/chttp2/transport/parsing.cc +19 -31
- data/src/core/ext/transport/chttp2/transport/writing.cc +7 -7
- 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/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c +38 -0
- data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.h +30 -0
- data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.c +41 -0
- data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +254 -0
- data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.h +105 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +100 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +558 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +145 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.c +53 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +133 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c +127 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.h +65 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.c +56 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +266 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +125 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +143 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.h +55 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.c +56 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c +66 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.c +263 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.h +100 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +233 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.h +70 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.c +56 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +228 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h +80 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +46 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c +59 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +55 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c +110 -0
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.h +50 -0
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +113 -0
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.h +50 -0
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.c +146 -0
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.h +55 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.c +50 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +190 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +55 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +185 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.h +65 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +62 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +97 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +915 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +280 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c +71 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c +64 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +511 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +115 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +48 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h +30 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +166 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h +55 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +105 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +249 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h +60 -0
- data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.c +72 -0
- data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c +60 -0
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +152 -0
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +60 -0
- data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.c +83 -0
- data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.c +82 -0
- data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +83 -0
- data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.c +86 -0
- data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.c +74 -0
- data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.c +64 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.c +54 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.c +53 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +73 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c +72 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.c +81 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.c +92 -0
- data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.h +65 -0
- data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.c +95 -0
- data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.h +55 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.c +34 -0
- data/src/core/ext/{upb-generated/gogoproto/gogo.upb.h → upbdefs-generated/envoy/type/v3/http.upbdefs.h} +10 -9
- data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.c +59 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.c +54 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.c +47 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.c +40 -0
- data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.h +30 -0
- data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.c +61 -0
- data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c +38 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +386 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.h +165 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c +39 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c +37 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c +65 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.h +50 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c +39 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c +66 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.h +75 -0
- data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c +42 -0
- data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c +70 -0
- data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c +56 -0
- data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c +33 -0
- data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.h +30 -0
- data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c +49 -0
- data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c +43 -0
- data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.c +42 -0
- data/src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.c +62 -0
- data/src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.c +45 -0
- data/src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.c +49 -0
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.c +68 -0
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.c +51 -0
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +307 -0
- data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.h +145 -0
- data/src/core/ext/xds/certificate_provider_factory.h +61 -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.cc +84 -0
- data/src/core/ext/xds/certificate_provider_store.h +107 -0
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +119 -0
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +72 -0
- data/src/core/ext/xds/google_mesh_ca_certificate_provider_factory.cc +265 -0
- data/src/core/ext/xds/google_mesh_ca_certificate_provider_factory.h +104 -0
- data/src/core/ext/xds/xds_api.cc +2119 -0
- data/src/core/ext/xds/xds_api.h +438 -0
- data/src/core/ext/{filters/client_channel/xds → xds}/xds_bootstrap.cc +208 -19
- data/src/core/ext/{filters/client_channel/xds → xds}/xds_bootstrap.h +31 -10
- data/src/core/ext/xds/xds_certificate_provider.cc +240 -0
- data/src/core/ext/xds/xds_certificate_provider.h +74 -0
- 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 +636 -847
- data/src/core/ext/{filters/client_channel/xds → xds}/xds_client.h +120 -98
- data/src/core/ext/{filters/client_channel/xds → xds}/xds_client_stats.cc +61 -18
- data/src/core/ext/{filters/client_channel/xds → xds}/xds_client_stats.h +38 -10
- data/src/core/lib/channel/channel_args.cc +2 -1
- data/src/core/lib/channel/channel_args.h +0 -1
- data/src/core/lib/channel/channel_trace.cc +4 -2
- data/src/core/lib/channel/channelz.cc +24 -60
- data/src/core/lib/channel/channelz.h +14 -22
- data/src/core/lib/channel/channelz_registry.cc +15 -12
- data/src/core/lib/channel/channelz_registry.h +3 -0
- data/src/core/lib/channel/handshaker.h +2 -2
- data/src/core/lib/compression/compression.cc +8 -4
- data/src/core/lib/compression/compression_internal.cc +10 -5
- data/src/core/lib/compression/compression_internal.h +2 -1
- data/src/core/lib/compression/stream_compression_identity.cc +1 -3
- data/src/core/lib/debug/stats_data.cc +1 -0
- data/src/core/lib/gpr/cpu_iphone.cc +10 -2
- data/src/core/lib/gpr/log_linux.cc +17 -3
- data/src/core/lib/gpr/log_posix.cc +13 -1
- data/src/core/lib/gpr/log_windows.cc +16 -4
- data/src/core/lib/gpr/murmur_hash.cc +1 -1
- data/src/core/lib/gpr/string.cc +1 -1
- data/src/core/lib/gpr/sync_posix.cc +2 -8
- data/src/core/lib/gpr/time_precise.cc +5 -2
- data/src/core/lib/gpr/time_precise.h +6 -2
- data/src/core/lib/gpr/tls.h +4 -0
- data/src/core/lib/gpr/tls_msvc.h +2 -0
- data/src/core/lib/gpr/tls_stdcpp.h +48 -0
- data/src/core/lib/gpr/useful.h +5 -4
- data/src/core/lib/gprpp/dual_ref_counted.h +331 -0
- data/src/core/lib/gprpp/examine_stack.cc +43 -0
- data/src/core/lib/gprpp/examine_stack.h +46 -0
- data/src/core/lib/gprpp/fork.cc +2 -2
- data/src/core/lib/gprpp/manual_constructor.h +1 -1
- data/src/core/lib/gprpp/orphanable.h +4 -8
- data/src/core/lib/gprpp/ref_counted.h +91 -68
- data/src/core/lib/gprpp/ref_counted_ptr.h +158 -7
- data/src/core/lib/gprpp/stat.h +38 -0
- data/src/core/lib/gprpp/stat_posix.cc +49 -0
- data/src/core/lib/gprpp/stat_windows.cc +48 -0
- data/src/core/lib/gprpp/thd.h +2 -2
- data/src/core/lib/gprpp/thd_posix.cc +36 -36
- data/src/core/lib/http/parser.cc +46 -25
- 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/error.cc +2 -1
- data/src/core/lib/iomgr/ev_epollex_linux.cc +8 -4
- data/src/core/lib/iomgr/ev_posix.cc +0 -2
- data/src/core/lib/iomgr/exec_ctx.cc +1 -1
- data/src/core/lib/iomgr/exec_ctx.h +10 -8
- data/src/core/lib/iomgr/executor/mpmcqueue.h +5 -5
- data/src/core/lib/iomgr/executor/threadpool.h +3 -3
- 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 +85 -7
- data/src/core/{ext/filters/client_channel → lib/iomgr}/parse_address.h +23 -3
- data/src/core/lib/iomgr/poller/eventmanager_libuv.cc +2 -1
- data/src/core/lib/iomgr/python_util.h +3 -3
- data/src/core/lib/iomgr/resolve_address_posix.cc +1 -5
- 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 +34 -15
- data/src/core/lib/iomgr/tcp_windows.cc +26 -10
- data/src/core/lib/iomgr/timer_custom.cc +2 -2
- data/src/core/lib/iomgr/unix_sockets_posix.cc +27 -15
- data/src/core/lib/iomgr/unix_sockets_posix.h +5 -0
- data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +7 -0
- data/src/core/lib/iomgr/wakeup_fd_pipe.cc +2 -2
- data/src/core/lib/json/json.h +2 -2
- data/src/core/lib/json/json_reader.cc +8 -4
- data/src/core/lib/json/json_util.cc +58 -0
- data/src/core/lib/json/json_util.h +204 -0
- data/src/core/lib/json/json_writer.cc +2 -1
- 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 +44 -0
- data/src/core/lib/security/authorization/mock_cel/cel_expression.h +69 -0
- data/src/core/lib/security/authorization/mock_cel/cel_value.h +97 -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 +57 -0
- data/src/core/lib/security/context/security_context.h +3 -1
- data/src/core/lib/security/credentials/credentials.cc +1 -1
- data/src/core/lib/security/credentials/credentials.h +3 -3
- data/src/core/lib/security/credentials/external/aws_request_signer.cc +208 -0
- data/src/core/lib/security/credentials/external/aws_request_signer.h +73 -0
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +311 -0
- data/src/core/lib/security/credentials/external/external_account_credentials.h +118 -0
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +136 -0
- data/src/core/lib/security/credentials/external/file_external_account_credentials.h +49 -0
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +211 -0
- data/src/core/lib/security/credentials/external/url_external_account_credentials.h +59 -0
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +56 -38
- data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +51 -0
- data/src/core/lib/security/credentials/jwt/json_token.cc +5 -2
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +4 -3
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +5 -1
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +2 -2
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +351 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +218 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +78 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +74 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +77 -149
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +58 -187
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +16 -12
- data/src/core/lib/security/credentials/tls/tls_credentials.h +2 -2
- 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 +9 -14
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +88 -0
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +70 -0
- data/src/core/lib/security/security_connector/load_system_roots.h +4 -0
- data/src/core/lib/security/security_connector/load_system_roots_linux.h +2 -0
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +2 -2
- data/src/core/lib/security/security_connector/security_connector.cc +1 -1
- data/src/core/lib/security/security_connector/security_connector.h +4 -2
- data/src/core/lib/security/security_connector/ssl_utils.h +9 -2
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +293 -275
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +106 -61
- data/src/core/lib/security/transport/secure_endpoint.cc +7 -1
- data/src/core/lib/security/transport/security_handshaker.cc +1 -1
- data/src/core/lib/security/transport/server_auth_filter.cc +2 -1
- data/src/core/lib/security/util/json_util.h +1 -0
- data/src/core/lib/slice/slice.cc +7 -4
- data/src/core/lib/slice/slice_buffer.cc +2 -1
- data/src/core/lib/slice/slice_intern.cc +2 -2
- data/src/core/lib/surface/call.cc +21 -20
- 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 +17 -278
- 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 +1069 -1245
- data/src/core/lib/surface/server.h +363 -87
- data/src/core/lib/surface/validate_metadata.h +3 -0
- 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 +34 -0
- data/src/core/lib/transport/bdp_estimator.cc +1 -1
- data/src/core/lib/transport/bdp_estimator.h +2 -1
- data/src/core/lib/transport/byte_stream.h +3 -3
- data/src/core/lib/transport/connectivity_state.cc +18 -13
- data/src/core/lib/transport/connectivity_state.h +22 -10
- 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/metadata.h +2 -2
- 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/timeout_encoding.cc +4 -4
- data/src/core/lib/transport/transport.cc +5 -3
- data/src/core/lib/transport/transport.h +8 -1
- 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 +26 -3
- data/src/core/tsi/fake_transport_security.cc +1 -0
- data/src/core/tsi/local_transport_security.cc +5 -1
- data/src/core/tsi/local_transport_security.h +6 -7
- data/src/core/tsi/ssl/session_cache/ssl_session.h +3 -0
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +4 -1
- data/src/core/tsi/ssl_transport_security.cc +16 -9
- data/src/core/tsi/ssl_transport_security.h +3 -0
- data/src/core/tsi/transport_security.cc +4 -2
- data/src/ruby/bin/math_services_pb.rb +4 -4
- data/src/ruby/ext/grpc/extconf.rb +1 -1
- data/src/ruby/ext/grpc/rb_channel_credentials.c +9 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +26 -18
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +43 -31
- 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 +1764 -0
- data/third_party/abseil-cpp/absl/base/attributes.h +99 -38
- data/third_party/abseil-cpp/absl/base/call_once.h +1 -1
- data/third_party/abseil-cpp/absl/base/casts.h +9 -6
- data/third_party/abseil-cpp/absl/base/config.h +60 -17
- data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +428 -335
- data/third_party/abseil-cpp/absl/base/internal/bits.h +17 -16
- data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +166 -0
- data/third_party/abseil-cpp/absl/base/internal/dynamic_annotations.h +398 -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/invoke.h +4 -4
- 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/base/internal/low_level_scheduling.h +29 -1
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +2 -2
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +7 -5
- data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +25 -38
- data/third_party/abseil-cpp/absl/base/internal/spinlock.h +19 -25
- data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +8 -0
- data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +28 -5
- data/third_party/abseil-cpp/absl/base/internal/sysinfo.h +8 -0
- data/third_party/abseil-cpp/absl/base/internal/tsan_mutex_interface.h +3 -1
- data/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +2 -2
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +3 -3
- data/third_party/abseil-cpp/absl/base/macros.h +36 -109
- data/third_party/abseil-cpp/absl/base/optimization.h +61 -1
- data/third_party/abseil-cpp/absl/base/options.h +31 -4
- data/third_party/abseil-cpp/absl/base/policy_checks.h +1 -1
- data/third_party/abseil-cpp/absl/base/thread_annotations.h +94 -39
- data/third_party/abseil-cpp/absl/container/fixed_array.h +532 -0
- data/third_party/abseil-cpp/absl/container/flat_hash_set.h +504 -0
- data/third_party/abseil-cpp/absl/container/inlined_vector.h +33 -36
- data/third_party/abseil-cpp/absl/container/internal/common.h +206 -0
- data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +33 -8
- data/third_party/abseil-cpp/absl/container/internal/container_memory.h +460 -0
- data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +161 -0
- data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +208 -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 +270 -0
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +321 -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 +50 -0
- data/third_party/abseil-cpp/absl/container/internal/layout.h +743 -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 +1903 -0
- data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc +139 -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 +1945 -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 +196 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +134 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +89 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +108 -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 +93 -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 +149 -0
- data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +173 -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 +36 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize.h +99 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize_darwin.inc +101 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +1560 -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/bind_front.h +184 -0
- data/third_party/abseil-cpp/absl/functional/function_ref.h +139 -0
- data/third_party/abseil-cpp/absl/functional/internal/front_binder.h +95 -0
- data/third_party/abseil-cpp/absl/functional/internal/function_ref.h +106 -0
- data/third_party/abseil-cpp/absl/hash/hash.h +325 -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 +996 -0
- data/third_party/abseil-cpp/absl/memory/memory.h +4 -0
- data/third_party/abseil-cpp/absl/meta/type_traits.h +2 -8
- data/third_party/abseil-cpp/absl/numeric/int128.cc +13 -27
- data/third_party/abseil-cpp/absl/numeric/int128.h +16 -15
- data/third_party/abseil-cpp/absl/status/internal/status_internal.h +51 -0
- data/third_party/abseil-cpp/absl/status/status.cc +445 -0
- data/third_party/abseil-cpp/absl/status/status.h +817 -0
- data/third_party/abseil-cpp/absl/status/status_payload_printer.cc +38 -0
- data/third_party/abseil-cpp/absl/status/status_payload_printer.h +51 -0
- data/third_party/abseil-cpp/absl/strings/charconv.cc +2 -2
- data/third_party/abseil-cpp/absl/strings/cord.cc +1998 -0
- data/third_party/abseil-cpp/absl/strings/cord.h +1276 -0
- data/third_party/abseil-cpp/absl/strings/escaping.cc +9 -9
- data/third_party/abseil-cpp/absl/strings/internal/char_map.h +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.cc +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.h +2 -2
- data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +2 -2
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +173 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +222 -136
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +136 -64
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +14 -21
- data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +7 -14
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +31 -7
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +147 -135
- data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +999 -87
- data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.h +3 -3
- data/third_party/abseil-cpp/absl/strings/internal/str_format/output.h +4 -12
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +8 -6
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +13 -11
- data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +2 -2
- data/third_party/abseil-cpp/absl/strings/str_cat.cc +4 -4
- data/third_party/abseil-cpp/absl/strings/str_cat.h +1 -1
- data/third_party/abseil-cpp/absl/strings/str_format.h +289 -13
- data/third_party/abseil-cpp/absl/strings/str_split.cc +2 -2
- data/third_party/abseil-cpp/absl/strings/str_split.h +1 -0
- data/third_party/abseil-cpp/absl/strings/string_view.h +26 -19
- data/third_party/abseil-cpp/absl/strings/substitute.cc +5 -5
- data/third_party/abseil-cpp/absl/strings/substitute.h +32 -29
- 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 +249 -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 +492 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +159 -0
- data/third_party/abseil-cpp/absl/synchronization/mutex.cc +2739 -0
- data/third_party/abseil-cpp/absl/synchronization/mutex.h +1065 -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/time/civil_time.cc +9 -9
- data/third_party/abseil-cpp/absl/time/clock.cc +3 -3
- data/third_party/abseil-cpp/absl/time/duration.cc +90 -59
- data/third_party/abseil-cpp/absl/time/format.cc +43 -36
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +26 -16
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +4 -2
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/zone_info_source.h +1 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +136 -29
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.cc +13 -21
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.h +1 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +136 -129
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.h +4 -5
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +8 -7
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +6 -6
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +2 -1
- data/third_party/abseil-cpp/absl/time/time.h +15 -16
- 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/optional.h +9 -9
- data/third_party/abseil-cpp/absl/types/span.h +49 -36
- data/third_party/abseil-cpp/absl/types/variant.h +861 -0
- data/third_party/abseil-cpp/absl/utility/utility.h +2 -2
- data/third_party/address_sorting/include/address_sorting/address_sorting.h +2 -0
- data/third_party/boringssl-with-bazel/err_data.c +479 -467
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +0 -6
- data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +2 -0
- 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/cipher/e_aes.c +173 -35
- 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 +56 -22
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +8 -2
- 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 +118 -49
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +267 -95
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +210 -34
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c +766 -0
- 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 +6 -4
- 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/pcy_data.c +5 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +14 -14
- 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_prn.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/aead.h +24 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +54 -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 +6 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +4 -0
- 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/des.h +6 -0
- 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/opensslconf.h +3 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +202 -134
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +103 -10
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +5 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +42 -14
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +199 -78
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +482 -432
- data/third_party/boringssl-with-bazel/src/ssl/bio_ssl.cc +18 -5
- data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +35 -0
- 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 +49 -10
- data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +42 -1
- 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 +77 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +11 -14
- data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +250 -20
- data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +1 -2
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +57 -19
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +140 -41
- data/third_party/boringssl-with-bazel/src/ssl/tls_record.cc +5 -3
- data/third_party/upb/upb/decode.c +64 -15
- data/third_party/upb/upb/def.c +2169 -0
- data/third_party/upb/upb/def.h +330 -0
- data/third_party/upb/upb/def.hpp +525 -0
- 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/reflection.c +391 -0
- data/third_party/upb/upb/reflection.h +168 -0
- data/third_party/upb/upb/table.c +0 -11
- data/third_party/upb/upb/table.int.h +0 -9
- data/third_party/upb/upb/text_encode.c +398 -0
- data/third_party/upb/upb/text_encode.h +35 -0
- 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 +489 -161
- 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 -1143
- 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/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/abseil-cpp/absl/base/dynamic_annotations.cc +0 -129
- 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 {
|
@@ -24,8 +24,7 @@
|
|
24
24
|
|
25
25
|
#include "absl/strings/string_view.h"
|
26
26
|
|
27
|
-
#include <grpc/
|
28
|
-
#include <grpc/impl/codegen/slice.h>
|
27
|
+
#include <grpc/grpc.h>
|
29
28
|
|
30
29
|
#include "src/core/ext/filters/client_channel/service_config.h"
|
31
30
|
#include "src/core/ext/filters/client_channel/service_config_parser.h"
|
@@ -34,6 +33,9 @@
|
|
34
33
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
35
34
|
#include "src/core/lib/transport/metadata_batch.h"
|
36
35
|
|
36
|
+
// Channel arg key for ConfigSelector.
|
37
|
+
#define GRPC_ARG_CONFIG_SELECTOR "grpc.internal.config_selector"
|
38
|
+
|
37
39
|
namespace grpc_core {
|
38
40
|
|
39
41
|
// Internal API used to allow resolver implementations to override
|
@@ -52,6 +54,9 @@ class ConfigSelector : public RefCounted<ConfigSelector> {
|
|
52
54
|
// The per-method parsed configs that will be passed to
|
53
55
|
// ServiceConfigCallData.
|
54
56
|
const ServiceConfigParser::ParsedConfigVector* method_configs = nullptr;
|
57
|
+
// A ref to the service config that contains method_configs, held by
|
58
|
+
// the call to ensure that method_configs lives long enough.
|
59
|
+
RefCountedPtr<ServiceConfig> service_config;
|
55
60
|
// Call attributes that will be accessible to LB policy implementations.
|
56
61
|
std::map<const char*, absl::string_view> call_attributes;
|
57
62
|
// A callback that, if set, will be invoked when the call is
|
@@ -60,7 +65,20 @@ class ConfigSelector : public RefCounted<ConfigSelector> {
|
|
60
65
|
std::function<void()> on_call_committed;
|
61
66
|
};
|
62
67
|
|
63
|
-
|
68
|
+
~ConfigSelector() override = default;
|
69
|
+
|
70
|
+
virtual const char* name() const = 0;
|
71
|
+
|
72
|
+
// Will be called only if the two objects have the same name, so
|
73
|
+
// subclasses can be free to safely down-cast the argument.
|
74
|
+
virtual bool Equals(const ConfigSelector* other) const = 0;
|
75
|
+
|
76
|
+
static bool Equals(const ConfigSelector* cs1, const ConfigSelector* cs2) {
|
77
|
+
if (cs1 == nullptr) return cs2 == nullptr;
|
78
|
+
if (cs2 == nullptr) return false;
|
79
|
+
if (strcmp(cs1->name(), cs2->name()) != 0) return false;
|
80
|
+
return cs1->Equals(cs2);
|
81
|
+
}
|
64
82
|
|
65
83
|
virtual CallConfig GetCallConfig(GetCallConfigArgs args) = 0;
|
66
84
|
|
@@ -73,14 +91,24 @@ class ConfigSelector : public RefCounted<ConfigSelector> {
|
|
73
91
|
class DefaultConfigSelector : public ConfigSelector {
|
74
92
|
public:
|
75
93
|
explicit DefaultConfigSelector(RefCountedPtr<ServiceConfig> service_config)
|
76
|
-
: service_config_(std::move(service_config)) {
|
94
|
+
: service_config_(std::move(service_config)) {
|
95
|
+
// The client channel code ensures that this will never be null.
|
96
|
+
// If neither the resolver nor the client application provide a
|
97
|
+
// config, a default empty config will be used.
|
98
|
+
GPR_DEBUG_ASSERT(service_config_ != nullptr);
|
99
|
+
}
|
100
|
+
|
101
|
+
const char* name() const override { return "default"; }
|
102
|
+
|
103
|
+
// Only comparing the ConfigSelector itself, not the underlying
|
104
|
+
// service config, so we always return true.
|
105
|
+
bool Equals(const ConfigSelector* other) const override { return true; }
|
77
106
|
|
78
107
|
CallConfig GetCallConfig(GetCallConfigArgs args) override {
|
79
108
|
CallConfig call_config;
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
}
|
109
|
+
call_config.method_configs =
|
110
|
+
service_config_->GetMethodParsedConfigVector(*args.path);
|
111
|
+
call_config.service_config = service_config_;
|
84
112
|
return call_config;
|
85
113
|
}
|
86
114
|
|
@@ -51,7 +51,10 @@ HealthCheckClient::HealthCheckClient(
|
|
51
51
|
grpc_pollset_set* interested_parties,
|
52
52
|
RefCountedPtr<channelz::SubchannelNode> channelz_node,
|
53
53
|
RefCountedPtr<ConnectivityStateWatcherInterface> watcher)
|
54
|
-
: InternallyRefCounted<HealthCheckClient>(
|
54
|
+
: InternallyRefCounted<HealthCheckClient>(
|
55
|
+
GRPC_TRACE_FLAG_ENABLED(grpc_health_check_client_trace)
|
56
|
+
? "HealthCheckClient"
|
57
|
+
: nullptr),
|
55
58
|
service_name_(service_name),
|
56
59
|
connected_subchannel_(std::move(connected_subchannel)),
|
57
60
|
interested_parties_(interested_parties),
|
@@ -91,7 +94,12 @@ void HealthCheckClient::SetHealthStatusLocked(grpc_connectivity_state state,
|
|
91
94
|
gpr_log(GPR_INFO, "HealthCheckClient %p: setting state=%s reason=%s", this,
|
92
95
|
ConnectivityStateName(state), reason);
|
93
96
|
}
|
94
|
-
if (watcher_ != nullptr)
|
97
|
+
if (watcher_ != nullptr) {
|
98
|
+
watcher_->Notify(state,
|
99
|
+
state == GRPC_CHANNEL_TRANSIENT_FAILURE
|
100
|
+
? absl::Status(absl::StatusCode::kUnavailable, reason)
|
101
|
+
: absl::Status());
|
102
|
+
}
|
95
103
|
}
|
96
104
|
|
97
105
|
void HealthCheckClient::Orphan() {
|
@@ -50,7 +50,7 @@ class HealthCheckClient : public InternallyRefCounted<HealthCheckClient> {
|
|
50
50
|
RefCountedPtr<channelz::SubchannelNode> channelz_node,
|
51
51
|
RefCountedPtr<ConnectivityStateWatcherInterface> watcher);
|
52
52
|
|
53
|
-
~HealthCheckClient();
|
53
|
+
~HealthCheckClient() override;
|
54
54
|
|
55
55
|
void Orphan() override;
|
56
56
|
|
@@ -60,7 +60,7 @@ class HealthCheckClient : public InternallyRefCounted<HealthCheckClient> {
|
|
60
60
|
public:
|
61
61
|
CallState(RefCountedPtr<HealthCheckClient> health_check_client,
|
62
62
|
grpc_pollset_set* interested_parties_);
|
63
|
-
~CallState();
|
63
|
+
~CallState() override;
|
64
64
|
|
65
65
|
void Orphan() override;
|
66
66
|
|
@@ -54,7 +54,7 @@ class HttpConnectHandshaker : public Handshaker {
|
|
54
54
|
const char* name() const override { return "http_connect"; }
|
55
55
|
|
56
56
|
private:
|
57
|
-
|
57
|
+
~HttpConnectHandshaker() override;
|
58
58
|
void CleanupArgsForFailureLocked();
|
59
59
|
void HandshakeFailedLocked(grpc_error* error);
|
60
60
|
static void OnWriteDone(void* arg, grpc_error* error);
|
@@ -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;
|
@@ -32,7 +32,11 @@ DebugOnlyTraceFlag grpc_trace_lb_policy_refcount(false, "lb_policy_refcount");
|
|
32
32
|
//
|
33
33
|
|
34
34
|
LoadBalancingPolicy::LoadBalancingPolicy(Args args, intptr_t initial_refcount)
|
35
|
-
: InternallyRefCounted(
|
35
|
+
: InternallyRefCounted(
|
36
|
+
GRPC_TRACE_FLAG_ENABLED(grpc_trace_lb_policy_refcount)
|
37
|
+
? "LoadBalancingPolicy"
|
38
|
+
: nullptr,
|
39
|
+
initial_refcount),
|
36
40
|
work_serializer_(std::move(args.work_serializer)),
|
37
41
|
interested_parties_(grpc_pollset_set_create()),
|
38
42
|
channel_control_helper_(std::move(args.channel_control_helper)) {}
|
@@ -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.
|
@@ -299,7 +301,7 @@ class LoadBalancingPolicy : public InternallyRefCounted<LoadBalancingPolicy> {
|
|
299
301
|
/// return the parameters they need.
|
300
302
|
class Config : public RefCounted<Config> {
|
301
303
|
public:
|
302
|
-
|
304
|
+
~Config() override = default;
|
303
305
|
|
304
306
|
// Returns the load balancing policy name
|
305
307
|
virtual const char* name() const = 0;
|
@@ -339,7 +341,7 @@ class LoadBalancingPolicy : public InternallyRefCounted<LoadBalancingPolicy> {
|
|
339
341
|
};
|
340
342
|
|
341
343
|
explicit LoadBalancingPolicy(Args args, intptr_t initial_refcount = 1);
|
342
|
-
|
344
|
+
~LoadBalancingPolicy() override;
|
343
345
|
|
344
346
|
// Not copyable nor movable.
|
345
347
|
LoadBalancingPolicy(const LoadBalancingPolicy&) = delete;
|
@@ -374,7 +376,7 @@ class LoadBalancingPolicy : public InternallyRefCounted<LoadBalancingPolicy> {
|
|
374
376
|
explicit QueuePicker(RefCountedPtr<LoadBalancingPolicy> parent)
|
375
377
|
: parent_(std::move(parent)) {}
|
376
378
|
|
377
|
-
~QueuePicker() { parent_.reset(DEBUG_LOCATION, "QueuePicker"); }
|
379
|
+
~QueuePicker() override { parent_.reset(DEBUG_LOCATION, "QueuePicker"); }
|
378
380
|
|
379
381
|
PickResult Pick(PickArgs args) override;
|
380
382
|
|
@@ -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.
|
@@ -36,16 +36,17 @@ class ChildPolicyHandler::Helper
|
|
36
36
|
explicit Helper(RefCountedPtr<ChildPolicyHandler> parent)
|
37
37
|
: parent_(std::move(parent)) {}
|
38
38
|
|
39
|
-
~Helper() { parent_.reset(DEBUG_LOCATION, "Helper"); }
|
39
|
+
~Helper() override { 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 {
|
@@ -36,7 +36,7 @@ class ChildPolicyHandler : public LoadBalancingPolicy {
|
|
36
36
|
ChildPolicyHandler(Args args, TraceFlag* tracer)
|
37
37
|
: LoadBalancingPolicy(std::move(args)), tracer_(tracer) {}
|
38
38
|
|
39
|
-
|
39
|
+
const char* name() const override { return "child_policy_handler"; }
|
40
40
|
|
41
41
|
void UpdateLocked(UpdateArgs args) override;
|
42
42
|
void ExitIdleLocked() 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";
|
@@ -163,7 +164,7 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
163
164
|
public:
|
164
165
|
explicit BalancerCallState(
|
165
166
|
RefCountedPtr<LoadBalancingPolicy> parent_grpclb_policy);
|
166
|
-
~BalancerCallState();
|
167
|
+
~BalancerCallState() override;
|
167
168
|
|
168
169
|
// It's the caller's responsibility to ensure that Orphan() is called from
|
169
170
|
// inside the combiner.
|
@@ -234,6 +235,59 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
234
235
|
grpc_closure client_load_report_closure_;
|
235
236
|
};
|
236
237
|
|
238
|
+
class SubchannelWrapper : public DelegatingSubchannel {
|
239
|
+
public:
|
240
|
+
SubchannelWrapper(RefCountedPtr<SubchannelInterface> subchannel,
|
241
|
+
std::string lb_token,
|
242
|
+
RefCountedPtr<GrpcLbClientStats> client_stats)
|
243
|
+
: DelegatingSubchannel(std::move(subchannel)),
|
244
|
+
lb_token_(std::move(lb_token)),
|
245
|
+
client_stats_(std::move(client_stats)) {}
|
246
|
+
|
247
|
+
const std::string& lb_token() const { return lb_token_; }
|
248
|
+
GrpcLbClientStats* client_stats() const { return client_stats_.get(); }
|
249
|
+
|
250
|
+
private:
|
251
|
+
std::string lb_token_;
|
252
|
+
RefCountedPtr<GrpcLbClientStats> client_stats_;
|
253
|
+
};
|
254
|
+
|
255
|
+
class TokenAndClientStatsAttribute
|
256
|
+
: public ServerAddress::AttributeInterface {
|
257
|
+
public:
|
258
|
+
TokenAndClientStatsAttribute(std::string lb_token,
|
259
|
+
RefCountedPtr<GrpcLbClientStats> client_stats)
|
260
|
+
: lb_token_(std::move(lb_token)),
|
261
|
+
client_stats_(std::move(client_stats)) {}
|
262
|
+
|
263
|
+
std::unique_ptr<AttributeInterface> Copy() const override {
|
264
|
+
return absl::make_unique<TokenAndClientStatsAttribute>(lb_token_,
|
265
|
+
client_stats_);
|
266
|
+
}
|
267
|
+
|
268
|
+
int Cmp(const AttributeInterface* other_base) const override {
|
269
|
+
const TokenAndClientStatsAttribute* other =
|
270
|
+
static_cast<const TokenAndClientStatsAttribute*>(other_base);
|
271
|
+
int r = lb_token_.compare(other->lb_token_);
|
272
|
+
if (r != 0) return r;
|
273
|
+
return GPR_ICMP(client_stats_.get(), other->client_stats_.get());
|
274
|
+
}
|
275
|
+
|
276
|
+
std::string ToString() const override {
|
277
|
+
return absl::StrFormat("lb_token=\"%s\" client_stats=%p", lb_token_,
|
278
|
+
client_stats_.get());
|
279
|
+
}
|
280
|
+
|
281
|
+
const std::string& lb_token() const { return lb_token_; }
|
282
|
+
RefCountedPtr<GrpcLbClientStats> client_stats() const {
|
283
|
+
return client_stats_;
|
284
|
+
}
|
285
|
+
|
286
|
+
private:
|
287
|
+
std::string lb_token_;
|
288
|
+
RefCountedPtr<GrpcLbClientStats> client_stats_;
|
289
|
+
};
|
290
|
+
|
237
291
|
class Serverlist : public RefCounted<Serverlist> {
|
238
292
|
public:
|
239
293
|
// Takes ownership of serverlist.
|
@@ -275,21 +329,16 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
275
329
|
|
276
330
|
class Picker : public SubchannelPicker {
|
277
331
|
public:
|
278
|
-
Picker(
|
332
|
+
Picker(RefCountedPtr<Serverlist> serverlist,
|
279
333
|
std::unique_ptr<SubchannelPicker> child_picker,
|
280
334
|
RefCountedPtr<GrpcLbClientStats> client_stats)
|
281
|
-
:
|
282
|
-
serverlist_(std::move(serverlist)),
|
335
|
+
: serverlist_(std::move(serverlist)),
|
283
336
|
child_picker_(std::move(child_picker)),
|
284
337
|
client_stats_(std::move(client_stats)) {}
|
285
338
|
|
286
339
|
PickResult Pick(PickArgs args) override;
|
287
340
|
|
288
341
|
private:
|
289
|
-
// Storing the address for logging, but not holding a ref.
|
290
|
-
// DO NOT DEFERENCE!
|
291
|
-
GrpcLb* parent_;
|
292
|
-
|
293
342
|
// Serverlist to be used for determining drops.
|
294
343
|
RefCountedPtr<Serverlist> serverlist_;
|
295
344
|
|
@@ -303,8 +352,8 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
303
352
|
: parent_(std::move(parent)) {}
|
304
353
|
|
305
354
|
RefCountedPtr<SubchannelInterface> CreateSubchannel(
|
306
|
-
const grpc_channel_args& args) override;
|
307
|
-
void UpdateState(grpc_connectivity_state state,
|
355
|
+
ServerAddress address, const grpc_channel_args& args) override;
|
356
|
+
void UpdateState(grpc_connectivity_state state, const absl::Status& status,
|
308
357
|
std::unique_ptr<SubchannelPicker> picker) override;
|
309
358
|
void RequestReresolution() override;
|
310
359
|
void AddTraceEvent(TraceSeverity severity,
|
@@ -320,18 +369,19 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
320
369
|
: AsyncConnectivityStateWatcherInterface(parent->work_serializer()),
|
321
370
|
parent_(std::move(parent)) {}
|
322
371
|
|
323
|
-
~StateWatcher() { parent_.reset(DEBUG_LOCATION, "StateWatcher"); }
|
372
|
+
~StateWatcher() override { parent_.reset(DEBUG_LOCATION, "StateWatcher"); }
|
324
373
|
|
325
374
|
private:
|
326
|
-
void OnConnectivityStateChange(grpc_connectivity_state new_state
|
375
|
+
void OnConnectivityStateChange(grpc_connectivity_state new_state,
|
376
|
+
const absl::Status& status) override {
|
327
377
|
if (parent_->fallback_at_startup_checks_pending_ &&
|
328
378
|
new_state == GRPC_CHANNEL_TRANSIENT_FAILURE) {
|
329
379
|
// In TRANSIENT_FAILURE. Cancel the fallback timer and go into
|
330
380
|
// fallback mode immediately.
|
331
381
|
gpr_log(GPR_INFO,
|
332
|
-
"[grpclb %p] balancer channel in state
|
382
|
+
"[grpclb %p] balancer channel in state:TRANSIENT_FAILURE (%s); "
|
333
383
|
"entering fallback mode",
|
334
|
-
parent_.get());
|
384
|
+
parent_.get(), status.ToString().c_str());
|
335
385
|
parent_->fallback_at_startup_checks_pending_ = false;
|
336
386
|
grpc_timer_cancel(&parent_->lb_fallback_timer_);
|
337
387
|
parent_->fallback_mode_ = true;
|
@@ -345,13 +395,15 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
345
395
|
RefCountedPtr<GrpcLb> parent_;
|
346
396
|
};
|
347
397
|
|
348
|
-
~GrpcLb();
|
398
|
+
~GrpcLb() override;
|
349
399
|
|
350
400
|
void ShutdownLocked() override;
|
351
401
|
|
352
402
|
// Helper functions used in UpdateLocked().
|
353
403
|
void ProcessAddressesAndChannelArgsLocked(const ServerAddressList& addresses,
|
354
404
|
const grpc_channel_args& args);
|
405
|
+
static ServerAddressList AddNullLbTokenToAddresses(
|
406
|
+
const ServerAddressList& addresses);
|
355
407
|
|
356
408
|
void CancelBalancerChannelConnectivityWatchLocked();
|
357
409
|
|
@@ -389,6 +441,8 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
389
441
|
StateWatcher* watcher_ = nullptr;
|
390
442
|
// Response generator to inject address updates into lb_channel_.
|
391
443
|
RefCountedPtr<FakeResolverResponseGenerator> response_generator_;
|
444
|
+
// Parent channelz node.
|
445
|
+
RefCountedPtr<channelz::ChannelNode> parent_channelz_node_;
|
392
446
|
|
393
447
|
// The data associated with the current LB call. It holds a ref to this LB
|
394
448
|
// policy. It's initialized every time we query for backends. It's reset to
|
@@ -473,44 +527,6 @@ std::string GrpcLb::Serverlist::AsText() const {
|
|
473
527
|
return absl::StrJoin(entries, "");
|
474
528
|
}
|
475
529
|
|
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
530
|
bool IsServerValid(const GrpcLbServer& server, size_t idx, bool log) {
|
515
531
|
if (server.drop) return false;
|
516
532
|
if (GPR_UNLIKELY(server.port >> 16 != 0)) {
|
@@ -536,6 +552,8 @@ bool IsServerValid(const GrpcLbServer& server, size_t idx, bool log) {
|
|
536
552
|
// Returns addresses extracted from the serverlist.
|
537
553
|
ServerAddressList GrpcLb::Serverlist::GetServerAddressList(
|
538
554
|
GrpcLbClientStats* client_stats) const {
|
555
|
+
RefCountedPtr<GrpcLbClientStats> stats;
|
556
|
+
if (client_stats != nullptr) stats = client_stats->Ref();
|
539
557
|
ServerAddressList addresses;
|
540
558
|
for (size_t i = 0; i < serverlist_.size(); ++i) {
|
541
559
|
const GrpcLbServer& server = serverlist_[i];
|
@@ -544,34 +562,23 @@ ServerAddressList GrpcLb::Serverlist::GetServerAddressList(
|
|
544
562
|
grpc_resolved_address addr;
|
545
563
|
ParseServer(server, &addr);
|
546
564
|
// 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 {
|
565
|
+
const size_t lb_token_length = strnlen(
|
566
|
+
server.load_balance_token, GPR_ARRAY_SIZE(server.load_balance_token));
|
567
|
+
std::string lb_token(server.load_balance_token, lb_token_length);
|
568
|
+
if (lb_token.empty()) {
|
556
569
|
gpr_log(GPR_INFO,
|
557
570
|
"Missing LB token for backend address '%s'. The empty token will "
|
558
571
|
"be used instead",
|
559
572
|
grpc_sockaddr_to_uri(&addr).c_str());
|
560
|
-
lb_token[0] = '\0';
|
561
573
|
}
|
574
|
+
// Attach attribute to address containing LB token and stats object.
|
575
|
+
std::map<const char*, std::unique_ptr<ServerAddress::AttributeInterface>>
|
576
|
+
attributes;
|
577
|
+
attributes[kGrpcLbAddressAttributeKey] =
|
578
|
+
absl::make_unique<TokenAndClientStatsAttribute>(std::move(lb_token),
|
579
|
+
stats);
|
562
580
|
// 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);
|
581
|
+
addresses.emplace_back(addr, /*args=*/nullptr, std::move(attributes));
|
575
582
|
}
|
576
583
|
return addresses;
|
577
584
|
}
|
@@ -598,7 +605,8 @@ const char* GrpcLb::Serverlist::ShouldDrop() {
|
|
598
605
|
GrpcLb::PickResult GrpcLb::Picker::Pick(PickArgs args) {
|
599
606
|
PickResult result;
|
600
607
|
// Check if we should drop the call.
|
601
|
-
const char* drop_token =
|
608
|
+
const char* drop_token =
|
609
|
+
serverlist_ == nullptr ? nullptr : serverlist_->ShouldDrop();
|
602
610
|
if (drop_token != nullptr) {
|
603
611
|
// Update client load reporting stats to indicate the number of
|
604
612
|
// dropped calls. Note that we have to do this here instead of in
|
@@ -616,15 +624,12 @@ GrpcLb::PickResult GrpcLb::Picker::Pick(PickArgs args) {
|
|
616
624
|
// If pick succeeded, add LB token to initial metadata.
|
617
625
|
if (result.type == PickResult::PICK_COMPLETE &&
|
618
626
|
result.subchannel != nullptr) {
|
627
|
+
const SubchannelWrapper* subchannel_wrapper =
|
628
|
+
static_cast<SubchannelWrapper*>(result.subchannel.get());
|
619
629
|
// Encode client stats object into metadata for use by
|
620
630
|
// 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);
|
631
|
+
GrpcLbClientStats* client_stats = subchannel_wrapper->client_stats();
|
632
|
+
if (client_stats != nullptr) {
|
628
633
|
client_stats->Ref().release(); // Ref passed via metadata.
|
629
634
|
// The metadata value is a hack: we pretend the pointer points to
|
630
635
|
// a string and rely on the client_load_reporting filter to know
|
@@ -636,15 +641,17 @@ GrpcLb::PickResult GrpcLb::Picker::Pick(PickArgs args) {
|
|
636
641
|
client_stats->AddCallStarted();
|
637
642
|
}
|
638
643
|
// Encode the LB token in metadata.
|
639
|
-
|
640
|
-
|
641
|
-
|
642
|
-
|
643
|
-
|
644
|
-
|
644
|
+
// Create a new copy on the call arena, since the subchannel list
|
645
|
+
// may get refreshed between when we return this pick and when the
|
646
|
+
// initial metadata goes out on the wire.
|
647
|
+
if (!subchannel_wrapper->lb_token().empty()) {
|
648
|
+
char* lb_token = static_cast<char*>(
|
649
|
+
args.call_state->Alloc(subchannel_wrapper->lb_token().size() + 1));
|
650
|
+
strcpy(lb_token, subchannel_wrapper->lb_token().c_str());
|
651
|
+
args.initial_metadata->Add(kGrpcLbLbTokenMetadataKey, lb_token);
|
645
652
|
}
|
646
|
-
|
647
|
-
|
653
|
+
// Unwrap subchannel to pass up to the channel.
|
654
|
+
result.subchannel = subchannel_wrapper->wrapped_subchannel();
|
648
655
|
}
|
649
656
|
return result;
|
650
657
|
}
|
@@ -654,62 +661,64 @@ GrpcLb::PickResult GrpcLb::Picker::Pick(PickArgs args) {
|
|
654
661
|
//
|
655
662
|
|
656
663
|
RefCountedPtr<SubchannelInterface> GrpcLb::Helper::CreateSubchannel(
|
657
|
-
const grpc_channel_args& args) {
|
664
|
+
ServerAddress address, const grpc_channel_args& args) {
|
658
665
|
if (parent_->shutting_down_) return nullptr;
|
659
|
-
|
666
|
+
const TokenAndClientStatsAttribute* attribute =
|
667
|
+
static_cast<const TokenAndClientStatsAttribute*>(
|
668
|
+
address.GetAttribute(kGrpcLbAddressAttributeKey));
|
669
|
+
if (attribute == nullptr) {
|
670
|
+
gpr_log(GPR_ERROR,
|
671
|
+
"[grpclb %p] no TokenAndClientStatsAttribute for address %p",
|
672
|
+
parent_.get(), address.ToString().c_str());
|
673
|
+
abort();
|
674
|
+
}
|
675
|
+
std::string lb_token = attribute->lb_token();
|
676
|
+
RefCountedPtr<GrpcLbClientStats> client_stats = attribute->client_stats();
|
677
|
+
return MakeRefCounted<SubchannelWrapper>(
|
678
|
+
parent_->channel_control_helper()->CreateSubchannel(std::move(address),
|
679
|
+
args),
|
680
|
+
std::move(lb_token), std::move(client_stats));
|
660
681
|
}
|
661
682
|
|
662
683
|
void GrpcLb::Helper::UpdateState(grpc_connectivity_state state,
|
684
|
+
const absl::Status& status,
|
663
685
|
std::unique_ptr<SubchannelPicker> picker) {
|
664
686
|
if (parent_->shutting_down_) return;
|
665
687
|
// Record whether child policy reports READY.
|
666
688
|
parent_->child_policy_ready_ = state == GRPC_CHANNEL_READY;
|
667
689
|
// Enter fallback mode if needed.
|
668
690
|
parent_->MaybeEnterFallbackModeAfterStartup();
|
669
|
-
//
|
670
|
-
//
|
671
|
-
//
|
672
|
-
//
|
673
|
-
//
|
674
|
-
//
|
675
|
-
//
|
676
|
-
//
|
677
|
-
|
678
|
-
|
679
|
-
|
680
|
-
|
681
|
-
|
682
|
-
// to process drops for picks that yield a QUEUE result; this would
|
683
|
-
// result in dropping too many calls, since we will see the
|
684
|
-
// queued picks multiple times, and we'd consider each one a
|
685
|
-
// separate call for the drop calculation.
|
686
|
-
//
|
687
|
-
// Cases 1 and 3b: return picker from the child policy as-is.
|
688
|
-
if (parent_->serverlist_ == nullptr ||
|
689
|
-
(!parent_->serverlist_->ContainsAllDropEntries() &&
|
690
|
-
state != GRPC_CHANNEL_READY)) {
|
691
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
692
|
-
gpr_log(GPR_INFO,
|
693
|
-
"[grpclb %p helper %p] state=%s passing child picker %p as-is",
|
694
|
-
parent_.get(), this, ConnectivityStateName(state), picker.get());
|
695
|
-
}
|
696
|
-
parent_->channel_control_helper()->UpdateState(state, std::move(picker));
|
697
|
-
return;
|
698
|
-
}
|
699
|
-
// Cases 2 and 3a: wrap picker from the child in our own picker.
|
700
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
701
|
-
gpr_log(GPR_INFO, "[grpclb %p helper %p] state=%s wrapping child picker %p",
|
702
|
-
parent_.get(), this, ConnectivityStateName(state), picker.get());
|
691
|
+
// We pass the serverlist to the picker so that it can handle drops.
|
692
|
+
// However, we don't want to handle drops in the case where the child
|
693
|
+
// policy is reporting a state other than READY (unless we are
|
694
|
+
// dropping *all* calls), because we don't want to process drops for picks
|
695
|
+
// that yield a QUEUE result; this would result in dropping too many calls,
|
696
|
+
// since we will see the queued picks multiple times, and we'd consider each
|
697
|
+
// one a separate call for the drop calculation. So in this case, we pass
|
698
|
+
// a null serverlist to the picker, which tells it not to do drops.
|
699
|
+
RefCountedPtr<Serverlist> serverlist;
|
700
|
+
if (state == GRPC_CHANNEL_READY ||
|
701
|
+
(parent_->serverlist_ != nullptr &&
|
702
|
+
parent_->serverlist_->ContainsAllDropEntries())) {
|
703
|
+
serverlist = parent_->serverlist_;
|
703
704
|
}
|
704
705
|
RefCountedPtr<GrpcLbClientStats> client_stats;
|
705
706
|
if (parent_->lb_calld_ != nullptr &&
|
706
707
|
parent_->lb_calld_->client_stats() != nullptr) {
|
707
708
|
client_stats = parent_->lb_calld_->client_stats()->Ref();
|
708
709
|
}
|
710
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
711
|
+
gpr_log(GPR_INFO,
|
712
|
+
"[grpclb %p helper %p] state=%s (%s) wrapping child "
|
713
|
+
"picker %p (serverlist=%p, client_stats=%p)",
|
714
|
+
parent_.get(), this, ConnectivityStateName(state),
|
715
|
+
status.ToString().c_str(), picker.get(), serverlist.get(),
|
716
|
+
client_stats.get());
|
717
|
+
}
|
709
718
|
parent_->channel_control_helper()->UpdateState(
|
710
|
-
state,
|
711
|
-
absl::make_unique<Picker>(
|
712
|
-
std::move(
|
719
|
+
state, status,
|
720
|
+
absl::make_unique<Picker>(std::move(serverlist), std::move(picker),
|
721
|
+
std::move(client_stats)));
|
713
722
|
}
|
714
723
|
|
715
724
|
void GrpcLb::Helper::RequestReresolution() {
|
@@ -736,7 +745,9 @@ void GrpcLb::Helper::AddTraceEvent(TraceSeverity severity,
|
|
736
745
|
|
737
746
|
GrpcLb::BalancerCallState::BalancerCallState(
|
738
747
|
RefCountedPtr<LoadBalancingPolicy> parent_grpclb_policy)
|
739
|
-
: InternallyRefCounted<BalancerCallState>(
|
748
|
+
: InternallyRefCounted<BalancerCallState>(
|
749
|
+
GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace) ? "BalancerCallState"
|
750
|
+
: nullptr),
|
740
751
|
grpclb_policy_(std::move(parent_grpclb_policy)) {
|
741
752
|
GPR_ASSERT(grpclb_policy_ != nullptr);
|
742
753
|
GPR_ASSERT(!grpclb_policy()->shutting_down_);
|
@@ -794,7 +805,7 @@ void GrpcLb::BalancerCallState::Orphan() {
|
|
794
805
|
// lb_on_balancer_status_received_ will complete the cancellation and clean
|
795
806
|
// up. Otherwise, we are here because grpclb_policy has to orphan a failed
|
796
807
|
// call, then the following cancellation will be a no-op.
|
797
|
-
|
808
|
+
grpc_call_cancel_internal(lb_call_);
|
798
809
|
if (client_load_report_timer_callback_pending_) {
|
799
810
|
grpc_timer_cancel(&client_load_report_timer_);
|
800
811
|
}
|
@@ -930,7 +941,7 @@ void GrpcLb::BalancerCallState::SendClientLoadReportLocked() {
|
|
930
941
|
if (num_calls_started == 0 && num_calls_finished == 0 &&
|
931
942
|
num_calls_finished_with_client_failed_to_send == 0 &&
|
932
943
|
num_calls_finished_known_received == 0 &&
|
933
|
-
(drop_token_counts == nullptr || drop_token_counts->
|
944
|
+
(drop_token_counts == nullptr || drop_token_counts->empty())) {
|
934
945
|
if (last_client_load_report_counters_were_zero_) {
|
935
946
|
ScheduleNextClientLoadReportLocked();
|
936
947
|
return;
|
@@ -1280,25 +1291,18 @@ grpc_channel_args* BuildBalancerChannelArgs(
|
|
1280
1291
|
GRPC_ARG_CHANNELZ_CHANNEL_NODE,
|
1281
1292
|
};
|
1282
1293
|
// Channel args to add.
|
1283
|
-
absl::InlinedVector<grpc_arg, 3> args_to_add
|
1284
|
-
|
1285
|
-
|
1286
|
-
args_to_add.emplace_back(
|
1294
|
+
absl::InlinedVector<grpc_arg, 3> args_to_add = {
|
1295
|
+
// The fake resolver response generator, which we use to inject
|
1296
|
+
// address updates into the LB channel.
|
1287
1297
|
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
|
-
}
|
1298
|
+
response_generator),
|
1299
|
+
// A channel arg indicating the target is a grpclb load balancer.
|
1300
|
+
grpc_channel_arg_integer_create(
|
1301
|
+
const_cast<char*>(GRPC_ARG_ADDRESS_IS_GRPCLB_LOAD_BALANCER), 1),
|
1302
|
+
// Tells channelz that this is an internal channel.
|
1303
|
+
grpc_channel_arg_integer_create(
|
1304
|
+
const_cast<char*>(GRPC_ARG_CHANNELZ_IS_INTERNAL_CHANNEL), 1),
|
1305
|
+
};
|
1302
1306
|
// Construct channel args.
|
1303
1307
|
grpc_channel_args* new_args = grpc_channel_args_copy_and_add_and_remove(
|
1304
1308
|
args, args_to_remove, GPR_ARRAY_SIZE(args_to_remove), args_to_add.data(),
|
@@ -1375,6 +1379,12 @@ void GrpcLb::ShutdownLocked() {
|
|
1375
1379
|
// OnBalancerChannelConnectivityChangedLocked(), and we need to be
|
1376
1380
|
// alive when that callback is invoked.
|
1377
1381
|
if (lb_channel_ != nullptr) {
|
1382
|
+
if (parent_channelz_node_ != nullptr) {
|
1383
|
+
channelz::ChannelNode* child_channelz_node =
|
1384
|
+
grpc_channel_get_channelz_node(lb_channel_);
|
1385
|
+
GPR_ASSERT(child_channelz_node != nullptr);
|
1386
|
+
parent_channelz_node_->RemoveChildChannel(child_channelz_node->uuid());
|
1387
|
+
}
|
1378
1388
|
grpc_channel_destroy(lb_channel_);
|
1379
1389
|
lb_channel_ = nullptr;
|
1380
1390
|
}
|
@@ -1428,17 +1438,13 @@ void GrpcLb::UpdateLocked(UpdateArgs args) {
|
|
1428
1438
|
// helpers for UpdateLocked()
|
1429
1439
|
//
|
1430
1440
|
|
1431
|
-
ServerAddressList AddNullLbTokenToAddresses(
|
1441
|
+
ServerAddressList GrpcLb::AddNullLbTokenToAddresses(
|
1432
1442
|
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
1443
|
ServerAddressList addresses_out;
|
1438
|
-
for (
|
1439
|
-
addresses_out.emplace_back(
|
1440
|
-
|
1441
|
-
|
1444
|
+
for (const ServerAddress& address : addresses) {
|
1445
|
+
addresses_out.emplace_back(address.WithAttribute(
|
1446
|
+
kGrpcLbAddressAttributeKey,
|
1447
|
+
absl::make_unique<TokenAndClientStatsAttribute>("", nullptr)));
|
1442
1448
|
}
|
1443
1449
|
return addresses_out;
|
1444
1450
|
}
|
@@ -1465,6 +1471,16 @@ void GrpcLb::ProcessAddressesAndChannelArgsLocked(
|
|
1465
1471
|
lb_channel_ =
|
1466
1472
|
CreateGrpclbBalancerChannel(uri_str.c_str(), *lb_channel_args);
|
1467
1473
|
GPR_ASSERT(lb_channel_ != nullptr);
|
1474
|
+
// Set up channelz linkage.
|
1475
|
+
channelz::ChannelNode* child_channelz_node =
|
1476
|
+
grpc_channel_get_channelz_node(lb_channel_);
|
1477
|
+
channelz::ChannelNode* parent_channelz_node =
|
1478
|
+
grpc_channel_args_find_pointer<channelz::ChannelNode>(
|
1479
|
+
&args, GRPC_ARG_CHANNELZ_CHANNEL_NODE);
|
1480
|
+
if (child_channelz_node != nullptr && parent_channelz_node != nullptr) {
|
1481
|
+
parent_channelz_node->AddChildChannel(child_channelz_node->uuid());
|
1482
|
+
parent_channelz_node_ = parent_channelz_node->Ref();
|
1483
|
+
}
|
1468
1484
|
}
|
1469
1485
|
// Propagate updates to the LB channel (pick_first) through the fake
|
1470
1486
|
// resolver.
|