grpc 1.48.0 → 1.50.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 +114 -150
- data/include/grpc/event_engine/endpoint_config.h +11 -5
- data/include/grpc/event_engine/event_engine.h +20 -17
- data/include/grpc/impl/codegen/atm_gcc_atomic.h +19 -28
- data/include/grpc/impl/codegen/atm_gcc_sync.h +0 -2
- data/include/grpc/impl/codegen/atm_windows.h +0 -2
- data/include/grpc/impl/codegen/grpc_types.h +9 -8
- data/include/grpc/impl/codegen/port_platform.h +0 -8
- data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +6 -6
- data/src/core/ext/filters/channel_idle/channel_idle_filter.h +2 -2
- data/src/core/ext/filters/client_channel/backup_poller.cc +4 -6
- data/src/core/ext/filters/client_channel/client_channel.cc +154 -218
- data/src/core/ext/filters/client_channel/client_channel.h +16 -9
- 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 +0 -16
- 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 +55 -74
- data/src/core/ext/filters/client_channel/http_proxy.h +15 -11
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +20 -16
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +11 -10
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +0 -2
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +181 -194
- 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.cc +20 -11
- 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 +250 -146
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +41 -1
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +35 -32
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +195 -299
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +237 -250
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +12 -7
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +431 -498
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +31 -30
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +27 -27
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +108 -124
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +68 -76
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +131 -227
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +126 -121
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +325 -304
- 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 +172 -101
- 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 +18 -16
- 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 +51 -32
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +87 -41
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +16 -6
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +5 -13
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +167 -168
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +40 -32
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +7 -10
- data/src/core/ext/filters/client_channel/retry_filter.cc +25 -36
- 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 +86 -121
- data/src/core/ext/filters/client_channel/subchannel.h +20 -11
- 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 +4 -6
- 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 +24 -19
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +9 -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 +3 -5
- 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/message_compress/message_compress_filter.cc +2 -4
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +0 -2
- data/src/core/ext/filters/http/server/http_server_filter.cc +3 -5
- 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 +40 -63
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +86 -107
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +4 -6
- data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +155 -295
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +3 -2
- data/src/core/ext/transport/chttp2/transport/decode_huff.cc +287 -0
- data/src/core/ext/transport/chttp2/transport/decode_huff.h +1018 -0
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +139 -42
- data/src/core/ext/transport/chttp2/transport/flow_control.h +12 -6
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +1 -2
- data/src/core/ext/transport/chttp2/transport/hpack_constants.h +7 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +27 -28
- 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 +30 -38
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +1 -10
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +11 -6
- data/src/core/ext/transport/chttp2/transport/internal.h +4 -1
- data/src/core/ext/transport/chttp2/transport/parsing.cc +44 -0
- data/src/core/ext/transport/chttp2/transport/writing.cc +3 -14
- data/src/core/ext/transport/inproc/inproc_transport.cc +41 -77
- 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/certificate_provider_store.cc +63 -3
- data/src/core/ext/xds/certificate_provider_store.h +9 -1
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +5 -5
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +1 -1
- data/src/core/ext/xds/upb_utils.h +0 -21
- data/src/core/ext/xds/xds_api.cc +73 -102
- data/src/core/ext/xds/xds_api.h +26 -28
- data/src/core/ext/xds/xds_bootstrap.cc +5 -550
- data/src/core/ext/xds/xds_bootstrap.h +39 -91
- data/src/core/ext/xds/xds_bootstrap_grpc.cc +370 -0
- data/src/core/ext/xds/xds_bootstrap_grpc.h +169 -0
- 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 +732 -1317
- data/src/core/ext/xds/xds_client.h +33 -59
- data/src/core/ext/xds/xds_client_grpc.cc +229 -0
- data/src/core/ext/xds/xds_client_grpc.h +79 -0
- data/src/core/ext/xds/xds_client_stats.cc +4 -4
- data/src/core/ext/xds/xds_cluster.cc +162 -165
- data/src/core/ext/xds/xds_cluster.h +8 -7
- data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +12 -14
- data/src/core/ext/xds/xds_cluster_specifier_plugin.h +1 -0
- data/src/core/ext/xds/xds_common_types.cc +140 -108
- data/src/core/ext/xds/xds_common_types.h +6 -7
- data/src/core/ext/xds/xds_endpoint.cc +87 -85
- data/src/core/ext/xds/xds_endpoint.h +4 -5
- 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 +21 -22
- data/src/core/ext/xds/xds_lb_policy_registry.h +4 -4
- data/src/core/ext/xds/xds_listener.cc +348 -313
- data/src/core/ext/xds/xds_listener.h +4 -5
- data/src/core/ext/xds/xds_resource_type.h +23 -9
- data/src/core/ext/xds/xds_route_config.cc +193 -191
- 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 +81 -84
- data/src/core/ext/xds/xds_transport.h +86 -0
- data/src/core/ext/xds/xds_transport_grpc.cc +357 -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/backoff/backoff.cc +2 -4
- data/src/core/lib/channel/call_finalization.h +1 -3
- 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 +218 -67
- 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/channel_trace.cc +3 -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.cc +18 -19
- data/src/core/lib/channel/promise_based_filter.h +0 -1
- data/src/core/lib/channel/status_util.cc +27 -0
- data/src/core/lib/channel/status_util.h +10 -0
- data/src/core/lib/config/core_configuration.cc +5 -1
- data/src/core/lib/config/core_configuration.h +81 -35
- data/src/core/lib/debug/stats.cc +39 -46
- data/src/core/lib/debug/stats.h +11 -13
- data/src/core/lib/debug/stats_data.cc +118 -614
- data/src/core/lib/debug/stats_data.h +67 -465
- data/src/core/lib/debug/trace.cc +0 -2
- data/src/core/lib/event_engine/channel_args_endpoint_config.cc +12 -20
- data/src/core/lib/event_engine/channel_args_endpoint_config.h +13 -7
- 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 +101 -0
- data/src/core/lib/event_engine/forkable.h +61 -0
- data/src/core/lib/event_engine/poller.h +56 -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 +87 -30
- data/src/core/lib/event_engine/{iomgr_engine → posix_engine}/timer_manager.h +40 -9
- data/src/core/lib/event_engine/socket_notifier.h +55 -0
- data/src/core/lib/event_engine/thread_pool.cc +195 -0
- data/src/core/lib/event_engine/thread_pool.h +114 -0
- data/src/core/lib/event_engine/time_util.cc +30 -0
- data/src/core/lib/event_engine/time_util.h +32 -0
- data/src/core/lib/event_engine/utils.cc +44 -0
- data/src/core/lib/event_engine/utils.h +36 -0
- data/src/core/lib/event_engine/windows/iocp.cc +155 -0
- data/src/core/lib/event_engine/windows/iocp.h +69 -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/experiments/config.cc +146 -0
- data/src/core/lib/experiments/config.h +43 -0
- data/src/core/lib/experiments/experiments.cc +75 -0
- data/src/core/lib/experiments/experiments.h +56 -0
- data/src/core/lib/gpr/alloc.cc +1 -9
- data/src/core/lib/gpr/log_windows.cc +0 -1
- data/src/core/lib/gpr/string_util_windows.cc +3 -30
- data/src/core/lib/gpr/sync_abseil.cc +0 -14
- data/src/core/lib/gpr/sync_posix.cc +0 -14
- data/src/core/lib/gpr/time.cc +11 -9
- data/src/core/lib/gpr/time_posix.cc +0 -6
- data/src/core/lib/gpr/time_precise.h +1 -1
- data/src/core/lib/gpr/tmpfile_windows.cc +5 -7
- data/src/core/lib/gpr/useful.h +40 -0
- data/src/core/lib/gprpp/bitset.h +3 -13
- data/src/core/lib/gprpp/debug_location.h +39 -7
- data/src/core/lib/{gpr → gprpp}/env.h +25 -12
- data/src/core/lib/{gpr → gprpp}/env_linux.cc +20 -15
- data/src/core/lib/{gpr → gprpp}/env_posix.cc +11 -10
- data/src/core/lib/gprpp/env_windows.cc +56 -0
- data/src/core/lib/gprpp/fork.cc +14 -22
- data/src/core/lib/gprpp/fork.h +0 -8
- data/src/core/lib/gprpp/global_config_env.cc +7 -6
- 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/notification.h +67 -0
- data/src/core/lib/gprpp/packed_table.h +40 -0
- data/src/core/lib/gprpp/ref_counted_ptr.h +20 -34
- data/src/core/lib/gprpp/sorted_pack.h +98 -0
- data/src/core/lib/gprpp/status_helper.cc +1 -0
- data/src/core/lib/gprpp/status_helper.h +6 -0
- data/src/core/lib/gprpp/table.h +9 -2
- data/src/core/lib/gprpp/tchar.cc +49 -0
- data/src/core/lib/gprpp/tchar.h +33 -0
- data/src/core/lib/gprpp/time.cc +21 -0
- data/src/core/lib/gprpp/time.h +55 -0
- 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/gprpp/validation_errors.cc +61 -0
- data/src/core/lib/gprpp/validation_errors.h +110 -0
- 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/{ext/filters/client_channel → lib/handshaker}/proxy_mapper.h +16 -17
- data/src/core/lib/handshaker/proxy_mapper_registry.cc +71 -0
- data/src/core/lib/handshaker/proxy_mapper_registry.h +75 -0
- 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 -34
- data/src/core/lib/iomgr/closure.h +0 -10
- data/src/core/lib/iomgr/combiner.cc +0 -20
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +14 -9
- data/src/core/lib/iomgr/endpoint_pair_windows.cc +2 -2
- 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_epoll1_linux.cc +1 -38
- data/src/core/lib/iomgr/ev_poll_posix.cc +19 -26
- data/src/core/lib/iomgr/exec_ctx.cc +0 -22
- data/src/core/lib/iomgr/exec_ctx.h +7 -31
- data/src/core/lib/iomgr/executor.cc +0 -10
- data/src/core/lib/iomgr/executor.h +0 -3
- data/src/core/lib/iomgr/iocp_windows.cc +1 -2
- data/src/core/lib/iomgr/iomgr.cc +6 -8
- data/src/core/lib/iomgr/iomgr_fwd.h +1 -0
- data/src/core/lib/iomgr/lockfree_event.cc +0 -17
- data/src/core/lib/iomgr/pollset.h +1 -1
- data/src/core/lib/iomgr/pollset_set.h +0 -1
- data/src/core/lib/iomgr/port.h +3 -0
- data/src/core/lib/iomgr/resolve_address.h +30 -6
- data/src/core/lib/iomgr/resolve_address_impl.h +1 -0
- data/src/core/lib/iomgr/resolve_address_posix.cc +43 -8
- data/src/core/lib/iomgr/resolve_address_posix.h +19 -5
- data/src/core/lib/iomgr/resolve_address_windows.cc +45 -10
- data/src/core/lib/iomgr/resolve_address_windows.h +19 -5
- data/src/core/lib/iomgr/sockaddr_utils_posix.cc +2 -1
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +12 -34
- data/src/core/lib/iomgr/socket_utils_posix.cc +83 -1
- data/src/core/lib/iomgr/socket_utils_posix.h +98 -6
- data/src/core/lib/iomgr/socket_windows.h +0 -2
- data/src/core/lib/iomgr/tcp_client.cc +6 -7
- data/src/core/lib/iomgr/tcp_client.h +11 -11
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +6 -6
- data/src/core/lib/iomgr/tcp_client_posix.cc +33 -29
- data/src/core/lib/iomgr/tcp_client_posix.h +12 -9
- data/src/core/lib/iomgr/tcp_client_windows.cc +6 -6
- data/src/core/lib/iomgr/tcp_posix.cc +249 -120
- data/src/core/lib/iomgr/tcp_posix.h +3 -1
- data/src/core/lib/iomgr/tcp_server.cc +5 -4
- data/src/core/lib/iomgr/tcp_server.h +9 -6
- data/src/core/lib/iomgr/tcp_server_posix.cc +17 -28
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +2 -2
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +3 -3
- data/src/core/lib/iomgr/tcp_server_windows.cc +6 -7
- data/src/core/lib/iomgr/tcp_windows.cc +0 -1
- data/src/core/lib/iomgr/tcp_windows.h +0 -1
- data/src/core/lib/iomgr/timer_generic.cc +10 -12
- data/src/core/lib/iomgr/timer_manager.cc +1 -2
- data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +0 -2
- 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 +202 -0
- data/src/core/lib/json/json_object_loader.h +598 -0
- data/src/core/lib/json/json_reader.cc +86 -62
- data/src/core/lib/json/json_util.cc +9 -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 +20 -29
- data/src/core/lib/load_balancing/lb_policy_factory.h +49 -0
- data/src/core/lib/load_balancing/lb_policy_registry.cc +141 -0
- data/src/core/lib/load_balancing/lb_policy_registry.h +82 -0
- data/src/core/{ext/filters/client_channel → lib/load_balancing}/subchannel_interface.h +6 -6
- data/src/core/lib/promise/activity.h +57 -10
- data/src/core/lib/promise/arena_promise.h +84 -81
- data/src/core/lib/promise/context.h +1 -2
- 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 +50 -42
- data/src/core/lib/promise/sleep.h +32 -23
- 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 +15 -15
- 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 +10 -1
- data/src/core/lib/resource_quota/api.h +6 -0
- data/src/core/lib/resource_quota/arena.cc +19 -1
- data/src/core/lib/resource_quota/arena.h +24 -2
- data/src/core/lib/resource_quota/memory_quota.cc +143 -19
- data/src/core/lib/resource_quota/memory_quota.h +85 -17
- data/src/core/lib/resource_quota/periodic_update.cc +78 -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/{ext/xds → lib/security/certificate_provider}/certificate_provider_factory.h +3 -3
- data/src/core/lib/security/certificate_provider/certificate_provider_registry.cc +60 -0
- data/src/core/lib/security/certificate_provider/certificate_provider_registry.h +70 -0
- 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/channel_creds_registry_init.cc +1 -0
- 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 +33 -27
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +34 -24
- 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/credentials_generic.cc +5 -8
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +35 -32
- 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 +14 -15
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +1 -1
- 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 +18 -20
- 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.cc +4 -3
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +10 -2
- 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/tls/tls_utils.cc +3 -1
- 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 +15 -5
- data/src/core/lib/security/transport/secure_endpoint.cc +0 -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 +9 -13
- data/src/core/lib/surface/channel.cc +9 -8
- data/src/core/lib/surface/channel.h +1 -1
- data/src/core/lib/surface/completion_queue.cc +16 -30
- data/src/core/lib/surface/completion_queue.h +1 -4
- data/src/core/lib/surface/completion_queue_factory.cc +5 -0
- data/src/core/lib/surface/init.cc +17 -16
- data/src/core/lib/surface/init_internally.cc +24 -0
- data/src/core/lib/surface/init_internally.h +28 -0
- 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 +8 -19
- data/src/core/lib/surface/server.h +11 -13
- data/src/core/lib/surface/validate_metadata.cc +4 -14
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/bdp_estimator.cc +1 -3
- 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 +7 -3
- data/src/core/lib/transport/metadata_batch.h +61 -14
- data/src/core/lib/transport/parsed_metadata.h +4 -3
- data/src/core/lib/transport/status_conversion.cc +1 -3
- data/src/core/lib/transport/tcp_connect_handshaker.cc +20 -22
- data/src/core/lib/transport/transport.h +0 -8
- data/src/core/lib/transport/transport_impl.h +0 -1
- data/src/core/plugin_registry/grpc_plugin_registry.cc +23 -46
- data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +13 -25
- 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/version.rb +1 -1
- data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +4 -0
- data/src/ruby/spec/channel_spec.rb +5 -0
- data/src/ruby/spec/generic/server_interceptors_spec.rb +1 -1
- data/src/ruby/spec/user_agent_spec.rb +1 -1
- 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 +117 -51
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +0 -50
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +0 -190
- data/src/core/ext/filters/client_channel/lb_policy_registry.h +0 -70
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +0 -90
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.h +0 -55
- data/src/core/ext/xds/certificate_provider_registry.cc +0 -103
- data/src/core/ext/xds/certificate_provider_registry.h +0 -59
- data/src/core/lib/event_engine/iomgr_engine/thread_pool.cc +0 -123
- data/src/core/lib/event_engine/iomgr_engine/thread_pool.h +0 -70
- data/src/core/lib/event_engine/promise.h +0 -69
- data/src/core/lib/gpr/env_windows.cc +0 -74
- data/src/core/lib/gpr/string_windows.h +0 -32
- 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/profiling/basic_timers.cc +0 -295
- data/src/core/lib/profiling/stap_timers.cc +0 -50
- data/src/core/lib/profiling/timers.h +0 -94
- data/src/core/lib/promise/detail/switch.h +0 -1455
@@ -17,12 +17,11 @@
|
|
17
17
|
#include <grpc/support/port_platform.h>
|
18
18
|
|
19
19
|
#include <inttypes.h>
|
20
|
-
#include <limits.h>
|
21
|
-
#include <stddef.h>
|
22
20
|
|
23
21
|
#include <algorithm>
|
24
22
|
#include <map>
|
25
23
|
#include <memory>
|
24
|
+
#include <set>
|
26
25
|
#include <string>
|
27
26
|
#include <utility>
|
28
27
|
#include <vector>
|
@@ -31,32 +30,37 @@
|
|
31
30
|
#include "absl/status/status.h"
|
32
31
|
#include "absl/status/statusor.h"
|
33
32
|
#include "absl/strings/str_cat.h"
|
33
|
+
#include "absl/strings/str_join.h"
|
34
34
|
#include "absl/strings/string_view.h"
|
35
|
+
#include "absl/types/optional.h"
|
35
36
|
|
36
37
|
#include <grpc/impl/codegen/connectivity_state.h>
|
37
38
|
#include <grpc/impl/codegen/grpc_types.h>
|
38
39
|
#include <grpc/support/log.h>
|
39
40
|
|
40
|
-
#include "src/core/ext/filters/client_channel/lb_policy.h"
|
41
41
|
#include "src/core/ext/filters/client_channel/lb_policy/address_filtering.h"
|
42
42
|
#include "src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h"
|
43
|
-
#include "src/core/ext/filters/client_channel/lb_policy_factory.h"
|
44
|
-
#include "src/core/ext/filters/client_channel/lb_policy_registry.h"
|
45
|
-
#include "src/core/ext/filters/client_channel/subchannel_interface.h"
|
46
43
|
#include "src/core/lib/channel/channel_args.h"
|
44
|
+
#include "src/core/lib/config/core_configuration.h"
|
47
45
|
#include "src/core/lib/debug/trace.h"
|
48
46
|
#include "src/core/lib/gprpp/debug_location.h"
|
49
47
|
#include "src/core/lib/gprpp/orphanable.h"
|
50
48
|
#include "src/core/lib/gprpp/ref_counted.h"
|
51
49
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
52
50
|
#include "src/core/lib/gprpp/time.h"
|
51
|
+
#include "src/core/lib/gprpp/validation_errors.h"
|
52
|
+
#include "src/core/lib/gprpp/work_serializer.h"
|
53
53
|
#include "src/core/lib/iomgr/closure.h"
|
54
54
|
#include "src/core/lib/iomgr/error.h"
|
55
|
-
#include "src/core/lib/iomgr/exec_ctx.h"
|
56
55
|
#include "src/core/lib/iomgr/pollset_set.h"
|
57
56
|
#include "src/core/lib/iomgr/timer.h"
|
58
|
-
#include "src/core/lib/iomgr/work_serializer.h"
|
59
57
|
#include "src/core/lib/json/json.h"
|
58
|
+
#include "src/core/lib/json/json_args.h"
|
59
|
+
#include "src/core/lib/json/json_object_loader.h"
|
60
|
+
#include "src/core/lib/load_balancing/lb_policy.h"
|
61
|
+
#include "src/core/lib/load_balancing/lb_policy_factory.h"
|
62
|
+
#include "src/core/lib/load_balancing/lb_policy_registry.h"
|
63
|
+
#include "src/core/lib/load_balancing/subchannel_interface.h"
|
60
64
|
#include "src/core/lib/resolver/server_address.h"
|
61
65
|
#include "src/core/lib/transport/connectivity_state.h"
|
62
66
|
|
@@ -66,7 +70,7 @@ TraceFlag grpc_lb_priority_trace(false, "priority_lb");
|
|
66
70
|
|
67
71
|
namespace {
|
68
72
|
|
69
|
-
constexpr
|
73
|
+
constexpr absl::string_view kPriority = "priority_experimental";
|
70
74
|
|
71
75
|
// How long we keep a child around for after it is no longer being used
|
72
76
|
// (either because it has been removed from the config or because we
|
@@ -83,22 +87,34 @@ class PriorityLbConfig : public LoadBalancingPolicy::Config {
|
|
83
87
|
struct PriorityLbChild {
|
84
88
|
RefCountedPtr<LoadBalancingPolicy::Config> config;
|
85
89
|
bool ignore_reresolution_requests = false;
|
90
|
+
|
91
|
+
static const JsonLoaderInterface* JsonLoader(const JsonArgs&);
|
92
|
+
void JsonPostLoad(const Json& json, const JsonArgs&,
|
93
|
+
ValidationErrors* errors);
|
86
94
|
};
|
87
95
|
|
88
|
-
PriorityLbConfig(
|
89
|
-
|
90
|
-
|
96
|
+
PriorityLbConfig() = default;
|
97
|
+
|
98
|
+
PriorityLbConfig(const PriorityLbConfig&) = delete;
|
99
|
+
PriorityLbConfig& operator=(const PriorityLbConfig&) = delete;
|
100
|
+
|
101
|
+
PriorityLbConfig(PriorityLbConfig&& other) = delete;
|
102
|
+
PriorityLbConfig& operator=(PriorityLbConfig&& other) = delete;
|
91
103
|
|
92
|
-
|
104
|
+
absl::string_view name() const override { return kPriority; }
|
93
105
|
|
94
106
|
const std::map<std::string, PriorityLbChild>& children() const {
|
95
107
|
return children_;
|
96
108
|
}
|
97
109
|
const std::vector<std::string>& priorities() const { return priorities_; }
|
98
110
|
|
111
|
+
static const JsonLoaderInterface* JsonLoader(const JsonArgs&);
|
112
|
+
void JsonPostLoad(const Json& json, const JsonArgs&,
|
113
|
+
ValidationErrors* errors);
|
114
|
+
|
99
115
|
private:
|
100
|
-
|
101
|
-
|
116
|
+
std::map<std::string, PriorityLbChild> children_;
|
117
|
+
std::vector<std::string> priorities_;
|
102
118
|
};
|
103
119
|
|
104
120
|
// priority LB policy.
|
@@ -106,9 +122,9 @@ class PriorityLb : public LoadBalancingPolicy {
|
|
106
122
|
public:
|
107
123
|
explicit PriorityLb(Args args);
|
108
124
|
|
109
|
-
|
125
|
+
absl::string_view name() const override { return kPriority; }
|
110
126
|
|
111
|
-
|
127
|
+
absl::Status UpdateLocked(UpdateArgs args) override;
|
112
128
|
void ExitIdleLocked() override;
|
113
129
|
void ResetBackoffLocked() override;
|
114
130
|
|
@@ -124,8 +140,8 @@ class PriorityLb : public LoadBalancingPolicy {
|
|
124
140
|
|
125
141
|
const std::string& name() const { return name_; }
|
126
142
|
|
127
|
-
|
128
|
-
|
143
|
+
absl::Status UpdateLocked(RefCountedPtr<LoadBalancingPolicy::Config> config,
|
144
|
+
bool ignore_reresolution_requests);
|
129
145
|
void ExitIdleLocked();
|
130
146
|
void ResetBackoffLocked();
|
131
147
|
void MaybeDeactivateLocked();
|
@@ -176,7 +192,7 @@ class PriorityLb : public LoadBalancingPolicy {
|
|
176
192
|
~Helper() override { priority_.reset(DEBUG_LOCATION, "Helper"); }
|
177
193
|
|
178
194
|
RefCountedPtr<SubchannelInterface> CreateSubchannel(
|
179
|
-
ServerAddress address, const
|
195
|
+
ServerAddress address, const ChannelArgs& args) override;
|
180
196
|
void UpdateState(grpc_connectivity_state state,
|
181
197
|
const absl::Status& status,
|
182
198
|
std::unique_ptr<SubchannelPicker> picker) override;
|
@@ -223,7 +239,7 @@ class PriorityLb : public LoadBalancingPolicy {
|
|
223
239
|
|
224
240
|
// Methods for dealing with the child policy.
|
225
241
|
OrphanablePtr<LoadBalancingPolicy> CreateChildPolicyLocked(
|
226
|
-
const
|
242
|
+
const ChannelArgs& args);
|
227
243
|
|
228
244
|
void OnConnectivityStateUpdateLocked(
|
229
245
|
grpc_connectivity_state state, const absl::Status& status,
|
@@ -253,11 +269,6 @@ class PriorityLb : public LoadBalancingPolicy {
|
|
253
269
|
// the child is not in the current priority list.
|
254
270
|
uint32_t GetChildPriorityLocked(const std::string& child_name) const;
|
255
271
|
|
256
|
-
// Called when a child's connectivity state has changed.
|
257
|
-
// May propagate the update to the channel or trigger choosing a new
|
258
|
-
// priority.
|
259
|
-
void HandleChildConnectivityStateChangeLocked(ChildPriority* child);
|
260
|
-
|
261
272
|
// Deletes a child. Called when the child's deactivation timer fires.
|
262
273
|
void DeleteChild(ChildPriority* child);
|
263
274
|
|
@@ -275,16 +286,19 @@ class PriorityLb : public LoadBalancingPolicy {
|
|
275
286
|
void ChoosePriorityLocked();
|
276
287
|
|
277
288
|
// Sets the specified priority as the current priority.
|
278
|
-
//
|
289
|
+
// Optionally deactivates any children at lower priorities.
|
279
290
|
// Returns the child's picker to the channel.
|
280
|
-
void SetCurrentPriorityLocked(
|
291
|
+
void SetCurrentPriorityLocked(int32_t priority,
|
292
|
+
bool deactivate_lower_priorities,
|
293
|
+
const char* reason);
|
281
294
|
|
282
295
|
const Duration child_failover_timeout_;
|
283
296
|
|
284
297
|
// Current channel args and config from the resolver.
|
285
|
-
|
298
|
+
ChannelArgs args_;
|
286
299
|
RefCountedPtr<PriorityLbConfig> config_;
|
287
300
|
absl::StatusOr<HierarchicalAddressMap> addresses_;
|
301
|
+
std::string resolution_note_;
|
288
302
|
|
289
303
|
// Internal state.
|
290
304
|
bool shutting_down_ = false;
|
@@ -296,10 +310,6 @@ class PriorityLb : public LoadBalancingPolicy {
|
|
296
310
|
std::map<std::string, OrphanablePtr<ChildPriority>> children_;
|
297
311
|
// The priority that is being used.
|
298
312
|
uint32_t current_priority_ = UINT32_MAX;
|
299
|
-
// Points to the current child from before the most recent update.
|
300
|
-
// We will continue to use this child until we decide which of the new
|
301
|
-
// children to use.
|
302
|
-
ChildPriority* current_child_from_before_update_ = nullptr;
|
303
313
|
};
|
304
314
|
|
305
315
|
//
|
@@ -308,11 +318,11 @@ class PriorityLb : public LoadBalancingPolicy {
|
|
308
318
|
|
309
319
|
PriorityLb::PriorityLb(Args args)
|
310
320
|
: LoadBalancingPolicy(std::move(args)),
|
311
|
-
child_failover_timeout_(
|
312
|
-
Duration::
|
313
|
-
|
314
|
-
|
315
|
-
|
321
|
+
child_failover_timeout_(std::max(
|
322
|
+
Duration::Zero(),
|
323
|
+
args.args
|
324
|
+
.GetDurationFromIntMillis(GRPC_ARG_PRIORITY_FAILOVER_TIMEOUT_MS)
|
325
|
+
.value_or(kDefaultChildFailoverTimeout))) {
|
316
326
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_priority_trace)) {
|
317
327
|
gpr_log(GPR_INFO, "[priority_lb %p] created", this);
|
318
328
|
}
|
@@ -322,7 +332,6 @@ PriorityLb::~PriorityLb() {
|
|
322
332
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_priority_trace)) {
|
323
333
|
gpr_log(GPR_INFO, "[priority_lb %p] destroying priority LB policy", this);
|
324
334
|
}
|
325
|
-
grpc_channel_args_destroy(args_);
|
326
335
|
}
|
327
336
|
|
328
337
|
void PriorityLb::ShutdownLocked() {
|
@@ -349,29 +358,20 @@ void PriorityLb::ResetBackoffLocked() {
|
|
349
358
|
for (const auto& p : children_) p.second->ResetBackoffLocked();
|
350
359
|
}
|
351
360
|
|
352
|
-
|
361
|
+
absl::Status PriorityLb::UpdateLocked(UpdateArgs args) {
|
353
362
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_priority_trace)) {
|
354
363
|
gpr_log(GPR_INFO, "[priority_lb %p] received update", this);
|
355
364
|
}
|
356
|
-
// Save current child.
|
357
|
-
if (current_priority_ != UINT32_MAX) {
|
358
|
-
const std::string& child_name = config_->priorities()[current_priority_];
|
359
|
-
auto* child = children_[child_name].get();
|
360
|
-
GPR_ASSERT(child != nullptr);
|
361
|
-
if (child->connectivity_state() == GRPC_CHANNEL_READY) {
|
362
|
-
current_child_from_before_update_ = children_[child_name].get();
|
363
|
-
}
|
364
|
-
}
|
365
365
|
// Update config.
|
366
366
|
config_ = std::move(args.config);
|
367
367
|
// Update args.
|
368
|
-
|
369
|
-
args_ = args.args;
|
370
|
-
args.args = nullptr;
|
368
|
+
args_ = std::move(args.args);
|
371
369
|
// Update addresses.
|
372
370
|
addresses_ = MakeHierarchicalAddressMap(args.addresses);
|
371
|
+
resolution_note_ = std::move(args.resolution_note);
|
373
372
|
// Check all existing children against the new config.
|
374
373
|
update_in_progress_ = true;
|
374
|
+
std::vector<std::string> errors;
|
375
375
|
for (const auto& p : children_) {
|
376
376
|
const std::string& child_name = p.first;
|
377
377
|
auto& child = p.second;
|
@@ -381,13 +381,24 @@ void PriorityLb::UpdateLocked(UpdateArgs args) {
|
|
381
381
|
child->MaybeDeactivateLocked();
|
382
382
|
} else {
|
383
383
|
// Existing child found in new config. Update it.
|
384
|
-
|
385
|
-
|
384
|
+
absl::Status status =
|
385
|
+
child->UpdateLocked(config_it->second.config,
|
386
|
+
config_it->second.ignore_reresolution_requests);
|
387
|
+
if (!status.ok()) {
|
388
|
+
errors.emplace_back(
|
389
|
+
absl::StrCat("child ", child_name, ": ", status.ToString()));
|
390
|
+
}
|
386
391
|
}
|
387
392
|
}
|
388
393
|
update_in_progress_ = false;
|
389
394
|
// Try to get connected.
|
390
395
|
ChoosePriorityLocked();
|
396
|
+
// Return status.
|
397
|
+
if (!errors.empty()) {
|
398
|
+
return absl::UnavailableError(absl::StrCat(
|
399
|
+
"errors from children: [", absl::StrJoin(errors, "; "), "]"));
|
400
|
+
}
|
401
|
+
return absl::OkStatus();
|
391
402
|
}
|
392
403
|
|
393
404
|
uint32_t PriorityLb::GetChildPriorityLocked(
|
@@ -399,71 +410,13 @@ uint32_t PriorityLb::GetChildPriorityLocked(
|
|
399
410
|
return UINT32_MAX;
|
400
411
|
}
|
401
412
|
|
402
|
-
void PriorityLb::HandleChildConnectivityStateChangeLocked(
|
403
|
-
ChildPriority* child) {
|
404
|
-
// If we're in the process of propagating an update from our parent to
|
405
|
-
// our children, ignore any updates that come from the children. We
|
406
|
-
// will instead choose a new priority once the update has been seen by
|
407
|
-
// all children. This ensures that we don't incorrectly do the wrong
|
408
|
-
// thing while state is inconsistent.
|
409
|
-
if (update_in_progress_) return;
|
410
|
-
// Special case for the child that was the current child before the
|
411
|
-
// most recent update.
|
412
|
-
if (child == current_child_from_before_update_) {
|
413
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_priority_trace)) {
|
414
|
-
gpr_log(GPR_INFO,
|
415
|
-
"[priority_lb %p] state update for current child from before "
|
416
|
-
"config update",
|
417
|
-
this);
|
418
|
-
}
|
419
|
-
if (child->connectivity_state() == GRPC_CHANNEL_READY ||
|
420
|
-
child->connectivity_state() == GRPC_CHANNEL_IDLE) {
|
421
|
-
// If it's still READY or IDLE, we stick with this child, so pass
|
422
|
-
// the new picker up to our parent.
|
423
|
-
channel_control_helper()->UpdateState(child->connectivity_state(),
|
424
|
-
child->connectivity_status(),
|
425
|
-
child->GetPicker());
|
426
|
-
} else {
|
427
|
-
// If it's no longer READY or IDLE, we should stop using it.
|
428
|
-
// We already started trying other priorities as a result of the
|
429
|
-
// update, but calling ChoosePriorityLocked() ensures that we will
|
430
|
-
// properly select between CONNECTING and TRANSIENT_FAILURE as the
|
431
|
-
// new state to report to our parent.
|
432
|
-
current_child_from_before_update_ = nullptr;
|
433
|
-
ChoosePriorityLocked();
|
434
|
-
}
|
435
|
-
return;
|
436
|
-
}
|
437
|
-
// Otherwise, find the child's priority.
|
438
|
-
uint32_t child_priority = GetChildPriorityLocked(child->name());
|
439
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_priority_trace)) {
|
440
|
-
gpr_log(GPR_INFO,
|
441
|
-
"[priority_lb %p] state update for priority %u, child %s, current "
|
442
|
-
"priority %u",
|
443
|
-
this, child_priority, child->name().c_str(), current_priority_);
|
444
|
-
}
|
445
|
-
// Unconditionally call ChoosePriorityLocked(). It should do the
|
446
|
-
// right thing based on the state of all children.
|
447
|
-
ChoosePriorityLocked();
|
448
|
-
}
|
449
|
-
|
450
413
|
void PriorityLb::DeleteChild(ChildPriority* child) {
|
451
|
-
// If this was the current child from before the most recent update,
|
452
|
-
// stop using it. We already started trying other priorities as a
|
453
|
-
// result of the update, but calling ChoosePriorityLocked() ensures that
|
454
|
-
// we will properly select between CONNECTING and TRANSIENT_FAILURE as the
|
455
|
-
// new state to report to our parent.
|
456
|
-
if (current_child_from_before_update_ == child) {
|
457
|
-
current_child_from_before_update_ = nullptr;
|
458
|
-
ChoosePriorityLocked();
|
459
|
-
}
|
460
414
|
children_.erase(child->name());
|
461
415
|
}
|
462
416
|
|
463
417
|
void PriorityLb::ChoosePriorityLocked() {
|
464
418
|
// If priority list is empty, report TF.
|
465
419
|
if (config_->priorities().empty()) {
|
466
|
-
current_child_from_before_update_ = nullptr;
|
467
420
|
absl::Status status =
|
468
421
|
absl::UnavailableError("priority policy has empty priority list");
|
469
422
|
channel_control_helper()->UpdateState(
|
@@ -483,52 +436,33 @@ void PriorityLb::ChoosePriorityLocked() {
|
|
483
436
|
priority, child_name.c_str());
|
484
437
|
}
|
485
438
|
auto& child = children_[child_name];
|
439
|
+
// Create child if needed.
|
486
440
|
if (child == nullptr) {
|
487
|
-
// If we're not still using an old child from before the last
|
488
|
-
// update, report CONNECTING here.
|
489
|
-
// This is probably not strictly necessary, since the child should
|
490
|
-
// immediately report CONNECTING and cause us to report that state
|
491
|
-
// anyway, but we do this just in case the child fails to report
|
492
|
-
// state before UpdateLocked() returns.
|
493
|
-
if (current_child_from_before_update_ != nullptr) {
|
494
|
-
channel_control_helper()->UpdateState(
|
495
|
-
GRPC_CHANNEL_CONNECTING, absl::Status(),
|
496
|
-
absl::make_unique<QueuePicker>(Ref(DEBUG_LOCATION, "QueuePicker")));
|
497
|
-
}
|
498
|
-
current_priority_ = priority;
|
499
441
|
child = MakeOrphanable<ChildPriority>(
|
500
442
|
Ref(DEBUG_LOCATION, "ChildPriority"), child_name);
|
501
443
|
auto child_config = config_->children().find(child_name);
|
502
444
|
GPR_DEBUG_ASSERT(child_config != config_->children().end());
|
503
|
-
child
|
504
|
-
|
505
|
-
|
445
|
+
// TODO(roth): If the child reports a non-OK status with the
|
446
|
+
// update, we need to propagate that back to the resolver somehow.
|
447
|
+
(void)child->UpdateLocked(
|
448
|
+
child_config->second.config,
|
449
|
+
child_config->second.ignore_reresolution_requests);
|
450
|
+
} else {
|
451
|
+
// The child already exists. Reactivate if needed.
|
452
|
+
child->MaybeReactivateLocked();
|
506
453
|
}
|
507
|
-
//
|
508
|
-
child->MaybeReactivateLocked();
|
509
|
-
// If the child is in state READY or IDLE, switch to it.
|
454
|
+
// Select this child if it is in states READY or IDLE.
|
510
455
|
if (child->connectivity_state() == GRPC_CHANNEL_READY ||
|
511
456
|
child->connectivity_state() == GRPC_CHANNEL_IDLE) {
|
512
|
-
SetCurrentPriorityLocked(
|
457
|
+
SetCurrentPriorityLocked(
|
458
|
+
priority, /*deactivate_lower_priorities=*/true,
|
459
|
+
ConnectivityStateName(child->connectivity_state()));
|
513
460
|
return;
|
514
461
|
}
|
515
|
-
//
|
516
|
-
// If its failover timer is still pending, give it time to fire.
|
462
|
+
// Select this child if its failover timer is pending.
|
517
463
|
if (child->FailoverTimerPending()) {
|
518
|
-
|
519
|
-
|
520
|
-
"[priority_lb %p] priority %u, child %s: child still "
|
521
|
-
"attempting to connect, will wait",
|
522
|
-
this, priority, child_name.c_str());
|
523
|
-
}
|
524
|
-
current_priority_ = priority;
|
525
|
-
// If we're not still using an old child from before the last
|
526
|
-
// update, report CONNECTING here.
|
527
|
-
if (current_child_from_before_update_ != nullptr) {
|
528
|
-
channel_control_helper()->UpdateState(child->connectivity_state(),
|
529
|
-
child->connectivity_status(),
|
530
|
-
child->GetPicker());
|
531
|
-
}
|
464
|
+
SetCurrentPriorityLocked(priority, /*deactivate_lower_priorities=*/false,
|
465
|
+
"failover timer pending");
|
532
466
|
return;
|
533
467
|
}
|
534
468
|
// Child has been failing for a while. Move on to the next priority.
|
@@ -559,42 +493,37 @@ void PriorityLb::ChoosePriorityLocked() {
|
|
559
493
|
auto& child = children_[child_name];
|
560
494
|
GPR_ASSERT(child != nullptr);
|
561
495
|
if (child->connectivity_state() == GRPC_CHANNEL_CONNECTING) {
|
562
|
-
|
563
|
-
|
564
|
-
child->GetPicker());
|
496
|
+
SetCurrentPriorityLocked(priority, /*deactivate_lower_priorities=*/false,
|
497
|
+
"CONNECTING (pass 2)");
|
565
498
|
return;
|
566
499
|
}
|
567
500
|
}
|
568
501
|
// Did not find any child in CONNECTING, delegate to last child.
|
569
|
-
|
570
|
-
|
571
|
-
|
572
|
-
"[priority_lb %p] no priority in CONNECTING, delegating to "
|
573
|
-
"lowest priority child %s",
|
574
|
-
this, child_name.c_str());
|
575
|
-
}
|
576
|
-
auto& child = children_[child_name];
|
577
|
-
GPR_ASSERT(child != nullptr);
|
578
|
-
channel_control_helper()->UpdateState(child->connectivity_state(),
|
579
|
-
child->connectivity_status(),
|
580
|
-
child->GetPicker());
|
502
|
+
SetCurrentPriorityLocked(config_->priorities().size() - 1,
|
503
|
+
/*deactivate_lower_priorities=*/false,
|
504
|
+
"no usable children");
|
581
505
|
}
|
582
506
|
|
583
|
-
void PriorityLb::SetCurrentPriorityLocked(
|
507
|
+
void PriorityLb::SetCurrentPriorityLocked(int32_t priority,
|
508
|
+
bool deactivate_lower_priorities,
|
509
|
+
const char* reason) {
|
584
510
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_priority_trace)) {
|
585
|
-
gpr_log(GPR_INFO,
|
586
|
-
priority,
|
511
|
+
gpr_log(GPR_INFO,
|
512
|
+
"[priority_lb %p] selecting priority %u, child %s (%s, "
|
513
|
+
"deactivate_lower_priorities=%d)",
|
514
|
+
this, priority, config_->priorities()[priority].c_str(), reason,
|
515
|
+
deactivate_lower_priorities);
|
587
516
|
}
|
588
517
|
current_priority_ = priority;
|
589
|
-
|
590
|
-
|
591
|
-
|
592
|
-
|
593
|
-
|
594
|
-
|
518
|
+
if (deactivate_lower_priorities) {
|
519
|
+
for (uint32_t p = priority + 1; p < config_->priorities().size(); ++p) {
|
520
|
+
const std::string& child_name = config_->priorities()[p];
|
521
|
+
auto it = children_.find(child_name);
|
522
|
+
if (it != children_.end()) it->second->MaybeDeactivateLocked();
|
523
|
+
}
|
595
524
|
}
|
596
|
-
// Update picker.
|
597
525
|
auto& child = children_[config_->priorities()[priority]];
|
526
|
+
GPR_ASSERT(child != nullptr);
|
598
527
|
channel_control_helper()->UpdateState(child->connectivity_state(),
|
599
528
|
child->connectivity_status(),
|
600
529
|
child->GetPicker());
|
@@ -617,7 +546,7 @@ PriorityLb::ChildPriority::DeactivationTimer::DeactivationTimer(
|
|
617
546
|
}
|
618
547
|
GRPC_CLOSURE_INIT(&on_timer_, OnTimer, this, nullptr);
|
619
548
|
Ref(DEBUG_LOCATION, "Timer").release();
|
620
|
-
grpc_timer_init(&timer_,
|
549
|
+
grpc_timer_init(&timer_, Timestamp::Now() + kChildRetentionInterval,
|
621
550
|
&on_timer_);
|
622
551
|
}
|
623
552
|
|
@@ -679,7 +608,7 @@ PriorityLb::ChildPriority::FailoverTimer::FailoverTimer(
|
|
679
608
|
Ref(DEBUG_LOCATION, "Timer").release();
|
680
609
|
grpc_timer_init(
|
681
610
|
&timer_,
|
682
|
-
|
611
|
+
Timestamp::Now() +
|
683
612
|
child_priority_->priority_policy_->child_failover_timeout_,
|
684
613
|
&on_timer_);
|
685
614
|
}
|
@@ -768,10 +697,10 @@ PriorityLb::ChildPriority::GetPicker() {
|
|
768
697
|
return absl::make_unique<RefCountedPickerWrapper>(picker_wrapper_);
|
769
698
|
}
|
770
699
|
|
771
|
-
|
700
|
+
absl::Status PriorityLb::ChildPriority::UpdateLocked(
|
772
701
|
RefCountedPtr<LoadBalancingPolicy::Config> config,
|
773
702
|
bool ignore_reresolution_requests) {
|
774
|
-
if (priority_policy_->shutting_down_) return;
|
703
|
+
if (priority_policy_->shutting_down_) return absl::OkStatus();
|
775
704
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_priority_trace)) {
|
776
705
|
gpr_log(GPR_INFO, "[priority_lb %p] child %s (%p): start update",
|
777
706
|
priority_policy_.get(), name_.c_str(), this);
|
@@ -789,19 +718,19 @@ void PriorityLb::ChildPriority::UpdateLocked(
|
|
789
718
|
} else {
|
790
719
|
update_args.addresses = priority_policy_->addresses_.status();
|
791
720
|
}
|
792
|
-
update_args.
|
721
|
+
update_args.resolution_note = priority_policy_->resolution_note_;
|
722
|
+
update_args.args = priority_policy_->args_;
|
793
723
|
// Update the policy.
|
794
724
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_priority_trace)) {
|
795
725
|
gpr_log(GPR_INFO,
|
796
726
|
"[priority_lb %p] child %s (%p): updating child policy handler %p",
|
797
727
|
priority_policy_.get(), name_.c_str(), this, child_policy_.get());
|
798
728
|
}
|
799
|
-
child_policy_->UpdateLocked(std::move(update_args));
|
729
|
+
return child_policy_->UpdateLocked(std::move(update_args));
|
800
730
|
}
|
801
731
|
|
802
732
|
OrphanablePtr<LoadBalancingPolicy>
|
803
|
-
PriorityLb::ChildPriority::CreateChildPolicyLocked(
|
804
|
-
const grpc_channel_args* args) {
|
733
|
+
PriorityLb::ChildPriority::CreateChildPolicyLocked(const ChannelArgs& args) {
|
805
734
|
LoadBalancingPolicy::Args lb_policy_args;
|
806
735
|
lb_policy_args.work_serializer = priority_policy_->work_serializer();
|
807
736
|
lb_policy_args.args = args;
|
@@ -845,7 +774,14 @@ void PriorityLb::ChildPriority::OnConnectivityStateUpdateLocked(
|
|
845
774
|
// Store the state and picker.
|
846
775
|
connectivity_state_ = state;
|
847
776
|
connectivity_status_ = status;
|
848
|
-
|
777
|
+
// When the failover timer fires, this method will be called with picker
|
778
|
+
// set to null, because we want to consider the child to be in
|
779
|
+
// TRANSIENT_FAILURE, but we have no new picker to report. In that case,
|
780
|
+
// just keep using the old picker, in case we wind up delegating to this
|
781
|
+
// child when all priorities are failing.
|
782
|
+
if (picker != nullptr) {
|
783
|
+
picker_wrapper_ = MakeRefCounted<RefCountedPicker>(std::move(picker));
|
784
|
+
}
|
849
785
|
// If we transition to state CONNECTING and we've not seen
|
850
786
|
// TRANSIENT_FAILURE more recently than READY or IDLE, start failover
|
851
787
|
// timer if not already pending.
|
@@ -863,8 +799,17 @@ void PriorityLb::ChildPriority::OnConnectivityStateUpdateLocked(
|
|
863
799
|
seen_ready_or_idle_since_transient_failure_ = false;
|
864
800
|
failover_timer_.reset();
|
865
801
|
}
|
866
|
-
//
|
867
|
-
|
802
|
+
// Call the LB policy's ChoosePriorityLocked() to choose a priority to
|
803
|
+
// use based on the updated state of this child.
|
804
|
+
//
|
805
|
+
// Note that if we're in the process of propagating an update from our
|
806
|
+
// parent to our children, we skip this, because we don't want to
|
807
|
+
// choose a new priority based on inconsistent state. Instead, the
|
808
|
+
// policy will choose a new priority once the update has been seen by
|
809
|
+
// all children.
|
810
|
+
if (!priority_policy_->update_in_progress_) {
|
811
|
+
priority_policy_->ChoosePriorityLocked();
|
812
|
+
}
|
868
813
|
}
|
869
814
|
|
870
815
|
void PriorityLb::ChildPriority::MaybeDeactivateLocked() {
|
@@ -882,8 +827,8 @@ void PriorityLb::ChildPriority::MaybeReactivateLocked() {
|
|
882
827
|
//
|
883
828
|
|
884
829
|
RefCountedPtr<SubchannelInterface>
|
885
|
-
PriorityLb::ChildPriority::Helper::CreateSubchannel(
|
886
|
-
|
830
|
+
PriorityLb::ChildPriority::Helper::CreateSubchannel(ServerAddress address,
|
831
|
+
const ChannelArgs& args) {
|
887
832
|
if (priority_->priority_policy_->shutting_down_) return nullptr;
|
888
833
|
return priority_->priority_policy_->channel_control_helper()
|
889
834
|
->CreateSubchannel(std::move(address), args);
|
@@ -920,6 +865,61 @@ void PriorityLb::ChildPriority::Helper::AddTraceEvent(
|
|
920
865
|
// factory
|
921
866
|
//
|
922
867
|
|
868
|
+
const JsonLoaderInterface* PriorityLbConfig::PriorityLbChild::JsonLoader(
|
869
|
+
const JsonArgs&) {
|
870
|
+
static const auto* loader =
|
871
|
+
JsonObjectLoader<PriorityLbChild>()
|
872
|
+
// Note: The "config" field requires custom parsing, so it's
|
873
|
+
// handled in JsonPostLoad() instead of here.
|
874
|
+
.OptionalField("ignore_reresolution_requests",
|
875
|
+
&PriorityLbChild::ignore_reresolution_requests)
|
876
|
+
.Finish();
|
877
|
+
return loader;
|
878
|
+
}
|
879
|
+
|
880
|
+
void PriorityLbConfig::PriorityLbChild::JsonPostLoad(const Json& json,
|
881
|
+
const JsonArgs&,
|
882
|
+
ValidationErrors* errors) {
|
883
|
+
ValidationErrors::ScopedField field(errors, ".config");
|
884
|
+
auto it = json.object_value().find("config");
|
885
|
+
if (it == json.object_value().end()) {
|
886
|
+
errors->AddError("field not present");
|
887
|
+
return;
|
888
|
+
}
|
889
|
+
auto lb_config =
|
890
|
+
CoreConfiguration::Get().lb_policy_registry().ParseLoadBalancingConfig(
|
891
|
+
it->second);
|
892
|
+
if (!lb_config.ok()) {
|
893
|
+
errors->AddError(lb_config.status().message());
|
894
|
+
return;
|
895
|
+
}
|
896
|
+
config = std::move(*lb_config);
|
897
|
+
}
|
898
|
+
|
899
|
+
const JsonLoaderInterface* PriorityLbConfig::JsonLoader(const JsonArgs&) {
|
900
|
+
static const auto* loader =
|
901
|
+
JsonObjectLoader<PriorityLbConfig>()
|
902
|
+
.Field("children", &PriorityLbConfig::children_)
|
903
|
+
.Field("priorities", &PriorityLbConfig::priorities_)
|
904
|
+
.Finish();
|
905
|
+
return loader;
|
906
|
+
}
|
907
|
+
|
908
|
+
void PriorityLbConfig::JsonPostLoad(const Json& /*json*/, const JsonArgs&,
|
909
|
+
ValidationErrors* errors) {
|
910
|
+
std::set<std::string> unknown_priorities;
|
911
|
+
for (const std::string& priority : priorities_) {
|
912
|
+
if (children_.find(priority) == children_.end()) {
|
913
|
+
unknown_priorities.insert(priority);
|
914
|
+
}
|
915
|
+
}
|
916
|
+
if (!unknown_priorities.empty()) {
|
917
|
+
errors->AddError(absl::StrCat("unknown priorit(ies): [",
|
918
|
+
absl::StrJoin(unknown_priorities, ", "),
|
919
|
+
"]"));
|
920
|
+
}
|
921
|
+
}
|
922
|
+
|
923
923
|
class PriorityLbFactory : public LoadBalancingPolicyFactory {
|
924
924
|
public:
|
925
925
|
OrphanablePtr<LoadBalancingPolicy> CreateLoadBalancingPolicy(
|
@@ -927,132 +927,28 @@ class PriorityLbFactory : public LoadBalancingPolicyFactory {
|
|
927
927
|
return MakeOrphanable<PriorityLb>(std::move(args));
|
928
928
|
}
|
929
929
|
|
930
|
-
|
930
|
+
absl::string_view name() const override { return kPriority; }
|
931
931
|
|
932
|
-
RefCountedPtr<LoadBalancingPolicy::Config
|
933
|
-
|
934
|
-
GPR_DEBUG_ASSERT(error != nullptr && GRPC_ERROR_IS_NONE(*error));
|
932
|
+
absl::StatusOr<RefCountedPtr<LoadBalancingPolicy::Config>>
|
933
|
+
ParseLoadBalancingConfig(const Json& json) const override {
|
935
934
|
if (json.type() == Json::Type::JSON_NULL) {
|
936
935
|
// priority was mentioned as a policy in the deprecated
|
937
936
|
// loadBalancingPolicy field or in the client API.
|
938
|
-
|
937
|
+
return absl::InvalidArgumentError(
|
939
938
|
"field:loadBalancingPolicy error:priority policy requires "
|
940
939
|
"configuration. Please use loadBalancingConfig field of service "
|
941
940
|
"config instead.");
|
942
|
-
return nullptr;
|
943
|
-
}
|
944
|
-
std::vector<grpc_error_handle> error_list;
|
945
|
-
// Children.
|
946
|
-
std::map<std::string, PriorityLbConfig::PriorityLbChild> children;
|
947
|
-
auto it = json.object_value().find("children");
|
948
|
-
if (it == json.object_value().end()) {
|
949
|
-
error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
950
|
-
"field:children error:required field missing"));
|
951
|
-
} else if (it->second.type() != Json::Type::OBJECT) {
|
952
|
-
error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
953
|
-
"field:children error:type should be object"));
|
954
|
-
} else {
|
955
|
-
const Json::Object& object = it->second.object_value();
|
956
|
-
for (const auto& p : object) {
|
957
|
-
const std::string& child_name = p.first;
|
958
|
-
const Json& element = p.second;
|
959
|
-
if (element.type() != Json::Type::OBJECT) {
|
960
|
-
error_list.push_back(GRPC_ERROR_CREATE_FROM_CPP_STRING(
|
961
|
-
absl::StrCat("field:children key:", child_name,
|
962
|
-
" error:should be type object")));
|
963
|
-
} else {
|
964
|
-
auto it2 = element.object_value().find("config");
|
965
|
-
if (it2 == element.object_value().end()) {
|
966
|
-
error_list.push_back(GRPC_ERROR_CREATE_FROM_CPP_STRING(
|
967
|
-
absl::StrCat("field:children key:", child_name,
|
968
|
-
" error:missing 'config' field")));
|
969
|
-
} else {
|
970
|
-
grpc_error_handle parse_error = GRPC_ERROR_NONE;
|
971
|
-
auto config = LoadBalancingPolicyRegistry::ParseLoadBalancingConfig(
|
972
|
-
it2->second, &parse_error);
|
973
|
-
bool ignore_resolution_requests = false;
|
974
|
-
// If present, ignore_reresolution_requests must be of type
|
975
|
-
// boolean.
|
976
|
-
auto it3 =
|
977
|
-
element.object_value().find("ignore_reresolution_requests");
|
978
|
-
if (it3 != element.object_value().end()) {
|
979
|
-
if (it3->second.type() == Json::Type::JSON_TRUE) {
|
980
|
-
ignore_resolution_requests = true;
|
981
|
-
} else if (it3->second.type() != Json::Type::JSON_FALSE) {
|
982
|
-
error_list.push_back(GRPC_ERROR_CREATE_FROM_CPP_STRING(
|
983
|
-
absl::StrCat("field:children key:", child_name,
|
984
|
-
" field:ignore_reresolution_requests:should "
|
985
|
-
"be type boolean")));
|
986
|
-
}
|
987
|
-
}
|
988
|
-
if (config == nullptr) {
|
989
|
-
GPR_DEBUG_ASSERT(!GRPC_ERROR_IS_NONE(parse_error));
|
990
|
-
error_list.push_back(
|
991
|
-
GRPC_ERROR_CREATE_REFERENCING_FROM_COPIED_STRING(
|
992
|
-
absl::StrCat("field:children key:", child_name).c_str(),
|
993
|
-
&parse_error, 1));
|
994
|
-
GRPC_ERROR_UNREF(parse_error);
|
995
|
-
}
|
996
|
-
children[child_name].config = std::move(config);
|
997
|
-
children[child_name].ignore_reresolution_requests =
|
998
|
-
ignore_resolution_requests;
|
999
|
-
}
|
1000
|
-
}
|
1001
|
-
}
|
1002
|
-
}
|
1003
|
-
// Priorities.
|
1004
|
-
std::vector<std::string> priorities;
|
1005
|
-
it = json.object_value().find("priorities");
|
1006
|
-
if (it == json.object_value().end()) {
|
1007
|
-
error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
1008
|
-
"field:priorities error:required field missing"));
|
1009
|
-
} else if (it->second.type() != Json::Type::ARRAY) {
|
1010
|
-
error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
1011
|
-
"field:priorities error:type should be array"));
|
1012
|
-
} else {
|
1013
|
-
const Json::Array& array = it->second.array_value();
|
1014
|
-
for (size_t i = 0; i < array.size(); ++i) {
|
1015
|
-
const Json& element = array[i];
|
1016
|
-
if (element.type() != Json::Type::STRING) {
|
1017
|
-
error_list.push_back(GRPC_ERROR_CREATE_FROM_CPP_STRING(absl::StrCat(
|
1018
|
-
"field:priorities element:", i, " error:should be type string")));
|
1019
|
-
} else if (children.find(element.string_value()) == children.end()) {
|
1020
|
-
error_list.push_back(GRPC_ERROR_CREATE_FROM_CPP_STRING(absl::StrCat(
|
1021
|
-
"field:priorities element:", i, " error:unknown child '",
|
1022
|
-
element.string_value(), "'")));
|
1023
|
-
} else {
|
1024
|
-
priorities.emplace_back(element.string_value());
|
1025
|
-
}
|
1026
|
-
}
|
1027
|
-
if (priorities.size() != children.size()) {
|
1028
|
-
error_list.push_back(GRPC_ERROR_CREATE_FROM_CPP_STRING(absl::StrCat(
|
1029
|
-
"field:priorities error:priorities size (", priorities.size(),
|
1030
|
-
") != children size (", children.size(), ")")));
|
1031
|
-
}
|
1032
|
-
}
|
1033
|
-
if (error_list.empty()) {
|
1034
|
-
return MakeRefCounted<PriorityLbConfig>(std::move(children),
|
1035
|
-
std::move(priorities));
|
1036
|
-
} else {
|
1037
|
-
*error = GRPC_ERROR_CREATE_FROM_VECTOR(
|
1038
|
-
"priority_experimental LB policy config", &error_list);
|
1039
|
-
return nullptr;
|
1040
941
|
}
|
942
|
+
return LoadRefCountedFromJson<PriorityLbConfig>(
|
943
|
+
json, JsonArgs(), "errors validating priority LB policy config");
|
1041
944
|
}
|
1042
945
|
};
|
1043
946
|
|
1044
947
|
} // namespace
|
1045
948
|
|
1046
|
-
|
1047
|
-
|
1048
|
-
|
1049
|
-
// Plugin registration
|
1050
|
-
//
|
1051
|
-
|
1052
|
-
void grpc_lb_policy_priority_init() {
|
1053
|
-
grpc_core::LoadBalancingPolicyRegistry::Builder::
|
1054
|
-
RegisterLoadBalancingPolicyFactory(
|
1055
|
-
absl::make_unique<grpc_core::PriorityLbFactory>());
|
949
|
+
void RegisterPriorityLbPolicy(CoreConfiguration::Builder* builder) {
|
950
|
+
builder->lb_policy_registry()->RegisterLoadBalancingPolicyFactory(
|
951
|
+
absl::make_unique<PriorityLbFactory>());
|
1056
952
|
}
|
1057
953
|
|
1058
|
-
|
954
|
+
} // namespace grpc_core
|