grpc 1.32.0 → 1.36.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 +1086 -3054
- data/etc/roots.pem +257 -573
- data/include/grpc/compression.h +1 -1
- data/include/grpc/grpc.h +15 -7
- data/include/grpc/grpc_security.h +227 -171
- data/include/grpc/impl/codegen/atm_windows.h +4 -0
- data/include/grpc/impl/codegen/byte_buffer.h +1 -1
- data/include/grpc/impl/codegen/grpc_types.h +10 -8
- data/include/grpc/impl/codegen/log.h +0 -2
- data/include/grpc/impl/codegen/port_platform.h +22 -55
- data/include/grpc/impl/codegen/sync_windows.h +4 -0
- data/include/grpc/slice_buffer.h +3 -3
- data/include/grpc/support/sync.h +3 -3
- data/include/grpc/support/time.h +7 -7
- data/src/core/ext/filters/client_channel/backend_metric.cc +2 -4
- data/src/core/ext/filters/client_channel/client_channel.cc +2788 -1535
- data/src/core/ext/filters/client_channel/client_channel.h +0 -6
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +1 -1
- data/src/core/ext/filters/client_channel/config_selector.cc +0 -4
- data/src/core/ext/filters/client_channel/config_selector.h +40 -8
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +186 -0
- data/src/core/ext/filters/client_channel/dynamic_filters.h +99 -0
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +10 -7
- data/src/core/ext/filters/client_channel/health/health_check_client.h +4 -4
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +7 -8
- data/src/core/ext/filters/client_channel/http_proxy.cc +21 -20
- data/src/core/ext/filters/client_channel/lb_policy.cc +6 -2
- data/src/core/ext/filters/client_channel/lb_policy.h +6 -7
- 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 +4 -3
- 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 +204 -195
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +1 -2
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +1 -2
- 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/grpclb/load_balancer_api.cc +3 -3
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +5 -5
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +58 -26
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +5 -5
- 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 +6 -6
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +478 -145
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +52 -24
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h +29 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +810 -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/xds/xds_cluster_resolver.cc +1384 -0
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +8 -1
- data/src/core/ext/filters/client_channel/resolver.cc +4 -5
- data/src/core/ext/filters/client_channel/resolver.h +5 -13
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +43 -59
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +1 -32
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +3 -3
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +443 -17
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +5 -0
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +22 -23
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +21 -18
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +1 -1
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +362 -0
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +37 -30
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +566 -366
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +28 -0
- data/src/core/ext/filters/client_channel/resolver_factory.h +6 -6
- data/src/core/ext/filters/client_channel/resolver_registry.cc +40 -39
- data/src/core/ext/filters/client_channel/resolver_registry.h +2 -2
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +29 -74
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +12 -10
- data/src/core/ext/filters/client_channel/retry_throttle.cc +5 -3
- data/src/core/ext/filters/client_channel/retry_throttle.h +4 -2
- data/src/core/ext/filters/client_channel/server_address.cc +86 -0
- data/src/core/ext/filters/client_channel/server_address.h +52 -36
- 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_call_data.h +19 -1
- 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 +53 -66
- data/src/core/ext/filters/client_channel/subchannel.h +14 -20
- 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 +87 -79
- 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/client_authority_filter.cc +6 -6
- data/src/core/ext/filters/http/http_filters_plugin.cc +6 -3
- data/src/core/ext/filters/http/server/http_server_filter.cc +3 -3
- data/src/core/ext/filters/max_age/max_age_filter.cc +36 -33
- data/src/core/ext/filters/message_size/message_size_filter.cc +3 -2
- data/src/core/ext/filters/message_size/message_size_filter.h +2 -1
- data/src/core/ext/filters/workarounds/workaround_utils.cc +1 -1
- data/src/core/ext/transport/chttp2/client/authority.cc +3 -3
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +1 -1
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +1 -1
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +20 -8
- data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +21 -10
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +26 -14
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +226 -95
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +11 -2
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +11 -1
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +12 -5
- data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +62 -18
- data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +7 -7
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +28 -42
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +10 -2
- data/src/core/ext/transport/chttp2/transport/flow_control.h +13 -3
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +2 -1
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +2 -1
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +6 -6
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +12 -8
- data/src/core/ext/transport/chttp2/transport/internal.h +5 -1
- data/src/core/ext/transport/chttp2/transport/parsing.cc +18 -3
- data/src/core/ext/transport/chttp2/transport/writing.cc +2 -3
- data/src/core/ext/transport/inproc/inproc_transport.cc +42 -8
- data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +1 -0
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +7 -0
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +52 -33
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +199 -34
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +13 -13
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +44 -17
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +171 -98
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +625 -202
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +13 -5
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +24 -23
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +62 -21
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +36 -24
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +133 -39
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +15 -6
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +70 -45
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +275 -78
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +31 -24
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +107 -47
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +7 -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 +149 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +74 -28
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +248 -43
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +41 -41
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +172 -89
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +17 -9
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +63 -39
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +254 -60
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +1 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +7 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +9 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +42 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +126 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +13 -14
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +59 -36
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +16 -16
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +61 -29
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +26 -26
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +101 -66
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +11 -3
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +49 -27
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +204 -48
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +47 -26
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +181 -48
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +2 -3
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +13 -0
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +21 -17
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +96 -33
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +15 -13
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +70 -37
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +352 -199
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +1334 -443
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +8 -7
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +34 -10
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +3 -4
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +17 -3
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +29 -0
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +67 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +129 -80
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +525 -166
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +1 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +26 -24
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +121 -64
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +7 -6
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +29 -8
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +70 -29
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +296 -63
- data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.h +7 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +7 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +51 -34
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +188 -75
- data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.c +1 -4
- data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.h +7 -0
- data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.c +1 -4
- data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.h +7 -0
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +7 -8
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +31 -16
- data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.c +1 -3
- data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.h +7 -0
- data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.h +7 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +25 -11
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +7 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +7 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +6 -6
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +29 -8
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +22 -3
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +19 -0
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +46 -3
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +41 -8
- data/src/core/ext/upb-generated/envoy/type/v3/http.upb.h +1 -0
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +15 -2
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +19 -0
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +7 -0
- data/src/core/ext/upb-generated/google/api/annotations.upb.h +1 -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 +830 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +54 -37
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +171 -59
- data/src/core/ext/upb-generated/google/api/http.upb.c +3 -3
- data/src/core/ext/upb-generated/google/api/http.upb.h +25 -6
- data/src/core/ext/upb-generated/google/protobuf/any.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/any.upb.h +7 -0
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +90 -90
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +455 -292
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +7 -0
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +7 -0
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +4 -4
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +22 -3
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +7 -0
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +9 -9
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +55 -0
- data/src/core/ext/upb-generated/google/rpc/status.upb.c +1 -1
- data/src/core/ext/upb-generated/google/rpc/status.upb.h +10 -3
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +4 -4
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +11 -3
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +41 -41
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +149 -76
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +5 -5
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +21 -6
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +2 -2
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +13 -0
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +17 -17
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +82 -25
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +3 -3
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +19 -0
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +31 -0
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +64 -0
- data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +1 -0
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +2 -2
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +9 -2
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +1 -1
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +7 -0
- data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c +3 -3
- data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h +7 -0
- data/src/core/ext/upb-generated/validate/validate.upb.c +64 -64
- data/src/core/ext/upb-generated/validate/validate.upb.h +296 -157
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +28 -0
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +60 -0
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +52 -0
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +143 -0
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +42 -0
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +84 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +36 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +94 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +54 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +166 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +36 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +85 -0
- 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 +251 -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 +543 -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 +136 -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 +272 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +135 -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 +43 -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 +68 -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 +107 -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 +195 -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 +193 -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 +59 -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 +101 -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 +938 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +285 -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 +61 -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/clusters/aggregate/v3/cluster.upbdefs.c +51 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +504 -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 +44 -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 +170 -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 +97 -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 +246 -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 +142 -0
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +65 -0
- data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.c +73 -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 +72 -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 +80 -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 +80 -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 +69 -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 +39 -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 +40 -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 +40 -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/validate/validate.upbdefs.c +310 -0
- data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.h +145 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c +42 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c +62 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c +45 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c +49 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c +67 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.c +50 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.h +35 -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 +87 -0
- data/src/core/ext/xds/certificate_provider_store.h +112 -0
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +144 -0
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +69 -0
- data/src/core/ext/xds/xds_api.cc +1149 -1058
- data/src/core/ext/xds/xds_api.h +215 -144
- data/src/core/ext/xds/xds_bootstrap.cc +228 -62
- data/src/core/ext/xds/xds_bootstrap.h +35 -12
- data/src/core/ext/xds/xds_certificate_provider.cc +405 -0
- data/src/core/ext/xds/xds_certificate_provider.h +151 -0
- data/src/core/ext/xds/xds_channel_args.h +6 -3
- data/src/core/ext/xds/xds_client.cc +620 -495
- data/src/core/ext/xds/xds_client.h +121 -58
- data/src/core/ext/xds/xds_client_stats.cc +61 -17
- data/src/core/ext/xds/xds_client_stats.h +35 -7
- data/src/core/ext/xds/xds_server_config_fetcher.cc +267 -0
- data/src/core/lib/channel/channel_args.cc +9 -8
- 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/channel_trace.h +1 -1
- data/src/core/lib/channel/channelz.cc +23 -59
- data/src/core/lib/channel/channelz.h +13 -22
- data/src/core/lib/channel/channelz_registry.cc +12 -11
- data/src/core/lib/channel/channelz_registry.h +3 -1
- data/src/core/lib/channel/handshaker.cc +4 -7
- data/src/core/lib/channel/handshaker.h +3 -3
- data/src/core/lib/compression/compression.cc +8 -4
- data/src/core/lib/compression/compression_args.cc +3 -2
- 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.h +2 -2
- data/src/core/lib/debug/stats_data.cc +1 -0
- data/src/core/lib/debug/stats_data.h +13 -13
- data/src/core/lib/gpr/alloc.cc +3 -2
- data/src/core/lib/gpr/cpu_iphone.cc +10 -2
- data/src/core/lib/gpr/log.cc +59 -17
- data/src/core/lib/gpr/log_linux.cc +19 -3
- data/src/core/lib/gpr/log_posix.cc +15 -1
- data/src/core/lib/gpr/log_windows.cc +18 -4
- data/src/core/lib/gpr/murmur_hash.cc +1 -1
- data/src/core/lib/gpr/spinlock.h +10 -2
- data/src/core/lib/gpr/string.cc +23 -22
- data/src/core/lib/gpr/string.h +5 -6
- data/src/core/lib/gpr/sync.cc +4 -4
- data/src/core/lib/gpr/time.cc +12 -12
- 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/arena.h +3 -2
- 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/mpscq.cc +2 -2
- 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 +166 -7
- 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/sync.h +129 -40
- data/src/core/lib/gprpp/thd.h +2 -2
- data/src/core/lib/gprpp/thd_posix.cc +42 -37
- data/src/core/lib/gprpp/thd_windows.cc +3 -1
- data/src/core/lib/gprpp/time_util.cc +77 -0
- data/src/core/lib/gprpp/time_util.h +42 -0
- data/src/core/lib/http/httpcli.cc +1 -1
- data/src/core/lib/http/httpcli.h +2 -3
- data/src/core/lib/http/httpcli_security_connector.cc +3 -3
- data/src/core/lib/http/parser.cc +47 -27
- data/src/core/lib/iomgr/call_combiner.cc +8 -5
- data/src/core/lib/iomgr/combiner.cc +2 -1
- data/src/core/lib/iomgr/endpoint.h +1 -1
- data/src/core/lib/iomgr/endpoint_cfstream.cc +9 -5
- data/src/core/lib/iomgr/error.cc +17 -12
- data/src/core/lib/iomgr/error_internal.h +1 -1
- data/src/core/lib/iomgr/ev_apple.cc +10 -7
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +20 -13
- data/src/core/lib/iomgr/ev_epollex_linux.cc +29 -21
- data/src/core/lib/iomgr/ev_poll_posix.cc +9 -7
- data/src/core/lib/iomgr/exec_ctx.cc +1 -1
- data/src/core/lib/iomgr/exec_ctx.h +16 -12
- data/src/core/lib/iomgr/executor.cc +2 -1
- data/src/core/lib/iomgr/executor.h +1 -1
- data/src/core/lib/iomgr/executor/mpmcqueue.h +5 -5
- data/src/core/lib/iomgr/executor/threadpool.h +4 -4
- data/src/core/lib/iomgr/iomgr.cc +1 -1
- data/src/core/lib/iomgr/iomgr_posix.cc +0 -1
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +0 -1
- data/src/core/lib/iomgr/load_file.h +1 -1
- data/src/core/lib/iomgr/lockfree_event.cc +19 -14
- data/src/core/lib/iomgr/lockfree_event.h +2 -2
- data/src/core/lib/iomgr/parse_address.cc +127 -43
- data/src/core/lib/iomgr/parse_address.h +32 -8
- data/src/core/lib/iomgr/poller/eventmanager_libuv.cc +2 -1
- data/src/core/lib/iomgr/poller/eventmanager_libuv.h +1 -1
- data/src/core/lib/iomgr/pollset_set_custom.cc +1 -1
- data/src/core/lib/iomgr/python_util.h +4 -4
- data/src/core/lib/iomgr/resolve_address.cc +4 -4
- data/src/core/lib/iomgr/resolve_address_posix.cc +1 -5
- data/src/core/lib/iomgr/resource_quota.cc +4 -4
- data/src/core/lib/iomgr/sockaddr_utils.cc +11 -11
- data/src/core/lib/iomgr/sockaddr_utils.h +1 -1
- data/src/core/lib/iomgr/socket_factory_posix.cc +3 -2
- data/src/core/lib/iomgr/socket_mutator.cc +3 -2
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +1 -0
- data/src/core/lib/iomgr/tcp_client.cc +3 -3
- data/src/core/lib/iomgr/tcp_client_custom.cc +7 -6
- data/src/core/lib/iomgr/tcp_client_posix.cc +1 -1
- data/src/core/lib/iomgr/tcp_custom.cc +22 -17
- data/src/core/lib/iomgr/tcp_posix.cc +16 -12
- data/src/core/lib/iomgr/tcp_server_custom.cc +28 -22
- data/src/core/lib/iomgr/timer_custom.cc +5 -5
- data/src/core/lib/iomgr/timer_generic.cc +3 -3
- data/src/core/lib/iomgr/timer_manager.cc +2 -2
- data/src/core/lib/iomgr/udp_server.cc +1 -2
- data/src/core/lib/iomgr/udp_server.h +1 -2
- data/src/core/lib/iomgr/unix_sockets_posix.cc +32 -21
- 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 +12 -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/evaluate_args.cc +5 -10
- data/src/core/lib/security/authorization/evaluate_args.h +1 -1
- data/src/core/lib/security/authorization/matchers.cc +339 -0
- data/src/core/lib/security/authorization/matchers.h +158 -0
- data/src/core/lib/security/authorization/mock_cel/activation.h +1 -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 +13 -7
- 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.cc +4 -3
- data/src/core/lib/security/context/security_context.h +3 -1
- data/src/core/lib/security/credentials/alts/alts_credentials.cc +2 -1
- data/src/core/lib/security/credentials/alts/alts_credentials.h +1 -1
- data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +1 -1
- data/src/core/lib/security/credentials/credentials.cc +7 -7
- data/src/core/lib/security/credentials/credentials.h +5 -4
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +413 -0
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +80 -0
- data/src/core/lib/security/credentials/external/aws_request_signer.cc +213 -0
- data/src/core/lib/security/credentials/external/aws_request_signer.h +72 -0
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +497 -0
- data/src/core/lib/security/credentials/external/external_account_credentials.h +120 -0
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +135 -0
- data/src/core/lib/security/credentials/external/file_external_account_credentials.h +48 -0
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +213 -0
- data/src/core/lib/security/credentials/external/url_external_account_credentials.h +58 -0
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +3 -2
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +25 -18
- data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +64 -0
- data/src/core/lib/security/credentials/jwt/json_token.cc +3 -3
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +4 -3
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +5 -4
- data/src/core/lib/security/credentials/local/local_credentials.cc +2 -1
- data/src/core/lib/security/credentials/local/local_credentials.h +1 -1
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +39 -46
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +5 -4
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +1 -1
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +7 -6
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +2 -2
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +346 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +213 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +399 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +138 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +78 -150
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +57 -187
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +18 -13
- data/src/core/lib/security/credentials/tls/tls_credentials.h +3 -3
- data/src/core/lib/security/credentials/tls/tls_utils.cc +91 -0
- data/src/core/lib/security/credentials/tls/tls_utils.h +38 -0
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +244 -0
- data/src/core/lib/security/credentials/xds/xds_credentials.h +69 -0
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +1 -1
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +9 -13
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +121 -0
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +87 -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 +3 -3
- data/src/core/lib/security/security_connector/security_connector.cc +4 -3
- data/src/core/lib/security/security_connector/security_connector.h +4 -2
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +4 -4
- data/src/core/lib/security/security_connector/ssl_utils.cc +5 -2
- data/src/core/lib/security/security_connector/ssl_utils.h +19 -19
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +354 -279
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +105 -61
- data/src/core/lib/security/transport/secure_endpoint.cc +2 -2
- data/src/core/lib/security/transport/security_handshaker.cc +4 -6
- 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 +7 -8
- data/src/core/lib/slice/slice_internal.h +2 -2
- data/src/core/lib/surface/call.cc +41 -32
- data/src/core/lib/surface/call_details.cc +8 -8
- data/src/core/lib/surface/channel.cc +25 -41
- data/src/core/lib/surface/channel.h +9 -3
- data/src/core/lib/surface/channel_init.cc +1 -1
- data/src/core/lib/surface/completion_queue.cc +30 -24
- data/src/core/lib/surface/completion_queue.h +16 -16
- data/src/core/lib/surface/init.cc +45 -29
- data/src/core/lib/surface/lame_client.cc +20 -46
- data/src/core/lib/surface/lame_client.h +4 -0
- data/src/core/lib/surface/server.cc +66 -20
- data/src/core/lib/surface/server.h +42 -7
- 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 +6 -4
- data/src/core/lib/transport/authority_override.h +7 -2
- 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.h +11 -9
- data/src/core/lib/transport/error_utils.h +1 -1
- data/src/core/lib/transport/metadata.cc +16 -2
- data/src/core/lib/transport/metadata.h +2 -2
- data/src/core/lib/transport/metadata_batch.h +4 -4
- data/src/core/lib/transport/static_metadata.cc +1 -1
- data/src/core/lib/transport/status_metadata.cc +4 -3
- 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 -8
- data/src/core/lib/uri/uri_parser.cc +131 -249
- data/src/core/lib/uri/uri_parser.h +57 -21
- data/src/core/plugin_registry/grpc_plugin_registry.cc +47 -20
- data/src/core/tsi/alts/crypt/gsec.cc +5 -4
- data/src/core/tsi/alts/frame_protector/frame_handler.cc +8 -6
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +18 -21
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +43 -47
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.cc +8 -6
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +4 -4
- data/src/core/tsi/fake_transport_security.cc +7 -4
- 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_boringssl.cc +1 -1
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +0 -2
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +3 -2
- data/src/core/tsi/ssl_transport_security.cc +75 -58
- data/src/core/tsi/ssl_transport_security.h +6 -6
- data/src/core/tsi/transport_security.cc +10 -8
- data/src/core/tsi/transport_security_interface.h +1 -1
- data/src/ruby/ext/grpc/extconf.rb +1 -1
- data/src/ruby/ext/grpc/rb_event_thread.c +2 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +36 -16
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +70 -40
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +35 -0
- data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +18 -0
- data/src/ruby/spec/pb/codegen/package_option_spec.rb +2 -6
- 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_map.h +606 -0
- 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_map.h +197 -0
- 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/internal/statusor_internal.h +399 -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/status/statusor.cc +71 -0
- data/third_party/abseil-cpp/absl/status/statusor.h +760 -0
- 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 +4 -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 +728 -720
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_enum.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.c +5 -5
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +3 -10
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_octet.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +4 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +15 -20
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_locl.h +30 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +28 -79
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +39 -85
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +5 -16
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.c +10 -61
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/bio/socket_helper.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +158 -0
- data/third_party/boringssl-with-bazel/src/crypto/bn_extra/bn_asn1.c +3 -10
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.c +8 -9
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +60 -45
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_chacha20poly1305.c +6 -81
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +87 -0
- data/third_party/boringssl-with-bazel/src/crypto/cpu-aarch64-win.c +41 -0
- data/third_party/boringssl-with-bazel/src/crypto/{dh → dh_extra}/dh_asn1.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/{dh → dh_extra}/params.c +179 -0
- data/third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c +25 -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/ec_extra/ec_asn1.c +2 -17
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp.c +4 -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/bcm.c +3 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bn.c +13 -20
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +2 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +9 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +173 -35
- data/third_party/boringssl-with-bazel/src/crypto/{dh → fipsmodule/dh}/check.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/{dh → fipsmodule/dh}/dh.c +136 -213
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +12 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +9 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +28 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +128 -38
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +0 -7
- 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 +107 -54
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +155 -2
- data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +112 -36
- data/third_party/boringssl-with-bazel/src/crypto/hpke/internal.h +63 -9
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305.c +10 -7
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_arm.c +13 -11
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_vec.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/passive.c +34 -0
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/rand_extra.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/stack/stack.c +7 -13
- 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/rsa_pss.c +5 -1
- 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 +8 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_ext.c +27 -21
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_obj.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_r2x.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +32 -11
- 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 +4 -4
- 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 +42 -25
- 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 +3 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.c +28 -40
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_pkey.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +38 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +2 -2
- 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_akey.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +25 -24
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bitst.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +32 -28
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_genn.c +42 -22
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ia5.c +3 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_info.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +25 -36
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +2 -2
- 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 +7 -7
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +6 -6
- 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 +10 -8
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +652 -546
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +0 -167
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +15 -7
- data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +4 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/blake2.h +62 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +22 -7
- data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +21 -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 +62 -20
- data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +10 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +15 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +16 -3
- 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/rand.h +3 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/span.h +2 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +106 -27
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +31 -8
- 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 +462 -163
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +593 -440
- 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 +22 -21
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +13 -23
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +11 -6
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +82 -26
- data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +0 -1
- data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +49 -9
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +8 -9
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +87 -14
- data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +18 -22
- data/third_party/boringssl-with-bazel/src/ssl/ssl_transcript.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +5 -7
- data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +537 -34
- data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +1 -2
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +59 -21
- data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +48 -15
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +194 -58
- data/third_party/upb/third_party/wyhash/wyhash.h +145 -0
- data/third_party/upb/upb/decode.c +248 -167
- data/third_party/upb/upb/decode.h +20 -1
- data/third_party/upb/upb/decode.int.h +163 -0
- data/third_party/upb/upb/decode_fast.c +1040 -0
- data/third_party/upb/upb/decode_fast.h +126 -0
- data/third_party/upb/upb/def.c +2178 -0
- data/third_party/upb/upb/def.h +315 -0
- data/third_party/upb/upb/def.hpp +439 -0
- data/third_party/upb/upb/encode.c +227 -169
- data/third_party/upb/upb/encode.h +27 -2
- data/third_party/upb/upb/json_decode.c +1443 -0
- data/third_party/upb/upb/json_decode.h +23 -0
- data/third_party/upb/upb/json_encode.c +713 -0
- data/third_party/upb/upb/json_encode.h +36 -0
- data/third_party/upb/upb/msg.c +167 -88
- data/third_party/upb/upb/msg.h +174 -34
- data/third_party/upb/upb/port_def.inc +74 -61
- data/third_party/upb/upb/port_undef.inc +3 -7
- data/third_party/upb/upb/reflection.c +408 -0
- data/third_party/upb/upb/reflection.h +168 -0
- data/third_party/upb/upb/table.c +34 -197
- data/third_party/upb/upb/table.int.h +14 -5
- data/third_party/upb/upb/text_encode.c +421 -0
- data/third_party/upb/upb/text_encode.h +38 -0
- data/third_party/upb/upb/upb.c +18 -41
- data/third_party/upb/upb/upb.h +36 -7
- data/third_party/upb/upb/upb.hpp +4 -4
- data/third_party/upb/upb/upb.int.h +29 -0
- metadata +309 -63
- data/src/core/ext/filters/client_channel/lb_policy/xds/eds.cc +0 -946
- data/src/core/ext/filters/client_channel/lb_policy/xds/lrs.cc +0 -537
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_routing.cc +0 -1141
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.cc +0 -485
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc +0 -68
- data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +0 -354
- data/src/core/ext/filters/client_channel/resolving_lb_policy.h +0 -142
- data/src/core/ext/upb-generated/gogoproto/gogo.upb.c +0 -17
- data/src/core/ext/xds/xds_channel.h +0 -46
- data/src/core/ext/xds/xds_channel_secure.cc +0 -103
- data/src/core/lib/gprpp/map.h +0 -53
- data/src/core/lib/iomgr/iomgr_posix.h +0 -26
- 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
- data/third_party/upb/upb/port.c +0 -26
@@ -44,13 +44,13 @@ namespace grpc_core {
|
|
44
44
|
|
45
45
|
class HealthCheckClient : public InternallyRefCounted<HealthCheckClient> {
|
46
46
|
public:
|
47
|
-
HealthCheckClient(
|
47
|
+
HealthCheckClient(std::string service_name,
|
48
48
|
RefCountedPtr<ConnectedSubchannel> connected_subchannel,
|
49
49
|
grpc_pollset_set* interested_parties,
|
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
|
|
@@ -150,7 +150,7 @@ class HealthCheckClient : public InternallyRefCounted<HealthCheckClient> {
|
|
150
150
|
void SetHealthStatusLocked(grpc_connectivity_state state,
|
151
151
|
const char* reason); // Requires holding mu_.
|
152
152
|
|
153
|
-
|
153
|
+
std::string service_name_;
|
154
154
|
RefCountedPtr<ConnectedSubchannel> connected_subchannel_;
|
155
155
|
grpc_pollset_set* interested_parties_; // Do not own.
|
156
156
|
RefCountedPtr<channelz::SubchannelNode> channelz_node_;
|
@@ -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);
|
@@ -151,7 +151,7 @@ void HttpConnectHandshaker::OnWriteDone(void* arg, grpc_error* error) {
|
|
151
151
|
// If the write failed or we're shutting down, clean up and invoke the
|
152
152
|
// callback with the error.
|
153
153
|
handshaker->HandshakeFailedLocked(GRPC_ERROR_REF(error));
|
154
|
-
lock.
|
154
|
+
lock.Release();
|
155
155
|
handshaker->Unref();
|
156
156
|
} else {
|
157
157
|
// Otherwise, read the response.
|
@@ -256,7 +256,7 @@ done:
|
|
256
256
|
// Set shutdown to true so that subsequent calls to
|
257
257
|
// http_connect_handshaker_shutdown() do nothing.
|
258
258
|
handshaker->is_shutdown_ = true;
|
259
|
-
lock.
|
259
|
+
lock.Release();
|
260
260
|
handshaker->Unref();
|
261
261
|
}
|
262
262
|
|
@@ -332,7 +332,7 @@ void HttpConnectHandshaker::DoHandshake(grpc_tcp_server_acceptor* /*acceptor*/,
|
|
332
332
|
grpc_httpcli_request request;
|
333
333
|
request.host = server_name;
|
334
334
|
request.ssl_host_override = nullptr;
|
335
|
-
request.http.method = (
|
335
|
+
request.http.method = const_cast<char*>("CONNECT");
|
336
336
|
request.http.path = server_name;
|
337
337
|
request.http.version = GRPC_HTTP_HTTP10; // Set by OnReadDone
|
338
338
|
request.http.hdrs = headers;
|
@@ -382,8 +382,7 @@ class HttpConnectHandshakerFactory : public HandshakerFactory {
|
|
382
382
|
} // namespace grpc_core
|
383
383
|
|
384
384
|
void grpc_http_connect_register_handshaker_factory() {
|
385
|
-
|
386
|
-
|
387
|
-
|
388
|
-
absl::make_unique<HttpConnectHandshakerFactory>());
|
385
|
+
grpc_core::HandshakerRegistry::RegisterHandshakerFactory(
|
386
|
+
true /* at_start */, grpc_core::HANDSHAKER_CLIENT,
|
387
|
+
absl::make_unique<grpc_core::HttpConnectHandshakerFactory>());
|
389
388
|
}
|
@@ -24,6 +24,7 @@
|
|
24
24
|
#include <string.h>
|
25
25
|
|
26
26
|
#include "absl/strings/str_cat.h"
|
27
|
+
#include "absl/strings/strip.h"
|
27
28
|
|
28
29
|
#include <grpc/support/alloc.h>
|
29
30
|
#include <grpc/support/log.h>
|
@@ -47,9 +48,10 @@ namespace {
|
|
47
48
|
* credentials if present in the 'http_proxy' env var, otherwise leaves it
|
48
49
|
* unchanged. It is caller's responsibility to gpr_free user_cred.
|
49
50
|
*/
|
51
|
+
// TODO(hork): change this to return std::string
|
50
52
|
char* GetHttpProxyServer(const grpc_channel_args* args, char** user_cred) {
|
51
53
|
GPR_ASSERT(user_cred != nullptr);
|
52
|
-
|
54
|
+
absl::StatusOr<URI> uri;
|
53
55
|
char* proxy_name = nullptr;
|
54
56
|
char** authority_strs = nullptr;
|
55
57
|
size_t authority_nstrs;
|
@@ -69,17 +71,20 @@ char* GetHttpProxyServer(const grpc_channel_args* args, char** user_cred) {
|
|
69
71
|
if (uri_str == nullptr) return nullptr;
|
70
72
|
// an emtpy value means "don't use proxy"
|
71
73
|
if (uri_str[0] == '\0') goto done;
|
72
|
-
uri =
|
73
|
-
if (uri
|
74
|
-
gpr_log(GPR_ERROR, "cannot parse value of 'http_proxy' env var"
|
74
|
+
uri = URI::Parse(uri_str);
|
75
|
+
if (!uri.ok() || uri->authority().empty()) {
|
76
|
+
gpr_log(GPR_ERROR, "cannot parse value of 'http_proxy' env var. Error: %s",
|
77
|
+
uri.status().ToString().c_str());
|
75
78
|
goto done;
|
76
79
|
}
|
77
|
-
if (
|
78
|
-
gpr_log(GPR_ERROR, "'%s' scheme not supported in proxy URI",
|
80
|
+
if (uri->scheme() != "http") {
|
81
|
+
gpr_log(GPR_ERROR, "'%s' scheme not supported in proxy URI",
|
82
|
+
uri->scheme().c_str());
|
79
83
|
goto done;
|
80
84
|
}
|
81
85
|
/* Split on '@' to separate user credentials from host */
|
82
|
-
gpr_string_split(uri->authority, "@", &authority_strs,
|
86
|
+
gpr_string_split(uri->authority().c_str(), "@", &authority_strs,
|
87
|
+
&authority_nstrs);
|
83
88
|
GPR_ASSERT(authority_nstrs != 0); /* should have at least 1 string */
|
84
89
|
if (authority_nstrs == 1) {
|
85
90
|
/* User cred not present in authority */
|
@@ -99,7 +104,6 @@ char* GetHttpProxyServer(const grpc_channel_args* args, char** user_cred) {
|
|
99
104
|
gpr_free(authority_strs);
|
100
105
|
done:
|
101
106
|
gpr_free(uri_str);
|
102
|
-
grpc_uri_destroy(uri);
|
103
107
|
return proxy_name;
|
104
108
|
}
|
105
109
|
|
@@ -114,15 +118,15 @@ class HttpProxyMapper : public ProxyMapperInterface {
|
|
114
118
|
*name_to_resolve = GetHttpProxyServer(args, &user_cred);
|
115
119
|
if (*name_to_resolve == nullptr) return false;
|
116
120
|
char* no_proxy_str = nullptr;
|
117
|
-
|
118
|
-
if (uri
|
121
|
+
absl::StatusOr<URI> uri = URI::Parse(server_uri);
|
122
|
+
if (!uri.ok() || uri->path().empty()) {
|
119
123
|
gpr_log(GPR_ERROR,
|
120
124
|
"'http_proxy' environment variable set, but cannot "
|
121
|
-
"parse server URI '%s' -- not using proxy",
|
122
|
-
server_uri);
|
125
|
+
"parse server URI '%s' -- not using proxy. Error: %s",
|
126
|
+
server_uri, uri.status().ToString().c_str());
|
123
127
|
goto no_use_proxy;
|
124
128
|
}
|
125
|
-
if (
|
129
|
+
if (uri->scheme() == "unix") {
|
126
130
|
gpr_log(GPR_INFO, "not using proxy for Unix domain socket '%s'",
|
127
131
|
server_uri);
|
128
132
|
goto no_use_proxy;
|
@@ -135,9 +139,8 @@ class HttpProxyMapper : public ProxyMapperInterface {
|
|
135
139
|
bool use_proxy = true;
|
136
140
|
std::string server_host;
|
137
141
|
std::string server_port;
|
138
|
-
if (!
|
139
|
-
|
140
|
-
&server_port)) {
|
142
|
+
if (!SplitHostPort(absl::StripPrefix(uri->path(), "/"), &server_host,
|
143
|
+
&server_port)) {
|
141
144
|
gpr_log(GPR_INFO,
|
142
145
|
"unable to split host and port, not checking no_proxy list for "
|
143
146
|
"host '%s'",
|
@@ -172,8 +175,8 @@ class HttpProxyMapper : public ProxyMapperInterface {
|
|
172
175
|
}
|
173
176
|
grpc_arg args_to_add[2];
|
174
177
|
args_to_add[0] = grpc_channel_arg_string_create(
|
175
|
-
(
|
176
|
-
uri->path
|
178
|
+
const_cast<char*>(GRPC_ARG_HTTP_CONNECT_SERVER),
|
179
|
+
const_cast<char*>(absl::StripPrefix(uri->path(), "/").data()));
|
177
180
|
if (user_cred != nullptr) {
|
178
181
|
/* Use base64 encoding for user credentials as stated in RFC 7617 */
|
179
182
|
char* encoded_user_cred =
|
@@ -188,11 +191,9 @@ class HttpProxyMapper : public ProxyMapperInterface {
|
|
188
191
|
} else {
|
189
192
|
*new_args = grpc_channel_args_copy_and_add(args, args_to_add, 1);
|
190
193
|
}
|
191
|
-
grpc_uri_destroy(uri);
|
192
194
|
gpr_free(user_cred);
|
193
195
|
return true;
|
194
196
|
no_use_proxy:
|
195
|
-
if (uri != nullptr) grpc_uri_destroy(uri);
|
196
197
|
gpr_free(*name_to_resolve);
|
197
198
|
*name_to_resolve = nullptr;
|
198
199
|
gpr_free(user_cred);
|
@@ -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)) {}
|
@@ -101,7 +105,7 @@ LoadBalancingPolicy::PickResult LoadBalancingPolicy::QueuePicker::Pick(
|
|
101
105
|
// 2. We are currently running in the data plane mutex, but we
|
102
106
|
// need to bounce into the control plane work_serializer to call
|
103
107
|
// ExitIdleLocked().
|
104
|
-
if (!exit_idle_called_) {
|
108
|
+
if (!exit_idle_called_ && parent_ != nullptr) {
|
105
109
|
exit_idle_called_ = true;
|
106
110
|
auto* parent = parent_->Ref().release(); // ref held by lambda.
|
107
111
|
ExecCtx::Run(DEBUG_LOCATION,
|
@@ -30,7 +30,6 @@
|
|
30
30
|
#include "src/core/ext/filters/client_channel/server_address.h"
|
31
31
|
#include "src/core/ext/filters/client_channel/service_config.h"
|
32
32
|
#include "src/core/ext/filters/client_channel/subchannel_interface.h"
|
33
|
-
#include "src/core/lib/gprpp/map.h"
|
34
33
|
#include "src/core/lib/gprpp/orphanable.h"
|
35
34
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
36
35
|
#include "src/core/lib/iomgr/polling_entity.h"
|
@@ -95,11 +94,11 @@ class LoadBalancingPolicy : public InternallyRefCounted<LoadBalancingPolicy> {
|
|
95
94
|
/// Application-specific requests cost metrics. Metric names are
|
96
95
|
/// determined by the application. Each value is an absolute cost
|
97
96
|
/// (e.g. 3487 bytes of storage) associated with the request.
|
98
|
-
std::map<absl::string_view, double
|
97
|
+
std::map<absl::string_view, double> request_cost;
|
99
98
|
/// Application-specific resource utilization metrics. Metric names
|
100
99
|
/// are determined by the application. Each value is expressed as a
|
101
100
|
/// fraction of total resources available.
|
102
|
-
std::map<absl::string_view, double
|
101
|
+
std::map<absl::string_view, double> utilization;
|
103
102
|
};
|
104
103
|
|
105
104
|
/// Interface for accessing per-call state.
|
@@ -279,7 +278,7 @@ class LoadBalancingPolicy : public InternallyRefCounted<LoadBalancingPolicy> {
|
|
279
278
|
|
280
279
|
/// Creates a new subchannel with the specified channel args.
|
281
280
|
virtual RefCountedPtr<SubchannelInterface> CreateSubchannel(
|
282
|
-
const grpc_channel_args& args) = 0;
|
281
|
+
ServerAddress address, const grpc_channel_args& args) = 0;
|
283
282
|
|
284
283
|
/// Sets the connectivity state and returns a new picker to be used
|
285
284
|
/// by the client channel.
|
@@ -301,7 +300,7 @@ class LoadBalancingPolicy : public InternallyRefCounted<LoadBalancingPolicy> {
|
|
301
300
|
/// return the parameters they need.
|
302
301
|
class Config : public RefCounted<Config> {
|
303
302
|
public:
|
304
|
-
|
303
|
+
~Config() override = default;
|
305
304
|
|
306
305
|
// Returns the load balancing policy name
|
307
306
|
virtual const char* name() const = 0;
|
@@ -341,7 +340,7 @@ class LoadBalancingPolicy : public InternallyRefCounted<LoadBalancingPolicy> {
|
|
341
340
|
};
|
342
341
|
|
343
342
|
explicit LoadBalancingPolicy(Args args, intptr_t initial_refcount = 1);
|
344
|
-
|
343
|
+
~LoadBalancingPolicy() override;
|
345
344
|
|
346
345
|
// Not copyable nor movable.
|
347
346
|
LoadBalancingPolicy(const LoadBalancingPolicy&) = delete;
|
@@ -376,7 +375,7 @@ class LoadBalancingPolicy : public InternallyRefCounted<LoadBalancingPolicy> {
|
|
376
375
|
explicit QueuePicker(RefCountedPtr<LoadBalancingPolicy> parent)
|
377
376
|
: parent_(std::move(parent)) {}
|
378
377
|
|
379
|
-
~QueuePicker() { parent_.reset(DEBUG_LOCATION, "QueuePicker"); }
|
378
|
+
~QueuePicker() override { parent_.reset(DEBUG_LOCATION, "QueuePicker"); }
|
380
379
|
|
381
380
|
PickResult Pick(PickArgs args) override;
|
382
381
|
|
@@ -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,13 +36,14 @@ 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
49
|
void UpdateState(grpc_connectivity_state state, const absl::Status& status,
|
@@ -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;
|
@@ -68,6 +68,7 @@
|
|
68
68
|
#include "absl/strings/str_cat.h"
|
69
69
|
#include "absl/strings/str_format.h"
|
70
70
|
#include "absl/strings/str_join.h"
|
71
|
+
#include "absl/strings/strip.h"
|
71
72
|
|
72
73
|
#include "upb/upb.hpp"
|
73
74
|
|
@@ -124,6 +125,8 @@ TraceFlag grpc_lb_glb_trace(false, "glb");
|
|
124
125
|
const char kGrpcLbClientStatsMetadataKey[] = "grpclb_client_stats";
|
125
126
|
const char kGrpcLbLbTokenMetadataKey[] = "lb-token";
|
126
127
|
|
128
|
+
const char kGrpcLbAddressAttributeKey[] = "grpclb";
|
129
|
+
|
127
130
|
namespace {
|
128
131
|
|
129
132
|
constexpr char kGrpclb[] = "grpclb";
|
@@ -162,7 +165,7 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
162
165
|
public:
|
163
166
|
explicit BalancerCallState(
|
164
167
|
RefCountedPtr<LoadBalancingPolicy> parent_grpclb_policy);
|
165
|
-
~BalancerCallState();
|
168
|
+
~BalancerCallState() override;
|
166
169
|
|
167
170
|
// It's the caller's responsibility to ensure that Orphan() is called from
|
168
171
|
// inside the combiner.
|
@@ -233,6 +236,59 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
233
236
|
grpc_closure client_load_report_closure_;
|
234
237
|
};
|
235
238
|
|
239
|
+
class SubchannelWrapper : public DelegatingSubchannel {
|
240
|
+
public:
|
241
|
+
SubchannelWrapper(RefCountedPtr<SubchannelInterface> subchannel,
|
242
|
+
std::string lb_token,
|
243
|
+
RefCountedPtr<GrpcLbClientStats> client_stats)
|
244
|
+
: DelegatingSubchannel(std::move(subchannel)),
|
245
|
+
lb_token_(std::move(lb_token)),
|
246
|
+
client_stats_(std::move(client_stats)) {}
|
247
|
+
|
248
|
+
const std::string& lb_token() const { return lb_token_; }
|
249
|
+
GrpcLbClientStats* client_stats() const { return client_stats_.get(); }
|
250
|
+
|
251
|
+
private:
|
252
|
+
std::string lb_token_;
|
253
|
+
RefCountedPtr<GrpcLbClientStats> client_stats_;
|
254
|
+
};
|
255
|
+
|
256
|
+
class TokenAndClientStatsAttribute
|
257
|
+
: public ServerAddress::AttributeInterface {
|
258
|
+
public:
|
259
|
+
TokenAndClientStatsAttribute(std::string lb_token,
|
260
|
+
RefCountedPtr<GrpcLbClientStats> client_stats)
|
261
|
+
: lb_token_(std::move(lb_token)),
|
262
|
+
client_stats_(std::move(client_stats)) {}
|
263
|
+
|
264
|
+
std::unique_ptr<AttributeInterface> Copy() const override {
|
265
|
+
return absl::make_unique<TokenAndClientStatsAttribute>(lb_token_,
|
266
|
+
client_stats_);
|
267
|
+
}
|
268
|
+
|
269
|
+
int Cmp(const AttributeInterface* other_base) const override {
|
270
|
+
const TokenAndClientStatsAttribute* other =
|
271
|
+
static_cast<const TokenAndClientStatsAttribute*>(other_base);
|
272
|
+
int r = lb_token_.compare(other->lb_token_);
|
273
|
+
if (r != 0) return r;
|
274
|
+
return GPR_ICMP(client_stats_.get(), other->client_stats_.get());
|
275
|
+
}
|
276
|
+
|
277
|
+
std::string ToString() const override {
|
278
|
+
return absl::StrFormat("lb_token=\"%s\" client_stats=%p", lb_token_,
|
279
|
+
client_stats_.get());
|
280
|
+
}
|
281
|
+
|
282
|
+
const std::string& lb_token() const { return lb_token_; }
|
283
|
+
RefCountedPtr<GrpcLbClientStats> client_stats() const {
|
284
|
+
return client_stats_;
|
285
|
+
}
|
286
|
+
|
287
|
+
private:
|
288
|
+
std::string lb_token_;
|
289
|
+
RefCountedPtr<GrpcLbClientStats> client_stats_;
|
290
|
+
};
|
291
|
+
|
236
292
|
class Serverlist : public RefCounted<Serverlist> {
|
237
293
|
public:
|
238
294
|
// Takes ownership of serverlist.
|
@@ -274,21 +330,16 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
274
330
|
|
275
331
|
class Picker : public SubchannelPicker {
|
276
332
|
public:
|
277
|
-
Picker(
|
333
|
+
Picker(RefCountedPtr<Serverlist> serverlist,
|
278
334
|
std::unique_ptr<SubchannelPicker> child_picker,
|
279
335
|
RefCountedPtr<GrpcLbClientStats> client_stats)
|
280
|
-
:
|
281
|
-
serverlist_(std::move(serverlist)),
|
336
|
+
: serverlist_(std::move(serverlist)),
|
282
337
|
child_picker_(std::move(child_picker)),
|
283
338
|
client_stats_(std::move(client_stats)) {}
|
284
339
|
|
285
340
|
PickResult Pick(PickArgs args) override;
|
286
341
|
|
287
342
|
private:
|
288
|
-
// Storing the address for logging, but not holding a ref.
|
289
|
-
// DO NOT DEFERENCE!
|
290
|
-
GrpcLb* parent_;
|
291
|
-
|
292
343
|
// Serverlist to be used for determining drops.
|
293
344
|
RefCountedPtr<Serverlist> serverlist_;
|
294
345
|
|
@@ -302,7 +353,7 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
302
353
|
: parent_(std::move(parent)) {}
|
303
354
|
|
304
355
|
RefCountedPtr<SubchannelInterface> CreateSubchannel(
|
305
|
-
const grpc_channel_args& args) override;
|
356
|
+
ServerAddress address, const grpc_channel_args& args) override;
|
306
357
|
void UpdateState(grpc_connectivity_state state, const absl::Status& status,
|
307
358
|
std::unique_ptr<SubchannelPicker> picker) override;
|
308
359
|
void RequestReresolution() override;
|
@@ -319,7 +370,7 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
319
370
|
: AsyncConnectivityStateWatcherInterface(parent->work_serializer()),
|
320
371
|
parent_(std::move(parent)) {}
|
321
372
|
|
322
|
-
~StateWatcher() { parent_.reset(DEBUG_LOCATION, "StateWatcher"); }
|
373
|
+
~StateWatcher() override { parent_.reset(DEBUG_LOCATION, "StateWatcher"); }
|
323
374
|
|
324
375
|
private:
|
325
376
|
void OnConnectivityStateChange(grpc_connectivity_state new_state,
|
@@ -345,13 +396,15 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
345
396
|
RefCountedPtr<GrpcLb> parent_;
|
346
397
|
};
|
347
398
|
|
348
|
-
~GrpcLb();
|
399
|
+
~GrpcLb() override;
|
349
400
|
|
350
401
|
void ShutdownLocked() override;
|
351
402
|
|
352
403
|
// Helper functions used in UpdateLocked().
|
353
404
|
void ProcessAddressesAndChannelArgsLocked(const ServerAddressList& addresses,
|
354
405
|
const grpc_channel_args& args);
|
406
|
+
static ServerAddressList AddNullLbTokenToAddresses(
|
407
|
+
const ServerAddressList& addresses);
|
355
408
|
|
356
409
|
void CancelBalancerChannelConnectivityWatchLocked();
|
357
410
|
|
@@ -374,7 +427,7 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
374
427
|
void CreateOrUpdateChildPolicyLocked();
|
375
428
|
|
376
429
|
// Who the client is trying to communicate with.
|
377
|
-
|
430
|
+
std::string server_name_;
|
378
431
|
// Configurations for the policy.
|
379
432
|
RefCountedPtr<GrpcLbConfig> config_;
|
380
433
|
|
@@ -389,6 +442,8 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
389
442
|
StateWatcher* watcher_ = nullptr;
|
390
443
|
// Response generator to inject address updates into lb_channel_.
|
391
444
|
RefCountedPtr<FakeResolverResponseGenerator> response_generator_;
|
445
|
+
// Parent channelz node.
|
446
|
+
RefCountedPtr<channelz::ChannelNode> parent_channelz_node_;
|
392
447
|
|
393
448
|
// The data associated with the current LB call. It holds a ref to this LB
|
394
449
|
// policy. It's initialized every time we query for backends. It's reset to
|
@@ -437,7 +492,7 @@ bool GrpcLb::Serverlist::operator==(const Serverlist& other) const {
|
|
437
492
|
void ParseServer(const GrpcLbServer& server, grpc_resolved_address* addr) {
|
438
493
|
memset(addr, 0, sizeof(*addr));
|
439
494
|
if (server.drop) return;
|
440
|
-
const uint16_t netorder_port = grpc_htons((
|
495
|
+
const uint16_t netorder_port = grpc_htons(static_cast<uint16_t>(server.port));
|
441
496
|
/* the addresses are given in binary format (a in(6)_addr struct) in
|
442
497
|
* server->ip_address.bytes. */
|
443
498
|
if (server.ip_size == 4) {
|
@@ -448,7 +503,8 @@ void ParseServer(const GrpcLbServer& server, grpc_resolved_address* addr) {
|
|
448
503
|
addr4->sin_port = netorder_port;
|
449
504
|
} else if (server.ip_size == 16) {
|
450
505
|
addr->len = static_cast<socklen_t>(sizeof(grpc_sockaddr_in6));
|
451
|
-
grpc_sockaddr_in6* addr6 =
|
506
|
+
grpc_sockaddr_in6* addr6 =
|
507
|
+
reinterpret_cast<grpc_sockaddr_in6*>(&addr->addr);
|
452
508
|
addr6->sin6_family = GRPC_AF_INET6;
|
453
509
|
memcpy(&addr6->sin6_addr, server.ip_addr, server.ip_size);
|
454
510
|
addr6->sin6_port = netorder_port;
|
@@ -473,60 +529,23 @@ std::string GrpcLb::Serverlist::AsText() const {
|
|
473
529
|
return absl::StrJoin(entries, "");
|
474
530
|
}
|
475
531
|
|
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
532
|
bool IsServerValid(const GrpcLbServer& server, size_t idx, bool log) {
|
515
533
|
if (server.drop) return false;
|
516
534
|
if (GPR_UNLIKELY(server.port >> 16 != 0)) {
|
517
535
|
if (log) {
|
518
536
|
gpr_log(GPR_ERROR,
|
519
|
-
"Invalid port '%d' at index %
|
520
|
-
|
537
|
+
"Invalid port '%d' at index %" PRIuPTR
|
538
|
+
" of serverlist. Ignoring.",
|
539
|
+
server.port, idx);
|
521
540
|
}
|
522
541
|
return false;
|
523
542
|
}
|
524
543
|
if (GPR_UNLIKELY(server.ip_size != 4 && server.ip_size != 16)) {
|
525
544
|
if (log) {
|
526
545
|
gpr_log(GPR_ERROR,
|
527
|
-
"Expected IP to be 4 or 16 bytes, got %d at index %
|
528
|
-
"serverlist. Ignoring",
|
529
|
-
server.ip_size,
|
546
|
+
"Expected IP to be 4 or 16 bytes, got %d at index %" PRIuPTR
|
547
|
+
" of serverlist. Ignoring",
|
548
|
+
server.ip_size, idx);
|
530
549
|
}
|
531
550
|
return false;
|
532
551
|
}
|
@@ -536,6 +555,8 @@ bool IsServerValid(const GrpcLbServer& server, size_t idx, bool log) {
|
|
536
555
|
// Returns addresses extracted from the serverlist.
|
537
556
|
ServerAddressList GrpcLb::Serverlist::GetServerAddressList(
|
538
557
|
GrpcLbClientStats* client_stats) const {
|
558
|
+
RefCountedPtr<GrpcLbClientStats> stats;
|
559
|
+
if (client_stats != nullptr) stats = client_stats->Ref();
|
539
560
|
ServerAddressList addresses;
|
540
561
|
for (size_t i = 0; i < serverlist_.size(); ++i) {
|
541
562
|
const GrpcLbServer& server = serverlist_[i];
|
@@ -544,34 +565,23 @@ ServerAddressList GrpcLb::Serverlist::GetServerAddressList(
|
|
544
565
|
grpc_resolved_address addr;
|
545
566
|
ParseServer(server, &addr);
|
546
567
|
// 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 {
|
568
|
+
const size_t lb_token_length = strnlen(
|
569
|
+
server.load_balance_token, GPR_ARRAY_SIZE(server.load_balance_token));
|
570
|
+
std::string lb_token(server.load_balance_token, lb_token_length);
|
571
|
+
if (lb_token.empty()) {
|
556
572
|
gpr_log(GPR_INFO,
|
557
573
|
"Missing LB token for backend address '%s'. The empty token will "
|
558
574
|
"be used instead",
|
559
575
|
grpc_sockaddr_to_uri(&addr).c_str());
|
560
|
-
lb_token[0] = '\0';
|
561
576
|
}
|
577
|
+
// Attach attribute to address containing LB token and stats object.
|
578
|
+
std::map<const char*, std::unique_ptr<ServerAddress::AttributeInterface>>
|
579
|
+
attributes;
|
580
|
+
attributes[kGrpcLbAddressAttributeKey] =
|
581
|
+
absl::make_unique<TokenAndClientStatsAttribute>(std::move(lb_token),
|
582
|
+
stats);
|
562
583
|
// 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);
|
584
|
+
addresses.emplace_back(addr, /*args=*/nullptr, std::move(attributes));
|
575
585
|
}
|
576
586
|
return addresses;
|
577
587
|
}
|
@@ -598,7 +608,8 @@ const char* GrpcLb::Serverlist::ShouldDrop() {
|
|
598
608
|
GrpcLb::PickResult GrpcLb::Picker::Pick(PickArgs args) {
|
599
609
|
PickResult result;
|
600
610
|
// Check if we should drop the call.
|
601
|
-
const char* drop_token =
|
611
|
+
const char* drop_token =
|
612
|
+
serverlist_ == nullptr ? nullptr : serverlist_->ShouldDrop();
|
602
613
|
if (drop_token != nullptr) {
|
603
614
|
// Update client load reporting stats to indicate the number of
|
604
615
|
// dropped calls. Note that we have to do this here instead of in
|
@@ -616,15 +627,12 @@ GrpcLb::PickResult GrpcLb::Picker::Pick(PickArgs args) {
|
|
616
627
|
// If pick succeeded, add LB token to initial metadata.
|
617
628
|
if (result.type == PickResult::PICK_COMPLETE &&
|
618
629
|
result.subchannel != nullptr) {
|
630
|
+
const SubchannelWrapper* subchannel_wrapper =
|
631
|
+
static_cast<SubchannelWrapper*>(result.subchannel.get());
|
619
632
|
// Encode client stats object into metadata for use by
|
620
633
|
// 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);
|
634
|
+
GrpcLbClientStats* client_stats = subchannel_wrapper->client_stats();
|
635
|
+
if (client_stats != nullptr) {
|
628
636
|
client_stats->Ref().release(); // Ref passed via metadata.
|
629
637
|
// The metadata value is a hack: we pretend the pointer points to
|
630
638
|
// a string and rely on the client_load_reporting filter to know
|
@@ -636,15 +644,17 @@ GrpcLb::PickResult GrpcLb::Picker::Pick(PickArgs args) {
|
|
636
644
|
client_stats->AddCallStarted();
|
637
645
|
}
|
638
646
|
// Encode the LB token in metadata.
|
639
|
-
|
640
|
-
|
641
|
-
|
642
|
-
|
643
|
-
|
644
|
-
|
647
|
+
// Create a new copy on the call arena, since the subchannel list
|
648
|
+
// may get refreshed between when we return this pick and when the
|
649
|
+
// initial metadata goes out on the wire.
|
650
|
+
if (!subchannel_wrapper->lb_token().empty()) {
|
651
|
+
char* lb_token = static_cast<char*>(
|
652
|
+
args.call_state->Alloc(subchannel_wrapper->lb_token().size() + 1));
|
653
|
+
strcpy(lb_token, subchannel_wrapper->lb_token().c_str());
|
654
|
+
args.initial_metadata->Add(kGrpcLbLbTokenMetadataKey, lb_token);
|
645
655
|
}
|
646
|
-
|
647
|
-
|
656
|
+
// Unwrap subchannel to pass up to the channel.
|
657
|
+
result.subchannel = subchannel_wrapper->wrapped_subchannel();
|
648
658
|
}
|
649
659
|
return result;
|
650
660
|
}
|
@@ -654,9 +664,23 @@ GrpcLb::PickResult GrpcLb::Picker::Pick(PickArgs args) {
|
|
654
664
|
//
|
655
665
|
|
656
666
|
RefCountedPtr<SubchannelInterface> GrpcLb::Helper::CreateSubchannel(
|
657
|
-
const grpc_channel_args& args) {
|
667
|
+
ServerAddress address, const grpc_channel_args& args) {
|
658
668
|
if (parent_->shutting_down_) return nullptr;
|
659
|
-
|
669
|
+
const TokenAndClientStatsAttribute* attribute =
|
670
|
+
static_cast<const TokenAndClientStatsAttribute*>(
|
671
|
+
address.GetAttribute(kGrpcLbAddressAttributeKey));
|
672
|
+
if (attribute == nullptr) {
|
673
|
+
gpr_log(GPR_ERROR,
|
674
|
+
"[grpclb %p] no TokenAndClientStatsAttribute for address %p",
|
675
|
+
parent_.get(), address.ToString().c_str());
|
676
|
+
abort();
|
677
|
+
}
|
678
|
+
std::string lb_token = attribute->lb_token();
|
679
|
+
RefCountedPtr<GrpcLbClientStats> client_stats = attribute->client_stats();
|
680
|
+
return MakeRefCounted<SubchannelWrapper>(
|
681
|
+
parent_->channel_control_helper()->CreateSubchannel(std::move(address),
|
682
|
+
args),
|
683
|
+
std::move(lb_token), std::move(client_stats));
|
660
684
|
}
|
661
685
|
|
662
686
|
void GrpcLb::Helper::UpdateState(grpc_connectivity_state state,
|
@@ -667,56 +691,37 @@ void GrpcLb::Helper::UpdateState(grpc_connectivity_state state,
|
|
667
691
|
parent_->child_policy_ready_ = state == GRPC_CHANNEL_READY;
|
668
692
|
// Enter fallback mode if needed.
|
669
693
|
parent_->MaybeEnterFallbackModeAfterStartup();
|
670
|
-
//
|
671
|
-
//
|
672
|
-
//
|
673
|
-
//
|
674
|
-
//
|
675
|
-
//
|
676
|
-
//
|
677
|
-
//
|
678
|
-
|
679
|
-
|
680
|
-
|
681
|
-
|
682
|
-
|
683
|
-
// to process drops for picks that yield a QUEUE result; this would
|
684
|
-
// result in dropping too many calls, since we will see the
|
685
|
-
// queued picks multiple times, and we'd consider each one a
|
686
|
-
// separate call for the drop calculation.
|
687
|
-
//
|
688
|
-
// Cases 1 and 3b: return picker from the child policy as-is.
|
689
|
-
if (parent_->serverlist_ == nullptr ||
|
690
|
-
(!parent_->serverlist_->ContainsAllDropEntries() &&
|
691
|
-
state != GRPC_CHANNEL_READY)) {
|
692
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
693
|
-
gpr_log(GPR_INFO,
|
694
|
-
"[grpclb %p helper %p] state=%s (%s) passing "
|
695
|
-
"child picker %p as-is",
|
696
|
-
parent_.get(), this, ConnectivityStateName(state),
|
697
|
-
status.ToString().c_str(), picker.get());
|
698
|
-
}
|
699
|
-
parent_->channel_control_helper()->UpdateState(state, status,
|
700
|
-
std::move(picker));
|
701
|
-
return;
|
702
|
-
}
|
703
|
-
// Cases 2 and 3a: wrap picker from the child in our own picker.
|
704
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
705
|
-
gpr_log(GPR_INFO,
|
706
|
-
"[grpclb %p helper %p] state=%s (%s) wrapping child "
|
707
|
-
"picker %p",
|
708
|
-
parent_.get(), this, ConnectivityStateName(state),
|
709
|
-
status.ToString().c_str(), picker.get());
|
694
|
+
// We pass the serverlist to the picker so that it can handle drops.
|
695
|
+
// However, we don't want to handle drops in the case where the child
|
696
|
+
// policy is reporting a state other than READY (unless we are
|
697
|
+
// dropping *all* calls), because we don't want to process drops for picks
|
698
|
+
// that yield a QUEUE result; this would result in dropping too many calls,
|
699
|
+
// since we will see the queued picks multiple times, and we'd consider each
|
700
|
+
// one a separate call for the drop calculation. So in this case, we pass
|
701
|
+
// a null serverlist to the picker, which tells it not to do drops.
|
702
|
+
RefCountedPtr<Serverlist> serverlist;
|
703
|
+
if (state == GRPC_CHANNEL_READY ||
|
704
|
+
(parent_->serverlist_ != nullptr &&
|
705
|
+
parent_->serverlist_->ContainsAllDropEntries())) {
|
706
|
+
serverlist = parent_->serverlist_;
|
710
707
|
}
|
711
708
|
RefCountedPtr<GrpcLbClientStats> client_stats;
|
712
709
|
if (parent_->lb_calld_ != nullptr &&
|
713
710
|
parent_->lb_calld_->client_stats() != nullptr) {
|
714
711
|
client_stats = parent_->lb_calld_->client_stats()->Ref();
|
715
712
|
}
|
713
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
714
|
+
gpr_log(GPR_INFO,
|
715
|
+
"[grpclb %p helper %p] state=%s (%s) wrapping child "
|
716
|
+
"picker %p (serverlist=%p, client_stats=%p)",
|
717
|
+
parent_.get(), this, ConnectivityStateName(state),
|
718
|
+
status.ToString().c_str(), picker.get(), serverlist.get(),
|
719
|
+
client_stats.get());
|
720
|
+
}
|
716
721
|
parent_->channel_control_helper()->UpdateState(
|
717
722
|
state, status,
|
718
|
-
absl::make_unique<Picker>(
|
719
|
-
std::move(
|
723
|
+
absl::make_unique<Picker>(std::move(serverlist), std::move(picker),
|
724
|
+
std::move(client_stats)));
|
720
725
|
}
|
721
726
|
|
722
727
|
void GrpcLb::Helper::RequestReresolution() {
|
@@ -743,15 +748,16 @@ void GrpcLb::Helper::AddTraceEvent(TraceSeverity severity,
|
|
743
748
|
|
744
749
|
GrpcLb::BalancerCallState::BalancerCallState(
|
745
750
|
RefCountedPtr<LoadBalancingPolicy> parent_grpclb_policy)
|
746
|
-
: InternallyRefCounted<BalancerCallState>(
|
751
|
+
: InternallyRefCounted<BalancerCallState>(
|
752
|
+
GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace) ? "BalancerCallState"
|
753
|
+
: nullptr),
|
747
754
|
grpclb_policy_(std::move(parent_grpclb_policy)) {
|
748
755
|
GPR_ASSERT(grpclb_policy_ != nullptr);
|
749
756
|
GPR_ASSERT(!grpclb_policy()->shutting_down_);
|
750
757
|
// Init the LB call. Note that the LB call will progress every time there's
|
751
758
|
// activity in grpclb_policy_->interested_parties(), which is comprised of
|
752
759
|
// the polling entities from client_channel.
|
753
|
-
GPR_ASSERT(grpclb_policy()->server_name_
|
754
|
-
GPR_ASSERT(grpclb_policy()->server_name_[0] != '\0');
|
760
|
+
GPR_ASSERT(!grpclb_policy()->server_name_.empty());
|
755
761
|
// Closure Initialization
|
756
762
|
GRPC_CLOSURE_INIT(&lb_on_initial_request_sent_, OnInitialRequestSent, this,
|
757
763
|
grpc_schedule_on_exec_ctx);
|
@@ -774,7 +780,7 @@ GrpcLb::BalancerCallState::BalancerCallState(
|
|
774
780
|
upb::Arena arena;
|
775
781
|
grpc_slice request_payload_slice = GrpcLbRequestCreate(
|
776
782
|
grpclb_policy()->config_->service_name().empty()
|
777
|
-
? grpclb_policy()->server_name_
|
783
|
+
? grpclb_policy()->server_name_.c_str()
|
778
784
|
: grpclb_policy()->config_->service_name().c_str(),
|
779
785
|
arena.ptr());
|
780
786
|
send_message_payload_ =
|
@@ -840,8 +846,9 @@ void GrpcLb::BalancerCallState::StartQuery() {
|
|
840
846
|
// with the callback.
|
841
847
|
auto self = Ref(DEBUG_LOCATION, "on_initial_request_sent");
|
842
848
|
self.release();
|
843
|
-
call_error = grpc_call_start_batch_and_execute(
|
844
|
-
|
849
|
+
call_error = grpc_call_start_batch_and_execute(lb_call_, ops,
|
850
|
+
static_cast<size_t>(op - ops),
|
851
|
+
&lb_on_initial_request_sent_);
|
845
852
|
GPR_ASSERT(GRPC_CALL_OK == call_error);
|
846
853
|
// Op: recv initial metadata.
|
847
854
|
op = ops;
|
@@ -863,7 +870,8 @@ void GrpcLb::BalancerCallState::StartQuery() {
|
|
863
870
|
self = Ref(DEBUG_LOCATION, "on_message_received");
|
864
871
|
self.release();
|
865
872
|
call_error = grpc_call_start_batch_and_execute(
|
866
|
-
lb_call_, ops,
|
873
|
+
lb_call_, ops, static_cast<size_t>(op - ops),
|
874
|
+
&lb_on_balancer_message_received_);
|
867
875
|
GPR_ASSERT(GRPC_CALL_OK == call_error);
|
868
876
|
// Op: recv server status.
|
869
877
|
op = ops;
|
@@ -879,7 +887,8 @@ void GrpcLb::BalancerCallState::StartQuery() {
|
|
879
887
|
// ref instead of a new ref. When it's invoked, it's the initial ref that is
|
880
888
|
// unreffed.
|
881
889
|
call_error = grpc_call_start_batch_and_execute(
|
882
|
-
lb_call_, ops,
|
890
|
+
lb_call_, ops, static_cast<size_t>(op - ops),
|
891
|
+
&lb_on_balancer_status_received_);
|
883
892
|
GPR_ASSERT(GRPC_CALL_OK == call_error);
|
884
893
|
}
|
885
894
|
|
@@ -937,7 +946,7 @@ void GrpcLb::BalancerCallState::SendClientLoadReportLocked() {
|
|
937
946
|
if (num_calls_started == 0 && num_calls_finished == 0 &&
|
938
947
|
num_calls_finished_with_client_failed_to_send == 0 &&
|
939
948
|
num_calls_finished_known_received == 0 &&
|
940
|
-
(drop_token_counts == nullptr || drop_token_counts->
|
949
|
+
(drop_token_counts == nullptr || drop_token_counts->empty())) {
|
941
950
|
if (last_client_load_report_counters_were_zero_) {
|
942
951
|
ScheduleNextClientLoadReportLocked();
|
943
952
|
return;
|
@@ -1250,12 +1259,10 @@ ServerAddressList ExtractBalancerAddresses(const grpc_channel_args& args) {
|
|
1250
1259
|
* stream for the reception of load balancing updates.
|
1251
1260
|
*
|
1252
1261
|
* Inputs:
|
1253
|
-
* - \a addresses: corresponding to the balancers.
|
1254
1262
|
* - \a response_generator: in order to propagate updates from the resolver
|
1255
1263
|
* above the grpclb policy.
|
1256
1264
|
* - \a args: other args inherited from the grpclb policy. */
|
1257
1265
|
grpc_channel_args* BuildBalancerChannelArgs(
|
1258
|
-
const ServerAddressList& addresses,
|
1259
1266
|
FakeResolverResponseGenerator* response_generator,
|
1260
1267
|
const grpc_channel_args* args) {
|
1261
1268
|
// Channel args to remove.
|
@@ -1287,31 +1294,24 @@ grpc_channel_args* BuildBalancerChannelArgs(
|
|
1287
1294
|
GRPC_ARG_CHANNELZ_CHANNEL_NODE,
|
1288
1295
|
};
|
1289
1296
|
// Channel args to add.
|
1290
|
-
absl::InlinedVector<grpc_arg, 3> args_to_add
|
1291
|
-
|
1292
|
-
|
1293
|
-
args_to_add.emplace_back(
|
1297
|
+
absl::InlinedVector<grpc_arg, 3> args_to_add = {
|
1298
|
+
// The fake resolver response generator, which we use to inject
|
1299
|
+
// address updates into the LB channel.
|
1294
1300
|
grpc_core::FakeResolverResponseGenerator::MakeChannelArg(
|
1295
|
-
response_generator)
|
1296
|
-
|
1297
|
-
|
1298
|
-
|
1299
|
-
|
1300
|
-
|
1301
|
-
|
1302
|
-
|
1303
|
-
if (arg != nullptr && arg->type == GRPC_ARG_POINTER &&
|
1304
|
-
arg->value.pointer.p != nullptr) {
|
1305
|
-
channelz_node = static_cast<channelz::ChannelNode*>(arg->value.pointer.p);
|
1306
|
-
args_to_add.emplace_back(
|
1307
|
-
channelz::MakeParentUuidArg(channelz_node->uuid()));
|
1308
|
-
}
|
1301
|
+
response_generator),
|
1302
|
+
// A channel arg indicating the target is a grpclb load balancer.
|
1303
|
+
grpc_channel_arg_integer_create(
|
1304
|
+
const_cast<char*>(GRPC_ARG_ADDRESS_IS_GRPCLB_LOAD_BALANCER), 1),
|
1305
|
+
// Tells channelz that this is an internal channel.
|
1306
|
+
grpc_channel_arg_integer_create(
|
1307
|
+
const_cast<char*>(GRPC_ARG_CHANNELZ_IS_INTERNAL_CHANNEL), 1),
|
1308
|
+
};
|
1309
1309
|
// Construct channel args.
|
1310
1310
|
grpc_channel_args* new_args = grpc_channel_args_copy_and_add_and_remove(
|
1311
1311
|
args, args_to_remove, GPR_ARRAY_SIZE(args_to_remove), args_to_add.data(),
|
1312
1312
|
args_to_add.size());
|
1313
1313
|
// Make any necessary modifications for security.
|
1314
|
-
return ModifyGrpclbBalancerChannelArgs(
|
1314
|
+
return ModifyGrpclbBalancerChannelArgs(new_args);
|
1315
1315
|
}
|
1316
1316
|
|
1317
1317
|
//
|
@@ -1338,15 +1338,14 @@ GrpcLb::GrpcLb(Args args)
|
|
1338
1338
|
const grpc_arg* arg = grpc_channel_args_find(args.args, GRPC_ARG_SERVER_URI);
|
1339
1339
|
const char* server_uri = grpc_channel_arg_get_string(arg);
|
1340
1340
|
GPR_ASSERT(server_uri != nullptr);
|
1341
|
-
|
1342
|
-
GPR_ASSERT(uri->path
|
1343
|
-
server_name_ =
|
1341
|
+
absl::StatusOr<URI> uri = URI::Parse(server_uri);
|
1342
|
+
GPR_ASSERT(uri.ok() && !uri->path().empty());
|
1343
|
+
server_name_ = std::string(absl::StripPrefix(uri->path(), "/"));
|
1344
1344
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
1345
1345
|
gpr_log(GPR_INFO,
|
1346
1346
|
"[grpclb %p] Will use '%s' as the server name for LB request.",
|
1347
|
-
this, server_name_);
|
1347
|
+
this, server_name_.c_str());
|
1348
1348
|
}
|
1349
|
-
grpc_uri_destroy(uri);
|
1350
1349
|
// Record LB call timeout.
|
1351
1350
|
arg = grpc_channel_args_find(args.args, GRPC_ARG_GRPCLB_CALL_TIMEOUT_MS);
|
1352
1351
|
lb_call_timeout_ms_ = grpc_channel_arg_get_integer(arg, {0, 0, INT_MAX});
|
@@ -1356,10 +1355,7 @@ GrpcLb::GrpcLb(Args args)
|
|
1356
1355
|
arg, {GRPC_GRPCLB_DEFAULT_FALLBACK_TIMEOUT_MS, 0, INT_MAX});
|
1357
1356
|
}
|
1358
1357
|
|
1359
|
-
GrpcLb::~GrpcLb() {
|
1360
|
-
gpr_free((void*)server_name_);
|
1361
|
-
grpc_channel_args_destroy(args_);
|
1362
|
-
}
|
1358
|
+
GrpcLb::~GrpcLb() { grpc_channel_args_destroy(args_); }
|
1363
1359
|
|
1364
1360
|
void GrpcLb::ShutdownLocked() {
|
1365
1361
|
shutting_down_ = true;
|
@@ -1382,6 +1378,12 @@ void GrpcLb::ShutdownLocked() {
|
|
1382
1378
|
// OnBalancerChannelConnectivityChangedLocked(), and we need to be
|
1383
1379
|
// alive when that callback is invoked.
|
1384
1380
|
if (lb_channel_ != nullptr) {
|
1381
|
+
if (parent_channelz_node_ != nullptr) {
|
1382
|
+
channelz::ChannelNode* child_channelz_node =
|
1383
|
+
grpc_channel_get_channelz_node(lb_channel_);
|
1384
|
+
GPR_ASSERT(child_channelz_node != nullptr);
|
1385
|
+
parent_channelz_node_->RemoveChildChannel(child_channelz_node->uuid());
|
1386
|
+
}
|
1385
1387
|
grpc_channel_destroy(lb_channel_);
|
1386
1388
|
lb_channel_ = nullptr;
|
1387
1389
|
}
|
@@ -1435,17 +1437,13 @@ void GrpcLb::UpdateLocked(UpdateArgs args) {
|
|
1435
1437
|
// helpers for UpdateLocked()
|
1436
1438
|
//
|
1437
1439
|
|
1438
|
-
ServerAddressList AddNullLbTokenToAddresses(
|
1440
|
+
ServerAddressList GrpcLb::AddNullLbTokenToAddresses(
|
1439
1441
|
const ServerAddressList& addresses) {
|
1440
|
-
static const char* lb_token = "";
|
1441
|
-
grpc_arg arg = grpc_channel_arg_pointer_create(
|
1442
|
-
const_cast<char*>(GRPC_ARG_GRPCLB_ADDRESS_LB_TOKEN),
|
1443
|
-
const_cast<char*>(lb_token), &lb_token_arg_vtable);
|
1444
1442
|
ServerAddressList addresses_out;
|
1445
|
-
for (
|
1446
|
-
addresses_out.emplace_back(
|
1447
|
-
|
1448
|
-
|
1443
|
+
for (const ServerAddress& address : addresses) {
|
1444
|
+
addresses_out.emplace_back(address.WithAttribute(
|
1445
|
+
kGrpcLbAddressAttributeKey,
|
1446
|
+
absl::make_unique<TokenAndClientStatsAttribute>("", nullptr)));
|
1449
1447
|
}
|
1450
1448
|
return addresses_out;
|
1451
1449
|
}
|
@@ -1458,20 +1456,30 @@ void GrpcLb::ProcessAddressesAndChannelArgsLocked(
|
|
1458
1456
|
// since we use this to trigger the client_load_reporting filter.
|
1459
1457
|
static const char* args_to_remove[] = {GRPC_ARG_LB_POLICY_NAME};
|
1460
1458
|
grpc_arg new_arg = grpc_channel_arg_string_create(
|
1461
|
-
(
|
1459
|
+
const_cast<char*>(GRPC_ARG_LB_POLICY_NAME), const_cast<char*>("grpclb"));
|
1462
1460
|
grpc_channel_args_destroy(args_);
|
1463
1461
|
args_ = grpc_channel_args_copy_and_add_and_remove(
|
1464
1462
|
&args, args_to_remove, GPR_ARRAY_SIZE(args_to_remove), &new_arg, 1);
|
1465
1463
|
// Construct args for balancer channel.
|
1466
1464
|
ServerAddressList balancer_addresses = ExtractBalancerAddresses(args);
|
1467
|
-
grpc_channel_args* lb_channel_args =
|
1468
|
-
|
1465
|
+
grpc_channel_args* lb_channel_args =
|
1466
|
+
BuildBalancerChannelArgs(response_generator_.get(), &args);
|
1469
1467
|
// Create balancer channel if needed.
|
1470
1468
|
if (lb_channel_ == nullptr) {
|
1471
1469
|
std::string uri_str = absl::StrCat("fake:///", server_name_);
|
1472
1470
|
lb_channel_ =
|
1473
1471
|
CreateGrpclbBalancerChannel(uri_str.c_str(), *lb_channel_args);
|
1474
1472
|
GPR_ASSERT(lb_channel_ != nullptr);
|
1473
|
+
// Set up channelz linkage.
|
1474
|
+
channelz::ChannelNode* child_channelz_node =
|
1475
|
+
grpc_channel_get_channelz_node(lb_channel_);
|
1476
|
+
channelz::ChannelNode* parent_channelz_node =
|
1477
|
+
grpc_channel_args_find_pointer<channelz::ChannelNode>(
|
1478
|
+
&args, GRPC_ARG_CHANNELZ_CHANNEL_NODE);
|
1479
|
+
if (child_channelz_node != nullptr && parent_channelz_node != nullptr) {
|
1480
|
+
parent_channelz_node->AddChildChannel(child_channelz_node->uuid());
|
1481
|
+
parent_channelz_node_ = parent_channelz_node->Ref();
|
1482
|
+
}
|
1475
1483
|
}
|
1476
1484
|
// Propagate updates to the LB channel (pick_first) through the fake
|
1477
1485
|
// resolver.
|
@@ -1757,7 +1765,8 @@ bool maybe_add_client_load_reporting_filter(grpc_channel_stack_builder* builder,
|
|
1757
1765
|
// will minimize the number of metadata elements that the filter
|
1758
1766
|
// needs to iterate through to find the ClientStats object.
|
1759
1767
|
return grpc_channel_stack_builder_prepend_filter(
|
1760
|
-
builder,
|
1768
|
+
builder, static_cast<const grpc_channel_filter*>(arg), nullptr,
|
1769
|
+
nullptr);
|
1761
1770
|
}
|
1762
1771
|
return true;
|
1763
1772
|
}
|
@@ -1768,10 +1777,10 @@ void grpc_lb_policy_grpclb_init() {
|
|
1768
1777
|
grpc_core::LoadBalancingPolicyRegistry::Builder::
|
1769
1778
|
RegisterLoadBalancingPolicyFactory(
|
1770
1779
|
absl::make_unique<grpc_core::GrpcLbFactory>());
|
1771
|
-
grpc_channel_init_register_stage(
|
1772
|
-
|
1773
|
-
|
1774
|
-
|
1780
|
+
grpc_channel_init_register_stage(
|
1781
|
+
GRPC_CLIENT_SUBCHANNEL, GRPC_CHANNEL_INIT_BUILTIN_PRIORITY,
|
1782
|
+
maybe_add_client_load_reporting_filter,
|
1783
|
+
const_cast<grpc_channel_filter*>(&grpc_client_load_reporting_filter));
|
1775
1784
|
}
|
1776
1785
|
|
1777
1786
|
void grpc_lb_policy_grpclb_shutdown() {}
|