grpc 1.33.0.pre1 → 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 +342 -134
- data/include/grpc/grpc.h +1 -2
- data/include/grpc/grpc_security.h +149 -172
- data/include/grpc/impl/codegen/grpc_types.h +9 -2
- data/include/grpc/impl/codegen/port_platform.h +22 -55
- data/src/core/ext/filters/client_channel/client_channel.cc +11 -34
- data/src/core/ext/filters/client_channel/config_selector.h +2 -3
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +4 -1
- 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 +1 -1
- data/src/core/ext/filters/client_channel/lb_policy.cc +5 -1
- data/src/core/ext/filters/client_channel/lb_policy.h +3 -3
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +1 -1
- 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 +80 -71
- 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 +2 -2
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +47 -17
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +2 -2
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +8 -5
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +3 -3
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/xds/eds.cc +16 -243
- 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 +20 -25
- 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 +1 -1
- 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/native/dns_resolver.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +1 -1
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +20 -0
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +66 -7
- data/src/core/ext/filters/client_channel/resolver_registry.cc +4 -4
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +13 -25
- data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +1 -1
- data/src/core/ext/filters/client_channel/resolving_lb_policy.h +2 -2
- data/src/core/ext/filters/client_channel/retry_throttle.h +1 -1
- data/src/core/ext/filters/client_channel/server_address.h +0 -4
- data/src/core/ext/filters/client_channel/service_config.cc +3 -1
- data/src/core/ext/filters/client_channel/service_config.h +1 -1
- data/src/core/ext/filters/client_channel/subchannel.cc +18 -15
- data/src/core/ext/filters/client_channel/subchannel.h +2 -2
- data/src/core/ext/filters/client_channel/subchannel_interface.h +7 -15
- 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 +1 -1
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +1 -1
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +17 -3
- data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +7 -7
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +4 -24
- data/src/core/ext/transport/chttp2/transport/flow_control.h +2 -2
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +2 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +12 -8
- data/src/core/ext/transport/chttp2/transport/internal.h +0 -1
- data/src/core/ext/transport/chttp2/transport/parsing.cc +2 -1
- data/src/core/ext/transport/chttp2/transport/writing.cc +1 -2
- 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/upbdefs-generated/envoy/type/v3/http.upbdefs.h +30 -0
- 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 +7 -5
- data/src/core/ext/xds/certificate_provider_store.cc +84 -0
- data/src/core/ext/xds/certificate_provider_store.h +65 -8
- 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 +28 -140
- data/src/core/ext/xds/google_mesh_ca_certificate_provider_factory.h +6 -4
- data/src/core/ext/xds/xds_api.cc +241 -718
- data/src/core/ext/xds/xds_api.h +50 -9
- data/src/core/ext/xds/xds_bootstrap.cc +172 -25
- data/src/core/ext/xds/xds_bootstrap.h +23 -7
- 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/xds/xds_client.cc +161 -128
- data/src/core/ext/xds/xds_client.h +12 -11
- data/src/core/ext/xds/xds_client_stats.cc +41 -4
- data/src/core/ext/xds/xds_client_stats.h +2 -2
- data/src/core/lib/channel/channel_args.cc +2 -1
- data/src/core/lib/channel/channel_trace.cc +4 -2
- data/src/core/lib/channel/channelz.h +2 -2
- 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/time_precise.cc +3 -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 +44 -49
- 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 +40 -46
- data/src/core/lib/gprpp/ref_counted_ptr.h +9 -11
- data/src/core/lib/{security/authorization/mock_cel/statusor.h → gprpp/stat.h} +13 -25
- 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/error.cc +2 -1
- data/src/core/lib/iomgr/ev_epollex_linux.cc +8 -4
- data/src/core/lib/iomgr/exec_ctx.cc +1 -1
- 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/parse_address.cc +84 -6
- data/src/core/lib/iomgr/parse_address.h +20 -0
- 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/tcp_posix.cc +3 -2
- 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.h +167 -0
- data/src/core/lib/json/json_writer.cc +2 -1
- data/src/core/lib/security/authorization/mock_cel/cel_expr_builder_factory.h +3 -1
- data/src/core/lib/security/authorization/mock_cel/cel_expression.h +5 -4
- data/src/core/lib/security/authorization/mock_cel/cel_value.h +4 -0
- data/src/core/lib/security/authorization/mock_cel/evaluator_core.h +6 -6
- data/src/core/lib/security/authorization/mock_cel/flat_expr_builder.h +10 -9
- 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/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 +35 -5
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +12 -8
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +78 -0
- data/src/core/lib/security/{certificate_provider.h → credentials/tls/grpc_tls_certificate_provider.h} +32 -18
- 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/security_connector/fake/fake_security_connector.cc +2 -2
- 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 +4 -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/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 +9 -8
- data/src/core/lib/surface/completion_queue.cc +7 -6
- data/src/core/lib/surface/server.cc +4 -2
- data/src/core/lib/surface/server.h +2 -2
- 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.h +2 -0
- data/src/core/lib/transport/bdp_estimator.cc +1 -1
- data/src/core/lib/transport/byte_stream.h +3 -3
- data/src/core/lib/transport/connectivity_state.h +3 -3
- data/src/core/lib/transport/metadata.h +2 -2
- 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 +1 -1
- data/src/core/plugin_registry/grpc_plugin_registry.cc +4 -4
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +4 -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 +14 -7
- data/src/core/tsi/ssl_transport_security.h +3 -0
- data/src/core/tsi/transport_security.cc +4 -2
- data/src/ruby/ext/grpc/extconf.rb +1 -1
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +22 -14
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +36 -24
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/third_party/abseil-cpp/absl/algorithm/container.h +59 -22
- 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 +5 -0
- data/third_party/abseil-cpp/absl/base/internal/dynamic_annotations.h +398 -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 +1 -1
- 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 +42 -25
- data/third_party/abseil-cpp/absl/container/flat_hash_set.h +2 -1
- data/third_party/abseil-cpp/absl/container/inlined_vector.h +33 -36
- data/third_party/abseil-cpp/absl/container/internal/common.h +6 -2
- data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +33 -8
- data/third_party/abseil-cpp/absl/container/internal/container_memory.h +49 -29
- data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +15 -0
- data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +24 -7
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +2 -1
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +35 -11
- data/third_party/abseil-cpp/absl/container/internal/have_sse.h +10 -9
- data/third_party/abseil-cpp/absl/container/internal/layout.h +7 -5
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +55 -34
- data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc +5 -4
- data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +66 -16
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +4 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +13 -4
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +43 -24
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +12 -3
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_win32-inl.inc +10 -2
- data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +22 -1
- data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +0 -21
- data/third_party/abseil-cpp/absl/debugging/symbolize.cc +12 -1
- data/third_party/abseil-cpp/absl/debugging/symbolize_darwin.inc +101 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +100 -20
- data/third_party/abseil-cpp/absl/functional/bind_front.h +184 -0
- data/third_party/abseil-cpp/absl/functional/function_ref.h +1 -1
- data/third_party/abseil-cpp/absl/functional/internal/front_binder.h +95 -0
- data/third_party/abseil-cpp/absl/functional/internal/function_ref.h +2 -2
- data/third_party/abseil-cpp/absl/hash/hash.h +6 -5
- data/third_party/abseil-cpp/absl/hash/internal/hash.h +73 -65
- 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 +4 -6
- data/third_party/abseil-cpp/absl/status/status.h +502 -113
- data/third_party/abseil-cpp/absl/status/status_payload_printer.cc +5 -10
- data/third_party/abseil-cpp/absl/strings/charconv.cc +2 -2
- data/third_party/abseil-cpp/absl/strings/cord.cc +91 -112
- data/third_party/abseil-cpp/absl/strings/cord.h +360 -205
- 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 +45 -23
- 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/internal/create_thread_identity.cc +3 -3
- data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +3 -3
- data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +28 -28
- data/third_party/abseil-cpp/absl/synchronization/internal/mutex_nonprod.inc +4 -16
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +1 -1
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +8 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +2 -2
- data/third_party/abseil-cpp/absl/synchronization/mutex.cc +75 -64
- data/third_party/abseil-cpp/absl/synchronization/mutex.h +15 -6
- 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/internal/variant.h +4 -4
- 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/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 +340 -336
- data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +173 -35
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +46 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +8 -2
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +90 -63
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +60 -60
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +179 -47
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c +766 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +10 -0
- 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_prn.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 +7 -5
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +5 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +4 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/des.h +6 -0
- 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 +55 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +4 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +31 -23
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +435 -394
- 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/internal.h +36 -1
- data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +42 -1
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +67 -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 +216 -11
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +53 -11
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +133 -39
- 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/reflection.c +391 -0
- data/third_party/upb/upb/reflection.h +168 -0
- data/third_party/upb/upb/text_encode.c +398 -0
- data/third_party/upb/upb/text_encode.h +35 -0
- metadata +227 -37
- data/src/core/ext/filters/client_channel/lb_policy/xds/eds_drop.cc +0 -571
- data/third_party/abseil-cpp/absl/base/dynamic_annotations.cc +0 -129
@@ -209,7 +209,7 @@ class ChannelData {
|
|
209
209
|
grpc_closure* on_complete,
|
210
210
|
grpc_closure* watcher_timer_init);
|
211
211
|
|
212
|
-
~ExternalConnectivityWatcher();
|
212
|
+
~ExternalConnectivityWatcher() override;
|
213
213
|
|
214
214
|
// Removes the watcher from the external_watchers_ map.
|
215
215
|
static void RemoveWatcherFromExternalWatchersMap(ChannelData* chand,
|
@@ -882,9 +882,6 @@ class CallData {
|
|
882
882
|
// ChannelData::SubchannelWrapper
|
883
883
|
//
|
884
884
|
|
885
|
-
using ServerAddressAttributeMap =
|
886
|
-
std::map<const char*, std::unique_ptr<ServerAddress::AttributeInterface>>;
|
887
|
-
|
888
885
|
// This class is a wrapper for Subchannel that hides details of the
|
889
886
|
// channel's implementation (such as the health check service name and
|
890
887
|
// connected subchannel) from the LB policy API.
|
@@ -896,13 +893,14 @@ using ServerAddressAttributeMap =
|
|
896
893
|
class ChannelData::SubchannelWrapper : public SubchannelInterface {
|
897
894
|
public:
|
898
895
|
SubchannelWrapper(ChannelData* chand, Subchannel* subchannel,
|
899
|
-
grpc_core::UniquePtr<char> health_check_service_name
|
900
|
-
|
901
|
-
|
896
|
+
grpc_core::UniquePtr<char> health_check_service_name)
|
897
|
+
: SubchannelInterface(
|
898
|
+
GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)
|
899
|
+
? "SubchannelWrapper"
|
900
|
+
: nullptr),
|
902
901
|
chand_(chand),
|
903
902
|
subchannel_(subchannel),
|
904
|
-
health_check_service_name_(std::move(health_check_service_name))
|
905
|
-
attributes_(std::move(attributes)) {
|
903
|
+
health_check_service_name_(std::move(health_check_service_name)) {
|
906
904
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
|
907
905
|
gpr_log(GPR_INFO,
|
908
906
|
"chand=%p: creating subchannel wrapper %p for subchannel %p",
|
@@ -921,7 +919,7 @@ class ChannelData::SubchannelWrapper : public SubchannelInterface {
|
|
921
919
|
chand_->subchannel_wrappers_.insert(this);
|
922
920
|
}
|
923
921
|
|
924
|
-
~SubchannelWrapper() {
|
922
|
+
~SubchannelWrapper() override {
|
925
923
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
|
926
924
|
gpr_log(GPR_INFO,
|
927
925
|
"chand=%p: destroying subchannel wrapper %p for subchannel %p",
|
@@ -984,13 +982,6 @@ class ChannelData::SubchannelWrapper : public SubchannelInterface {
|
|
984
982
|
return subchannel_->channel_args();
|
985
983
|
}
|
986
984
|
|
987
|
-
const ServerAddress::AttributeInterface* GetAttribute(
|
988
|
-
const char* key) const override {
|
989
|
-
auto it = attributes_.find(key);
|
990
|
-
if (it == attributes_.end()) return nullptr;
|
991
|
-
return it->second.get();
|
992
|
-
}
|
993
|
-
|
994
985
|
void ThrottleKeepaliveTime(int new_keepalive_time) {
|
995
986
|
subchannel_->ThrottleKeepaliveTime(new_keepalive_time);
|
996
987
|
}
|
@@ -1071,7 +1062,7 @@ class ChannelData::SubchannelWrapper : public SubchannelInterface {
|
|
1071
1062
|
parent_(std::move(parent)),
|
1072
1063
|
last_seen_state_(initial_state) {}
|
1073
1064
|
|
1074
|
-
~WatcherWrapper() {
|
1065
|
+
~WatcherWrapper() override {
|
1075
1066
|
auto* parent = parent_.release(); // ref owned by lambda
|
1076
1067
|
parent->chand_->work_serializer_->Run(
|
1077
1068
|
[parent]() { parent->Unref(DEBUG_LOCATION, "WatcherWrapper"); },
|
@@ -1188,7 +1179,6 @@ class ChannelData::SubchannelWrapper : public SubchannelInterface {
|
|
1188
1179
|
ChannelData* chand_;
|
1189
1180
|
Subchannel* subchannel_;
|
1190
1181
|
grpc_core::UniquePtr<char> health_check_service_name_;
|
1191
|
-
ServerAddressAttributeMap attributes_;
|
1192
1182
|
// Maps from the address of the watcher passed to us by the LB policy
|
1193
1183
|
// to the address of the WrapperWatcher that we passed to the underlying
|
1194
1184
|
// subchannel. This is needed so that when the LB policy calls
|
@@ -1363,18 +1353,6 @@ class ChannelData::ConnectivityWatcherRemover {
|
|
1363
1353
|
// ChannelData::ClientChannelControlHelper
|
1364
1354
|
//
|
1365
1355
|
|
1366
|
-
} // namespace
|
1367
|
-
|
1368
|
-
// Allows accessing the attributes from a ServerAddress.
|
1369
|
-
class ChannelServerAddressPeer {
|
1370
|
-
public:
|
1371
|
-
static ServerAddressAttributeMap GetAttributes(ServerAddress* address) {
|
1372
|
-
return std::move(address->attributes_);
|
1373
|
-
}
|
1374
|
-
};
|
1375
|
-
|
1376
|
-
namespace {
|
1377
|
-
|
1378
1356
|
class ChannelData::ClientChannelControlHelper
|
1379
1357
|
: public LoadBalancingPolicy::ChannelControlHelper {
|
1380
1358
|
public:
|
@@ -1426,8 +1404,7 @@ class ChannelData::ClientChannelControlHelper
|
|
1426
1404
|
subchannel->ThrottleKeepaliveTime(chand_->keepalive_time_);
|
1427
1405
|
// Create and return wrapper for the subchannel.
|
1428
1406
|
return MakeRefCounted<SubchannelWrapper>(
|
1429
|
-
chand_, subchannel, std::move(health_check_service_name)
|
1430
|
-
ChannelServerAddressPeer::GetAttributes(&address));
|
1407
|
+
chand_, subchannel, std::move(health_check_service_name));
|
1431
1408
|
}
|
1432
1409
|
|
1433
1410
|
void UpdateState(
|
@@ -2164,7 +2141,7 @@ void ChannelData::RemoveConnectivityWatcher(
|
|
2164
2141
|
|
2165
2142
|
CallData::CallData(grpc_call_element* elem, const ChannelData& chand,
|
2166
2143
|
const grpc_call_element_args& args)
|
2167
|
-
: deadline_state_(elem, args
|
2144
|
+
: deadline_state_(elem, args,
|
2168
2145
|
GPR_LIKELY(chand.deadline_checking_enabled())
|
2169
2146
|
? args.deadline
|
2170
2147
|
: GRPC_MILLIS_INF_FUTURE),
|
@@ -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"
|
@@ -66,7 +65,7 @@ class ConfigSelector : public RefCounted<ConfigSelector> {
|
|
66
65
|
std::function<void()> on_call_committed;
|
67
66
|
};
|
68
67
|
|
69
|
-
|
68
|
+
~ConfigSelector() override = default;
|
70
69
|
|
71
70
|
virtual const char* name() const = 0;
|
72
71
|
|
@@ -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),
|
@@ -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);
|
@@ -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)) {}
|
@@ -301,7 +301,7 @@ class LoadBalancingPolicy : public InternallyRefCounted<LoadBalancingPolicy> {
|
|
301
301
|
/// return the parameters they need.
|
302
302
|
class Config : public RefCounted<Config> {
|
303
303
|
public:
|
304
|
-
|
304
|
+
~Config() override = default;
|
305
305
|
|
306
306
|
// Returns the load balancing policy name
|
307
307
|
virtual const char* name() const = 0;
|
@@ -341,7 +341,7 @@ class LoadBalancingPolicy : public InternallyRefCounted<LoadBalancingPolicy> {
|
|
341
341
|
};
|
342
342
|
|
343
343
|
explicit LoadBalancingPolicy(Args args, intptr_t initial_refcount = 1);
|
344
|
-
|
344
|
+
~LoadBalancingPolicy() override;
|
345
345
|
|
346
346
|
// Not copyable nor movable.
|
347
347
|
LoadBalancingPolicy(const LoadBalancingPolicy&) = delete;
|
@@ -376,7 +376,7 @@ class LoadBalancingPolicy : public InternallyRefCounted<LoadBalancingPolicy> {
|
|
376
376
|
explicit QueuePicker(RefCountedPtr<LoadBalancingPolicy> parent)
|
377
377
|
: parent_(std::move(parent)) {}
|
378
378
|
|
379
|
-
~QueuePicker() { parent_.reset(DEBUG_LOCATION, "QueuePicker"); }
|
379
|
+
~QueuePicker() override { parent_.reset(DEBUG_LOCATION, "QueuePicker"); }
|
380
380
|
|
381
381
|
PickResult Pick(PickArgs args) override;
|
382
382
|
|
@@ -36,7 +36,7 @@ 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
42
|
ServerAddress address, const grpc_channel_args& args) 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;
|
@@ -164,7 +164,7 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
164
164
|
public:
|
165
165
|
explicit BalancerCallState(
|
166
166
|
RefCountedPtr<LoadBalancingPolicy> parent_grpclb_policy);
|
167
|
-
~BalancerCallState();
|
167
|
+
~BalancerCallState() override;
|
168
168
|
|
169
169
|
// It's the caller's responsibility to ensure that Orphan() is called from
|
170
170
|
// inside the combiner.
|
@@ -235,6 +235,23 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
235
235
|
grpc_closure client_load_report_closure_;
|
236
236
|
};
|
237
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
|
+
|
238
255
|
class TokenAndClientStatsAttribute
|
239
256
|
: public ServerAddress::AttributeInterface {
|
240
257
|
public:
|
@@ -262,7 +279,9 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
262
279
|
}
|
263
280
|
|
264
281
|
const std::string& lb_token() const { return lb_token_; }
|
265
|
-
GrpcLbClientStats
|
282
|
+
RefCountedPtr<GrpcLbClientStats> client_stats() const {
|
283
|
+
return client_stats_;
|
284
|
+
}
|
266
285
|
|
267
286
|
private:
|
268
287
|
std::string lb_token_;
|
@@ -310,21 +329,16 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
310
329
|
|
311
330
|
class Picker : public SubchannelPicker {
|
312
331
|
public:
|
313
|
-
Picker(
|
332
|
+
Picker(RefCountedPtr<Serverlist> serverlist,
|
314
333
|
std::unique_ptr<SubchannelPicker> child_picker,
|
315
334
|
RefCountedPtr<GrpcLbClientStats> client_stats)
|
316
|
-
:
|
317
|
-
serverlist_(std::move(serverlist)),
|
335
|
+
: serverlist_(std::move(serverlist)),
|
318
336
|
child_picker_(std::move(child_picker)),
|
319
337
|
client_stats_(std::move(client_stats)) {}
|
320
338
|
|
321
339
|
PickResult Pick(PickArgs args) override;
|
322
340
|
|
323
341
|
private:
|
324
|
-
// Storing the address for logging, but not holding a ref.
|
325
|
-
// DO NOT DEFERENCE!
|
326
|
-
GrpcLb* parent_;
|
327
|
-
|
328
342
|
// Serverlist to be used for determining drops.
|
329
343
|
RefCountedPtr<Serverlist> serverlist_;
|
330
344
|
|
@@ -355,7 +369,7 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
355
369
|
: AsyncConnectivityStateWatcherInterface(parent->work_serializer()),
|
356
370
|
parent_(std::move(parent)) {}
|
357
371
|
|
358
|
-
~StateWatcher() { parent_.reset(DEBUG_LOCATION, "StateWatcher"); }
|
372
|
+
~StateWatcher() override { parent_.reset(DEBUG_LOCATION, "StateWatcher"); }
|
359
373
|
|
360
374
|
private:
|
361
375
|
void OnConnectivityStateChange(grpc_connectivity_state new_state,
|
@@ -381,7 +395,7 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
381
395
|
RefCountedPtr<GrpcLb> parent_;
|
382
396
|
};
|
383
397
|
|
384
|
-
~GrpcLb();
|
398
|
+
~GrpcLb() override;
|
385
399
|
|
386
400
|
void ShutdownLocked() override;
|
387
401
|
|
@@ -591,7 +605,8 @@ const char* GrpcLb::Serverlist::ShouldDrop() {
|
|
591
605
|
GrpcLb::PickResult GrpcLb::Picker::Pick(PickArgs args) {
|
592
606
|
PickResult result;
|
593
607
|
// Check if we should drop the call.
|
594
|
-
const char* drop_token =
|
608
|
+
const char* drop_token =
|
609
|
+
serverlist_ == nullptr ? nullptr : serverlist_->ShouldDrop();
|
595
610
|
if (drop_token != nullptr) {
|
596
611
|
// Update client load reporting stats to indicate the number of
|
597
612
|
// dropped calls. Note that we have to do this here instead of in
|
@@ -609,17 +624,11 @@ GrpcLb::PickResult GrpcLb::Picker::Pick(PickArgs args) {
|
|
609
624
|
// If pick succeeded, add LB token to initial metadata.
|
610
625
|
if (result.type == PickResult::PICK_COMPLETE &&
|
611
626
|
result.subchannel != nullptr) {
|
612
|
-
const
|
613
|
-
static_cast<
|
614
|
-
result.subchannel->GetAttribute(kGrpcLbAddressAttributeKey));
|
615
|
-
if (attribute == nullptr) {
|
616
|
-
gpr_log(GPR_ERROR, "[grpclb %p picker %p] No LB token for subchannel %p",
|
617
|
-
parent_, this, result.subchannel.get());
|
618
|
-
abort();
|
619
|
-
}
|
627
|
+
const SubchannelWrapper* subchannel_wrapper =
|
628
|
+
static_cast<SubchannelWrapper*>(result.subchannel.get());
|
620
629
|
// Encode client stats object into metadata for use by
|
621
630
|
// client_load_reporting filter.
|
622
|
-
GrpcLbClientStats* client_stats =
|
631
|
+
GrpcLbClientStats* client_stats = subchannel_wrapper->client_stats();
|
623
632
|
if (client_stats != nullptr) {
|
624
633
|
client_stats->Ref().release(); // Ref passed via metadata.
|
625
634
|
// The metadata value is a hack: we pretend the pointer points to
|
@@ -635,10 +644,14 @@ GrpcLb::PickResult GrpcLb::Picker::Pick(PickArgs args) {
|
|
635
644
|
// Create a new copy on the call arena, since the subchannel list
|
636
645
|
// may get refreshed between when we return this pick and when the
|
637
646
|
// initial metadata goes out on the wire.
|
638
|
-
|
639
|
-
|
640
|
-
|
641
|
-
|
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);
|
652
|
+
}
|
653
|
+
// Unwrap subchannel to pass up to the channel.
|
654
|
+
result.subchannel = subchannel_wrapper->wrapped_subchannel();
|
642
655
|
}
|
643
656
|
return result;
|
644
657
|
}
|
@@ -650,8 +663,21 @@ GrpcLb::PickResult GrpcLb::Picker::Pick(PickArgs args) {
|
|
650
663
|
RefCountedPtr<SubchannelInterface> GrpcLb::Helper::CreateSubchannel(
|
651
664
|
ServerAddress address, const grpc_channel_args& args) {
|
652
665
|
if (parent_->shutting_down_) return nullptr;
|
653
|
-
|
654
|
-
|
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));
|
655
681
|
}
|
656
682
|
|
657
683
|
void GrpcLb::Helper::UpdateState(grpc_connectivity_state state,
|
@@ -662,56 +688,37 @@ void GrpcLb::Helper::UpdateState(grpc_connectivity_state state,
|
|
662
688
|
parent_->child_policy_ready_ = state == GRPC_CHANNEL_READY;
|
663
689
|
// Enter fallback mode if needed.
|
664
690
|
parent_->MaybeEnterFallbackModeAfterStartup();
|
665
|
-
//
|
666
|
-
//
|
667
|
-
//
|
668
|
-
//
|
669
|
-
//
|
670
|
-
//
|
671
|
-
//
|
672
|
-
//
|
673
|
-
|
674
|
-
|
675
|
-
|
676
|
-
|
677
|
-
|
678
|
-
// to process drops for picks that yield a QUEUE result; this would
|
679
|
-
// result in dropping too many calls, since we will see the
|
680
|
-
// queued picks multiple times, and we'd consider each one a
|
681
|
-
// separate call for the drop calculation.
|
682
|
-
//
|
683
|
-
// Cases 1 and 3b: return picker from the child policy as-is.
|
684
|
-
if (parent_->serverlist_ == nullptr ||
|
685
|
-
(!parent_->serverlist_->ContainsAllDropEntries() &&
|
686
|
-
state != GRPC_CHANNEL_READY)) {
|
687
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
688
|
-
gpr_log(GPR_INFO,
|
689
|
-
"[grpclb %p helper %p] state=%s (%s) passing "
|
690
|
-
"child picker %p as-is",
|
691
|
-
parent_.get(), this, ConnectivityStateName(state),
|
692
|
-
status.ToString().c_str(), picker.get());
|
693
|
-
}
|
694
|
-
parent_->channel_control_helper()->UpdateState(state, status,
|
695
|
-
std::move(picker));
|
696
|
-
return;
|
697
|
-
}
|
698
|
-
// Cases 2 and 3a: wrap picker from the child in our own picker.
|
699
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
700
|
-
gpr_log(GPR_INFO,
|
701
|
-
"[grpclb %p helper %p] state=%s (%s) wrapping child "
|
702
|
-
"picker %p",
|
703
|
-
parent_.get(), this, ConnectivityStateName(state),
|
704
|
-
status.ToString().c_str(), picker.get());
|
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_;
|
705
704
|
}
|
706
705
|
RefCountedPtr<GrpcLbClientStats> client_stats;
|
707
706
|
if (parent_->lb_calld_ != nullptr &&
|
708
707
|
parent_->lb_calld_->client_stats() != nullptr) {
|
709
708
|
client_stats = parent_->lb_calld_->client_stats()->Ref();
|
710
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
|
+
}
|
711
718
|
parent_->channel_control_helper()->UpdateState(
|
712
719
|
state, status,
|
713
|
-
absl::make_unique<Picker>(
|
714
|
-
std::move(
|
720
|
+
absl::make_unique<Picker>(std::move(serverlist), std::move(picker),
|
721
|
+
std::move(client_stats)));
|
715
722
|
}
|
716
723
|
|
717
724
|
void GrpcLb::Helper::RequestReresolution() {
|
@@ -738,7 +745,9 @@ void GrpcLb::Helper::AddTraceEvent(TraceSeverity severity,
|
|
738
745
|
|
739
746
|
GrpcLb::BalancerCallState::BalancerCallState(
|
740
747
|
RefCountedPtr<LoadBalancingPolicy> parent_grpclb_policy)
|
741
|
-
: InternallyRefCounted<BalancerCallState>(
|
748
|
+
: InternallyRefCounted<BalancerCallState>(
|
749
|
+
GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace) ? "BalancerCallState"
|
750
|
+
: nullptr),
|
742
751
|
grpclb_policy_(std::move(parent_grpclb_policy)) {
|
743
752
|
GPR_ASSERT(grpclb_policy_ != nullptr);
|
744
753
|
GPR_ASSERT(!grpclb_policy()->shutting_down_);
|
@@ -932,7 +941,7 @@ void GrpcLb::BalancerCallState::SendClientLoadReportLocked() {
|
|
932
941
|
if (num_calls_started == 0 && num_calls_finished == 0 &&
|
933
942
|
num_calls_finished_with_client_failed_to_send == 0 &&
|
934
943
|
num_calls_finished_known_received == 0 &&
|
935
|
-
(drop_token_counts == nullptr || drop_token_counts->
|
944
|
+
(drop_token_counts == nullptr || drop_token_counts->empty())) {
|
936
945
|
if (last_client_load_report_counters_were_zero_) {
|
937
946
|
ScheduleNextClientLoadReportLocked();
|
938
947
|
return;
|