grpc 1.48.0-x86_64-linux → 1.49.0.pre1-x86_64-linux
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 +104 -41
- data/include/grpc/event_engine/event_engine.h +19 -16
- data/include/grpc/impl/codegen/grpc_types.h +3 -8
- data/include/grpc/impl/codegen/port_platform.h +0 -8
- data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +3 -3
- data/src/core/ext/filters/channel_idle/channel_idle_filter.h +2 -2
- data/src/core/ext/filters/client_channel/client_channel.cc +117 -200
- data/src/core/ext/filters/client_channel/client_channel.h +15 -8
- data/src/core/ext/filters/client_channel/client_channel_factory.cc +0 -29
- data/src/core/ext/filters/client_channel/client_channel_factory.h +2 -10
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +1 -1
- data/src/core/ext/filters/client_channel/config_selector.h +12 -4
- data/src/core/ext/filters/client_channel/connector.h +4 -5
- data/src/core/ext/filters/client_channel/http_proxy.cc +53 -65
- data/src/core/ext/filters/client_channel/http_proxy.h +12 -9
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +14 -12
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +6 -6
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +100 -124
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +12 -3
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +5 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +1 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +1 -2
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +169 -63
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +25 -1
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +15 -19
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +66 -78
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +44 -44
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +6 -5
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +65 -77
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +15 -14
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +19 -14
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +60 -67
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +40 -49
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +81 -97
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +53 -61
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +171 -102
- data/src/core/ext/filters/client_channel/proxy_mapper.h +13 -14
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +19 -16
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.h +8 -7
- data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +4 -8
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +431 -145
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +170 -99
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +20 -7
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +17 -15
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +7 -17
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +11 -0
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +13 -14
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +3 -4
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +5 -6
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +4 -13
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +162 -165
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +37 -30
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +7 -10
- data/src/core/ext/filters/client_channel/retry_filter.cc +0 -7
- data/src/core/ext/filters/client_channel/retry_service_config.cc +30 -19
- data/src/core/ext/filters/client_channel/retry_service_config.h +6 -9
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +6 -7
- data/src/core/ext/filters/client_channel/subchannel.cc +49 -89
- data/src/core/ext/filters/client_channel/subchannel.h +8 -8
- data/src/core/ext/filters/client_channel/subchannel_interface_internal.h +1 -1
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +6 -76
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +16 -25
- data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +3 -4
- data/src/core/ext/filters/deadline/deadline_filter.cc +6 -6
- data/src/core/ext/filters/deadline/deadline_filter.h +2 -3
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +1 -3
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +1 -1
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +17 -12
- data/src/core/ext/filters/fault_injection/service_config_parser.h +4 -5
- data/src/core/ext/filters/http/client/http_client_filter.cc +2 -3
- data/src/core/ext/filters/http/client/http_client_filter.h +1 -1
- data/src/core/ext/filters/http/client_authority_filter.cc +1 -2
- data/src/core/ext/filters/http/client_authority_filter.h +1 -1
- data/src/core/ext/filters/http/server/http_server_filter.cc +2 -3
- data/src/core/ext/filters/http/server/http_server_filter.h +1 -1
- data/src/core/ext/filters/message_size/message_size_filter.cc +13 -7
- data/src/core/ext/filters/message_size/message_size_filter.h +3 -6
- data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +16 -12
- data/src/core/ext/filters/rbac/rbac_service_config_parser.h +4 -6
- data/src/core/ext/filters/server_config_selector/server_config_selector.h +5 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +3 -5
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +35 -62
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +62 -89
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +4 -6
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +130 -165
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +3 -2
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +67 -2
- data/src/core/ext/transport/chttp2/transport/flow_control.h +1 -0
- data/src/core/ext/transport/chttp2/transport/hpack_constants.h +7 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +25 -8
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +4 -0
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +0 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +8 -2
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +2 -10
- data/src/core/ext/transport/chttp2/transport/internal.h +2 -1
- data/src/core/ext/transport/inproc/inproc_transport.cc +40 -74
- data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.h +30 -10
- data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.h +24 -8
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +8 -327
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +83 -1723
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.c +352 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.h +1768 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.c +6 -4
- data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.h +33 -4
- data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.h +6 -2
- 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 -3
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +14 -14
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +90 -30
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +21 -19
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +124 -34
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +23 -22
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +153 -48
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.c +11 -11
- data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.h +84 -28
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +42 -14
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +25 -23
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +156 -48
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +42 -14
- 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 +6 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +12 -12
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +78 -26
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +9 -9
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +54 -18
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +21 -20
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +117 -44
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +36 -12
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +30 -10
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +37 -13
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +170 -15
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +42 -14
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +7 -4
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +36 -4
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +6 -6
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +48 -16
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +54 -18
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +21 -9
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +100 -14
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +7 -22
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +36 -77
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +121 -76
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +647 -163
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.c +34 -15
- data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.h +161 -22
- data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.c +46 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.h +98 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.h +1 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +30 -10
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c +11 -4
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +58 -4
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +35 -27
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +177 -52
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +10 -8
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +66 -14
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +42 -14
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h +12 -4
- 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 +6 -2
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +131 -16
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +632 -12
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +30 -10
- data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +24 -8
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h +24 -8
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +6 -2
- 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 +6 -2
- 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 +6 -2
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +12 -4
- 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 +18 -6
- 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 +42 -14
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +30 -10
- data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.c +63 -0
- data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.h +202 -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 +6 -2
- data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.h +6 -2
- data/src/core/ext/upb-generated/google/api/annotations.upb.h +1 -1
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +11 -11
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +66 -22
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +9 -9
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +72 -24
- data/src/core/ext/upb-generated/google/api/http.upb.c +3 -3
- data/src/core/ext/upb-generated/google/api/http.upb.h +18 -6
- data/src/core/ext/upb-generated/google/api/httpbody.upb.c +1 -1
- data/src/core/ext/upb-generated/google/api/httpbody.upb.h +6 -2
- data/src/core/ext/upb-generated/google/protobuf/any.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/any.upb.h +6 -2
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +44 -43
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +177 -55
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +6 -2
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +6 -2
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +2 -2
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +18 -6
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +6 -2
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +6 -6
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +54 -18
- data/src/core/ext/upb-generated/google/rpc/status.upb.c +1 -1
- data/src/core/ext/upb-generated/google/rpc/status.upb.h +6 -2
- data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.c +2 -2
- data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.h +24 -8
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +6 -2
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +7 -7
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +60 -20
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +1 -1
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +12 -4
- 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 +12 -4
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +6 -6
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +54 -18
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +2 -2
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +12 -4
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.c +7 -7
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.h +42 -14
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +3 -3
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +23 -11
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +1 -1
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +7 -3
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +7 -3
- 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 -3
- data/src/core/ext/upb-generated/validate/validate.upb.c +22 -22
- data/src/core/ext/upb-generated/validate/validate.upb.h +139 -47
- data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.c +3 -3
- data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.h +23 -11
- data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.h +7 -3
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +3 -3
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +27 -11
- data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.h +7 -3
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +6 -2
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +2 -2
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +12 -4
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +6 -2
- data/src/core/ext/upb-generated/xds/core/v3/extension.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/extension.upb.h +6 -2
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +6 -2
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +12 -4
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +6 -2
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +6 -2
- data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.h +6 -2
- data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.c +6 -6
- data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.h +54 -18
- data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.c +2 -2
- data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.h +12 -4
- data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.h +12 -4
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +6 -2
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +67 -274
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.h +0 -85
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.c +256 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.h +115 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.c +14 -11
- data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +107 -107
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +191 -187
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +156 -154
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +186 -183
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +136 -134
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +16 -16
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +162 -139
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +39 -31
- data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c +12 -8
- data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +72 -75
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +0 -5
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +713 -670
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +10 -0
- data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.c +150 -139
- data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.c +47 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.c +16 -12
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c +46 -25
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +477 -466
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +21 -18
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +153 -84
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +113 -113
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +29 -28
- data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.c +69 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +92 -90
- data/src/core/ext/xds/upb_utils.h +0 -21
- data/src/core/ext/xds/xds_api.cc +53 -86
- data/src/core/ext/xds/xds_api.h +19 -28
- data/src/core/ext/xds/xds_bootstrap.cc +39 -52
- data/src/core/ext/xds/xds_bootstrap.h +28 -8
- data/src/core/ext/xds/xds_certificate_provider.h +9 -0
- data/src/core/ext/xds/xds_channel_stack_modifier.cc +6 -4
- data/src/core/ext/xds/xds_channel_stack_modifier.h +8 -0
- data/src/core/ext/xds/xds_client.cc +555 -1214
- data/src/core/ext/xds/xds_client.h +16 -44
- data/src/core/ext/xds/xds_client_grpc.cc +291 -0
- data/src/core/ext/xds/xds_client_grpc.h +102 -0
- data/src/core/ext/xds/xds_cluster.cc +92 -103
- data/src/core/ext/xds/xds_cluster.h +6 -5
- data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +10 -14
- data/src/core/ext/xds/xds_cluster_specifier_plugin.h +1 -0
- data/src/core/ext/xds/xds_common_types.cc +134 -110
- data/src/core/ext/xds/xds_common_types.h +6 -7
- data/src/core/ext/xds/xds_endpoint.cc +80 -80
- data/src/core/ext/xds/xds_endpoint.h +4 -4
- data/src/core/ext/xds/xds_http_fault_filter.cc +4 -11
- data/src/core/ext/xds/xds_http_fault_filter.h +3 -3
- data/src/core/ext/xds/xds_http_filters.h +3 -3
- data/src/core/ext/xds/xds_http_rbac_filter.cc +39 -58
- data/src/core/ext/xds/xds_http_rbac_filter.h +3 -3
- data/src/core/ext/xds/xds_lb_policy_registry.cc +17 -20
- data/src/core/ext/xds/xds_lb_policy_registry.h +4 -4
- data/src/core/ext/xds/xds_listener.cc +329 -299
- data/src/core/ext/xds/xds_listener.h +4 -4
- data/src/core/ext/xds/xds_resource_type.h +13 -2
- data/src/core/ext/xds/xds_route_config.cc +180 -177
- data/src/core/ext/xds/xds_route_config.h +31 -17
- data/src/core/ext/xds/xds_routing.cc +3 -6
- data/src/core/ext/xds/xds_routing.h +7 -9
- data/src/core/ext/xds/xds_server_config_fetcher.cc +76 -81
- data/src/core/ext/xds/xds_transport.h +86 -0
- data/src/core/ext/xds/xds_transport_grpc.cc +349 -0
- data/src/core/ext/xds/xds_transport_grpc.h +135 -0
- data/src/core/lib/address_utils/parse_address.cc +19 -17
- data/src/core/lib/address_utils/parse_address.h +8 -5
- data/src/core/lib/avl/avl.h +47 -25
- data/src/core/lib/channel/call_tracer.h +1 -1
- data/src/core/lib/channel/channel_args.cc +88 -19
- data/src/core/lib/channel/channel_args.h +113 -62
- data/src/core/lib/channel/channel_stack.cc +0 -1
- data/src/core/lib/channel/channel_stack_builder.cc +3 -3
- data/src/core/lib/channel/channel_stack_builder.h +2 -2
- data/src/core/lib/channel/channel_stack_builder_impl.cc +2 -4
- data/src/core/lib/channel/channelz.cc +27 -37
- data/src/core/lib/channel/channelz.h +9 -0
- data/src/core/lib/channel/promise_based_filter.h +0 -1
- data/src/core/lib/config/core_configuration.h +48 -35
- data/src/core/lib/debug/stats.cc +12 -15
- data/src/core/lib/debug/stats.h +11 -3
- data/src/core/lib/event_engine/{event_engine.cc → default_event_engine.cc} +9 -5
- data/src/core/lib/event_engine/{event_engine_factory.h → default_event_engine.h} +4 -8
- data/src/core/lib/event_engine/default_event_engine_factory.cc +20 -3
- data/src/core/lib/event_engine/default_event_engine_factory.h +33 -0
- data/src/core/lib/event_engine/executor/executor.h +38 -0
- data/src/core/lib/event_engine/executor/threaded_executor.cc +36 -0
- data/src/core/lib/event_engine/executor/threaded_executor.h +44 -0
- data/src/core/lib/event_engine/forkable.cc +98 -0
- data/src/core/lib/event_engine/forkable.h +61 -0
- data/src/core/lib/event_engine/poller.h +54 -0
- data/src/core/lib/event_engine/{iomgr_engine/iomgr_engine.cc → posix_engine/posix_engine.cc} +30 -47
- data/src/core/lib/event_engine/{iomgr_engine/iomgr_engine.h → posix_engine/posix_engine.h} +27 -28
- data/src/core/lib/event_engine/{iomgr_engine → posix_engine}/timer.cc +4 -5
- data/src/core/lib/event_engine/{iomgr_engine → posix_engine}/timer.h +8 -8
- data/src/core/lib/event_engine/{iomgr_engine → posix_engine}/timer_heap.cc +4 -4
- data/src/core/lib/event_engine/{iomgr_engine → posix_engine}/timer_heap.h +5 -5
- data/src/core/lib/event_engine/{iomgr_engine → posix_engine}/timer_manager.cc +46 -10
- data/src/core/lib/event_engine/{iomgr_engine → posix_engine}/timer_manager.h +17 -8
- data/src/core/lib/event_engine/promise.h +11 -2
- data/src/core/lib/event_engine/socket_notifier.h +55 -0
- data/src/core/lib/event_engine/{iomgr_engine/thread_pool.cc → thread_pool.cc} +49 -14
- data/src/core/lib/event_engine/{iomgr_engine/thread_pool.h → thread_pool.h} +21 -10
- data/src/core/lib/event_engine/utils.cc +49 -0
- data/src/core/lib/event_engine/utils.h +40 -0
- data/src/core/lib/event_engine/windows/iocp.cc +149 -0
- data/src/core/lib/event_engine/windows/iocp.h +68 -0
- data/src/core/lib/event_engine/windows/win_socket.cc +196 -0
- data/src/core/lib/event_engine/windows/win_socket.h +120 -0
- data/src/core/lib/event_engine/windows/windows_engine.cc +159 -0
- data/src/core/lib/event_engine/windows/windows_engine.h +120 -0
- data/src/core/lib/gpr/time.cc +11 -9
- data/src/core/lib/gpr/useful.h +29 -0
- data/src/core/lib/gprpp/bitset.h +3 -13
- data/src/core/lib/gprpp/debug_location.h +39 -7
- data/src/core/lib/gprpp/manual_constructor.h +0 -1
- data/src/core/lib/gprpp/no_destruct.h +94 -0
- data/src/core/lib/gprpp/ref_counted_ptr.h +0 -1
- data/src/core/lib/gprpp/status_helper.cc +1 -0
- data/src/core/lib/gprpp/table.h +0 -1
- data/src/core/lib/{event_engine/iomgr_engine → gprpp}/time_averaged_stats.cc +3 -5
- data/src/core/lib/{event_engine/iomgr_engine → gprpp}/time_averaged_stats.h +5 -7
- data/src/core/lib/{iomgr → gprpp}/work_serializer.cc +34 -18
- data/src/core/lib/{iomgr → gprpp}/work_serializer.h +21 -27
- data/src/core/lib/http/httpcli.cc +12 -24
- data/src/core/lib/http/httpcli_security_connector.cc +11 -11
- data/src/core/lib/iomgr/call_combiner.cc +0 -26
- data/src/core/lib/iomgr/closure.h +0 -9
- data/src/core/lib/iomgr/combiner.cc +0 -20
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +2 -1
- data/src/core/lib/iomgr/error.cc +0 -773
- data/src/core/lib/iomgr/error.h +0 -145
- data/src/core/lib/iomgr/error_cfstream.cc +0 -5
- data/src/core/lib/iomgr/ev_poll_posix.cc +17 -9
- data/src/core/lib/iomgr/exec_ctx.cc +0 -12
- data/src/core/lib/iomgr/executor.cc +0 -10
- data/src/core/lib/iomgr/executor.h +0 -3
- data/src/core/lib/iomgr/lockfree_event.cc +0 -17
- data/src/core/lib/iomgr/port.h +3 -0
- data/src/core/lib/iomgr/resolve_address.h +29 -6
- data/src/core/lib/iomgr/resolve_address_posix.cc +38 -8
- data/src/core/lib/iomgr/resolve_address_posix.h +19 -5
- data/src/core/lib/iomgr/resolve_address_windows.cc +40 -10
- data/src/core/lib/iomgr/resolve_address_windows.h +19 -5
- data/src/core/lib/iomgr/socket_windows.h +0 -2
- data/src/core/lib/iomgr/tcp_posix.cc +118 -6
- data/src/core/lib/iomgr/timer_generic.cc +6 -8
- data/src/core/lib/json/json.h +19 -22
- data/src/core/lib/json/json_args.h +34 -0
- data/src/core/lib/json/json_object_loader.cc +233 -0
- data/src/core/lib/json/json_object_loader.h +618 -0
- data/src/core/lib/json/json_reader.cc +86 -62
- data/src/core/lib/json/json_util.cc +8 -36
- data/src/core/{ext/filters/client_channel → lib/load_balancing}/lb_policy.cc +3 -44
- data/src/core/{ext/filters/client_channel → lib/load_balancing}/lb_policy.h +15 -24
- data/src/core/lib/load_balancing/lb_policy_factory.h +49 -0
- data/src/core/{ext/filters/client_channel → lib/load_balancing}/lb_policy_registry.cc +49 -72
- data/src/core/{ext/filters/client_channel → lib/load_balancing}/lb_policy_registry.h +27 -27
- data/src/core/{ext/filters/client_channel → lib/load_balancing}/subchannel_interface.h +6 -6
- data/src/core/lib/promise/activity.h +56 -8
- data/src/core/lib/promise/arena_promise.h +84 -81
- data/src/core/lib/promise/context.h +0 -1
- data/src/core/lib/promise/detail/basic_seq.h +43 -23
- data/src/core/lib/promise/detail/promise_factory.h +0 -1
- data/src/core/lib/promise/map.h +0 -1
- data/src/core/lib/promise/seq.h +25 -4
- data/src/core/lib/promise/sleep.cc +38 -42
- data/src/core/lib/promise/sleep.h +27 -24
- data/src/core/lib/promise/try_seq.h +26 -6
- data/src/core/lib/resolver/resolver.cc +0 -47
- data/src/core/lib/resolver/resolver.h +2 -12
- data/src/core/lib/resolver/resolver_factory.h +2 -3
- data/src/core/lib/resolver/resolver_registry.cc +1 -1
- data/src/core/lib/resolver/resolver_registry.h +2 -3
- data/src/core/lib/resolver/server_address.cc +11 -15
- data/src/core/lib/resolver/server_address.h +4 -8
- data/src/core/lib/resource_quota/api.cc +1 -1
- data/src/core/lib/resource_quota/arena.cc +21 -1
- data/src/core/lib/resource_quota/arena.h +24 -2
- data/src/core/lib/resource_quota/memory_quota.cc +157 -17
- data/src/core/lib/resource_quota/memory_quota.h +98 -17
- data/src/core/lib/resource_quota/periodic_update.cc +79 -0
- data/src/core/lib/resource_quota/periodic_update.h +71 -0
- data/src/core/lib/security/authorization/evaluate_args.cc +10 -7
- data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +1 -2
- data/src/core/lib/security/authorization/grpc_server_authz_filter.h +1 -1
- data/src/core/lib/security/authorization/matchers.cc +13 -10
- data/src/core/lib/security/authorization/rbac_policy.cc +0 -1
- data/src/core/lib/security/credentials/alts/alts_credentials.cc +2 -3
- data/src/core/lib/security/credentials/alts/alts_credentials.h +3 -4
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +3 -7
- data/src/core/lib/security/credentials/composite/composite_credentials.h +2 -4
- data/src/core/lib/security/credentials/credentials.h +16 -12
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +18 -11
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +32 -23
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +5 -6
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +4 -6
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +3 -12
- data/src/core/lib/security/credentials/fake/fake_credentials.h +0 -4
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +29 -26
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +1 -3
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +0 -1
- data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +3 -3
- data/src/core/lib/security/credentials/insecure/insecure_credentials.h +3 -4
- data/src/core/lib/security/credentials/jwt/json_token.cc +12 -3
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +4 -8
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +11 -13
- data/src/core/lib/security/credentials/local/local_credentials.cc +3 -4
- data/src/core/lib/security/credentials/local/local_credentials.h +3 -4
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +17 -18
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +0 -1
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +13 -21
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +3 -4
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +6 -0
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +13 -25
- data/src/core/lib/security/credentials/tls/tls_credentials.h +3 -4
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +13 -30
- data/src/core/lib/security/credentials/xds/xds_credentials.h +3 -3
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +10 -18
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +26 -38
- data/src/core/lib/security/security_connector/fake/fake_security_connector.h +2 -2
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +5 -5
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +6 -5
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +13 -11
- data/src/core/lib/security/security_connector/local/local_security_connector.h +2 -2
- data/src/core/lib/security/security_connector/security_connector.h +5 -3
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +5 -4
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +5 -5
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +5 -5
- data/src/core/lib/security/transport/auth_filters.h +1 -1
- data/src/core/lib/security/transport/client_auth_filter.cc +3 -4
- data/src/core/lib/security/transport/security_handshaker.cc +32 -44
- data/src/core/lib/security/transport/security_handshaker.h +2 -1
- data/src/core/lib/service_config/service_config.h +11 -0
- data/src/core/lib/service_config/service_config_impl.cc +98 -97
- data/src/core/lib/service_config/service_config_impl.h +11 -13
- data/src/core/lib/service_config/service_config_parser.cc +26 -27
- data/src/core/lib/service_config/service_config_parser.h +10 -22
- data/src/core/lib/slice/percent_encoding.cc +4 -13
- data/src/core/lib/slice/slice.cc +10 -4
- data/src/core/lib/surface/call.cc +8 -2
- data/src/core/lib/surface/channel.cc +6 -6
- data/src/core/lib/surface/channel.h +1 -1
- data/src/core/lib/surface/completion_queue.cc +0 -2
- data/src/core/lib/surface/completion_queue.h +0 -3
- data/src/core/lib/surface/init.cc +2 -6
- data/src/core/lib/surface/lame_client.cc +2 -3
- data/src/core/lib/surface/lame_client.h +1 -1
- data/src/core/lib/surface/server.cc +7 -12
- data/src/core/lib/surface/server.h +7 -7
- data/src/core/lib/surface/validate_metadata.cc +4 -14
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/connectivity_state.cc +0 -1
- data/src/core/lib/transport/connectivity_state.h +1 -1
- data/src/core/lib/transport/error_utils.cc +0 -36
- data/src/core/lib/transport/handshaker.cc +7 -9
- data/src/core/lib/transport/handshaker.h +4 -5
- data/src/core/lib/transport/handshaker_factory.h +2 -3
- data/src/core/lib/transport/handshaker_registry.cc +2 -1
- data/src/core/lib/transport/handshaker_registry.h +2 -4
- data/src/core/lib/transport/http_connect_handshaker.cc +16 -16
- data/src/core/lib/transport/metadata_batch.cc +5 -0
- data/src/core/lib/transport/metadata_batch.h +52 -7
- data/src/core/lib/transport/parsed_metadata.h +0 -1
- data/src/core/lib/transport/tcp_connect_handshaker.cc +12 -18
- data/src/core/lib/transport/transport.h +0 -7
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +40 -21
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +1 -1
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +14 -7
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +1 -1
- data/src/core/tsi/fake_transport_security.cc +53 -30
- data/src/core/tsi/local_transport_security.cc +9 -5
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +10 -1
- data/src/core/tsi/ssl_transport_security.cc +47 -23
- data/src/core/tsi/transport_security.cc +18 -6
- data/src/core/tsi/transport_security.h +2 -1
- data/src/core/tsi/transport_security_interface.h +17 -5
- data/src/ruby/ext/grpc/extconf.rb +2 -0
- data/src/ruby/ext/grpc/rb_loader.c +6 -2
- data/src/ruby/lib/grpc/2.5/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/2.6/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/2.7/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/3.0/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/3.1/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +4 -0
- data/third_party/abseil-cpp/absl/functional/any_invocable.h +313 -0
- data/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +857 -0
- data/third_party/upb/third_party/utf8_range/utf8_range.h +1 -1
- data/third_party/upb/upb/arena.c +277 -0
- data/third_party/upb/upb/arena.h +225 -0
- data/third_party/upb/upb/array.c +114 -0
- data/third_party/upb/upb/array.h +83 -0
- data/third_party/upb/upb/collections.h +36 -0
- data/third_party/upb/upb/decode.c +161 -65
- data/third_party/upb/upb/decode.h +1 -0
- data/third_party/upb/upb/decode_fast.c +1 -1
- data/third_party/upb/upb/def.c +10 -2
- data/third_party/upb/upb/def.h +8 -1
- data/third_party/upb/upb/def.hpp +7 -4
- data/third_party/upb/upb/encode.c +29 -20
- data/third_party/upb/upb/encode.h +16 -6
- data/third_party/upb/upb/extension_registry.c +93 -0
- data/third_party/upb/upb/extension_registry.h +84 -0
- data/third_party/upb/upb/{decode_internal.h → internal/decode.h} +5 -5
- data/third_party/upb/upb/internal/table.h +385 -0
- data/third_party/upb/upb/{upb_internal.h → internal/upb.h} +3 -3
- data/third_party/upb/upb/internal/vsnprintf_compat.h +52 -0
- data/third_party/upb/upb/json_decode.c +1512 -0
- data/third_party/upb/upb/json_decode.h +47 -0
- data/third_party/upb/upb/json_encode.c +7 -3
- data/third_party/upb/upb/json_encode.h +6 -3
- data/third_party/upb/upb/map.c +108 -0
- data/third_party/upb/upb/map.h +117 -0
- data/third_party/upb/upb/message_value.h +66 -0
- data/third_party/upb/upb/mini_table.c +1147 -0
- data/third_party/upb/upb/mini_table.h +189 -0
- data/third_party/upb/upb/mini_table.hpp +112 -0
- data/third_party/upb/upb/msg.c +2 -62
- data/third_party/upb/upb/msg.h +2 -45
- data/third_party/upb/upb/msg_internal.h +28 -22
- data/third_party/upb/upb/port_def.inc +2 -1
- data/third_party/upb/upb/port_undef.inc +1 -0
- data/third_party/upb/upb/reflection.c +2 -159
- data/third_party/upb/upb/reflection.h +2 -112
- data/third_party/upb/upb/status.c +86 -0
- data/third_party/upb/upb/status.h +66 -0
- data/third_party/upb/upb/table.c +2 -2
- data/third_party/upb/upb/table_internal.h +3 -352
- data/third_party/upb/upb/text_encode.c +3 -2
- data/third_party/upb/upb/upb.c +4 -290
- data/third_party/upb/upb/upb.h +7 -196
- metadata +90 -38
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +0 -50
- data/src/core/lib/iomgr/error_internal.h +0 -66
- data/src/core/lib/iomgr/executor/mpmcqueue.cc +0 -182
- data/src/core/lib/iomgr/executor/mpmcqueue.h +0 -171
- data/src/core/lib/iomgr/executor/threadpool.cc +0 -136
- data/src/core/lib/iomgr/executor/threadpool.h +0 -150
- data/src/core/lib/iomgr/time_averaged_stats.cc +0 -64
- data/src/core/lib/iomgr/time_averaged_stats.h +0 -72
- data/src/core/lib/promise/detail/switch.h +0 -1455
@@ -18,6 +18,7 @@
|
|
18
18
|
|
19
19
|
#include "src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h"
|
20
20
|
|
21
|
+
#include <inttypes.h>
|
21
22
|
#include <stddef.h>
|
22
23
|
|
23
24
|
#include <algorithm>
|
@@ -35,19 +36,16 @@
|
|
35
36
|
#include "absl/random/random.h"
|
36
37
|
#include "absl/status/status.h"
|
37
38
|
#include "absl/status/statusor.h"
|
39
|
+
#include "absl/strings/str_cat.h"
|
40
|
+
#include "absl/strings/str_join.h"
|
38
41
|
#include "absl/strings/string_view.h"
|
39
42
|
#include "absl/types/variant.h"
|
40
43
|
|
41
44
|
#include <grpc/impl/codegen/connectivity_state.h>
|
42
|
-
#include <grpc/impl/codegen/grpc_types.h>
|
43
45
|
#include <grpc/support/alloc.h>
|
44
46
|
#include <grpc/support/log.h>
|
45
47
|
|
46
|
-
#include "src/core/ext/filters/client_channel/lb_policy.h"
|
47
48
|
#include "src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h"
|
48
|
-
#include "src/core/ext/filters/client_channel/lb_policy_factory.h"
|
49
|
-
#include "src/core/ext/filters/client_channel/lb_policy_registry.h"
|
50
|
-
#include "src/core/ext/filters/client_channel/subchannel_interface.h"
|
51
49
|
#include "src/core/lib/address_utils/sockaddr_utils.h"
|
52
50
|
#include "src/core/lib/channel/channel_args.h"
|
53
51
|
#include "src/core/lib/debug/trace.h"
|
@@ -57,15 +55,19 @@
|
|
57
55
|
#include "src/core/lib/gprpp/orphanable.h"
|
58
56
|
#include "src/core/lib/gprpp/ref_counted.h"
|
59
57
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
58
|
+
#include "src/core/lib/gprpp/work_serializer.h"
|
60
59
|
#include "src/core/lib/iomgr/closure.h"
|
61
60
|
#include "src/core/lib/iomgr/error.h"
|
62
61
|
#include "src/core/lib/iomgr/exec_ctx.h"
|
63
62
|
#include "src/core/lib/iomgr/iomgr_fwd.h"
|
64
63
|
#include "src/core/lib/iomgr/pollset_set.h"
|
65
64
|
#include "src/core/lib/iomgr/timer.h"
|
66
|
-
#include "src/core/lib/iomgr/work_serializer.h"
|
67
65
|
#include "src/core/lib/json/json.h"
|
68
66
|
#include "src/core/lib/json/json_util.h"
|
67
|
+
#include "src/core/lib/load_balancing/lb_policy.h"
|
68
|
+
#include "src/core/lib/load_balancing/lb_policy_factory.h"
|
69
|
+
#include "src/core/lib/load_balancing/lb_policy_registry.h"
|
70
|
+
#include "src/core/lib/load_balancing/subchannel_interface.h"
|
69
71
|
#include "src/core/lib/resolver/server_address.h"
|
70
72
|
#include "src/core/lib/transport/connectivity_state.h"
|
71
73
|
|
@@ -84,7 +86,8 @@ bool XdsOutlierDetectionEnabled() {
|
|
84
86
|
|
85
87
|
namespace {
|
86
88
|
|
87
|
-
constexpr
|
89
|
+
constexpr absl::string_view kOutlierDetection =
|
90
|
+
"outlier_detection_experimental";
|
88
91
|
|
89
92
|
// Config for xDS Cluster Impl LB policy.
|
90
93
|
class OutlierDetectionLbConfig : public LoadBalancingPolicy::Config {
|
@@ -95,13 +98,11 @@ class OutlierDetectionLbConfig : public LoadBalancingPolicy::Config {
|
|
95
98
|
: outlier_detection_config_(outlier_detection_config),
|
96
99
|
child_policy_(std::move(child_policy)) {}
|
97
100
|
|
98
|
-
|
101
|
+
absl::string_view name() const override { return kOutlierDetection; }
|
99
102
|
|
100
103
|
bool CountingEnabled() const {
|
101
|
-
return (
|
102
|
-
|
103
|
-
(outlier_detection_config_.success_rate_ejection.has_value() ||
|
104
|
-
outlier_detection_config_.failure_percentage_ejection.has_value()));
|
104
|
+
return outlier_detection_config_.success_rate_ejection.has_value() ||
|
105
|
+
outlier_detection_config_.failure_percentage_ejection.has_value();
|
105
106
|
}
|
106
107
|
|
107
108
|
const OutlierDetectionConfig& outlier_detection_config() const {
|
@@ -122,7 +123,7 @@ class OutlierDetectionLb : public LoadBalancingPolicy {
|
|
122
123
|
public:
|
123
124
|
explicit OutlierDetectionLb(Args args);
|
124
125
|
|
125
|
-
|
126
|
+
absl::string_view name() const override { return kOutlierDetection; }
|
126
127
|
|
127
128
|
void UpdateLocked(UpdateArgs args) override;
|
128
129
|
void ExitIdleLocked() override;
|
@@ -282,7 +283,7 @@ class OutlierDetectionLb : public LoadBalancingPolicy {
|
|
282
283
|
}
|
283
284
|
}
|
284
285
|
|
285
|
-
|
286
|
+
bool MaybeUneject(uint64_t base_ejection_time_in_millis,
|
286
287
|
uint64_t max_ejection_time_in_millis) {
|
287
288
|
if (!ejection_time_.has_value()) {
|
288
289
|
if (multiplier_ > 0) {
|
@@ -297,8 +298,15 @@ class OutlierDetectionLb : public LoadBalancingPolicy {
|
|
297
298
|
max_ejection_time_in_millis)));
|
298
299
|
if (change_time < ExecCtx::Get()->Now()) {
|
299
300
|
Uneject();
|
301
|
+
return true;
|
300
302
|
}
|
301
303
|
}
|
304
|
+
return false;
|
305
|
+
}
|
306
|
+
|
307
|
+
void DisableEjection() {
|
308
|
+
Uneject();
|
309
|
+
multiplier_ = 0;
|
302
310
|
}
|
303
311
|
|
304
312
|
private:
|
@@ -347,7 +355,7 @@ class OutlierDetectionLb : public LoadBalancingPolicy {
|
|
347
355
|
}
|
348
356
|
|
349
357
|
RefCountedPtr<SubchannelInterface> CreateSubchannel(
|
350
|
-
ServerAddress address, const
|
358
|
+
ServerAddress address, const ChannelArgs& args) override;
|
351
359
|
void UpdateState(grpc_connectivity_state state, const absl::Status& status,
|
352
360
|
std::unique_ptr<SubchannelPicker> picker) override;
|
353
361
|
void RequestReresolution() override;
|
@@ -387,7 +395,7 @@ class OutlierDetectionLb : public LoadBalancingPolicy {
|
|
387
395
|
void ShutdownLocked() override;
|
388
396
|
|
389
397
|
OrphanablePtr<LoadBalancingPolicy> CreateChildPolicyLocked(
|
390
|
-
const
|
398
|
+
const ChannelArgs& args);
|
391
399
|
|
392
400
|
void MaybeUpdatePickerLocked();
|
393
401
|
|
@@ -596,9 +604,17 @@ void OutlierDetectionLb::UpdateLocked(UpdateArgs args) {
|
|
596
604
|
// Update outlier detection timer.
|
597
605
|
if (!config_->CountingEnabled()) {
|
598
606
|
// No need for timer. Cancel the current timer, if any.
|
607
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_outlier_detection_lb_trace)) {
|
608
|
+
gpr_log(GPR_INFO,
|
609
|
+
"[outlier_detection_lb %p] counting disabled, cancelling timer",
|
610
|
+
this);
|
611
|
+
}
|
599
612
|
ejection_timer_.reset();
|
600
613
|
} else if (ejection_timer_ == nullptr) {
|
601
614
|
// No timer running. Start it now.
|
615
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_outlier_detection_lb_trace)) {
|
616
|
+
gpr_log(GPR_INFO, "[outlier_detection_lb %p] starting timer", this);
|
617
|
+
}
|
602
618
|
ejection_timer_ =
|
603
619
|
MakeOrphanable<EjectionTimer>(Ref(), ExecCtx::Get()->Now());
|
604
620
|
for (const auto& p : subchannel_state_map_) {
|
@@ -610,13 +626,15 @@ void OutlierDetectionLb::UpdateLocked(UpdateArgs args) {
|
|
610
626
|
// with the same start time.
|
611
627
|
// Note that if the new deadline is in the past, the timer will fire
|
612
628
|
// immediately.
|
629
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_outlier_detection_lb_trace)) {
|
630
|
+
gpr_log(GPR_INFO,
|
631
|
+
"[outlier_detection_lb %p] interval changed, replacing timer",
|
632
|
+
this);
|
633
|
+
}
|
613
634
|
ejection_timer_ =
|
614
635
|
MakeOrphanable<EjectionTimer>(Ref(), ejection_timer_->StartTime());
|
615
636
|
}
|
616
|
-
//
|
617
|
-
if (child_policy_ == nullptr) {
|
618
|
-
child_policy_ = CreateChildPolicyLocked(args.args);
|
619
|
-
}
|
637
|
+
// Update subchannel state map.
|
620
638
|
if (args.addresses.ok()) {
|
621
639
|
std::set<std::string> current_addresses;
|
622
640
|
for (const ServerAddress& address : *args.addresses) {
|
@@ -624,6 +642,14 @@ void OutlierDetectionLb::UpdateLocked(UpdateArgs args) {
|
|
624
642
|
auto& subchannel_state = subchannel_state_map_[address_key];
|
625
643
|
if (subchannel_state == nullptr) {
|
626
644
|
subchannel_state = MakeRefCounted<SubchannelState>();
|
645
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_outlier_detection_lb_trace)) {
|
646
|
+
gpr_log(GPR_INFO,
|
647
|
+
"[outlier_detection_lb %p] adding map entry for %s (%p)",
|
648
|
+
this, address_key.c_str(), subchannel_state.get());
|
649
|
+
}
|
650
|
+
} else if (!config_->CountingEnabled()) {
|
651
|
+
// If counting is not enabled, reset state.
|
652
|
+
subchannel_state->DisableEjection();
|
627
653
|
}
|
628
654
|
current_addresses.emplace(address_key);
|
629
655
|
}
|
@@ -632,18 +658,28 @@ void OutlierDetectionLb::UpdateLocked(UpdateArgs args) {
|
|
632
658
|
if (current_addresses.find(it->first) == current_addresses.end()) {
|
633
659
|
// remove each map entry for a subchannel address not in the updated
|
634
660
|
// address list.
|
661
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_outlier_detection_lb_trace)) {
|
662
|
+
gpr_log(GPR_INFO,
|
663
|
+
"[outlier_detection_lb %p] removing map entry for %s (%p)",
|
664
|
+
this, it->first.c_str(), it->second.get());
|
665
|
+
}
|
635
666
|
it = subchannel_state_map_.erase(it);
|
636
667
|
} else {
|
637
668
|
++it;
|
638
669
|
}
|
639
670
|
}
|
640
671
|
}
|
641
|
-
//
|
672
|
+
// Create child policy if needed.
|
673
|
+
if (child_policy_ == nullptr) {
|
674
|
+
child_policy_ = CreateChildPolicyLocked(args.args);
|
675
|
+
}
|
676
|
+
// Update child policy.
|
642
677
|
UpdateArgs update_args;
|
643
678
|
update_args.addresses = std::move(args.addresses);
|
679
|
+
update_args.resolution_note = std::move(args.resolution_note);
|
644
680
|
update_args.config = config_->child_policy();
|
645
|
-
update_args.args = grpc_channel_args_copy(args.args);
|
646
681
|
// Update the policy.
|
682
|
+
update_args.args = std::move(args.args);
|
647
683
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_outlier_detection_lb_trace)) {
|
648
684
|
gpr_log(GPR_INFO,
|
649
685
|
"[outlier_detection_lb %p] Updating child policy handler %p", this,
|
@@ -669,7 +705,7 @@ void OutlierDetectionLb::MaybeUpdatePickerLocked() {
|
|
669
705
|
}
|
670
706
|
|
671
707
|
OrphanablePtr<LoadBalancingPolicy> OutlierDetectionLb::CreateChildPolicyLocked(
|
672
|
-
const
|
708
|
+
const ChannelArgs& args) {
|
673
709
|
LoadBalancingPolicy::Args lb_policy_args;
|
674
710
|
lb_policy_args.work_serializer = work_serializer();
|
675
711
|
lb_policy_args.args = args;
|
@@ -696,7 +732,7 @@ OrphanablePtr<LoadBalancingPolicy> OutlierDetectionLb::CreateChildPolicyLocked(
|
|
696
732
|
//
|
697
733
|
|
698
734
|
RefCountedPtr<SubchannelInterface> OutlierDetectionLb::Helper::CreateSubchannel(
|
699
|
-
ServerAddress address, const
|
735
|
+
ServerAddress address, const ChannelArgs& args) {
|
700
736
|
if (outlier_detection_policy_->shutting_down_) return nullptr;
|
701
737
|
std::string key = MakeKeyForAddress(address);
|
702
738
|
RefCountedPtr<SubchannelState> subchannel_state;
|
@@ -721,8 +757,7 @@ void OutlierDetectionLb::Helper::UpdateState(
|
|
721
757
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_outlier_detection_lb_trace)) {
|
722
758
|
gpr_log(GPR_INFO,
|
723
759
|
"[outlier_detection_lb %p] child connectivity state update: "
|
724
|
-
"state=%s (%s) "
|
725
|
-
"picker=%p",
|
760
|
+
"state=%s (%s) picker=%p",
|
726
761
|
outlier_detection_policy_.get(), ConnectivityStateName(state),
|
727
762
|
status.ToString().c_str(), picker.get());
|
728
763
|
}
|
@@ -758,12 +793,14 @@ void OutlierDetectionLb::Helper::AddTraceEvent(TraceSeverity severity,
|
|
758
793
|
OutlierDetectionLb::EjectionTimer::EjectionTimer(
|
759
794
|
RefCountedPtr<OutlierDetectionLb> parent, Timestamp start_time)
|
760
795
|
: parent_(std::move(parent)), start_time_(start_time) {
|
796
|
+
auto interval = parent_->config_->outlier_detection_config().interval;
|
797
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_outlier_detection_lb_trace)) {
|
798
|
+
gpr_log(GPR_INFO, "[outlier_detection_lb %p] ejection timer will run in %s",
|
799
|
+
parent_.get(), interval.ToString().c_str());
|
800
|
+
}
|
761
801
|
GRPC_CLOSURE_INIT(&on_timer_, OnTimer, this, nullptr);
|
762
802
|
Ref().release();
|
763
|
-
grpc_timer_init(
|
764
|
-
&timer_,
|
765
|
-
start_time_ + parent_->config_->outlier_detection_config().interval,
|
766
|
-
&on_timer_);
|
803
|
+
grpc_timer_init(&timer_, start_time_ + interval, &on_timer_);
|
767
804
|
}
|
768
805
|
|
769
806
|
void OutlierDetectionLb::EjectionTimer::Orphan() {
|
@@ -784,6 +821,10 @@ void OutlierDetectionLb::EjectionTimer::OnTimer(void* arg,
|
|
784
821
|
|
785
822
|
void OutlierDetectionLb::EjectionTimer::OnTimerLocked(grpc_error_handle error) {
|
786
823
|
if (GRPC_ERROR_IS_NONE(error) && timer_pending_) {
|
824
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_outlier_detection_lb_trace)) {
|
825
|
+
gpr_log(GPR_INFO, "[outlier_detection_lb %p] ejection timer running",
|
826
|
+
parent_.get());
|
827
|
+
}
|
787
828
|
std::map<SubchannelState*, double> success_rate_ejection_candidates;
|
788
829
|
std::map<SubchannelState*, double> failure_percentage_ejection_candidates;
|
789
830
|
size_t ejected_host_count = 0;
|
@@ -821,36 +862,71 @@ void OutlierDetectionLb::EjectionTimer::OnTimerLocked(grpc_error_handle error) {
|
|
821
862
|
}
|
822
863
|
}
|
823
864
|
}
|
865
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_outlier_detection_lb_trace)) {
|
866
|
+
gpr_log(GPR_INFO,
|
867
|
+
"[outlier_detection_lb %p] found %" PRIuPTR
|
868
|
+
" success rate candidates and %" PRIuPTR
|
869
|
+
" failure percentage candidates; ejected_host_count=%" PRIuPTR
|
870
|
+
"; success_rate_sum=%.3f",
|
871
|
+
parent_.get(), success_rate_ejection_candidates.size(),
|
872
|
+
failure_percentage_ejection_candidates.size(), ejected_host_count,
|
873
|
+
success_rate_sum);
|
874
|
+
}
|
824
875
|
// success rate algorithm
|
825
876
|
if (!success_rate_ejection_candidates.empty() &&
|
826
877
|
success_rate_ejection_candidates.size() >=
|
827
878
|
config.success_rate_ejection->minimum_hosts) {
|
879
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_outlier_detection_lb_trace)) {
|
880
|
+
gpr_log(GPR_INFO,
|
881
|
+
"[outlier_detection_lb %p] running success rate algorithm",
|
882
|
+
parent_.get());
|
883
|
+
}
|
828
884
|
// calculate ejection threshold: (mean - stdev *
|
829
885
|
// (success_rate_ejection.stdev_factor / 1000))
|
830
886
|
double mean = success_rate_sum / success_rate_ejection_candidates.size();
|
831
887
|
double variance = 0;
|
832
|
-
|
833
|
-
|
834
|
-
|
835
|
-
variance += std::pow(v.second - mean, 2);
|
836
|
-
});
|
888
|
+
for (const auto& p : success_rate_ejection_candidates) {
|
889
|
+
variance += std::pow(p.second - mean, 2);
|
890
|
+
}
|
837
891
|
variance /= success_rate_ejection_candidates.size();
|
838
892
|
double stdev = std::sqrt(variance);
|
839
893
|
const double success_rate_stdev_factor =
|
840
894
|
static_cast<double>(config.success_rate_ejection->stdev_factor) /
|
841
895
|
1000;
|
842
896
|
double ejection_threshold = mean - stdev * success_rate_stdev_factor;
|
897
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_outlier_detection_lb_trace)) {
|
898
|
+
gpr_log(GPR_INFO,
|
899
|
+
"[outlier_detection_lb %p] stdev=%.3f, ejection_threshold=%.3f",
|
900
|
+
parent_.get(), stdev, ejection_threshold);
|
901
|
+
}
|
843
902
|
for (auto& candidate : success_rate_ejection_candidates) {
|
903
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_outlier_detection_lb_trace)) {
|
904
|
+
gpr_log(GPR_INFO,
|
905
|
+
"[outlier_detection_lb %p] checking candidate %p: "
|
906
|
+
"success_rate=%.3f",
|
907
|
+
parent_.get(), candidate.first, candidate.second);
|
908
|
+
}
|
844
909
|
if (candidate.second < ejection_threshold) {
|
845
910
|
uint32_t random_key = absl::Uniform(bit_gen_, 1, 100);
|
846
911
|
double current_percent = 100.0 * ejected_host_count /
|
847
912
|
parent_->subchannel_state_map_.size();
|
913
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_outlier_detection_lb_trace)) {
|
914
|
+
gpr_log(GPR_INFO,
|
915
|
+
"[outlier_detection_lb %p] random_key=%d "
|
916
|
+
"ejected_host_count=%" PRIuPTR " current_percent=%.3f",
|
917
|
+
parent_.get(), random_key, ejected_host_count,
|
918
|
+
current_percent);
|
919
|
+
}
|
848
920
|
if (random_key <
|
849
921
|
config.success_rate_ejection->enforcement_percentage &&
|
850
922
|
(ejected_host_count == 0 ||
|
851
923
|
(current_percent < config.max_ejection_percent))) {
|
852
924
|
// Eject and record the timestamp for use when ejecting addresses in
|
853
925
|
// this iteration.
|
926
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_outlier_detection_lb_trace)) {
|
927
|
+
gpr_log(GPR_INFO, "[outlier_detection_lb %p] ejecting candidate",
|
928
|
+
parent_.get());
|
929
|
+
}
|
854
930
|
candidate.first->Eject(time_now);
|
855
931
|
++ejected_host_count;
|
856
932
|
}
|
@@ -861,7 +937,19 @@ void OutlierDetectionLb::EjectionTimer::OnTimerLocked(grpc_error_handle error) {
|
|
861
937
|
if (!failure_percentage_ejection_candidates.empty() &&
|
862
938
|
failure_percentage_ejection_candidates.size() >=
|
863
939
|
config.failure_percentage_ejection->minimum_hosts) {
|
940
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_outlier_detection_lb_trace)) {
|
941
|
+
gpr_log(
|
942
|
+
GPR_INFO,
|
943
|
+
"[outlier_detection_lb %p] running failure percentage algorithm",
|
944
|
+
parent_.get());
|
945
|
+
}
|
864
946
|
for (auto& candidate : failure_percentage_ejection_candidates) {
|
947
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_outlier_detection_lb_trace)) {
|
948
|
+
gpr_log(GPR_INFO,
|
949
|
+
"[outlier_detection_lb %p] checking candidate %p: "
|
950
|
+
"success_rate=%.3f",
|
951
|
+
parent_.get(), candidate.first, candidate.second);
|
952
|
+
}
|
865
953
|
// Extra check to make sure success rate algorithm didn't already
|
866
954
|
// eject this backend.
|
867
955
|
if (candidate.first->ejection_time().has_value()) continue;
|
@@ -870,12 +958,23 @@ void OutlierDetectionLb::EjectionTimer::OnTimerLocked(grpc_error_handle error) {
|
|
870
958
|
uint32_t random_key = absl::Uniform(bit_gen_, 1, 100);
|
871
959
|
double current_percent = 100.0 * ejected_host_count /
|
872
960
|
parent_->subchannel_state_map_.size();
|
961
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_outlier_detection_lb_trace)) {
|
962
|
+
gpr_log(GPR_INFO,
|
963
|
+
"[outlier_detection_lb %p] random_key=%d "
|
964
|
+
"ejected_host_count=%" PRIuPTR " current_percent=%.3f",
|
965
|
+
parent_.get(), random_key, ejected_host_count,
|
966
|
+
current_percent);
|
967
|
+
}
|
873
968
|
if (random_key <
|
874
969
|
config.failure_percentage_ejection->enforcement_percentage &&
|
875
970
|
(ejected_host_count == 0 ||
|
876
971
|
(current_percent < config.max_ejection_percent))) {
|
877
972
|
// Eject and record the timestamp for use when ejecting addresses in
|
878
973
|
// this iteration.
|
974
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_outlier_detection_lb_trace)) {
|
975
|
+
gpr_log(GPR_INFO, "[outlier_detection_lb %p] ejecting candidate",
|
976
|
+
parent_.get());
|
977
|
+
}
|
879
978
|
candidate.first->Eject(time_now);
|
880
979
|
++ejected_host_count;
|
881
980
|
}
|
@@ -890,8 +989,14 @@ void OutlierDetectionLb::EjectionTimer::OnTimerLocked(grpc_error_handle error) {
|
|
890
989
|
// address.
|
891
990
|
for (auto& state : parent_->subchannel_state_map_) {
|
892
991
|
auto* subchannel_state = state.second.get();
|
893
|
-
|
894
|
-
|
992
|
+
const bool unejected =
|
993
|
+
subchannel_state->MaybeUneject(config.base_ejection_time.millis(),
|
994
|
+
config.max_ejection_time.millis());
|
995
|
+
if (unejected &&
|
996
|
+
GRPC_TRACE_FLAG_ENABLED(grpc_outlier_detection_lb_trace)) {
|
997
|
+
gpr_log(GPR_INFO, "[outlier_detection_lb %p] unejected address %s (%p)",
|
998
|
+
parent_.get(), state.first.c_str(), subchannel_state);
|
999
|
+
}
|
895
1000
|
}
|
896
1001
|
timer_pending_ = false;
|
897
1002
|
parent_->ejection_timer_ =
|
@@ -912,28 +1017,27 @@ class OutlierDetectionLbFactory : public LoadBalancingPolicyFactory {
|
|
912
1017
|
return MakeOrphanable<OutlierDetectionLb>(std::move(args));
|
913
1018
|
}
|
914
1019
|
|
915
|
-
|
1020
|
+
absl::string_view name() const override { return kOutlierDetection; }
|
916
1021
|
|
917
|
-
RefCountedPtr<LoadBalancingPolicy::Config
|
918
|
-
|
919
|
-
GPR_DEBUG_ASSERT(error != nullptr && GRPC_ERROR_IS_NONE(*error));
|
1022
|
+
absl::StatusOr<RefCountedPtr<LoadBalancingPolicy::Config>>
|
1023
|
+
ParseLoadBalancingConfig(const Json& json) const override {
|
920
1024
|
if (json.type() == Json::Type::JSON_NULL) {
|
921
1025
|
// This policy was configured in the deprecated loadBalancingPolicy
|
922
1026
|
// field or in the client API.
|
923
|
-
|
1027
|
+
return absl::InvalidArgumentError(
|
924
1028
|
"field:loadBalancingPolicy error:outlier_detection policy requires "
|
925
1029
|
"configuration. Please use loadBalancingConfig field of service "
|
926
1030
|
"config instead.");
|
927
|
-
return nullptr;
|
928
1031
|
}
|
1032
|
+
std::vector<std::string> errors;
|
929
1033
|
std::vector<grpc_error_handle> error_list;
|
930
1034
|
// Outlier detection config
|
931
1035
|
OutlierDetectionConfig outlier_detection_config;
|
932
1036
|
auto it = json.object_value().find("successRateEjection");
|
933
1037
|
if (it != json.object_value().end()) {
|
934
1038
|
if (it->second.type() != Json::Type::OBJECT) {
|
935
|
-
|
936
|
-
"field:successRateEjection error:type must be object")
|
1039
|
+
errors.emplace_back(
|
1040
|
+
"field:successRateEjection error:type must be object");
|
937
1041
|
} else {
|
938
1042
|
OutlierDetectionConfig::SuccessRateEjection success_config;
|
939
1043
|
const Json::Object& object = it->second.object_value();
|
@@ -955,8 +1059,8 @@ class OutlierDetectionLbFactory : public LoadBalancingPolicyFactory {
|
|
955
1059
|
it = json.object_value().find("failurePercentageEjection");
|
956
1060
|
if (it != json.object_value().end()) {
|
957
1061
|
if (it->second.type() != Json::Type::OBJECT) {
|
958
|
-
|
959
|
-
"field:successRateEjection error:type must be object")
|
1062
|
+
errors.emplace_back(
|
1063
|
+
"field:successRateEjection error:type must be object");
|
960
1064
|
} else {
|
961
1065
|
OutlierDetectionConfig::FailurePercentageEjection failure_config;
|
962
1066
|
const Json::Object& object = it->second.object_value();
|
@@ -976,7 +1080,7 @@ class OutlierDetectionLbFactory : public LoadBalancingPolicyFactory {
|
|
976
1080
|
}
|
977
1081
|
ParseJsonObjectFieldAsDuration(json.object_value(), "interval",
|
978
1082
|
&outlier_detection_config.interval,
|
979
|
-
&error_list);
|
1083
|
+
&error_list, /*required=*/false);
|
980
1084
|
ParseJsonObjectFieldAsDuration(json.object_value(), "baseEjectionTime",
|
981
1085
|
&outlier_detection_config.base_ejection_time,
|
982
1086
|
&error_list, /*required=*/false);
|
@@ -993,24 +1097,26 @@ class OutlierDetectionLbFactory : public LoadBalancingPolicyFactory {
|
|
993
1097
|
RefCountedPtr<LoadBalancingPolicy::Config> child_policy;
|
994
1098
|
it = json.object_value().find("childPolicy");
|
995
1099
|
if (it == json.object_value().end()) {
|
996
|
-
|
997
|
-
"field:childPolicy error:required field missing"));
|
1100
|
+
errors.emplace_back("field:childPolicy error:required field missing");
|
998
1101
|
} else {
|
999
|
-
|
1000
|
-
|
1001
|
-
|
1002
|
-
|
1003
|
-
|
1004
|
-
|
1005
|
-
|
1006
|
-
|
1007
|
-
GRPC_ERROR_CREATE_FROM_VECTOR("field:childPolicy", &child_errors));
|
1102
|
+
auto child_policy_config =
|
1103
|
+
LoadBalancingPolicyRegistry::ParseLoadBalancingConfig(it->second);
|
1104
|
+
if (!child_policy_config.ok()) {
|
1105
|
+
errors.emplace_back(
|
1106
|
+
absl::StrCat("error parsing childPolicy field: ",
|
1107
|
+
child_policy_config.status().message()));
|
1108
|
+
} else {
|
1109
|
+
child_policy = std::move(*child_policy_config);
|
1008
1110
|
}
|
1009
1111
|
}
|
1010
|
-
|
1011
|
-
|
1012
|
-
|
1013
|
-
|
1112
|
+
for (auto& error : error_list) {
|
1113
|
+
errors.emplace_back(grpc_error_std_string(error));
|
1114
|
+
GRPC_ERROR_UNREF(error);
|
1115
|
+
}
|
1116
|
+
if (!errors.empty()) {
|
1117
|
+
return absl::InvalidArgumentError(
|
1118
|
+
absl::StrCat("outlier_detection_experimental LB policy config: [",
|
1119
|
+
absl::StrJoin(errors, "; "), "]"));
|
1014
1120
|
}
|
1015
1121
|
return MakeRefCounted<OutlierDetectionLbConfig>(outlier_detection_config,
|
1016
1122
|
std::move(child_policy));
|
@@ -30,7 +30,7 @@ namespace grpc_core {
|
|
30
30
|
bool XdsOutlierDetectionEnabled();
|
31
31
|
|
32
32
|
struct OutlierDetectionConfig {
|
33
|
-
Duration interval = Duration::
|
33
|
+
Duration interval = Duration::Seconds(10);
|
34
34
|
Duration base_ejection_time = Duration::Milliseconds(30000);
|
35
35
|
Duration max_ejection_time = Duration::Milliseconds(30000);
|
36
36
|
uint32_t max_ejection_percent = 10;
|
@@ -39,16 +39,40 @@ struct OutlierDetectionConfig {
|
|
39
39
|
uint32_t enforcement_percentage = 0;
|
40
40
|
uint32_t minimum_hosts = 5;
|
41
41
|
uint32_t request_volume = 100;
|
42
|
+
|
43
|
+
bool operator==(const SuccessRateEjection& other) const {
|
44
|
+
return stdev_factor == other.stdev_factor &&
|
45
|
+
enforcement_percentage == other.enforcement_percentage &&
|
46
|
+
minimum_hosts == other.minimum_hosts &&
|
47
|
+
request_volume == other.request_volume;
|
48
|
+
}
|
42
49
|
};
|
43
50
|
struct FailurePercentageEjection {
|
44
51
|
uint32_t threshold = 85;
|
45
52
|
uint32_t enforcement_percentage = 0;
|
46
53
|
uint32_t minimum_hosts = 5;
|
47
54
|
uint32_t request_volume = 50;
|
55
|
+
|
56
|
+
bool operator==(const FailurePercentageEjection& other) const {
|
57
|
+
return threshold == other.threshold &&
|
58
|
+
enforcement_percentage == other.enforcement_percentage &&
|
59
|
+
minimum_hosts == other.minimum_hosts &&
|
60
|
+
request_volume == other.request_volume;
|
61
|
+
}
|
48
62
|
};
|
49
63
|
absl::optional<SuccessRateEjection> success_rate_ejection;
|
50
64
|
absl::optional<FailurePercentageEjection> failure_percentage_ejection;
|
65
|
+
|
66
|
+
bool operator==(const OutlierDetectionConfig& other) const {
|
67
|
+
return interval == other.interval &&
|
68
|
+
base_ejection_time == other.base_ejection_time &&
|
69
|
+
max_ejection_time == other.max_ejection_time &&
|
70
|
+
max_ejection_percent == other.max_ejection_percent &&
|
71
|
+
success_rate_ejection == other.success_rate_ejection &&
|
72
|
+
failure_percentage_ejection == other.failure_percentage_ejection;
|
73
|
+
}
|
51
74
|
};
|
75
|
+
|
52
76
|
} // namespace grpc_core
|
53
77
|
|
54
78
|
#endif // GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_OUTLIER_DETECTION_OUTLIER_DETECTION_H
|
@@ -29,24 +29,24 @@
|
|
29
29
|
#include "absl/status/status.h"
|
30
30
|
#include "absl/status/statusor.h"
|
31
31
|
#include "absl/strings/str_cat.h"
|
32
|
+
#include "absl/strings/string_view.h"
|
32
33
|
#include "absl/types/optional.h"
|
33
34
|
|
34
35
|
#include <grpc/impl/codegen/connectivity_state.h>
|
35
36
|
#include <grpc/impl/codegen/grpc_types.h>
|
36
37
|
#include <grpc/support/log.h>
|
37
38
|
|
38
|
-
#include "src/core/ext/filters/client_channel/lb_policy.h"
|
39
39
|
#include "src/core/ext/filters/client_channel/lb_policy/subchannel_list.h"
|
40
|
-
#include "src/core/ext/filters/client_channel/lb_policy_factory.h"
|
41
|
-
#include "src/core/ext/filters/client_channel/lb_policy_registry.h"
|
42
|
-
#include "src/core/ext/filters/client_channel/subchannel_interface.h"
|
43
40
|
#include "src/core/lib/channel/channel_args.h"
|
44
41
|
#include "src/core/lib/debug/trace.h"
|
45
42
|
#include "src/core/lib/gprpp/debug_location.h"
|
46
43
|
#include "src/core/lib/gprpp/orphanable.h"
|
47
44
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
48
|
-
#include "src/core/lib/iomgr/error.h"
|
49
45
|
#include "src/core/lib/json/json.h"
|
46
|
+
#include "src/core/lib/load_balancing/lb_policy.h"
|
47
|
+
#include "src/core/lib/load_balancing/lb_policy_factory.h"
|
48
|
+
#include "src/core/lib/load_balancing/lb_policy_registry.h"
|
49
|
+
#include "src/core/lib/load_balancing/subchannel_interface.h"
|
50
50
|
#include "src/core/lib/resolver/server_address.h"
|
51
51
|
#include "src/core/lib/transport/connectivity_state.h"
|
52
52
|
|
@@ -60,13 +60,13 @@ namespace {
|
|
60
60
|
// pick_first LB policy
|
61
61
|
//
|
62
62
|
|
63
|
-
constexpr
|
63
|
+
constexpr absl::string_view kPickFirst = "pick_first";
|
64
64
|
|
65
65
|
class PickFirst : public LoadBalancingPolicy {
|
66
66
|
public:
|
67
67
|
explicit PickFirst(Args args);
|
68
68
|
|
69
|
-
|
69
|
+
absl::string_view name() const override { return kPickFirst; }
|
70
70
|
|
71
71
|
void UpdateLocked(UpdateArgs args) override;
|
72
72
|
void ExitIdleLocked() override;
|
@@ -101,7 +101,7 @@ class PickFirst : public LoadBalancingPolicy {
|
|
101
101
|
PickFirstSubchannelData> {
|
102
102
|
public:
|
103
103
|
PickFirstSubchannelList(PickFirst* policy, ServerAddressList addresses,
|
104
|
-
const
|
104
|
+
const ChannelArgs& args)
|
105
105
|
: SubchannelList(policy,
|
106
106
|
(GRPC_TRACE_FLAG_ENABLED(grpc_lb_pick_first_trace)
|
107
107
|
? "PickFirstSubchannelList"
|
@@ -228,7 +228,8 @@ void PickFirst::AttemptToConnectUsingLatestUpdateArgsLocked() {
|
|
228
228
|
latest_pending_subchannel_list_.get());
|
229
229
|
}
|
230
230
|
latest_pending_subchannel_list_ = MakeOrphanable<PickFirstSubchannelList>(
|
231
|
-
this, std::move(addresses),
|
231
|
+
this, std::move(addresses), latest_update_args_.args);
|
232
|
+
latest_pending_subchannel_list_->StartWatchingLocked();
|
232
233
|
// Empty update or no valid subchannels. Put the channel in
|
233
234
|
// TRANSIENT_FAILURE.
|
234
235
|
if (latest_pending_subchannel_list_->num_subchannels() == 0) {
|
@@ -273,12 +274,7 @@ void PickFirst::UpdateLocked(UpdateArgs args) {
|
|
273
274
|
}
|
274
275
|
}
|
275
276
|
// Add GRPC_ARG_INHIBIT_HEALTH_CHECKING channel arg.
|
276
|
-
|
277
|
-
const_cast<char*>(GRPC_ARG_INHIBIT_HEALTH_CHECKING), 1);
|
278
|
-
const grpc_channel_args* new_args =
|
279
|
-
grpc_channel_args_copy_and_add(args.args, &new_arg, 1);
|
280
|
-
std::swap(new_args, args.args);
|
281
|
-
grpc_channel_args_destroy(new_args);
|
277
|
+
args.args = args.args.Set(GRPC_ARG_INHIBIT_HEALTH_CHECKING, 1);
|
282
278
|
// If the update contains a resolver error and we have a previous update
|
283
279
|
// that was not a resolver error, keep using the previous addresses.
|
284
280
|
if (!args.addresses.ok() && latest_update_args_.config != nullptr) {
|
@@ -507,7 +503,7 @@ void PickFirst::PickFirstSubchannelData::ProcessUnselectedReadyLocked() {
|
|
507
503
|
|
508
504
|
class PickFirstConfig : public LoadBalancingPolicy::Config {
|
509
505
|
public:
|
510
|
-
|
506
|
+
absl::string_view name() const override { return kPickFirst; }
|
511
507
|
};
|
512
508
|
|
513
509
|
//
|
@@ -521,10 +517,10 @@ class PickFirstFactory : public LoadBalancingPolicyFactory {
|
|
521
517
|
return MakeOrphanable<PickFirst>(std::move(args));
|
522
518
|
}
|
523
519
|
|
524
|
-
|
520
|
+
absl::string_view name() const override { return kPickFirst; }
|
525
521
|
|
526
|
-
RefCountedPtr<LoadBalancingPolicy::Config
|
527
|
-
|
522
|
+
absl::StatusOr<RefCountedPtr<LoadBalancingPolicy::Config>>
|
523
|
+
ParseLoadBalancingConfig(const Json& /*json*/) const override {
|
528
524
|
return MakeRefCounted<PickFirstConfig>();
|
529
525
|
}
|
530
526
|
};
|