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
@@ -58,7 +58,6 @@
|
|
58
58
|
// IWYU pragma: no_include <sys/socket.h>
|
59
59
|
|
60
60
|
#include <inttypes.h>
|
61
|
-
#include <limits.h>
|
62
61
|
#include <stdlib.h>
|
63
62
|
#include <string.h>
|
64
63
|
|
@@ -94,16 +93,12 @@
|
|
94
93
|
#include <grpc/support/log.h>
|
95
94
|
|
96
95
|
#include "src/core/ext/filters/client_channel/client_channel.h"
|
97
|
-
#include "src/core/ext/filters/client_channel/lb_policy.h"
|
98
96
|
#include "src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h"
|
99
97
|
#include "src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h"
|
100
98
|
#include "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h"
|
101
99
|
#include "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h"
|
102
100
|
#include "src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h"
|
103
|
-
#include "src/core/ext/filters/client_channel/lb_policy_factory.h"
|
104
|
-
#include "src/core/ext/filters/client_channel/lb_policy_registry.h"
|
105
101
|
#include "src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h"
|
106
|
-
#include "src/core/ext/filters/client_channel/subchannel_interface.h"
|
107
102
|
#include "src/core/lib/address_utils/sockaddr_utils.h"
|
108
103
|
#include "src/core/lib/backoff/backoff.h"
|
109
104
|
#include "src/core/lib/channel/channel_args.h"
|
@@ -111,7 +106,7 @@
|
|
111
106
|
#include "src/core/lib/channel/channelz.h"
|
112
107
|
#include "src/core/lib/config/core_configuration.h"
|
113
108
|
#include "src/core/lib/debug/trace.h"
|
114
|
-
#include "src/core/lib/event_engine/
|
109
|
+
#include "src/core/lib/event_engine/default_event_engine.h"
|
115
110
|
#include "src/core/lib/gpr/string.h"
|
116
111
|
#include "src/core/lib/gpr/useful.h"
|
117
112
|
#include "src/core/lib/gprpp/debug_location.h"
|
@@ -119,6 +114,8 @@
|
|
119
114
|
#include "src/core/lib/gprpp/ref_counted.h"
|
120
115
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
121
116
|
#include "src/core/lib/gprpp/time.h"
|
117
|
+
#include "src/core/lib/gprpp/validation_errors.h"
|
118
|
+
#include "src/core/lib/gprpp/work_serializer.h"
|
122
119
|
#include "src/core/lib/iomgr/closure.h"
|
123
120
|
#include "src/core/lib/iomgr/error.h"
|
124
121
|
#include "src/core/lib/iomgr/exec_ctx.h"
|
@@ -127,8 +124,13 @@
|
|
127
124
|
#include "src/core/lib/iomgr/sockaddr.h"
|
128
125
|
#include "src/core/lib/iomgr/socket_utils.h"
|
129
126
|
#include "src/core/lib/iomgr/timer.h"
|
130
|
-
#include "src/core/lib/iomgr/work_serializer.h"
|
131
127
|
#include "src/core/lib/json/json.h"
|
128
|
+
#include "src/core/lib/json/json_args.h"
|
129
|
+
#include "src/core/lib/json/json_object_loader.h"
|
130
|
+
#include "src/core/lib/load_balancing/lb_policy.h"
|
131
|
+
#include "src/core/lib/load_balancing/lb_policy_factory.h"
|
132
|
+
#include "src/core/lib/load_balancing/lb_policy_registry.h"
|
133
|
+
#include "src/core/lib/load_balancing/subchannel_interface.h"
|
132
134
|
#include "src/core/lib/resolver/resolver.h"
|
133
135
|
#include "src/core/lib/resolver/server_address.h"
|
134
136
|
#include "src/core/lib/security/credentials/credentials.h"
|
@@ -161,15 +163,53 @@ namespace {
|
|
161
163
|
using ::grpc_event_engine::experimental::EventEngine;
|
162
164
|
using ::grpc_event_engine::experimental::GetDefaultEventEngine;
|
163
165
|
|
164
|
-
constexpr
|
166
|
+
constexpr absl::string_view kGrpclb = "grpclb";
|
165
167
|
|
166
168
|
class GrpcLbConfig : public LoadBalancingPolicy::Config {
|
167
169
|
public:
|
168
|
-
GrpcLbConfig(
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
170
|
+
GrpcLbConfig() = default;
|
171
|
+
|
172
|
+
GrpcLbConfig(const GrpcLbConfig&) = delete;
|
173
|
+
GrpcLbConfig& operator=(const GrpcLbConfig&) = delete;
|
174
|
+
|
175
|
+
GrpcLbConfig(GrpcLbConfig&& other) = delete;
|
176
|
+
GrpcLbConfig& operator=(GrpcLbConfig&& other) = delete;
|
177
|
+
|
178
|
+
static const JsonLoaderInterface* JsonLoader(const JsonArgs&) {
|
179
|
+
static const auto* loader =
|
180
|
+
JsonObjectLoader<GrpcLbConfig>()
|
181
|
+
// Note: "childPolicy" field requires custom parsing, so
|
182
|
+
// it's handled in JsonPostLoad() instead.
|
183
|
+
.OptionalField("serviceName", &GrpcLbConfig::service_name_)
|
184
|
+
.Finish();
|
185
|
+
return loader;
|
186
|
+
}
|
187
|
+
|
188
|
+
void JsonPostLoad(const Json& json, const JsonArgs&,
|
189
|
+
ValidationErrors* errors) {
|
190
|
+
ValidationErrors::ScopedField field(errors, ".childPolicy");
|
191
|
+
Json child_policy_config_json_tmp;
|
192
|
+
const Json* child_policy_config_json;
|
193
|
+
auto it = json.object_value().find("childPolicy");
|
194
|
+
if (it == json.object_value().end()) {
|
195
|
+
child_policy_config_json_tmp = Json::Array{Json::Object{
|
196
|
+
{"round_robin", Json::Object()},
|
197
|
+
}};
|
198
|
+
child_policy_config_json = &child_policy_config_json_tmp;
|
199
|
+
} else {
|
200
|
+
child_policy_config_json = &it->second;
|
201
|
+
}
|
202
|
+
auto child_policy_config =
|
203
|
+
CoreConfiguration::Get().lb_policy_registry().ParseLoadBalancingConfig(
|
204
|
+
*child_policy_config_json);
|
205
|
+
if (!child_policy_config.ok()) {
|
206
|
+
errors->AddError(child_policy_config.status().message());
|
207
|
+
return;
|
208
|
+
}
|
209
|
+
child_policy_ = std::move(*child_policy_config);
|
210
|
+
}
|
211
|
+
|
212
|
+
absl::string_view name() const override { return kGrpclb; }
|
173
213
|
|
174
214
|
RefCountedPtr<LoadBalancingPolicy::Config> child_policy() const {
|
175
215
|
return child_policy_;
|
@@ -186,9 +226,9 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
186
226
|
public:
|
187
227
|
explicit GrpcLb(Args args);
|
188
228
|
|
189
|
-
|
229
|
+
absl::string_view name() const override { return kGrpclb; }
|
190
230
|
|
191
|
-
|
231
|
+
absl::Status UpdateLocked(UpdateArgs args) override;
|
192
232
|
void ResetBackoffLocked() override;
|
193
233
|
|
194
234
|
private:
|
@@ -219,7 +259,6 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
219
259
|
void SendClientLoadReportLocked();
|
220
260
|
|
221
261
|
// EventEngine callbacks
|
222
|
-
void MaybeSendClientLoadReport();
|
223
262
|
void MaybeSendClientLoadReportLocked();
|
224
263
|
|
225
264
|
static void ClientLoadReportDone(void* arg, grpc_error_handle error);
|
@@ -426,7 +465,7 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
426
465
|
: parent_(std::move(parent)) {}
|
427
466
|
|
428
467
|
RefCountedPtr<SubchannelInterface> CreateSubchannel(
|
429
|
-
ServerAddress address, const
|
468
|
+
ServerAddress address, const ChannelArgs& args) override;
|
430
469
|
void UpdateState(grpc_connectivity_state state, const absl::Status& status,
|
431
470
|
std::unique_ptr<SubchannelPicker> picker) override;
|
432
471
|
void RequestReresolution() override;
|
@@ -470,12 +509,10 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
470
509
|
RefCountedPtr<GrpcLb> parent_;
|
471
510
|
};
|
472
511
|
|
473
|
-
~GrpcLb() override;
|
474
|
-
|
475
512
|
void ShutdownLocked() override;
|
476
513
|
|
477
514
|
// Helper functions used in UpdateLocked().
|
478
|
-
|
515
|
+
absl::Status UpdateBalancerChannelLocked(const ChannelArgs& args);
|
479
516
|
|
480
517
|
void CancelBalancerChannelConnectivityWatchLocked();
|
481
518
|
|
@@ -491,10 +528,10 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
491
528
|
void OnBalancerCallRetryTimerLocked(grpc_error_handle error);
|
492
529
|
|
493
530
|
// Methods for dealing with the child policy.
|
494
|
-
|
531
|
+
ChannelArgs CreateChildPolicyArgsLocked(
|
495
532
|
bool is_backend_from_grpclb_load_balancer);
|
496
533
|
OrphanablePtr<LoadBalancingPolicy> CreateChildPolicyLocked(
|
497
|
-
const
|
534
|
+
const ChannelArgs& args);
|
498
535
|
void CreateOrUpdateChildPolicyLocked();
|
499
536
|
|
500
537
|
// Subchannel caching.
|
@@ -510,7 +547,7 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
510
547
|
RefCountedPtr<GrpcLbConfig> config_;
|
511
548
|
|
512
549
|
// Current channel args from the resolver.
|
513
|
-
|
550
|
+
ChannelArgs args_;
|
514
551
|
|
515
552
|
// Internal state.
|
516
553
|
bool shutting_down_ = false;
|
@@ -674,7 +711,7 @@ ServerAddressList GrpcLb::Serverlist::GetServerAddressList(
|
|
674
711
|
absl::make_unique<TokenAndClientStatsAttribute>(std::move(lb_token),
|
675
712
|
stats);
|
676
713
|
// Add address.
|
677
|
-
addresses.emplace_back(addr,
|
714
|
+
addresses.emplace_back(addr, ChannelArgs(), std::move(attributes));
|
678
715
|
}
|
679
716
|
return addresses;
|
680
717
|
}
|
@@ -759,7 +796,7 @@ GrpcLb::PickResult GrpcLb::Picker::Pick(PickArgs args) {
|
|
759
796
|
//
|
760
797
|
|
761
798
|
RefCountedPtr<SubchannelInterface> GrpcLb::Helper::CreateSubchannel(
|
762
|
-
ServerAddress address, const
|
799
|
+
ServerAddress address, const ChannelArgs& args) {
|
763
800
|
if (parent_->shutting_down_) return nullptr;
|
764
801
|
const TokenAndClientStatsAttribute* attribute =
|
765
802
|
static_cast<const TokenAndClientStatsAttribute*>(
|
@@ -870,7 +907,7 @@ GrpcLb::BalancerCallState::BalancerCallState(
|
|
870
907
|
const Timestamp deadline =
|
871
908
|
grpclb_policy()->lb_call_timeout_ == Duration::Zero()
|
872
909
|
? Timestamp::InfFuture()
|
873
|
-
:
|
910
|
+
: Timestamp::Now() + grpclb_policy()->lb_call_timeout_;
|
874
911
|
lb_call_ = grpc_channel_create_pollset_set_call(
|
875
912
|
grpclb_policy()->lb_channel_, nullptr, GRPC_PROPAGATE_DEFAULTS,
|
876
913
|
grpclb_policy_->interested_parties(),
|
@@ -998,15 +1035,11 @@ void GrpcLb::BalancerCallState::ScheduleNextClientLoadReportLocked() {
|
|
998
1035
|
GetDefaultEventEngine()->RunAfter(client_stats_report_interval_, [this] {
|
999
1036
|
ApplicationCallbackExecCtx callback_exec_ctx;
|
1000
1037
|
ExecCtx exec_ctx;
|
1001
|
-
|
1038
|
+
grpclb_policy()->work_serializer()->Run(
|
1039
|
+
[this] { MaybeSendClientLoadReportLocked(); }, DEBUG_LOCATION);
|
1002
1040
|
});
|
1003
1041
|
}
|
1004
1042
|
|
1005
|
-
void GrpcLb::BalancerCallState::MaybeSendClientLoadReport() {
|
1006
|
-
grpclb_policy()->work_serializer()->Run(
|
1007
|
-
[this] { MaybeSendClientLoadReportLocked(); }, DEBUG_LOCATION);
|
1008
|
-
}
|
1009
|
-
|
1010
1043
|
void GrpcLb::BalancerCallState::MaybeSendClientLoadReportLocked() {
|
1011
1044
|
client_load_report_handle_.reset();
|
1012
1045
|
if (this != grpclb_policy()->lb_calld_.get()) {
|
@@ -1343,7 +1376,7 @@ void GrpcLb::BalancerCallState::OnBalancerStatusReceivedLocked(
|
|
1343
1376
|
// helper code for creating balancer channel
|
1344
1377
|
//
|
1345
1378
|
|
1346
|
-
ServerAddressList ExtractBalancerAddresses(const
|
1379
|
+
ServerAddressList ExtractBalancerAddresses(const ChannelArgs& args) {
|
1347
1380
|
const ServerAddressList* addresses =
|
1348
1381
|
FindGrpclbBalancerAddressesInChannelArgs(args);
|
1349
1382
|
if (addresses != nullptr) return *addresses;
|
@@ -1357,88 +1390,90 @@ ServerAddressList ExtractBalancerAddresses(const grpc_channel_args& args) {
|
|
1357
1390
|
* - \a response_generator: in order to propagate updates from the resolver
|
1358
1391
|
* above the grpclb policy.
|
1359
1392
|
* - \a args: other args inherited from the grpclb policy. */
|
1360
|
-
|
1393
|
+
ChannelArgs BuildBalancerChannelArgs(
|
1361
1394
|
FakeResolverResponseGenerator* response_generator,
|
1362
|
-
const
|
1363
|
-
|
1364
|
-
|
1365
|
-
|
1366
|
-
|
1367
|
-
|
1368
|
-
|
1369
|
-
|
1370
|
-
|
1371
|
-
|
1372
|
-
|
1373
|
-
|
1374
|
-
|
1375
|
-
|
1376
|
-
|
1377
|
-
|
1378
|
-
|
1379
|
-
|
1380
|
-
|
1381
|
-
|
1382
|
-
|
1383
|
-
|
1384
|
-
|
1385
|
-
|
1386
|
-
|
1387
|
-
|
1388
|
-
|
1389
|
-
|
1390
|
-
|
1391
|
-
|
1392
|
-
|
1393
|
-
|
1394
|
-
|
1395
|
+
const ChannelArgs& args) {
|
1396
|
+
ChannelArgs grpclb_channel_args;
|
1397
|
+
const grpc_channel_args* lb_channel_specific_args =
|
1398
|
+
args.GetPointer<grpc_channel_args>(
|
1399
|
+
GRPC_ARG_EXPERIMENTAL_GRPCLB_CHANNEL_ARGS);
|
1400
|
+
if (lb_channel_specific_args != nullptr) {
|
1401
|
+
grpclb_channel_args = ChannelArgs::FromC(lb_channel_specific_args);
|
1402
|
+
} else {
|
1403
|
+
// Set grpclb_channel_args based on the parent channel's channel args.
|
1404
|
+
grpclb_channel_args =
|
1405
|
+
args
|
1406
|
+
// LB policy name, since we want to use the default (pick_first) in
|
1407
|
+
// the LB channel.
|
1408
|
+
.Remove(GRPC_ARG_LB_POLICY_NAME)
|
1409
|
+
// Strip out the service config, since we don't want the LB policy
|
1410
|
+
// config specified for the parent channel to affect the LB channel.
|
1411
|
+
.Remove(GRPC_ARG_SERVICE_CONFIG)
|
1412
|
+
// The channel arg for the server URI, since that will be different
|
1413
|
+
// for the LB channel than for the parent channel. The client
|
1414
|
+
// channel factory will re-add this arg with the right value.
|
1415
|
+
.Remove(GRPC_ARG_SERVER_URI)
|
1416
|
+
// The fake resolver response generator, because we are replacing it
|
1417
|
+
// with the one from the grpclb policy, used to propagate updates to
|
1418
|
+
// the LB channel.
|
1419
|
+
.Remove(GRPC_ARG_FAKE_RESOLVER_RESPONSE_GENERATOR)
|
1420
|
+
// The LB channel should use the authority indicated by the target
|
1421
|
+
// authority table (see \a ModifyGrpclbBalancerChannelArgs),
|
1422
|
+
// as opposed to the authority from the parent channel.
|
1423
|
+
.Remove(GRPC_ARG_DEFAULT_AUTHORITY)
|
1424
|
+
// Just as for \a GRPC_ARG_DEFAULT_AUTHORITY, the LB channel should
|
1425
|
+
// be treated as a stand-alone channel and not inherit this argument
|
1426
|
+
// from the args of the parent channel.
|
1427
|
+
.Remove(GRPC_SSL_TARGET_NAME_OVERRIDE_ARG)
|
1428
|
+
// Don't want to pass down channelz node from parent; the balancer
|
1429
|
+
// channel will get its own.
|
1430
|
+
.Remove(GRPC_ARG_CHANNELZ_CHANNEL_NODE)
|
1431
|
+
// Remove the channel args for channel credentials and replace it
|
1432
|
+
// with a version that does not contain call credentials. The
|
1433
|
+
// loadbalancer is not necessarily trusted to handle bearer token
|
1434
|
+
// credentials.
|
1435
|
+
.Remove(GRPC_ARG_CHANNEL_CREDENTIALS);
|
1436
|
+
}
|
1395
1437
|
// Create channel args for channel credentials that does not contain bearer
|
1396
1438
|
// token credentials.
|
1397
|
-
|
1398
|
-
grpc_channel_credentials_find_in_args(args);
|
1439
|
+
auto* channel_credentials = args.GetObject<grpc_channel_credentials>();
|
1399
1440
|
GPR_ASSERT(channel_credentials != nullptr);
|
1400
1441
|
RefCountedPtr<grpc_channel_credentials> creds_sans_call_creds =
|
1401
1442
|
channel_credentials->duplicate_without_call_credentials();
|
1402
1443
|
GPR_ASSERT(creds_sans_call_creds != nullptr);
|
1403
|
-
|
1404
|
-
absl::InlinedVector<grpc_arg, 4> args_to_add = {
|
1405
|
-
// The fake resolver response generator, which we use to inject
|
1406
|
-
// address updates into the LB channel.
|
1407
|
-
FakeResolverResponseGenerator::MakeChannelArg(response_generator),
|
1444
|
+
return grpclb_channel_args
|
1408
1445
|
// A channel arg indicating the target is a grpclb load balancer.
|
1409
|
-
|
1410
|
-
const_cast<char*>(GRPC_ARG_ADDRESS_IS_GRPCLB_LOAD_BALANCER), 1),
|
1446
|
+
.Set(GRPC_ARG_ADDRESS_IS_GRPCLB_LOAD_BALANCER, 1)
|
1411
1447
|
// Tells channelz that this is an internal channel.
|
1412
|
-
|
1413
|
-
const_cast<char*>(GRPC_ARG_CHANNELZ_IS_INTERNAL_CHANNEL), 1),
|
1448
|
+
.Set(GRPC_ARG_CHANNELZ_IS_INTERNAL_CHANNEL, 1)
|
1414
1449
|
// A channel args for new channel credentials that does not contain bearer
|
1415
1450
|
// tokens.
|
1416
|
-
|
1417
|
-
|
1418
|
-
|
1419
|
-
|
1420
|
-
args_to_add.size());
|
1451
|
+
.SetObject(creds_sans_call_creds)
|
1452
|
+
// The fake resolver response generator, which we use to inject
|
1453
|
+
// address updates into the LB channel.
|
1454
|
+
.SetObject(response_generator->Ref());
|
1421
1455
|
}
|
1422
1456
|
|
1423
1457
|
//
|
1424
1458
|
// ctor and dtor
|
1425
1459
|
//
|
1426
1460
|
|
1427
|
-
std::string GetServerNameFromChannelArgs(const
|
1428
|
-
|
1429
|
-
|
1430
|
-
GPR_ASSERT(server_uri != nullptr);
|
1431
|
-
absl::StatusOr<URI> uri = URI::Parse(server_uri);
|
1461
|
+
std::string GetServerNameFromChannelArgs(const ChannelArgs& args) {
|
1462
|
+
absl::StatusOr<URI> uri =
|
1463
|
+
URI::Parse(args.GetString(GRPC_ARG_SERVER_URI).value());
|
1432
1464
|
GPR_ASSERT(uri.ok() && !uri->path().empty());
|
1433
1465
|
return std::string(absl::StripPrefix(uri->path(), "/"));
|
1434
1466
|
}
|
1435
1467
|
|
1436
1468
|
GrpcLb::GrpcLb(Args args)
|
1437
1469
|
: LoadBalancingPolicy(std::move(args)),
|
1438
|
-
server_name_(GetServerNameFromChannelArgs(
|
1470
|
+
server_name_(GetServerNameFromChannelArgs(channel_args())),
|
1439
1471
|
response_generator_(MakeRefCounted<FakeResolverResponseGenerator>()),
|
1440
|
-
lb_call_timeout_(
|
1441
|
-
|
1472
|
+
lb_call_timeout_(std::max(
|
1473
|
+
Duration::Zero(),
|
1474
|
+
channel_args()
|
1475
|
+
.GetDurationFromIntMillis(GRPC_ARG_GRPCLB_CALL_TIMEOUT_MS)
|
1476
|
+
.value_or(Duration::Zero()))),
|
1442
1477
|
lb_call_backoff_(
|
1443
1478
|
BackOff::Options()
|
1444
1479
|
.set_initial_backoff(Duration::Seconds(
|
@@ -1447,15 +1482,19 @@ GrpcLb::GrpcLb(Args args)
|
|
1447
1482
|
.set_jitter(GRPC_GRPCLB_RECONNECT_JITTER)
|
1448
1483
|
.set_max_backoff(Duration::Seconds(
|
1449
1484
|
GRPC_GRPCLB_RECONNECT_MAX_BACKOFF_SECONDS))),
|
1450
|
-
fallback_at_startup_timeout_(
|
1451
|
-
Duration::
|
1452
|
-
|
1453
|
-
|
1454
|
-
|
1455
|
-
|
1456
|
-
|
1457
|
-
|
1458
|
-
|
1485
|
+
fallback_at_startup_timeout_(std::max(
|
1486
|
+
Duration::Zero(),
|
1487
|
+
channel_args()
|
1488
|
+
.GetDurationFromIntMillis(GRPC_ARG_GRPCLB_FALLBACK_TIMEOUT_MS)
|
1489
|
+
.value_or(Duration::Milliseconds(
|
1490
|
+
GRPC_GRPCLB_DEFAULT_FALLBACK_TIMEOUT_MS)))),
|
1491
|
+
subchannel_cache_interval_(std::max(
|
1492
|
+
Duration::Zero(),
|
1493
|
+
channel_args()
|
1494
|
+
.GetDurationFromIntMillis(
|
1495
|
+
GRPC_ARG_GRPCLB_SUBCHANNEL_CACHE_INTERVAL_MS)
|
1496
|
+
.value_or(Duration::Milliseconds(
|
1497
|
+
GRPC_GRPCLB_DEFAULT_SUBCHANNEL_DELETION_DELAY_MS)))) {
|
1459
1498
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
1460
1499
|
gpr_log(GPR_INFO,
|
1461
1500
|
"[grpclb %p] Will use '%s' as the server name for LB request.",
|
@@ -1470,8 +1509,6 @@ GrpcLb::GrpcLb(Args args)
|
|
1470
1509
|
nullptr);
|
1471
1510
|
}
|
1472
1511
|
|
1473
|
-
GrpcLb::~GrpcLb() { grpc_channel_args_destroy(args_); }
|
1474
|
-
|
1475
1512
|
void GrpcLb::ShutdownLocked() {
|
1476
1513
|
shutting_down_ = true;
|
1477
1514
|
lb_calld_.reset();
|
@@ -1522,7 +1559,7 @@ void GrpcLb::ResetBackoffLocked() {
|
|
1522
1559
|
}
|
1523
1560
|
}
|
1524
1561
|
|
1525
|
-
|
1562
|
+
absl::Status GrpcLb::UpdateLocked(UpdateArgs args) {
|
1526
1563
|
const bool is_initial_update = lb_channel_ == nullptr;
|
1527
1564
|
config_ = args.config;
|
1528
1565
|
GPR_ASSERT(config_ != nullptr);
|
@@ -1538,7 +1575,7 @@ void GrpcLb::UpdateLocked(UpdateArgs args) {
|
|
1538
1575
|
}
|
1539
1576
|
resolution_note_ = std::move(args.resolution_note);
|
1540
1577
|
// Update balancer channel.
|
1541
|
-
UpdateBalancerChannelLocked(
|
1578
|
+
absl::Status status = UpdateBalancerChannelLocked(args.args);
|
1542
1579
|
// Update the existing child policy, if any.
|
1543
1580
|
if (child_policy_ != nullptr) CreateOrUpdateChildPolicyLocked();
|
1544
1581
|
// If this is the initial update, start the fallback-at-startup checks
|
@@ -1546,7 +1583,7 @@ void GrpcLb::UpdateLocked(UpdateArgs args) {
|
|
1546
1583
|
if (is_initial_update) {
|
1547
1584
|
fallback_at_startup_checks_pending_ = true;
|
1548
1585
|
// Start timer.
|
1549
|
-
Timestamp deadline =
|
1586
|
+
Timestamp deadline = Timestamp::Now() + fallback_at_startup_timeout_;
|
1550
1587
|
Ref(DEBUG_LOCATION, "on_fallback_timer").release(); // Ref for callback
|
1551
1588
|
grpc_timer_init(&lb_fallback_timer_, deadline, &lb_on_fallback_);
|
1552
1589
|
// Start watching the channel's connectivity state. If the channel
|
@@ -1563,43 +1600,40 @@ void GrpcLb::UpdateLocked(UpdateArgs args) {
|
|
1563
1600
|
// Start balancer call.
|
1564
1601
|
StartBalancerCallLocked();
|
1565
1602
|
}
|
1603
|
+
return status;
|
1566
1604
|
}
|
1567
1605
|
|
1568
1606
|
//
|
1569
1607
|
// helpers for UpdateLocked()
|
1570
1608
|
//
|
1571
1609
|
|
1572
|
-
|
1610
|
+
absl::Status GrpcLb::UpdateBalancerChannelLocked(const ChannelArgs& args) {
|
1573
1611
|
// Make sure that GRPC_ARG_LB_POLICY_NAME is set in channel args,
|
1574
1612
|
// since we use this to trigger the client_load_reporting filter.
|
1575
|
-
|
1576
|
-
|
1577
|
-
const_cast<char*>(GRPC_ARG_LB_POLICY_NAME), const_cast<char*>("grpclb"));
|
1578
|
-
grpc_channel_args_destroy(args_);
|
1579
|
-
args_ = grpc_channel_args_copy_and_add_and_remove(
|
1580
|
-
&args, args_to_remove, GPR_ARRAY_SIZE(args_to_remove), &new_arg, 1);
|
1581
|
-
// Construct args for balancer channel.
|
1613
|
+
args_ = args.Set(GRPC_ARG_LB_POLICY_NAME, "grpclb");
|
1614
|
+
// Get balancer addresses.
|
1582
1615
|
ServerAddressList balancer_addresses = ExtractBalancerAddresses(args);
|
1583
|
-
|
1584
|
-
|
1616
|
+
absl::Status status;
|
1617
|
+
if (balancer_addresses.empty()) {
|
1618
|
+
status = absl::UnavailableError("balancer address list must be non-empty");
|
1619
|
+
}
|
1620
|
+
// Construct args for balancer channel.
|
1621
|
+
ChannelArgs lb_channel_args =
|
1622
|
+
BuildBalancerChannelArgs(response_generator_.get(), args);
|
1585
1623
|
// Create balancer channel if needed.
|
1586
1624
|
if (lb_channel_ == nullptr) {
|
1587
1625
|
std::string uri_str = absl::StrCat("fake:///", server_name_);
|
1588
|
-
|
1589
|
-
grpc_channel_credentials_find_in_args(lb_channel_args);
|
1626
|
+
auto* creds = lb_channel_args.GetObject<grpc_channel_credentials>();
|
1590
1627
|
GPR_ASSERT(creds != nullptr);
|
1591
|
-
|
1592
|
-
|
1593
|
-
|
1594
|
-
lb_channel_ = grpc_channel_create(uri_str.c_str(), creds, new_args);
|
1628
|
+
lb_channel_ = grpc_channel_create(
|
1629
|
+
uri_str.c_str(), creds,
|
1630
|
+
lb_channel_args.Remove(GRPC_ARG_CHANNEL_CREDENTIALS).ToC().get());
|
1595
1631
|
GPR_ASSERT(lb_channel_ != nullptr);
|
1596
|
-
grpc_channel_args_destroy(new_args);
|
1597
1632
|
// Set up channelz linkage.
|
1598
1633
|
channelz::ChannelNode* child_channelz_node =
|
1599
1634
|
grpc_channel_get_channelz_node(lb_channel_);
|
1600
1635
|
channelz::ChannelNode* parent_channelz_node =
|
1601
|
-
|
1602
|
-
&args, GRPC_ARG_CHANNELZ_CHANNEL_NODE);
|
1636
|
+
args.GetObject<channelz::ChannelNode>();
|
1603
1637
|
if (child_channelz_node != nullptr && parent_channelz_node != nullptr) {
|
1604
1638
|
parent_channelz_node->AddChildChannel(child_channelz_node->uuid());
|
1605
1639
|
parent_channelz_node_ = parent_channelz_node->Ref();
|
@@ -1611,6 +1645,8 @@ void GrpcLb::UpdateBalancerChannelLocked(const grpc_channel_args& args) {
|
|
1611
1645
|
result.addresses = std::move(balancer_addresses);
|
1612
1646
|
result.args = lb_channel_args;
|
1613
1647
|
response_generator_->SetResponse(std::move(result));
|
1648
|
+
// Return status.
|
1649
|
+
return status;
|
1614
1650
|
}
|
1615
1651
|
|
1616
1652
|
void GrpcLb::CancelBalancerChannelConnectivityWatchLocked() {
|
@@ -1642,7 +1678,7 @@ void GrpcLb::StartBalancerCallRetryTimerLocked() {
|
|
1642
1678
|
Timestamp next_try = lb_call_backoff_.NextAttemptTime();
|
1643
1679
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
1644
1680
|
gpr_log(GPR_INFO, "[grpclb %p] Connection to LB server lost...", this);
|
1645
|
-
Duration timeout = next_try -
|
1681
|
+
Duration timeout = next_try - Timestamp::Now();
|
1646
1682
|
if (timeout > Duration::Zero()) {
|
1647
1683
|
gpr_log(GPR_INFO, "[grpclb %p] ... retry_timer_active in %" PRId64 "ms.",
|
1648
1684
|
this, timeout.millis());
|
@@ -1734,22 +1770,19 @@ void GrpcLb::OnFallbackTimerLocked(grpc_error_handle error) {
|
|
1734
1770
|
// code for interacting with the child policy
|
1735
1771
|
//
|
1736
1772
|
|
1737
|
-
|
1773
|
+
ChannelArgs GrpcLb::CreateChildPolicyArgsLocked(
|
1738
1774
|
bool is_backend_from_grpclb_load_balancer) {
|
1739
|
-
|
1740
|
-
|
1741
|
-
|
1742
|
-
is_backend_from_grpclb_load_balancer));
|
1775
|
+
ChannelArgs r =
|
1776
|
+
args_.Set(GRPC_ARG_ADDRESS_IS_BACKEND_FROM_GRPCLB_LOAD_BALANCER,
|
1777
|
+
is_backend_from_grpclb_load_balancer);
|
1743
1778
|
if (is_backend_from_grpclb_load_balancer) {
|
1744
|
-
|
1745
|
-
const_cast<char*>(GRPC_ARG_INHIBIT_HEALTH_CHECKING), 1));
|
1779
|
+
r = r.Set(GRPC_ARG_INHIBIT_HEALTH_CHECKING, 1);
|
1746
1780
|
}
|
1747
|
-
return
|
1748
|
-
args_to_add.size());
|
1781
|
+
return r;
|
1749
1782
|
}
|
1750
1783
|
|
1751
1784
|
OrphanablePtr<LoadBalancingPolicy> GrpcLb::CreateChildPolicyLocked(
|
1752
|
-
const
|
1785
|
+
const ChannelArgs& args) {
|
1753
1786
|
LoadBalancingPolicy::Args lb_policy_args;
|
1754
1787
|
lb_policy_args.work_serializer = work_serializer();
|
1755
1788
|
lb_policy_args.args = args;
|
@@ -1793,7 +1826,7 @@ void GrpcLb::CreateOrUpdateChildPolicyLocked() {
|
|
1793
1826
|
}
|
1794
1827
|
update_args.args =
|
1795
1828
|
CreateChildPolicyArgsLocked(is_backend_from_grpclb_load_balancer);
|
1796
|
-
GPR_ASSERT(update_args.args !=
|
1829
|
+
GPR_ASSERT(update_args.args != ChannelArgs());
|
1797
1830
|
update_args.config = config_->child_policy();
|
1798
1831
|
// Create child policy if needed.
|
1799
1832
|
if (child_policy_ == nullptr) {
|
@@ -1804,7 +1837,9 @@ void GrpcLb::CreateOrUpdateChildPolicyLocked() {
|
|
1804
1837
|
gpr_log(GPR_INFO, "[grpclb %p] Updating child policy handler %p", this,
|
1805
1838
|
child_policy_.get());
|
1806
1839
|
}
|
1807
|
-
|
1840
|
+
// TODO(roth): If we're in fallback mode and the child policy rejects the
|
1841
|
+
// update, we should propagate that failure back to the resolver somehow.
|
1842
|
+
(void)child_policy_->UpdateLocked(std::move(update_args));
|
1808
1843
|
}
|
1809
1844
|
|
1810
1845
|
//
|
@@ -1813,7 +1848,7 @@ void GrpcLb::CreateOrUpdateChildPolicyLocked() {
|
|
1813
1848
|
|
1814
1849
|
void GrpcLb::CacheDeletedSubchannelLocked(
|
1815
1850
|
RefCountedPtr<SubchannelInterface> subchannel) {
|
1816
|
-
Timestamp deletion_time =
|
1851
|
+
Timestamp deletion_time = Timestamp::Now() + subchannel_cache_interval_;
|
1817
1852
|
cached_subchannels_[deletion_time].push_back(std::move(subchannel));
|
1818
1853
|
if (!subchannel_cache_timer_pending_) {
|
1819
1854
|
Ref(DEBUG_LOCATION, "OnSubchannelCacheTimer").release();
|
@@ -1868,54 +1903,12 @@ class GrpcLbFactory : public LoadBalancingPolicyFactory {
|
|
1868
1903
|
return MakeOrphanable<GrpcLb>(std::move(args));
|
1869
1904
|
}
|
1870
1905
|
|
1871
|
-
|
1906
|
+
absl::string_view name() const override { return kGrpclb; }
|
1872
1907
|
|
1873
|
-
RefCountedPtr<LoadBalancingPolicy::Config
|
1874
|
-
|
1875
|
-
|
1876
|
-
|
1877
|
-
return MakeRefCounted<GrpcLbConfig>(nullptr, "");
|
1878
|
-
}
|
1879
|
-
std::vector<grpc_error_handle> error_list;
|
1880
|
-
Json child_policy_config_json_tmp;
|
1881
|
-
const Json* child_policy_config_json;
|
1882
|
-
std::string service_name;
|
1883
|
-
auto it = json.object_value().find("serviceName");
|
1884
|
-
if (it != json.object_value().end()) {
|
1885
|
-
const Json& service_name_json = it->second;
|
1886
|
-
if (service_name_json.type() != Json::Type::STRING) {
|
1887
|
-
error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
1888
|
-
"field:serviceName error:type should be string"));
|
1889
|
-
} else {
|
1890
|
-
service_name = service_name_json.string_value();
|
1891
|
-
}
|
1892
|
-
}
|
1893
|
-
it = json.object_value().find("childPolicy");
|
1894
|
-
if (it == json.object_value().end()) {
|
1895
|
-
child_policy_config_json_tmp = Json::Array{Json::Object{
|
1896
|
-
{"round_robin", Json::Object()},
|
1897
|
-
}};
|
1898
|
-
child_policy_config_json = &child_policy_config_json_tmp;
|
1899
|
-
} else {
|
1900
|
-
child_policy_config_json = &it->second;
|
1901
|
-
}
|
1902
|
-
grpc_error_handle parse_error = GRPC_ERROR_NONE;
|
1903
|
-
RefCountedPtr<LoadBalancingPolicy::Config> child_policy_config =
|
1904
|
-
LoadBalancingPolicyRegistry::ParseLoadBalancingConfig(
|
1905
|
-
*child_policy_config_json, &parse_error);
|
1906
|
-
if (!GRPC_ERROR_IS_NONE(parse_error)) {
|
1907
|
-
std::vector<grpc_error_handle> child_errors;
|
1908
|
-
child_errors.push_back(parse_error);
|
1909
|
-
error_list.push_back(
|
1910
|
-
GRPC_ERROR_CREATE_FROM_VECTOR("field:childPolicy", &child_errors));
|
1911
|
-
}
|
1912
|
-
if (error_list.empty()) {
|
1913
|
-
return MakeRefCounted<GrpcLbConfig>(std::move(child_policy_config),
|
1914
|
-
std::move(service_name));
|
1915
|
-
} else {
|
1916
|
-
*error = GRPC_ERROR_CREATE_FROM_VECTOR("GrpcLb Parser", &error_list);
|
1917
|
-
return nullptr;
|
1918
|
-
}
|
1908
|
+
absl::StatusOr<RefCountedPtr<LoadBalancingPolicy::Config>>
|
1909
|
+
ParseLoadBalancingConfig(const Json& json) const override {
|
1910
|
+
return LoadRefCountedFromJson<GrpcLbConfig>(
|
1911
|
+
json, JsonArgs(), "errors validating grpclb LB policy config");
|
1919
1912
|
}
|
1920
1913
|
};
|
1921
1914
|
|
@@ -1927,16 +1920,10 @@ class GrpcLbFactory : public LoadBalancingPolicyFactory {
|
|
1927
1920
|
// Plugin registration
|
1928
1921
|
//
|
1929
1922
|
|
1930
|
-
void grpc_lb_policy_grpclb_init() {
|
1931
|
-
grpc_core::LoadBalancingPolicyRegistry::Builder::
|
1932
|
-
RegisterLoadBalancingPolicyFactory(
|
1933
|
-
absl::make_unique<grpc_core::GrpcLbFactory>());
|
1934
|
-
}
|
1935
|
-
|
1936
|
-
void grpc_lb_policy_grpclb_shutdown() {}
|
1937
|
-
|
1938
1923
|
namespace grpc_core {
|
1939
|
-
void
|
1924
|
+
void RegisterGrpcLbPolicy(CoreConfiguration::Builder* builder) {
|
1925
|
+
builder->lb_policy_registry()->RegisterLoadBalancingPolicyFactory(
|
1926
|
+
absl::make_unique<GrpcLbFactory>());
|
1940
1927
|
builder->channel_init()->RegisterStage(
|
1941
1928
|
GRPC_CLIENT_SUBCHANNEL, GRPC_CHANNEL_INIT_BUILTIN_PRIORITY,
|
1942
1929
|
[](ChannelStackBuilder* builder) {
|