grpc 1.47.0-x86_64-linux → 1.49.0.pre1-x86_64-linux
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +183 -62
- data/include/grpc/compression.h +1 -1
- data/include/grpc/event_engine/event_engine.h +37 -25
- data/include/grpc/event_engine/slice_buffer.h +8 -2
- data/include/grpc/grpc.h +3 -3
- data/include/grpc/impl/codegen/compression_types.h +2 -1
- data/include/grpc/impl/codegen/connectivity_state.h +2 -1
- data/include/grpc/impl/codegen/gpr_types.h +2 -1
- data/include/grpc/impl/codegen/grpc_types.h +5 -9
- data/include/grpc/impl/codegen/port_platform.h +2 -7
- data/src/core/ext/filters/census/grpc_context.cc +3 -0
- data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +20 -8
- data/src/core/ext/filters/channel_idle/channel_idle_filter.h +18 -2
- data/src/core/ext/filters/channel_idle/idle_filter_state.h +2 -0
- data/src/core/ext/filters/client_channel/backup_poller.cc +3 -1
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +2 -2
- data/src/core/ext/filters/client_channel/client_channel.cc +164 -261
- data/src/core/ext/filters/client_channel/client_channel.h +34 -12
- data/src/core/ext/filters/client_channel/client_channel_factory.cc +0 -29
- data/src/core/ext/filters/client_channel/client_channel_factory.h +2 -10
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +1 -1
- data/src/core/ext/filters/client_channel/config_selector.h +13 -5
- data/src/core/ext/filters/client_channel/connector.h +5 -6
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +6 -4
- data/src/core/ext/filters/client_channel/dynamic_filters.h +1 -1
- data/src/core/ext/filters/client_channel/http_proxy.cc +53 -65
- data/src/core/ext/filters/client_channel/http_proxy.h +12 -9
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +14 -12
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +6 -6
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +2 -2
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h +1 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +170 -164
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +13 -4
- 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 +0 -1
- 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 +200 -96
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +25 -1
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +121 -131
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +153 -116
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +220 -181
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +10 -6
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +110 -119
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +133 -117
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +97 -87
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +114 -131
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +40 -49
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +84 -102
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +64 -76
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +172 -103
- data/src/core/ext/filters/client_channel/proxy_mapper.h +13 -14
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +18 -16
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.h +8 -7
- data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +7 -9
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +434 -148
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +5 -5
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +179 -103
- 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 +29 -18
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +8 -18
- 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 +16 -18
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +4 -5
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +5 -6
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +5 -13
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +181 -175
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +3 -1
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +39 -32
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +7 -10
- data/src/core/ext/filters/client_channel/retry_filter.cc +35 -43
- data/src/core/ext/filters/client_channel/retry_filter.h +1 -0
- 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 +7 -7
- data/src/core/ext/filters/client_channel/subchannel.cc +101 -138
- data/src/core/ext/filters/client_channel/subchannel.h +14 -30
- 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 +15 -101
- data/src/core/ext/filters/client_channel/subchannel_stream_client.h +5 -9
- data/src/core/ext/filters/deadline/deadline_filter.cc +18 -13
- data/src/core/ext/filters/deadline/deadline_filter.h +8 -2
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +20 -3
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +9 -4
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +19 -11
- data/src/core/ext/filters/fault_injection/service_config_parser.h +19 -6
- data/src/core/ext/filters/http/client/http_client_filter.cc +17 -7
- data/src/core/ext/filters/http/client/http_client_filter.h +9 -2
- data/src/core/ext/filters/http/client_authority_filter.cc +11 -11
- data/src/core/ext/filters/http/client_authority_filter.h +6 -3
- data/src/core/ext/filters/http/http_filters_plugin.cc +9 -1
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +64 -187
- data/src/core/ext/filters/http/message_compress/message_compress_filter.h +1 -2
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +42 -106
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.h +1 -0
- data/src/core/ext/filters/http/server/http_server_filter.cc +17 -11
- data/src/core/ext/filters/http/server/http_server_filter.h +7 -2
- data/src/core/ext/filters/message_size/message_size_filter.cc +37 -21
- data/src/core/ext/filters/message_size/message_size_filter.h +13 -3
- data/src/core/ext/filters/rbac/rbac_filter.cc +14 -3
- data/src/core/ext/filters/rbac/rbac_filter.h +8 -0
- data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +25 -10
- data/src/core/ext/filters/rbac/rbac_service_config_parser.h +15 -5
- data/src/core/ext/filters/server_config_selector/server_config_selector.cc +1 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector.h +14 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +23 -5
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.h +1 -0
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +39 -66
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +77 -104
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +4 -6
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +320 -635
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +4 -3
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +207 -262
- data/src/core/ext/transport/chttp2/transport/flow_control.h +177 -289
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +57 -215
- data/src/core/ext/transport/chttp2/transport/frame_data.h +10 -36
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +0 -41
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +7 -12
- data/src/core/ext/transport/chttp2/transport/hpack_constants.h +7 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +25 -8
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +4 -0
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +0 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +8 -2
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +9 -16
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +0 -2
- data/src/core/ext/transport/chttp2/transport/internal.h +11 -112
- data/src/core/ext/transport/chttp2/transport/parsing.cc +51 -38
- data/src/core/ext/transport/chttp2/transport/stream_lists.cc +0 -4
- data/src/core/ext/transport/chttp2/transport/writing.cc +18 -21
- data/src/core/ext/transport/inproc/inproc_plugin.cc +0 -1
- data/src/core/ext/transport/inproc/inproc_transport.cc +124 -154
- data/src/core/ext/transport/inproc/inproc_transport.h +3 -1
- 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.c +52 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +168 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.c +46 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.h +98 -0
- 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_factory.h +6 -1
- data/src/core/ext/xds/certificate_provider_registry.cc +8 -8
- data/src/core/ext/xds/certificate_provider_registry.h +3 -1
- data/src/core/ext/xds/certificate_provider_store.cc +2 -0
- data/src/core/ext/xds/certificate_provider_store.h +9 -0
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +9 -0
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +8 -0
- data/src/core/ext/xds/upb_utils.h +0 -22
- data/src/core/ext/xds/xds_api.cc +68 -103
- data/src/core/ext/xds/xds_api.h +30 -32
- data/src/core/ext/xds/xds_bootstrap.cc +69 -69
- data/src/core/ext/xds/xds_bootstrap.h +37 -19
- data/src/core/ext/xds/xds_certificate_provider.cc +12 -3
- data/src/core/ext/xds/xds_certificate_provider.h +25 -1
- data/src/core/ext/xds/xds_channel_stack_modifier.cc +15 -4
- data/src/core/ext/xds/xds_channel_stack_modifier.h +13 -1
- data/src/core/ext/xds/xds_client.cc +583 -1193
- data/src/core/ext/xds/xds_client.h +28 -42
- data/src/core/ext/xds/xds_client_grpc.cc +291 -0
- data/src/core/ext/xds/xds_client_grpc.h +102 -0
- data/src/core/ext/xds/xds_client_stats.cc +3 -4
- data/src/core/ext/xds/xds_client_stats.h +4 -3
- data/src/core/ext/xds/xds_cluster.cc +107 -107
- data/src/core/ext/xds/xds_cluster.h +14 -5
- data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +23 -18
- data/src/core/ext/xds/xds_cluster_specifier_plugin.h +2 -8
- data/src/core/ext/xds/xds_common_types.cc +161 -123
- data/src/core/ext/xds/xds_common_types.h +16 -9
- data/src/core/ext/xds/xds_endpoint.cc +95 -85
- data/src/core/ext/xds/xds_endpoint.h +16 -8
- data/src/core/ext/xds/xds_http_fault_filter.cc +11 -16
- data/src/core/ext/xds/xds_http_fault_filter.h +5 -3
- data/src/core/ext/xds/xds_http_filters.cc +7 -0
- data/src/core/ext/xds/xds_http_filters.h +5 -5
- data/src/core/ext/xds/xds_http_rbac_filter.cc +52 -55
- data/src/core/ext/xds/xds_http_rbac_filter.h +8 -1
- data/src/core/ext/xds/xds_lb_policy_registry.cc +288 -0
- data/src/core/ext/xds/xds_lb_policy_registry.h +72 -0
- data/src/core/ext/xds/xds_listener.cc +355 -307
- data/src/core/ext/xds/xds_listener.h +13 -4
- data/src/core/ext/xds/xds_resource_type.h +16 -5
- data/src/core/ext/xds/xds_resource_type_impl.h +7 -3
- data/src/core/ext/xds/xds_route_config.cc +215 -184
- data/src/core/ext/xds/xds_route_config.h +39 -16
- data/src/core/ext/xds/xds_routing.cc +19 -6
- data/src/core/ext/xds/xds_routing.h +12 -9
- data/src/core/ext/xds/xds_server_config_fetcher.cc +124 -81
- data/src/core/ext/xds/xds_transport.h +86 -0
- data/src/core/ext/xds/xds_transport_grpc.cc +349 -0
- data/src/core/ext/xds/xds_transport_grpc.h +135 -0
- data/src/core/lib/address_utils/parse_address.cc +24 -25
- data/src/core/lib/address_utils/parse_address.h +11 -7
- data/src/core/lib/address_utils/sockaddr_utils.cc +8 -7
- data/src/core/lib/address_utils/sockaddr_utils.h +2 -0
- data/src/core/lib/avl/avl.h +47 -25
- data/src/core/lib/backoff/backoff.cc +1 -1
- data/src/core/lib/backoff/backoff.h +1 -1
- data/src/core/lib/channel/call_tracer.h +4 -4
- data/src/core/lib/channel/channel_args.cc +88 -19
- data/src/core/lib/channel/channel_args.h +114 -62
- data/src/core/lib/channel/channel_args_preconditioning.cc +1 -0
- data/src/core/lib/channel/channel_fwd.h +26 -0
- data/src/core/lib/channel/channel_stack.cc +4 -5
- data/src/core/lib/channel/channel_stack.h +1 -11
- data/src/core/lib/channel/channel_stack_builder.cc +3 -3
- data/src/core/lib/channel/channel_stack_builder.h +4 -7
- data/src/core/lib/channel/channel_stack_builder_impl.cc +3 -5
- data/src/core/lib/channel/channel_stack_builder_impl.h +1 -0
- data/src/core/lib/channel/channelz.cc +28 -37
- data/src/core/lib/channel/channelz.h +11 -3
- data/src/core/lib/channel/channelz_registry.cc +4 -5
- data/src/core/lib/channel/connected_channel.cc +1 -0
- data/src/core/lib/channel/connected_channel.h +1 -0
- data/src/core/lib/channel/promise_based_filter.cc +11 -5
- data/src/core/lib/channel/promise_based_filter.h +2 -1
- data/src/core/lib/compression/compression.cc +6 -1
- data/src/core/lib/compression/compression_internal.cc +3 -6
- data/src/core/lib/compression/compression_internal.h +3 -2
- data/src/core/lib/compression/message_compress.cc +3 -1
- data/src/core/lib/compression/message_compress.h +2 -3
- data/src/core/lib/config/core_configuration.h +48 -35
- data/src/core/lib/debug/stats.cc +15 -18
- data/src/core/lib/debug/stats.h +13 -4
- data/src/core/lib/debug/stats_data.cc +2 -1
- data/src/core/lib/debug/stats_data.h +0 -4
- data/src/core/lib/debug/trace.h +13 -12
- data/src/core/lib/event_engine/default_event_engine.cc +71 -0
- data/src/core/lib/event_engine/{event_engine_factory.h → default_event_engine.h} +6 -10
- data/src/core/lib/event_engine/default_event_engine_factory.cc +20 -3
- data/src/core/lib/event_engine/default_event_engine_factory.h +33 -0
- data/src/core/lib/event_engine/executor/executor.h +38 -0
- data/src/core/lib/event_engine/executor/threaded_executor.cc +36 -0
- data/src/core/lib/event_engine/executor/threaded_executor.h +44 -0
- data/src/core/lib/event_engine/forkable.cc +98 -0
- data/src/core/lib/event_engine/forkable.h +61 -0
- data/src/core/lib/event_engine/poller.h +54 -0
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +142 -0
- data/src/core/lib/event_engine/{iomgr_engine.h → posix_engine/posix_engine.h} +35 -32
- data/src/core/lib/event_engine/posix_engine/timer.cc +311 -0
- data/src/core/lib/event_engine/posix_engine/timer.h +193 -0
- data/src/core/lib/event_engine/posix_engine/timer_heap.cc +107 -0
- data/src/core/lib/event_engine/posix_engine/timer_heap.h +56 -0
- data/src/core/lib/event_engine/posix_engine/timer_manager.cc +290 -0
- data/src/core/lib/event_engine/posix_engine/timer_manager.h +120 -0
- data/src/core/lib/event_engine/promise.h +78 -0
- data/src/core/lib/event_engine/socket_notifier.h +55 -0
- data/src/core/lib/event_engine/thread_pool.cc +158 -0
- data/src/core/lib/event_engine/thread_pool.h +81 -0
- data/src/core/lib/event_engine/utils.cc +49 -0
- data/src/core/lib/event_engine/utils.h +40 -0
- data/src/core/lib/event_engine/windows/iocp.cc +149 -0
- data/src/core/lib/event_engine/windows/iocp.h +68 -0
- data/src/core/lib/event_engine/windows/win_socket.cc +196 -0
- data/src/core/lib/event_engine/windows/win_socket.h +120 -0
- data/src/core/lib/event_engine/windows/windows_engine.cc +159 -0
- data/src/core/lib/event_engine/windows/windows_engine.h +120 -0
- data/src/core/lib/gpr/time.cc +11 -9
- data/src/core/lib/gpr/time_posix.cc +6 -9
- data/src/core/lib/gpr/time_windows.cc +10 -7
- data/src/core/lib/gpr/useful.h +29 -0
- data/src/core/lib/gprpp/bitset.h +3 -13
- data/src/core/lib/gprpp/debug_location.h +39 -7
- data/src/core/lib/gprpp/manual_constructor.h +0 -68
- data/src/core/lib/gprpp/no_destruct.h +94 -0
- data/src/core/lib/gprpp/ref_counted_ptr.h +0 -1
- data/src/core/lib/gprpp/status_helper.cc +45 -30
- data/src/core/lib/gprpp/table.h +0 -1
- data/src/core/lib/gprpp/time.cc +8 -0
- data/src/core/lib/gprpp/time.h +4 -0
- data/src/core/lib/gprpp/time_averaged_stats.cc +60 -0
- data/src/core/lib/{iomgr → gprpp}/time_averaged_stats.h +29 -22
- data/src/core/lib/{iomgr → gprpp}/work_serializer.cc +34 -18
- data/src/core/lib/{iomgr → gprpp}/work_serializer.h +21 -28
- data/src/core/lib/http/format_request.cc +5 -4
- data/src/core/lib/http/format_request.h +1 -1
- data/src/core/lib/http/httpcli.cc +29 -35
- data/src/core/lib/http/httpcli.h +19 -3
- data/src/core/lib/http/httpcli_security_connector.cc +26 -14
- data/src/core/lib/http/httpcli_ssl_credentials.h +3 -1
- data/src/core/lib/http/parser.cc +6 -7
- data/src/core/lib/http/parser.h +3 -0
- data/src/core/lib/iomgr/call_combiner.cc +2 -28
- data/src/core/lib/iomgr/closure.h +0 -9
- data/src/core/lib/iomgr/combiner.cc +0 -20
- data/src/core/lib/iomgr/endpoint.h +1 -1
- data/src/core/lib/iomgr/endpoint_cfstream.cc +2 -2
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +2 -1
- data/src/core/lib/iomgr/error.cc +6 -777
- data/src/core/lib/iomgr/error.h +6 -147
- data/src/core/lib/iomgr/error_cfstream.cc +0 -5
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +57 -18
- data/src/core/lib/iomgr/ev_epoll1_linux.h +1 -1
- data/src/core/lib/iomgr/ev_poll_posix.cc +94 -61
- data/src/core/lib/iomgr/ev_poll_posix.h +2 -2
- data/src/core/lib/iomgr/ev_posix.cc +54 -92
- data/src/core/lib/iomgr/ev_posix.h +5 -3
- data/src/core/lib/iomgr/exec_ctx.cc +0 -12
- data/src/core/lib/iomgr/executor.cc +0 -10
- data/src/core/lib/iomgr/executor.h +0 -3
- data/src/core/lib/iomgr/fork_posix.cc +1 -1
- data/src/core/lib/iomgr/iomgr.cc +7 -0
- data/src/core/lib/iomgr/iomgr_posix.cc +1 -0
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +1 -0
- data/src/core/lib/iomgr/load_file.cc +1 -1
- data/src/core/lib/iomgr/lockfree_event.cc +0 -17
- data/src/core/lib/iomgr/port.h +3 -0
- data/src/core/lib/iomgr/resolve_address.h +29 -6
- data/src/core/lib/iomgr/resolve_address_posix.cc +39 -9
- data/src/core/lib/iomgr/resolve_address_posix.h +19 -5
- data/src/core/lib/iomgr/resolve_address_windows.cc +41 -11
- data/src/core/lib/iomgr/resolve_address_windows.h +19 -5
- data/src/core/lib/iomgr/socket_windows.h +0 -2
- data/src/core/lib/iomgr/tcp_client.cc +12 -7
- data/src/core/lib/iomgr/tcp_client.h +24 -13
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +15 -9
- data/src/core/lib/iomgr/tcp_client_posix.cc +143 -25
- data/src/core/lib/iomgr/tcp_client_posix.h +1 -1
- data/src/core/lib/iomgr/tcp_client_windows.cc +14 -10
- data/src/core/lib/iomgr/tcp_posix.cc +207 -33
- data/src/core/lib/iomgr/tcp_server_posix.cc +7 -7
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +12 -12
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +2 -2
- data/src/core/lib/iomgr/tcp_server_windows.cc +7 -7
- data/src/core/lib/iomgr/tcp_windows.cc +5 -5
- data/src/core/lib/iomgr/timer_generic.cc +6 -8
- data/src/core/lib/iomgr/unix_sockets_posix.cc +2 -2
- data/src/core/lib/iomgr/wakeup_fd_pipe.cc +2 -2
- data/src/core/lib/iomgr/wakeup_fd_posix.cc +15 -12
- data/src/core/lib/iomgr/wakeup_fd_posix.h +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 +233 -0
- data/src/core/lib/json/json_object_loader.h +618 -0
- data/src/core/lib/json/json_reader.cc +86 -62
- data/src/core/lib/json/json_util.cc +8 -36
- data/src/core/{ext/filters/client_channel → lib/load_balancing}/lb_policy.cc +3 -44
- data/src/core/{ext/filters/client_channel → lib/load_balancing}/lb_policy.h +15 -31
- data/src/core/lib/load_balancing/lb_policy_factory.h +49 -0
- data/src/core/{ext/filters/client_channel → lib/load_balancing}/lb_policy_registry.cc +48 -73
- data/src/core/{ext/filters/client_channel → lib/load_balancing}/lb_policy_registry.h +27 -27
- data/src/core/{ext/filters/client_channel → lib/load_balancing}/subchannel_interface.h +16 -24
- data/src/core/lib/matchers/matchers.cc +6 -3
- data/src/core/lib/matchers/matchers.h +2 -0
- data/src/core/lib/promise/activity.cc +0 -1
- data/src/core/lib/promise/activity.h +56 -14
- data/src/core/lib/promise/arena_promise.h +84 -81
- data/src/core/lib/promise/context.h +0 -1
- data/src/core/lib/promise/detail/basic_seq.h +43 -23
- data/src/core/lib/promise/detail/promise_factory.h +0 -1
- data/src/core/lib/promise/loop.h +1 -0
- data/src/core/lib/promise/map.h +0 -1
- data/src/core/lib/promise/promise.h +1 -0
- data/src/core/lib/promise/seq.h +25 -4
- data/src/core/lib/promise/sleep.cc +43 -42
- data/src/core/lib/promise/sleep.h +31 -28
- data/src/core/lib/promise/try_seq.h +26 -6
- data/src/core/lib/resolver/resolver.cc +0 -42
- data/src/core/lib/resolver/resolver.h +5 -12
- data/src/core/lib/resolver/resolver_factory.h +6 -4
- data/src/core/lib/resolver/resolver_registry.cc +3 -10
- data/src/core/lib/resolver/resolver_registry.h +12 -2
- data/src/core/lib/resolver/server_address.cc +19 -15
- data/src/core/lib/resolver/server_address.h +11 -8
- data/src/core/lib/resource_quota/api.cc +1 -1
- data/src/core/lib/resource_quota/arena.cc +21 -1
- data/src/core/lib/resource_quota/arena.h +24 -2
- data/src/core/lib/resource_quota/memory_quota.cc +171 -73
- data/src/core/lib/resource_quota/memory_quota.h +109 -42
- data/src/core/lib/resource_quota/periodic_update.cc +79 -0
- data/src/core/lib/resource_quota/periodic_update.h +71 -0
- data/src/core/lib/security/authorization/authorization_policy_provider.h +7 -0
- data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +4 -0
- data/src/core/lib/security/authorization/evaluate_args.cc +17 -8
- data/src/core/lib/security/authorization/evaluate_args.h +6 -3
- data/src/core/lib/security/authorization/grpc_authorization_engine.cc +6 -0
- data/src/core/lib/security/authorization/grpc_authorization_engine.h +7 -0
- data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +12 -1
- data/src/core/lib/security/authorization/grpc_server_authz_filter.h +13 -2
- data/src/core/lib/security/authorization/matchers.cc +20 -9
- data/src/core/lib/security/authorization/matchers.h +7 -0
- data/src/core/lib/security/authorization/rbac_policy.cc +4 -0
- data/src/core/lib/security/authorization/rbac_policy.h +7 -0
- data/src/core/lib/security/context/security_context.cc +5 -2
- data/src/core/lib/security/context/security_context.h +14 -2
- data/src/core/lib/security/credentials/alts/alts_credentials.cc +6 -5
- data/src/core/lib/security/credentials/alts/alts_credentials.h +8 -4
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc +1 -3
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc +1 -4
- data/src/core/lib/security/credentials/call_creds_util.cc +8 -0
- data/src/core/lib/security/credentials/call_creds_util.h +1 -0
- data/src/core/lib/security/credentials/channel_creds_registry.h +6 -1
- data/src/core/lib/security/credentials/channel_creds_registry_init.cc +10 -0
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +5 -9
- data/src/core/lib/security/credentials/composite/composite_credentials.h +17 -5
- data/src/core/lib/security/credentials/credentials.cc +4 -8
- data/src/core/lib/security/credentials/credentials.h +26 -20
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +45 -20
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +10 -0
- data/src/core/lib/security/credentials/external/aws_request_signer.cc +9 -0
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +53 -29
- data/src/core/lib/security/credentials/external/external_account_credentials.h +11 -0
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +15 -8
- data/src/core/lib/security/credentials/external/file_external_account_credentials.h +6 -0
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +23 -9
- data/src/core/lib/security/credentials/external/url_external_account_credentials.h +10 -0
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +10 -17
- data/src/core/lib/security/credentials/fake/fake_credentials.h +13 -5
- data/src/core/lib/security/credentials/google_default/credentials_generic.cc +1 -0
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +55 -35
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +10 -3
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +8 -3
- data/src/core/lib/security/credentials/iam/iam_credentials.h +10 -0
- data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +7 -3
- data/src/core/lib/security/credentials/insecure/insecure_credentials.h +7 -3
- data/src/core/lib/security/credentials/jwt/json_token.cc +17 -5
- data/src/core/lib/security/credentials/jwt/json_token.h +2 -2
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +12 -10
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +14 -0
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +37 -14
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +4 -2
- data/src/core/lib/security/credentials/local/local_credentials.cc +7 -7
- data/src/core/lib/security/credentials/local/local_credentials.h +9 -3
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +41 -29
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +20 -0
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +7 -7
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +24 -0
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +18 -21
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +15 -3
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +6 -6
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +9 -3
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +29 -10
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +15 -4
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +9 -2
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +6 -7
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +4 -5
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +19 -26
- data/src/core/lib/security/credentials/tls/tls_credentials.h +7 -4
- data/src/core/lib/security/credentials/tls/tls_utils.cc +2 -0
- data/src/core/lib/security/credentials/tls/tls_utils.h +1 -1
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +21 -31
- data/src/core/lib/security/credentials/xds/xds_credentials.h +16 -2
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +30 -18
- data/src/core/lib/security/security_connector/alts/alts_security_connector.h +6 -3
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +42 -38
- data/src/core/lib/security/security_connector/fake/fake_security_connector.h +3 -3
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +13 -4
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +21 -5
- data/src/core/lib/security/security_connector/load_system_roots_fallback.cc +5 -3
- data/src/core/lib/security/security_connector/{load_system_roots_linux.cc → load_system_roots_supported.cc} +27 -19
- data/src/core/lib/security/security_connector/{load_system_roots_linux.h → load_system_roots_supported.h} +5 -5
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +34 -13
- data/src/core/lib/security/security_connector/local/local_security_connector.h +7 -3
- data/src/core/lib/security/security_connector/security_connector.cc +20 -18
- data/src/core/lib/security/security_connector/security_connector.h +23 -9
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +21 -8
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +4 -2
- data/src/core/lib/security/security_connector/ssl_utils.cc +12 -2
- data/src/core/lib/security/security_connector/ssl_utils.h +10 -7
- data/src/core/lib/security/security_connector/ssl_utils_config.h +1 -1
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +25 -17
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +27 -7
- data/src/core/lib/security/transport/auth_filters.h +8 -1
- data/src/core/lib/security/transport/client_auth_filter.cc +19 -11
- data/src/core/lib/security/transport/secure_endpoint.cc +63 -13
- data/src/core/lib/security/transport/secure_endpoint.h +4 -3
- data/src/core/lib/security/transport/security_handshaker.cc +70 -49
- data/src/core/lib/security/transport/security_handshaker.h +6 -1
- data/src/core/lib/security/transport/server_auth_filter.cc +26 -4
- data/src/core/lib/security/util/json_util.cc +3 -2
- data/src/core/lib/security/util/json_util.h +0 -2
- data/src/core/lib/service_config/service_config.h +11 -0
- data/src/core/lib/service_config/service_config_call_data.h +2 -1
- data/src/core/lib/service_config/service_config_impl.cc +98 -97
- data/src/core/lib/service_config/service_config_impl.h +12 -16
- data/src/core/lib/service_config/service_config_parser.cc +26 -29
- 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/slice/slice_buffer.cc +30 -1
- data/src/core/lib/slice/slice_buffer.h +37 -6
- data/src/core/lib/slice/slice_string_helpers.cc +0 -20
- data/src/core/lib/slice/slice_string_helpers.h +0 -4
- data/src/core/lib/surface/call.cc +61 -117
- data/src/core/lib/surface/call.h +5 -1
- data/src/core/lib/surface/channel.cc +6 -6
- data/src/core/lib/surface/channel.h +3 -1
- data/src/core/lib/surface/channel_ping.cc +1 -1
- data/src/core/lib/surface/completion_queue.cc +15 -16
- data/src/core/lib/surface/completion_queue.h +2 -4
- data/src/core/lib/surface/init.cc +2 -7
- data/src/core/lib/surface/lame_client.cc +3 -4
- data/src/core/lib/surface/lame_client.h +2 -2
- data/src/core/lib/surface/server.cc +21 -20
- data/src/core/lib/surface/server.h +11 -8
- data/src/core/lib/surface/validate_metadata.cc +5 -15
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/connectivity_state.cc +0 -1
- data/src/core/lib/transport/connectivity_state.h +1 -1
- data/src/core/lib/transport/error_utils.cc +9 -39
- data/src/core/lib/transport/handshaker.cc +10 -12
- 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 +20 -20
- data/src/core/lib/transport/metadata_batch.cc +5 -0
- data/src/core/lib/transport/metadata_batch.h +52 -7
- data/src/core/lib/transport/parsed_metadata.h +0 -1
- data/src/core/lib/transport/tcp_connect_handshaker.cc +14 -20
- data/src/core/lib/transport/transport.cc +0 -3
- data/src/core/lib/transport/transport.h +20 -21
- data/src/core/lib/transport/transport_fwd.h +20 -0
- data/src/core/lib/transport/transport_impl.h +1 -0
- data/src/core/lib/transport/transport_op_string.cc +9 -9
- 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 +15 -8
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +1 -1
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +9 -1
- data/src/core/tsi/fake_transport_security.cc +66 -31
- data/src/core/tsi/fake_transport_security.h +6 -0
- 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 +48 -24
- data/src/core/tsi/transport_security.cc +18 -6
- data/src/core/tsi/transport_security.h +2 -1
- data/src/core/tsi/transport_security_grpc.cc +3 -2
- data/src/core/tsi/transport_security_grpc.h +5 -2
- data/src/core/tsi/transport_security_interface.h +17 -5
- data/src/ruby/ext/grpc/ext-export-truffleruby.clang +2 -0
- data/src/ruby/ext/grpc/ext-export-truffleruby.gcc +7 -0
- data/src/ruby/ext/grpc/ext-export.clang +1 -0
- data/src/ruby/ext/grpc/ext-export.gcc +1 -0
- data/src/ruby/ext/grpc/extconf.rb +51 -18
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +1 -1
- data/src/ruby/ext/grpc/rb_loader.c +6 -2
- data/src/ruby/lib/grpc/2.5/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/2.6/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/2.7/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/3.0/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/3.1/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/errors.rb +1 -1
- data/src/ruby/lib/grpc/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +4 -0
- data/src/ruby/spec/generic/client_stub_spec.rb +23 -23
- data/third_party/abseil-cpp/absl/algorithm/container.h +1 -1
- data/third_party/abseil-cpp/absl/base/attributes.h +49 -22
- data/third_party/abseil-cpp/absl/base/casts.h +61 -68
- data/third_party/abseil-cpp/absl/base/config.h +182 -41
- data/third_party/abseil-cpp/absl/base/internal/cycleclock.cc +12 -42
- data/third_party/abseil-cpp/absl/base/internal/cycleclock.h +67 -2
- data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +3 -3
- data/third_party/abseil-cpp/absl/base/internal/endian.h +17 -62
- data/third_party/abseil-cpp/absl/base/internal/fast_type_id.h +2 -0
- data/third_party/abseil-cpp/absl/base/internal/invoke.h +54 -0
- data/third_party/abseil-cpp/absl/base/internal/prefetch.h +138 -0
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +29 -22
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +13 -12
- data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +3 -0
- data/third_party/abseil-cpp/absl/base/internal/spinlock.h +8 -0
- data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +2 -5
- data/third_party/abseil-cpp/absl/base/internal/strerror.cc +88 -0
- data/third_party/abseil-cpp/absl/base/internal/strerror.h +39 -0
- data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +0 -1
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +2 -1
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +6 -7
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +12 -3
- data/third_party/abseil-cpp/absl/base/log_severity.cc +28 -0
- data/third_party/abseil-cpp/absl/base/log_severity.h +51 -0
- data/third_party/abseil-cpp/absl/base/optimization.h +19 -11
- data/third_party/abseil-cpp/absl/base/options.h +1 -1
- data/third_party/abseil-cpp/absl/base/thread_annotations.h +2 -2
- data/third_party/abseil-cpp/absl/container/fixed_array.h +2 -0
- data/third_party/abseil-cpp/absl/container/flat_hash_map.h +11 -4
- data/third_party/abseil-cpp/absl/container/flat_hash_set.h +15 -9
- data/third_party/abseil-cpp/absl/container/inlined_vector.h +20 -9
- data/third_party/abseil-cpp/absl/container/internal/common.h +6 -5
- data/third_party/abseil-cpp/absl/container/internal/container_memory.h +10 -28
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +68 -20
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +29 -11
- data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +59 -38
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +4 -0
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +515 -184
- data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc +45 -88
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +4 -0
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +3 -2
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +8 -3
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +8 -3
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +2 -1
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +8 -3
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +20 -18
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +8 -3
- data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +15 -2
- data/third_party/abseil-cpp/absl/debugging/symbolize.cc +6 -1
- data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +46 -7
- data/third_party/abseil-cpp/absl/functional/any_invocable.h +313 -0
- data/third_party/abseil-cpp/absl/functional/bind_front.h +10 -1
- data/third_party/abseil-cpp/absl/functional/function_ref.h +2 -1
- data/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +857 -0
- data/third_party/abseil-cpp/absl/hash/hash.h +82 -8
- data/third_party/abseil-cpp/absl/hash/internal/hash.h +218 -23
- data/third_party/abseil-cpp/absl/numeric/bits.h +2 -1
- data/third_party/abseil-cpp/absl/numeric/int128.cc +4 -2
- data/third_party/abseil-cpp/absl/numeric/int128.h +2 -2
- data/third_party/abseil-cpp/absl/profiling/internal/sample_recorder.h +21 -6
- data/third_party/abseil-cpp/absl/random/bernoulli_distribution.h +4 -4
- data/third_party/abseil-cpp/absl/random/distributions.h +3 -3
- data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +3 -0
- data/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +2 -1
- data/third_party/abseil-cpp/absl/random/internal/generate_real.h +2 -2
- data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +59 -48
- data/third_party/abseil-cpp/absl/random/internal/pcg_engine.h +1 -1
- data/third_party/abseil-cpp/absl/random/internal/randen.h +5 -11
- data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +6 -2
- data/third_party/abseil-cpp/absl/random/internal/randen_engine.h +48 -23
- data/third_party/abseil-cpp/absl/random/internal/salted_seed_seq.h +24 -26
- data/third_party/abseil-cpp/absl/random/internal/traits.h +53 -5
- data/third_party/abseil-cpp/absl/random/internal/uniform_helper.h +5 -5
- data/third_party/abseil-cpp/absl/random/internal/wide_multiply.h +33 -48
- data/third_party/abseil-cpp/absl/random/log_uniform_int_distribution.h +9 -10
- data/third_party/abseil-cpp/absl/random/poisson_distribution.h +7 -4
- data/third_party/abseil-cpp/absl/random/seed_sequences.h +1 -0
- data/third_party/abseil-cpp/absl/random/uniform_int_distribution.h +2 -2
- data/third_party/abseil-cpp/absl/random/uniform_real_distribution.h +1 -1
- data/third_party/abseil-cpp/absl/random/zipf_distribution.h +4 -3
- data/third_party/abseil-cpp/absl/status/internal/status_internal.h +17 -0
- data/third_party/abseil-cpp/absl/status/status.cc +174 -2
- data/third_party/abseil-cpp/absl/status/status.h +22 -12
- data/third_party/abseil-cpp/absl/status/statusor.h +9 -3
- data/third_party/abseil-cpp/absl/strings/ascii.h +4 -4
- data/third_party/abseil-cpp/absl/strings/cord.cc +194 -913
- data/third_party/abseil-cpp/absl/strings/cord.h +202 -81
- data/third_party/abseil-cpp/absl/strings/cord_analysis.cc +188 -0
- data/third_party/abseil-cpp/absl/strings/cord_analysis.h +44 -0
- data/third_party/abseil-cpp/absl/strings/cord_buffer.cc +30 -0
- data/third_party/abseil-cpp/absl/strings/cord_buffer.h +572 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_data_edge.h +63 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +20 -32
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +123 -88
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +149 -49
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.h +44 -59
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.cc +3 -1
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.h +4 -2
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.cc +3 -2
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.h +5 -4
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.cc +7 -74
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.cc +54 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.h +102 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +58 -17
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +13 -11
- data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +11 -38
- data/third_party/abseil-cpp/absl/strings/internal/cordz_statistics.h +1 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_update_tracker.h +4 -2
- data/third_party/abseil-cpp/absl/strings/internal/escaping.cc +6 -5
- data/third_party/abseil-cpp/absl/strings/internal/ostringstream.cc +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +38 -7
- data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +7 -2
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +4 -5
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +5 -2
- data/third_party/abseil-cpp/absl/strings/internal/str_format/output.h +2 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +4 -2
- data/third_party/abseil-cpp/absl/strings/internal/str_join_internal.h +9 -6
- data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +10 -2
- data/third_party/abseil-cpp/absl/strings/internal/utf8.cc +9 -9
- data/third_party/abseil-cpp/absl/strings/numbers.cc +8 -8
- data/third_party/abseil-cpp/absl/strings/numbers.h +26 -23
- data/third_party/abseil-cpp/absl/strings/str_cat.h +20 -13
- data/third_party/abseil-cpp/absl/strings/str_join.h +9 -15
- data/third_party/abseil-cpp/absl/strings/str_split.h +1 -2
- data/third_party/abseil-cpp/absl/strings/string_view.cc +2 -13
- data/third_party/abseil-cpp/absl/strings/string_view.h +3 -2
- data/third_party/abseil-cpp/absl/strings/strip.h +8 -6
- data/third_party/abseil-cpp/absl/strings/substitute.h +10 -2
- data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +9 -6
- data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.h +0 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +0 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +1 -6
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +0 -25
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +10 -4
- data/third_party/abseil-cpp/absl/synchronization/mutex.cc +75 -40
- data/third_party/abseil-cpp/absl/synchronization/mutex.h +17 -9
- data/third_party/abseil-cpp/absl/synchronization/notification.h +3 -2
- data/third_party/abseil-cpp/absl/time/duration.cc +5 -4
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +11 -7
- data/third_party/abseil-cpp/absl/time/time.h +16 -12
- data/third_party/abseil-cpp/absl/types/internal/optional.h +8 -0
- data/third_party/abseil-cpp/absl/types/internal/variant.h +3 -3
- data/third_party/abseil-cpp/absl/types/optional.h +17 -14
- data/third_party/abseil-cpp/absl/types/span.h +2 -1
- 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 +113 -37
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +0 -50
- data/src/core/lib/event_engine/event_engine.cc +0 -62
- data/src/core/lib/event_engine/iomgr_engine.cc +0 -206
- 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/promise/detail/switch.h +0 -1455
- data/src/core/lib/slice/slice_split.cc +0 -103
- data/src/core/lib/slice/slice_split.h +0 -36
- data/src/core/lib/transport/byte_stream.cc +0 -165
- data/src/core/lib/transport/byte_stream.h +0 -170
- data/third_party/abseil-cpp/absl/cleanup/cleanup.h +0 -140
- data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +0 -100
- data/third_party/abseil-cpp/absl/container/internal/have_sse.h +0 -50
@@ -53,10 +53,11 @@
|
|
53
53
|
|
54
54
|
#include "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h"
|
55
55
|
|
56
|
+
#include <grpc/event_engine/event_engine.h>
|
57
|
+
|
56
58
|
// IWYU pragma: no_include <sys/socket.h>
|
57
59
|
|
58
60
|
#include <inttypes.h>
|
59
|
-
#include <limits.h>
|
60
61
|
#include <stdlib.h>
|
61
62
|
#include <string.h>
|
62
63
|
|
@@ -92,16 +93,12 @@
|
|
92
93
|
#include <grpc/support/log.h>
|
93
94
|
|
94
95
|
#include "src/core/ext/filters/client_channel/client_channel.h"
|
95
|
-
#include "src/core/ext/filters/client_channel/lb_policy.h"
|
96
96
|
#include "src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h"
|
97
97
|
#include "src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h"
|
98
98
|
#include "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h"
|
99
99
|
#include "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h"
|
100
100
|
#include "src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h"
|
101
|
-
#include "src/core/ext/filters/client_channel/lb_policy_factory.h"
|
102
|
-
#include "src/core/ext/filters/client_channel/lb_policy_registry.h"
|
103
101
|
#include "src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h"
|
104
|
-
#include "src/core/ext/filters/client_channel/subchannel_interface.h"
|
105
102
|
#include "src/core/lib/address_utils/sockaddr_utils.h"
|
106
103
|
#include "src/core/lib/backoff/backoff.h"
|
107
104
|
#include "src/core/lib/channel/channel_args.h"
|
@@ -109,6 +106,7 @@
|
|
109
106
|
#include "src/core/lib/channel/channelz.h"
|
110
107
|
#include "src/core/lib/config/core_configuration.h"
|
111
108
|
#include "src/core/lib/debug/trace.h"
|
109
|
+
#include "src/core/lib/event_engine/default_event_engine.h"
|
112
110
|
#include "src/core/lib/gpr/string.h"
|
113
111
|
#include "src/core/lib/gpr/useful.h"
|
114
112
|
#include "src/core/lib/gprpp/debug_location.h"
|
@@ -116,6 +114,7 @@
|
|
116
114
|
#include "src/core/lib/gprpp/ref_counted.h"
|
117
115
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
118
116
|
#include "src/core/lib/gprpp/time.h"
|
117
|
+
#include "src/core/lib/gprpp/work_serializer.h"
|
119
118
|
#include "src/core/lib/iomgr/closure.h"
|
120
119
|
#include "src/core/lib/iomgr/error.h"
|
121
120
|
#include "src/core/lib/iomgr/exec_ctx.h"
|
@@ -124,8 +123,11 @@
|
|
124
123
|
#include "src/core/lib/iomgr/sockaddr.h"
|
125
124
|
#include "src/core/lib/iomgr/socket_utils.h"
|
126
125
|
#include "src/core/lib/iomgr/timer.h"
|
127
|
-
#include "src/core/lib/iomgr/work_serializer.h"
|
128
126
|
#include "src/core/lib/json/json.h"
|
127
|
+
#include "src/core/lib/load_balancing/lb_policy.h"
|
128
|
+
#include "src/core/lib/load_balancing/lb_policy_factory.h"
|
129
|
+
#include "src/core/lib/load_balancing/lb_policy_registry.h"
|
130
|
+
#include "src/core/lib/load_balancing/subchannel_interface.h"
|
129
131
|
#include "src/core/lib/resolver/resolver.h"
|
130
132
|
#include "src/core/lib/resolver/server_address.h"
|
131
133
|
#include "src/core/lib/security/credentials/credentials.h"
|
@@ -155,7 +157,10 @@ const char kGrpcLbAddressAttributeKey[] = "grpclb";
|
|
155
157
|
|
156
158
|
namespace {
|
157
159
|
|
158
|
-
|
160
|
+
using ::grpc_event_engine::experimental::EventEngine;
|
161
|
+
using ::grpc_event_engine::experimental::GetDefaultEventEngine;
|
162
|
+
|
163
|
+
constexpr absl::string_view kGrpclb = "grpclb";
|
159
164
|
|
160
165
|
class GrpcLbConfig : public LoadBalancingPolicy::Config {
|
161
166
|
public:
|
@@ -163,7 +168,8 @@ class GrpcLbConfig : public LoadBalancingPolicy::Config {
|
|
163
168
|
std::string service_name)
|
164
169
|
: child_policy_(std::move(child_policy)),
|
165
170
|
service_name_(std::move(service_name)) {}
|
166
|
-
|
171
|
+
|
172
|
+
absl::string_view name() const override { return kGrpclb; }
|
167
173
|
|
168
174
|
RefCountedPtr<LoadBalancingPolicy::Config> child_policy() const {
|
169
175
|
return child_policy_;
|
@@ -180,7 +186,7 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
180
186
|
public:
|
181
187
|
explicit GrpcLb(Args args);
|
182
188
|
|
183
|
-
|
189
|
+
absl::string_view name() const override { return kGrpclb; }
|
184
190
|
|
185
191
|
void UpdateLocked(UpdateArgs args) override;
|
186
192
|
void ResetBackoffLocked() override;
|
@@ -212,13 +218,15 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
212
218
|
void ScheduleNextClientLoadReportLocked();
|
213
219
|
void SendClientLoadReportLocked();
|
214
220
|
|
215
|
-
|
221
|
+
// EventEngine callbacks
|
222
|
+
void MaybeSendClientLoadReport();
|
223
|
+
void MaybeSendClientLoadReportLocked();
|
224
|
+
|
216
225
|
static void ClientLoadReportDone(void* arg, grpc_error_handle error);
|
217
226
|
static void OnInitialRequestSent(void* arg, grpc_error_handle error);
|
218
227
|
static void OnBalancerMessageReceived(void* arg, grpc_error_handle error);
|
219
228
|
static void OnBalancerStatusReceived(void* arg, grpc_error_handle error);
|
220
229
|
|
221
|
-
void MaybeSendClientLoadReportLocked(grpc_error_handle error);
|
222
230
|
void ClientLoadReportDoneLocked(grpc_error_handle error);
|
223
231
|
void OnInitialRequestSentLocked();
|
224
232
|
void OnBalancerMessageReceivedLocked();
|
@@ -253,13 +261,11 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
253
261
|
// Created after the first serverlist is received.
|
254
262
|
RefCountedPtr<GrpcLbClientStats> client_stats_;
|
255
263
|
Duration client_stats_report_interval_;
|
256
|
-
|
257
|
-
bool client_load_report_timer_callback_pending_ = false;
|
264
|
+
absl::optional<EventEngine::TaskHandle> client_load_report_handle_;
|
258
265
|
bool last_client_load_report_counters_were_zero_ = false;
|
259
266
|
bool client_load_report_is_due_ = false;
|
260
|
-
// The closure used for
|
261
|
-
|
262
|
-
grpc_closure client_load_report_closure_;
|
267
|
+
// The closure used for the completion of sending the load report.
|
268
|
+
grpc_closure client_load_report_done_closure_;
|
263
269
|
};
|
264
270
|
|
265
271
|
class SubchannelWrapper : public DelegatingSubchannel {
|
@@ -374,6 +380,39 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
374
380
|
PickResult Pick(PickArgs args) override;
|
375
381
|
|
376
382
|
private:
|
383
|
+
// A subchannel call tracker that unrefs the GrpcLbClientStats object
|
384
|
+
// in the case where the subchannel call is never actually started,
|
385
|
+
// since the client load reporting filter will not be able to do it
|
386
|
+
// in that case.
|
387
|
+
class SubchannelCallTracker : public SubchannelCallTrackerInterface {
|
388
|
+
public:
|
389
|
+
SubchannelCallTracker(
|
390
|
+
RefCountedPtr<GrpcLbClientStats> client_stats,
|
391
|
+
std::unique_ptr<SubchannelCallTrackerInterface> original_call_tracker)
|
392
|
+
: client_stats_(std::move(client_stats)),
|
393
|
+
original_call_tracker_(std::move(original_call_tracker)) {}
|
394
|
+
|
395
|
+
void Start() override {
|
396
|
+
if (original_call_tracker_ != nullptr) {
|
397
|
+
original_call_tracker_->Start();
|
398
|
+
}
|
399
|
+
// If we're actually starting the subchannel call, then the
|
400
|
+
// client load reporting filter will take ownership of the ref
|
401
|
+
// passed down to it via metadata.
|
402
|
+
client_stats_.release();
|
403
|
+
}
|
404
|
+
|
405
|
+
void Finish(FinishArgs args) override {
|
406
|
+
if (original_call_tracker_ != nullptr) {
|
407
|
+
original_call_tracker_->Finish(args);
|
408
|
+
}
|
409
|
+
}
|
410
|
+
|
411
|
+
private:
|
412
|
+
RefCountedPtr<GrpcLbClientStats> client_stats_;
|
413
|
+
std::unique_ptr<SubchannelCallTrackerInterface> original_call_tracker_;
|
414
|
+
};
|
415
|
+
|
377
416
|
// Serverlist to be used for determining drops.
|
378
417
|
RefCountedPtr<Serverlist> serverlist_;
|
379
418
|
|
@@ -387,7 +426,7 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
387
426
|
: parent_(std::move(parent)) {}
|
388
427
|
|
389
428
|
RefCountedPtr<SubchannelInterface> CreateSubchannel(
|
390
|
-
ServerAddress address, const
|
429
|
+
ServerAddress address, const ChannelArgs& args) override;
|
391
430
|
void UpdateState(grpc_connectivity_state state, const absl::Status& status,
|
392
431
|
std::unique_ptr<SubchannelPicker> picker) override;
|
393
432
|
void RequestReresolution() override;
|
@@ -431,12 +470,10 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
431
470
|
RefCountedPtr<GrpcLb> parent_;
|
432
471
|
};
|
433
472
|
|
434
|
-
~GrpcLb() override;
|
435
|
-
|
436
473
|
void ShutdownLocked() override;
|
437
474
|
|
438
475
|
// Helper functions used in UpdateLocked().
|
439
|
-
void UpdateBalancerChannelLocked(const
|
476
|
+
void UpdateBalancerChannelLocked(const ChannelArgs& args);
|
440
477
|
|
441
478
|
void CancelBalancerChannelConnectivityWatchLocked();
|
442
479
|
|
@@ -452,10 +489,10 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
452
489
|
void OnBalancerCallRetryTimerLocked(grpc_error_handle error);
|
453
490
|
|
454
491
|
// Methods for dealing with the child policy.
|
455
|
-
|
492
|
+
ChannelArgs CreateChildPolicyArgsLocked(
|
456
493
|
bool is_backend_from_grpclb_load_balancer);
|
457
494
|
OrphanablePtr<LoadBalancingPolicy> CreateChildPolicyLocked(
|
458
|
-
const
|
495
|
+
const ChannelArgs& args);
|
459
496
|
void CreateOrUpdateChildPolicyLocked();
|
460
497
|
|
461
498
|
// Subchannel caching.
|
@@ -471,7 +508,7 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
471
508
|
RefCountedPtr<GrpcLbConfig> config_;
|
472
509
|
|
473
510
|
// Current channel args from the resolver.
|
474
|
-
|
511
|
+
ChannelArgs args_;
|
475
512
|
|
476
513
|
// Internal state.
|
477
514
|
bool shutting_down_ = false;
|
@@ -635,7 +672,7 @@ ServerAddressList GrpcLb::Serverlist::GetServerAddressList(
|
|
635
672
|
absl::make_unique<TokenAndClientStatsAttribute>(std::move(lb_token),
|
636
673
|
stats);
|
637
674
|
// Add address.
|
638
|
-
addresses.emplace_back(addr,
|
675
|
+
addresses.emplace_back(addr, ChannelArgs(), std::move(attributes));
|
639
676
|
}
|
640
677
|
return addresses;
|
641
678
|
}
|
@@ -686,7 +723,10 @@ GrpcLb::PickResult GrpcLb::Picker::Pick(PickArgs args) {
|
|
686
723
|
// client_load_reporting filter.
|
687
724
|
GrpcLbClientStats* client_stats = subchannel_wrapper->client_stats();
|
688
725
|
if (client_stats != nullptr) {
|
689
|
-
|
726
|
+
complete_pick->subchannel_call_tracker =
|
727
|
+
absl::make_unique<SubchannelCallTracker>(
|
728
|
+
client_stats->Ref(),
|
729
|
+
std::move(complete_pick->subchannel_call_tracker));
|
690
730
|
// The metadata value is a hack: we pretend the pointer points to
|
691
731
|
// a string and rely on the client_load_reporting filter to know
|
692
732
|
// how to interpret it.
|
@@ -717,7 +757,7 @@ GrpcLb::PickResult GrpcLb::Picker::Pick(PickArgs args) {
|
|
717
757
|
//
|
718
758
|
|
719
759
|
RefCountedPtr<SubchannelInterface> GrpcLb::Helper::CreateSubchannel(
|
720
|
-
ServerAddress address, const
|
760
|
+
ServerAddress address, const ChannelArgs& args) {
|
721
761
|
if (parent_->shutting_down_) return nullptr;
|
722
762
|
const TokenAndClientStatsAttribute* attribute =
|
723
763
|
static_cast<const TokenAndClientStatsAttribute*>(
|
@@ -823,7 +863,7 @@ GrpcLb::BalancerCallState::BalancerCallState(
|
|
823
863
|
OnBalancerMessageReceived, this, grpc_schedule_on_exec_ctx);
|
824
864
|
GRPC_CLOSURE_INIT(&lb_on_balancer_status_received_, OnBalancerStatusReceived,
|
825
865
|
this, grpc_schedule_on_exec_ctx);
|
826
|
-
GRPC_CLOSURE_INIT(&
|
866
|
+
GRPC_CLOSURE_INIT(&client_load_report_done_closure_, ClientLoadReportDone,
|
827
867
|
this, grpc_schedule_on_exec_ctx);
|
828
868
|
const Timestamp deadline =
|
829
869
|
grpclb_policy()->lb_call_timeout_ == Duration::Zero()
|
@@ -866,8 +906,9 @@ void GrpcLb::BalancerCallState::Orphan() {
|
|
866
906
|
// up. Otherwise, we are here because grpclb_policy has to orphan a failed
|
867
907
|
// call, then the following cancellation will be a no-op.
|
868
908
|
grpc_call_cancel_internal(lb_call_);
|
869
|
-
if (
|
870
|
-
|
909
|
+
if (client_load_report_handle_.has_value() &&
|
910
|
+
GetDefaultEventEngine()->Cancel(client_load_report_handle_.value())) {
|
911
|
+
Unref(DEBUG_LOCATION, "client_load_report cancelled");
|
871
912
|
}
|
872
913
|
// Note that the initial ref is hold by lb_on_balancer_status_received_
|
873
914
|
// instead of the caller of this function. So the corresponding unref happens
|
@@ -951,34 +992,23 @@ void GrpcLb::BalancerCallState::StartQuery() {
|
|
951
992
|
}
|
952
993
|
|
953
994
|
void GrpcLb::BalancerCallState::ScheduleNextClientLoadReportLocked() {
|
954
|
-
|
955
|
-
|
956
|
-
|
957
|
-
|
958
|
-
|
959
|
-
|
960
|
-
GRPC_CLOSURE_INIT(&client_load_report_closure_, MaybeSendClientLoadReport,
|
961
|
-
this, grpc_schedule_on_exec_ctx);
|
962
|
-
grpc_timer_init(&client_load_report_timer_, next_client_load_report_time,
|
963
|
-
&client_load_report_closure_);
|
964
|
-
client_load_report_timer_callback_pending_ = true;
|
995
|
+
client_load_report_handle_ =
|
996
|
+
GetDefaultEventEngine()->RunAfter(client_stats_report_interval_, [this] {
|
997
|
+
ApplicationCallbackExecCtx callback_exec_ctx;
|
998
|
+
ExecCtx exec_ctx;
|
999
|
+
MaybeSendClientLoadReport();
|
1000
|
+
});
|
965
1001
|
}
|
966
1002
|
|
967
|
-
void GrpcLb::BalancerCallState::MaybeSendClientLoadReport(
|
968
|
-
|
969
|
-
|
970
|
-
(void)GRPC_ERROR_REF(error); // ref owned by lambda
|
971
|
-
lb_calld->grpclb_policy()->work_serializer()->Run(
|
972
|
-
[lb_calld, error]() { lb_calld->MaybeSendClientLoadReportLocked(error); },
|
973
|
-
DEBUG_LOCATION);
|
1003
|
+
void GrpcLb::BalancerCallState::MaybeSendClientLoadReport() {
|
1004
|
+
grpclb_policy()->work_serializer()->Run(
|
1005
|
+
[this] { MaybeSendClientLoadReportLocked(); }, DEBUG_LOCATION);
|
974
1006
|
}
|
975
1007
|
|
976
|
-
void GrpcLb::BalancerCallState::MaybeSendClientLoadReportLocked(
|
977
|
-
|
978
|
-
|
979
|
-
if (error != GRPC_ERROR_NONE || this != grpclb_policy()->lb_calld_.get()) {
|
1008
|
+
void GrpcLb::BalancerCallState::MaybeSendClientLoadReportLocked() {
|
1009
|
+
client_load_report_handle_.reset();
|
1010
|
+
if (this != grpclb_policy()->lb_calld_.get()) {
|
980
1011
|
Unref(DEBUG_LOCATION, "client_load_report");
|
981
|
-
GRPC_ERROR_UNREF(error);
|
982
1012
|
return;
|
983
1013
|
}
|
984
1014
|
// If we've already sent the initial request, then we can go ahead and send
|
@@ -1031,10 +1061,8 @@ void GrpcLb::BalancerCallState::SendClientLoadReportLocked() {
|
|
1031
1061
|
memset(&op, 0, sizeof(op));
|
1032
1062
|
op.op = GRPC_OP_SEND_MESSAGE;
|
1033
1063
|
op.data.send_message.send_message = send_message_payload_;
|
1034
|
-
GRPC_CLOSURE_INIT(&client_load_report_closure_, ClientLoadReportDone, this,
|
1035
|
-
grpc_schedule_on_exec_ctx);
|
1036
1064
|
grpc_call_error call_error = grpc_call_start_batch_and_execute(
|
1037
|
-
lb_call_, &op, 1, &
|
1065
|
+
lb_call_, &op, 1, &client_load_report_done_closure_);
|
1038
1066
|
if (GPR_UNLIKELY(call_error != GRPC_CALL_OK)) {
|
1039
1067
|
gpr_log(GPR_ERROR,
|
1040
1068
|
"[grpclb %p] lb_calld=%p call_error=%d sending client load report",
|
@@ -1056,7 +1084,7 @@ void GrpcLb::BalancerCallState::ClientLoadReportDoneLocked(
|
|
1056
1084
|
grpc_error_handle error) {
|
1057
1085
|
grpc_byte_buffer_destroy(send_message_payload_);
|
1058
1086
|
send_message_payload_ = nullptr;
|
1059
|
-
if (error
|
1087
|
+
if (!GRPC_ERROR_IS_NONE(error) || this != grpclb_policy()->lb_calld_.get()) {
|
1060
1088
|
Unref(DEBUG_LOCATION, "client_load_report");
|
1061
1089
|
GRPC_ERROR_UNREF(error);
|
1062
1090
|
return;
|
@@ -1313,7 +1341,7 @@ void GrpcLb::BalancerCallState::OnBalancerStatusReceivedLocked(
|
|
1313
1341
|
// helper code for creating balancer channel
|
1314
1342
|
//
|
1315
1343
|
|
1316
|
-
ServerAddressList ExtractBalancerAddresses(const
|
1344
|
+
ServerAddressList ExtractBalancerAddresses(const ChannelArgs& args) {
|
1317
1345
|
const ServerAddressList* addresses =
|
1318
1346
|
FindGrpclbBalancerAddressesInChannelArgs(args);
|
1319
1347
|
if (addresses != nullptr) return *addresses;
|
@@ -1327,88 +1355,78 @@ ServerAddressList ExtractBalancerAddresses(const grpc_channel_args& args) {
|
|
1327
1355
|
* - \a response_generator: in order to propagate updates from the resolver
|
1328
1356
|
* above the grpclb policy.
|
1329
1357
|
* - \a args: other args inherited from the grpclb policy. */
|
1330
|
-
|
1358
|
+
ChannelArgs BuildBalancerChannelArgs(
|
1331
1359
|
FakeResolverResponseGenerator* response_generator,
|
1332
|
-
const
|
1333
|
-
//
|
1334
|
-
|
1360
|
+
const ChannelArgs& args) {
|
1361
|
+
// Create channel args for channel credentials that does not contain bearer
|
1362
|
+
// token credentials.
|
1363
|
+
auto* channel_credentials = args.GetObject<grpc_channel_credentials>();
|
1364
|
+
GPR_ASSERT(channel_credentials != nullptr);
|
1365
|
+
RefCountedPtr<grpc_channel_credentials> creds_sans_call_creds =
|
1366
|
+
channel_credentials->duplicate_without_call_credentials();
|
1367
|
+
GPR_ASSERT(creds_sans_call_creds != nullptr);
|
1368
|
+
return args
|
1335
1369
|
// LB policy name, since we want to use the default (pick_first) in
|
1336
1370
|
// the LB channel.
|
1337
|
-
GRPC_ARG_LB_POLICY_NAME
|
1371
|
+
.Remove(GRPC_ARG_LB_POLICY_NAME)
|
1338
1372
|
// Strip out the service config, since we don't want the LB policy
|
1339
1373
|
// config specified for the parent channel to affect the LB channel.
|
1340
|
-
GRPC_ARG_SERVICE_CONFIG
|
1374
|
+
.Remove(GRPC_ARG_SERVICE_CONFIG)
|
1341
1375
|
// The channel arg for the server URI, since that will be different for
|
1342
1376
|
// the LB channel than for the parent channel. The client channel
|
1343
1377
|
// factory will re-add this arg with the right value.
|
1344
|
-
GRPC_ARG_SERVER_URI
|
1378
|
+
.Remove(GRPC_ARG_SERVER_URI)
|
1345
1379
|
// The fake resolver response generator, because we are replacing it
|
1346
1380
|
// with the one from the grpclb policy, used to propagate updates to
|
1347
1381
|
// the LB channel.
|
1348
|
-
GRPC_ARG_FAKE_RESOLVER_RESPONSE_GENERATOR
|
1382
|
+
.Remove(GRPC_ARG_FAKE_RESOLVER_RESPONSE_GENERATOR)
|
1349
1383
|
// The LB channel should use the authority indicated by the target
|
1350
1384
|
// authority table (see \a ModifyGrpclbBalancerChannelArgs),
|
1351
1385
|
// as opposed to the authority from the parent channel.
|
1352
|
-
GRPC_ARG_DEFAULT_AUTHORITY
|
1386
|
+
.Remove(GRPC_ARG_DEFAULT_AUTHORITY)
|
1353
1387
|
// Just as for \a GRPC_ARG_DEFAULT_AUTHORITY, the LB channel should be
|
1354
1388
|
// treated as a stand-alone channel and not inherit this argument from the
|
1355
1389
|
// args of the parent channel.
|
1356
|
-
GRPC_SSL_TARGET_NAME_OVERRIDE_ARG
|
1390
|
+
.Remove(GRPC_SSL_TARGET_NAME_OVERRIDE_ARG)
|
1357
1391
|
// Don't want to pass down channelz node from parent; the balancer
|
1358
1392
|
// channel will get its own.
|
1359
|
-
GRPC_ARG_CHANNELZ_CHANNEL_NODE
|
1393
|
+
.Remove(GRPC_ARG_CHANNELZ_CHANNEL_NODE)
|
1360
1394
|
// Remove the channel args for channel credentials and replace it
|
1361
1395
|
// with a version that does not contain call credentials. The loadbalancer
|
1362
1396
|
// is not necessarily trusted to handle bearer token credentials.
|
1363
|
-
GRPC_ARG_CHANNEL_CREDENTIALS
|
1364
|
-
};
|
1365
|
-
// Create channel args for channel credentials that does not contain bearer
|
1366
|
-
// token credentials.
|
1367
|
-
grpc_channel_credentials* channel_credentials =
|
1368
|
-
grpc_channel_credentials_find_in_args(args);
|
1369
|
-
GPR_ASSERT(channel_credentials != nullptr);
|
1370
|
-
RefCountedPtr<grpc_channel_credentials> creds_sans_call_creds =
|
1371
|
-
channel_credentials->duplicate_without_call_credentials();
|
1372
|
-
GPR_ASSERT(creds_sans_call_creds != nullptr);
|
1373
|
-
// Channel args to add.
|
1374
|
-
absl::InlinedVector<grpc_arg, 4> args_to_add = {
|
1375
|
-
// The fake resolver response generator, which we use to inject
|
1376
|
-
// address updates into the LB channel.
|
1377
|
-
FakeResolverResponseGenerator::MakeChannelArg(response_generator),
|
1397
|
+
.Remove(GRPC_ARG_CHANNEL_CREDENTIALS)
|
1378
1398
|
// A channel arg indicating the target is a grpclb load balancer.
|
1379
|
-
|
1380
|
-
const_cast<char*>(GRPC_ARG_ADDRESS_IS_GRPCLB_LOAD_BALANCER), 1),
|
1399
|
+
.Set(GRPC_ARG_ADDRESS_IS_GRPCLB_LOAD_BALANCER, 1)
|
1381
1400
|
// Tells channelz that this is an internal channel.
|
1382
|
-
|
1383
|
-
const_cast<char*>(GRPC_ARG_CHANNELZ_IS_INTERNAL_CHANNEL), 1),
|
1401
|
+
.Set(GRPC_ARG_CHANNELZ_IS_INTERNAL_CHANNEL, 1)
|
1384
1402
|
// A channel args for new channel credentials that does not contain bearer
|
1385
1403
|
// tokens.
|
1386
|
-
|
1387
|
-
|
1388
|
-
|
1389
|
-
|
1390
|
-
args_to_add.size());
|
1404
|
+
.SetObject(creds_sans_call_creds)
|
1405
|
+
// The fake resolver response generator, which we use to inject
|
1406
|
+
// address updates into the LB channel.
|
1407
|
+
.SetObject(response_generator->Ref());
|
1391
1408
|
}
|
1392
1409
|
|
1393
1410
|
//
|
1394
1411
|
// ctor and dtor
|
1395
1412
|
//
|
1396
1413
|
|
1397
|
-
std::string GetServerNameFromChannelArgs(const
|
1398
|
-
|
1399
|
-
|
1400
|
-
GPR_ASSERT(server_uri != nullptr);
|
1401
|
-
absl::StatusOr<URI> uri = URI::Parse(server_uri);
|
1414
|
+
std::string GetServerNameFromChannelArgs(const ChannelArgs& args) {
|
1415
|
+
absl::StatusOr<URI> uri =
|
1416
|
+
URI::Parse(args.GetString(GRPC_ARG_SERVER_URI).value());
|
1402
1417
|
GPR_ASSERT(uri.ok() && !uri->path().empty());
|
1403
1418
|
return std::string(absl::StripPrefix(uri->path(), "/"));
|
1404
1419
|
}
|
1405
1420
|
|
1406
1421
|
GrpcLb::GrpcLb(Args args)
|
1407
1422
|
: LoadBalancingPolicy(std::move(args)),
|
1408
|
-
server_name_(GetServerNameFromChannelArgs(
|
1423
|
+
server_name_(GetServerNameFromChannelArgs(channel_args())),
|
1409
1424
|
response_generator_(MakeRefCounted<FakeResolverResponseGenerator>()),
|
1410
|
-
lb_call_timeout_(
|
1411
|
-
|
1425
|
+
lb_call_timeout_(std::max(
|
1426
|
+
Duration::Zero(),
|
1427
|
+
channel_args()
|
1428
|
+
.GetDurationFromIntMillis(GRPC_ARG_GRPCLB_CALL_TIMEOUT_MS)
|
1429
|
+
.value_or(Duration::Zero()))),
|
1412
1430
|
lb_call_backoff_(
|
1413
1431
|
BackOff::Options()
|
1414
1432
|
.set_initial_backoff(Duration::Seconds(
|
@@ -1417,15 +1435,19 @@ GrpcLb::GrpcLb(Args args)
|
|
1417
1435
|
.set_jitter(GRPC_GRPCLB_RECONNECT_JITTER)
|
1418
1436
|
.set_max_backoff(Duration::Seconds(
|
1419
1437
|
GRPC_GRPCLB_RECONNECT_MAX_BACKOFF_SECONDS))),
|
1420
|
-
fallback_at_startup_timeout_(
|
1421
|
-
Duration::
|
1422
|
-
|
1423
|
-
|
1424
|
-
|
1425
|
-
|
1426
|
-
|
1427
|
-
|
1428
|
-
|
1438
|
+
fallback_at_startup_timeout_(std::max(
|
1439
|
+
Duration::Zero(),
|
1440
|
+
channel_args()
|
1441
|
+
.GetDurationFromIntMillis(GRPC_ARG_GRPCLB_FALLBACK_TIMEOUT_MS)
|
1442
|
+
.value_or(Duration::Milliseconds(
|
1443
|
+
GRPC_GRPCLB_DEFAULT_FALLBACK_TIMEOUT_MS)))),
|
1444
|
+
subchannel_cache_interval_(std::max(
|
1445
|
+
Duration::Zero(),
|
1446
|
+
channel_args()
|
1447
|
+
.GetDurationFromIntMillis(
|
1448
|
+
GRPC_ARG_GRPCLB_SUBCHANNEL_CACHE_INTERVAL_MS)
|
1449
|
+
.value_or(Duration::Milliseconds(
|
1450
|
+
GRPC_GRPCLB_DEFAULT_SUBCHANNEL_DELETION_DELAY_MS)))) {
|
1429
1451
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
1430
1452
|
gpr_log(GPR_INFO,
|
1431
1453
|
"[grpclb %p] Will use '%s' as the server name for LB request.",
|
@@ -1440,8 +1462,6 @@ GrpcLb::GrpcLb(Args args)
|
|
1440
1462
|
nullptr);
|
1441
1463
|
}
|
1442
1464
|
|
1443
|
-
GrpcLb::~GrpcLb() { grpc_channel_args_destroy(args_); }
|
1444
|
-
|
1445
1465
|
void GrpcLb::ShutdownLocked() {
|
1446
1466
|
shutting_down_ = true;
|
1447
1467
|
lb_calld_.reset();
|
@@ -1508,7 +1528,7 @@ void GrpcLb::UpdateLocked(UpdateArgs args) {
|
|
1508
1528
|
}
|
1509
1529
|
resolution_note_ = std::move(args.resolution_note);
|
1510
1530
|
// Update balancer channel.
|
1511
|
-
UpdateBalancerChannelLocked(
|
1531
|
+
UpdateBalancerChannelLocked(args.args);
|
1512
1532
|
// Update the existing child policy, if any.
|
1513
1533
|
if (child_policy_ != nullptr) CreateOrUpdateChildPolicyLocked();
|
1514
1534
|
// If this is the initial update, start the fallback-at-startup checks
|
@@ -1539,37 +1559,28 @@ void GrpcLb::UpdateLocked(UpdateArgs args) {
|
|
1539
1559
|
// helpers for UpdateLocked()
|
1540
1560
|
//
|
1541
1561
|
|
1542
|
-
void GrpcLb::UpdateBalancerChannelLocked(const
|
1562
|
+
void GrpcLb::UpdateBalancerChannelLocked(const ChannelArgs& args) {
|
1543
1563
|
// Make sure that GRPC_ARG_LB_POLICY_NAME is set in channel args,
|
1544
1564
|
// since we use this to trigger the client_load_reporting filter.
|
1545
|
-
|
1546
|
-
grpc_arg new_arg = grpc_channel_arg_string_create(
|
1547
|
-
const_cast<char*>(GRPC_ARG_LB_POLICY_NAME), const_cast<char*>("grpclb"));
|
1548
|
-
grpc_channel_args_destroy(args_);
|
1549
|
-
args_ = grpc_channel_args_copy_and_add_and_remove(
|
1550
|
-
&args, args_to_remove, GPR_ARRAY_SIZE(args_to_remove), &new_arg, 1);
|
1565
|
+
args_ = args.Set(GRPC_ARG_LB_POLICY_NAME, "grpclb");
|
1551
1566
|
// Construct args for balancer channel.
|
1552
1567
|
ServerAddressList balancer_addresses = ExtractBalancerAddresses(args);
|
1553
|
-
|
1554
|
-
BuildBalancerChannelArgs(response_generator_.get(),
|
1568
|
+
ChannelArgs lb_channel_args =
|
1569
|
+
BuildBalancerChannelArgs(response_generator_.get(), args);
|
1555
1570
|
// Create balancer channel if needed.
|
1556
1571
|
if (lb_channel_ == nullptr) {
|
1557
1572
|
std::string uri_str = absl::StrCat("fake:///", server_name_);
|
1558
|
-
|
1559
|
-
grpc_channel_credentials_find_in_args(lb_channel_args);
|
1573
|
+
auto* creds = lb_channel_args.GetObject<grpc_channel_credentials>();
|
1560
1574
|
GPR_ASSERT(creds != nullptr);
|
1561
|
-
|
1562
|
-
|
1563
|
-
|
1564
|
-
lb_channel_ = grpc_channel_create(uri_str.c_str(), creds, new_args);
|
1575
|
+
lb_channel_ = grpc_channel_create(
|
1576
|
+
uri_str.c_str(), creds,
|
1577
|
+
lb_channel_args.Remove(GRPC_ARG_CHANNEL_CREDENTIALS).ToC().get());
|
1565
1578
|
GPR_ASSERT(lb_channel_ != nullptr);
|
1566
|
-
grpc_channel_args_destroy(new_args);
|
1567
1579
|
// Set up channelz linkage.
|
1568
1580
|
channelz::ChannelNode* child_channelz_node =
|
1569
1581
|
grpc_channel_get_channelz_node(lb_channel_);
|
1570
1582
|
channelz::ChannelNode* parent_channelz_node =
|
1571
|
-
|
1572
|
-
&args, GRPC_ARG_CHANNELZ_CHANNEL_NODE);
|
1583
|
+
args.GetObject<channelz::ChannelNode>();
|
1573
1584
|
if (child_channelz_node != nullptr && parent_channelz_node != nullptr) {
|
1574
1585
|
parent_channelz_node->AddChildChannel(child_channelz_node->uuid());
|
1575
1586
|
parent_channelz_node_ = parent_channelz_node->Ref();
|
@@ -1642,7 +1653,7 @@ void GrpcLb::OnBalancerCallRetryTimer(void* arg, grpc_error_handle error) {
|
|
1642
1653
|
|
1643
1654
|
void GrpcLb::OnBalancerCallRetryTimerLocked(grpc_error_handle error) {
|
1644
1655
|
retry_timer_callback_pending_ = false;
|
1645
|
-
if (!shutting_down_ && error
|
1656
|
+
if (!shutting_down_ && GRPC_ERROR_IS_NONE(error) && lb_calld_ == nullptr) {
|
1646
1657
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
1647
1658
|
gpr_log(GPR_INFO, "[grpclb %p] Restarting call to LB server", this);
|
1648
1659
|
}
|
@@ -1686,7 +1697,7 @@ void GrpcLb::OnFallbackTimerLocked(grpc_error_handle error) {
|
|
1686
1697
|
// If we receive a serverlist after the timer fires but before this callback
|
1687
1698
|
// actually runs, don't fall back.
|
1688
1699
|
if (fallback_at_startup_checks_pending_ && !shutting_down_ &&
|
1689
|
-
error
|
1700
|
+
GRPC_ERROR_IS_NONE(error)) {
|
1690
1701
|
gpr_log(GPR_INFO,
|
1691
1702
|
"[grpclb %p] No response from balancer after fallback timeout; "
|
1692
1703
|
"entering fallback mode",
|
@@ -1704,22 +1715,19 @@ void GrpcLb::OnFallbackTimerLocked(grpc_error_handle error) {
|
|
1704
1715
|
// code for interacting with the child policy
|
1705
1716
|
//
|
1706
1717
|
|
1707
|
-
|
1718
|
+
ChannelArgs GrpcLb::CreateChildPolicyArgsLocked(
|
1708
1719
|
bool is_backend_from_grpclb_load_balancer) {
|
1709
|
-
|
1710
|
-
|
1711
|
-
|
1712
|
-
is_backend_from_grpclb_load_balancer));
|
1720
|
+
ChannelArgs r =
|
1721
|
+
args_.Set(GRPC_ARG_ADDRESS_IS_BACKEND_FROM_GRPCLB_LOAD_BALANCER,
|
1722
|
+
is_backend_from_grpclb_load_balancer);
|
1713
1723
|
if (is_backend_from_grpclb_load_balancer) {
|
1714
|
-
|
1715
|
-
const_cast<char*>(GRPC_ARG_INHIBIT_HEALTH_CHECKING), 1));
|
1724
|
+
r = r.Set(GRPC_ARG_INHIBIT_HEALTH_CHECKING, 1);
|
1716
1725
|
}
|
1717
|
-
return
|
1718
|
-
args_to_add.size());
|
1726
|
+
return r;
|
1719
1727
|
}
|
1720
1728
|
|
1721
1729
|
OrphanablePtr<LoadBalancingPolicy> GrpcLb::CreateChildPolicyLocked(
|
1722
|
-
const
|
1730
|
+
const ChannelArgs& args) {
|
1723
1731
|
LoadBalancingPolicy::Args lb_policy_args;
|
1724
1732
|
lb_policy_args.work_serializer = work_serializer();
|
1725
1733
|
lb_policy_args.args = args;
|
@@ -1763,7 +1771,7 @@ void GrpcLb::CreateOrUpdateChildPolicyLocked() {
|
|
1763
1771
|
}
|
1764
1772
|
update_args.args =
|
1765
1773
|
CreateChildPolicyArgsLocked(is_backend_from_grpclb_load_balancer);
|
1766
|
-
GPR_ASSERT(update_args.args !=
|
1774
|
+
GPR_ASSERT(update_args.args != ChannelArgs());
|
1767
1775
|
update_args.config = config_->child_policy();
|
1768
1776
|
// Create child policy if needed.
|
1769
1777
|
if (child_policy_ == nullptr) {
|
@@ -1807,7 +1815,7 @@ void GrpcLb::OnSubchannelCacheTimer(void* arg, grpc_error_handle error) {
|
|
1807
1815
|
}
|
1808
1816
|
|
1809
1817
|
void GrpcLb::OnSubchannelCacheTimerLocked(grpc_error_handle error) {
|
1810
|
-
if (subchannel_cache_timer_pending_ && error
|
1818
|
+
if (subchannel_cache_timer_pending_ && GRPC_ERROR_IS_NONE(error)) {
|
1811
1819
|
auto it = cached_subchannels_.begin();
|
1812
1820
|
if (it != cached_subchannels_.end()) {
|
1813
1821
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
@@ -1838,28 +1846,27 @@ class GrpcLbFactory : public LoadBalancingPolicyFactory {
|
|
1838
1846
|
return MakeOrphanable<GrpcLb>(std::move(args));
|
1839
1847
|
}
|
1840
1848
|
|
1841
|
-
|
1849
|
+
absl::string_view name() const override { return kGrpclb; }
|
1842
1850
|
|
1843
|
-
RefCountedPtr<LoadBalancingPolicy::Config
|
1844
|
-
|
1845
|
-
GPR_DEBUG_ASSERT(error != nullptr && *error == GRPC_ERROR_NONE);
|
1851
|
+
absl::StatusOr<RefCountedPtr<LoadBalancingPolicy::Config>>
|
1852
|
+
ParseLoadBalancingConfig(const Json& json) const override {
|
1846
1853
|
if (json.type() == Json::Type::JSON_NULL) {
|
1847
1854
|
return MakeRefCounted<GrpcLbConfig>(nullptr, "");
|
1848
1855
|
}
|
1849
|
-
std::vector<
|
1850
|
-
Json child_policy_config_json_tmp;
|
1851
|
-
const Json* child_policy_config_json;
|
1856
|
+
std::vector<std::string> error_list;
|
1852
1857
|
std::string service_name;
|
1853
1858
|
auto it = json.object_value().find("serviceName");
|
1854
1859
|
if (it != json.object_value().end()) {
|
1855
1860
|
const Json& service_name_json = it->second;
|
1856
1861
|
if (service_name_json.type() != Json::Type::STRING) {
|
1857
|
-
error_list.
|
1858
|
-
"field:serviceName error:type should be string")
|
1862
|
+
error_list.emplace_back(
|
1863
|
+
"field:serviceName error:type should be string");
|
1859
1864
|
} else {
|
1860
1865
|
service_name = service_name_json.string_value();
|
1861
1866
|
}
|
1862
1867
|
}
|
1868
|
+
Json child_policy_config_json_tmp;
|
1869
|
+
const Json* child_policy_config_json;
|
1863
1870
|
it = json.object_value().find("childPolicy");
|
1864
1871
|
if (it == json.object_value().end()) {
|
1865
1872
|
child_policy_config_json_tmp = Json::Array{Json::Object{
|
@@ -1869,22 +1876,21 @@ class GrpcLbFactory : public LoadBalancingPolicyFactory {
|
|
1869
1876
|
} else {
|
1870
1877
|
child_policy_config_json = &it->second;
|
1871
1878
|
}
|
1872
|
-
|
1873
|
-
RefCountedPtr<LoadBalancingPolicy::Config> child_policy_config =
|
1879
|
+
auto child_policy_config =
|
1874
1880
|
LoadBalancingPolicyRegistry::ParseLoadBalancingConfig(
|
1875
|
-
*child_policy_config_json
|
1876
|
-
if (
|
1877
|
-
|
1878
|
-
|
1879
|
-
|
1880
|
-
GRPC_ERROR_CREATE_FROM_VECTOR("field:childPolicy", &child_errors));
|
1881
|
+
*child_policy_config_json);
|
1882
|
+
if (!child_policy_config.ok()) {
|
1883
|
+
error_list.emplace_back(
|
1884
|
+
absl::StrCat("error parsing childPolicy field: ",
|
1885
|
+
child_policy_config.status().message()));
|
1881
1886
|
}
|
1882
1887
|
if (error_list.empty()) {
|
1883
|
-
return MakeRefCounted<GrpcLbConfig>(std::move(child_policy_config),
|
1888
|
+
return MakeRefCounted<GrpcLbConfig>(std::move(*child_policy_config),
|
1884
1889
|
std::move(service_name));
|
1885
1890
|
} else {
|
1886
|
-
|
1887
|
-
|
1891
|
+
return absl::InvalidArgumentError(
|
1892
|
+
absl::StrCat("errors parsing grpclb LB policy config: [",
|
1893
|
+
absl::StrJoin(error_list, "; "), "]"));
|
1888
1894
|
}
|
1889
1895
|
}
|
1890
1896
|
};
|