grpc 1.28.0 → 1.37.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +1734 -22357
- data/etc/roots.pem +257 -573
- data/include/grpc/compression.h +1 -1
- data/include/grpc/grpc.h +31 -9
- data/include/grpc/grpc_security.h +274 -180
- data/include/grpc/grpc_security_constants.h +4 -0
- data/include/grpc/impl/codegen/README.md +22 -0
- data/include/grpc/impl/codegen/atm_windows.h +4 -0
- data/include/grpc/impl/codegen/byte_buffer.h +1 -1
- data/include/grpc/impl/codegen/grpc_types.h +32 -30
- data/include/grpc/impl/codegen/log.h +0 -2
- data/include/grpc/impl/codegen/port_platform.h +36 -90
- data/include/grpc/impl/codegen/sync_windows.h +4 -0
- data/include/grpc/module.modulemap +24 -39
- data/include/grpc/slice_buffer.h +3 -3
- data/include/grpc/support/sync.h +3 -3
- data/include/grpc/support/time.h +7 -7
- data/src/core/ext/filters/client_channel/backend_metric.cc +16 -12
- data/src/core/ext/filters/client_channel/backup_poller.cc +3 -2
- data/src/core/ext/filters/client_channel/client_channel.cc +3845 -2414
- data/src/core/ext/filters/client_channel/client_channel.h +1 -7
- data/src/core/ext/filters/client_channel/client_channel_channelz.h +0 -3
- data/src/core/ext/filters/client_channel/client_channel_factory.h +2 -1
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +4 -3
- data/src/core/ext/filters/client_channel/config_selector.cc +58 -0
- data/src/core/ext/filters/client_channel/config_selector.h +133 -0
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +191 -0
- data/src/core/ext/filters/client_channel/dynamic_filters.h +99 -0
- data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +26 -122
- data/src/core/ext/filters/client_channel/global_subchannel_pool.h +15 -10
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +25 -30
- data/src/core/ext/filters/client_channel/health/health_check_client.h +7 -7
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +15 -16
- data/src/core/ext/filters/client_channel/http_proxy.cc +44 -34
- data/src/core/ext/filters/client_channel/lb_policy.cc +28 -20
- data/src/core/ext/filters/client_channel/lb_policy.h +50 -38
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +96 -0
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +101 -0
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +20 -11
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +481 -510
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +76 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +37 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +1 -2
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +6 -41
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +3 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +3 -2
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +3 -3
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +24 -18
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +922 -0
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +23 -0
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +27 -0
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +11 -10
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +18 -46
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +744 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +520 -134
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +53 -26
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h +29 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +795 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +722 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +1384 -0
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +18 -8
- data/src/core/ext/filters/client_channel/local_subchannel_pool.cc +27 -67
- data/src/core/ext/filters/client_channel/local_subchannel_pool.h +12 -10
- data/src/core/ext/filters/client_channel/resolver.cc +9 -10
- data/src/core/ext/filters/client_channel/resolver.h +10 -20
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +111 -110
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +4 -34
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +22 -24
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +15 -13
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +82 -123
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +642 -184
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +10 -3
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_libuv.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +61 -61
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +102 -108
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +1 -5
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +377 -0
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +38 -31
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +829 -46
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +28 -0
- data/src/core/ext/filters/client_channel/resolver_factory.h +8 -8
- data/src/core/ext/filters/client_channel/resolver_registry.cc +55 -52
- data/src/core/ext/filters/client_channel/resolver_registry.h +10 -10
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +47 -93
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +30 -26
- data/src/core/ext/filters/client_channel/retry_throttle.cc +5 -3
- data/src/core/ext/filters/client_channel/retry_throttle.h +4 -2
- data/src/core/ext/filters/client_channel/server_address.cc +132 -13
- data/src/core/ext/filters/client_channel/server_address.h +80 -32
- data/src/core/ext/filters/client_channel/service_config.cc +114 -149
- data/src/core/ext/filters/client_channel/service_config.h +33 -100
- data/src/core/ext/filters/client_channel/service_config_call_data.h +86 -0
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +142 -0
- data/src/core/ext/filters/client_channel/service_config_parser.cc +89 -0
- data/src/core/ext/filters/client_channel/service_config_parser.h +92 -0
- data/src/core/ext/filters/client_channel/subchannel.cc +211 -230
- data/src/core/ext/filters/client_channel/subchannel.h +116 -118
- data/src/core/ext/filters/client_channel/subchannel_interface.h +41 -5
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +16 -2
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +16 -10
- data/src/core/ext/filters/client_idle/client_idle_filter.cc +1 -1
- data/src/core/ext/filters/deadline/deadline_filter.cc +87 -79
- data/src/core/ext/filters/deadline/deadline_filter.h +7 -11
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +495 -0
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +39 -0
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +189 -0
- data/src/core/ext/filters/fault_injection/service_config_parser.h +85 -0
- data/src/core/ext/filters/http/client/http_client_filter.cc +29 -34
- data/src/core/ext/filters/http/client_authority_filter.cc +10 -10
- data/src/core/ext/filters/http/http_filters_plugin.cc +34 -15
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +258 -221
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +399 -0
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.h +31 -0
- data/src/core/ext/filters/http/server/http_server_filter.cc +3 -3
- data/src/core/ext/filters/max_age/max_age_filter.cc +38 -34
- data/src/core/ext/filters/message_size/message_size_filter.cc +64 -90
- data/src/core/ext/filters/message_size/message_size_filter.h +12 -5
- data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +1 -1
- data/src/core/ext/filters/workarounds/workaround_utils.cc +1 -1
- data/src/core/ext/transport/chttp2/client/authority.cc +3 -3
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +87 -31
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +19 -2
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +23 -10
- data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +21 -10
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +37 -49
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +803 -355
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +16 -2
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +13 -3
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +19 -18
- data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +65 -21
- data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +7 -7
- data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +4 -6
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +343 -347
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +13 -1
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +36 -33
- data/src/core/ext/transport/chttp2/transport/flow_control.h +27 -19
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +14 -13
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +6 -7
- data/src/core/ext/transport/chttp2/transport/frame_goaway.h +2 -3
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +5 -6
- data/src/core/ext/transport/chttp2/transport/frame_ping.h +2 -3
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +12 -13
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +2 -3
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +8 -9
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +4 -4
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +15 -18
- data/src/core/ext/transport/chttp2/transport/frame_window_update.h +2 -3
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +30 -17
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +2 -3
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +37 -37
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +2 -3
- data/src/core/ext/transport/chttp2/transport/hpack_table.cc +13 -17
- data/src/core/ext/transport/chttp2/transport/hpack_table.h +2 -2
- data/src/core/ext/transport/chttp2/transport/http2_settings.h +4 -5
- data/src/core/ext/transport/chttp2/transport/huffsyms.h +2 -3
- data/src/core/ext/transport/chttp2/transport/internal.h +38 -23
- data/src/core/ext/transport/chttp2/transport/parsing.cc +52 -74
- data/src/core/ext/transport/chttp2/transport/stream_map.h +2 -3
- data/src/core/ext/transport/chttp2/transport/writing.cc +30 -28
- data/src/core/ext/transport/inproc/inproc_transport.cc +106 -33
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +406 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +1459 -0
- data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +1 -1
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +10 -4
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +243 -0
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +865 -0
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +350 -0
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +1348 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +74 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +253 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +453 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +1801 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +35 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +77 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +56 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +364 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +124 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +428 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +35 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +88 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +334 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +1066 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +103 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +388 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +34 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +78 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +53 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +149 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +241 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +839 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +170 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +767 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +36 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +88 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +182 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +755 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +27 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +65 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c +34 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +95 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +42 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +126 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +90 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +243 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +91 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +305 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +112 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +367 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +33 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +73 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +130 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +557 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +159 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +623 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +40 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +107 -0
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +144 -0
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +488 -0
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +141 -0
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +452 -0
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +178 -0
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +662 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +65 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +237 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +941 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +3790 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +60 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +159 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +49 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +122 -0
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +29 -0
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +67 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +79 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +268 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +78 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +281 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +41 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +113 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +362 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +1488 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +19 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +35 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +113 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +458 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +73 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +219 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +146 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +621 -0
- data/src/core/ext/upb-generated/envoy/{api/v2/rds.upb.c → service/cluster/v3/cds.upb.c} +7 -9
- data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.h +56 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +25 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +56 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +146 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +499 -0
- data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.c +27 -0
- data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.h +56 -0
- data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.c +27 -0
- data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.h +56 -0
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +54 -0
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +151 -0
- data/src/core/ext/upb-generated/envoy/{api/v2/srds.upb.c → service/route/v3/rds.upb.c} +7 -7
- data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.h +56 -0
- data/src/core/ext/upb-generated/envoy/{api/v2/cds.upb.c → service/route/v3/srds.upb.c} +7 -7
- data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.h +56 -0
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +93 -0
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +323 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +47 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +128 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +36 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +90 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +35 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +84 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +34 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +78 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +64 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +166 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +53 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +146 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +46 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +124 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +63 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +207 -0
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +88 -0
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +301 -0
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +90 -0
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +283 -0
- data/src/core/ext/upb-generated/envoy/type/{http.upb.c → v3/http.upb.c} +3 -2
- data/src/core/ext/upb-generated/envoy/type/{http.upb.h → v3/http.upb.h} +9 -9
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c +40 -0
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +99 -0
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +51 -0
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +130 -0
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +30 -0
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +68 -0
- 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 +242 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +830 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +251 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +871 -0
- data/src/core/ext/upb-generated/google/api/http.upb.c +3 -3
- data/src/core/ext/upb-generated/google/api/http.upb.h +52 -32
- data/src/core/ext/upb-generated/google/protobuf/any.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/any.upb.h +12 -6
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +107 -106
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +691 -496
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +12 -6
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +8 -2
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +5 -5
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +55 -57
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +12 -6
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +9 -9
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +82 -28
- data/src/core/ext/upb-generated/google/rpc/status.upb.c +1 -1
- data/src/core/ext/upb-generated/google/rpc/status.upb.h +17 -10
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +5 -5
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +40 -45
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +43 -43
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +236 -184
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +5 -5
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +29 -13
- 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 +19 -7
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +17 -17
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +122 -62
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +3 -3
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +30 -12
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +31 -0
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +64 -0
- data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +1 -1
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +28 -0
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +71 -0
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +27 -0
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +60 -0
- data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c +9 -9
- data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h +48 -68
- data/src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.c +33 -0
- data/src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.h +77 -0
- data/src/core/ext/upb-generated/validate/validate.upb.c +71 -70
- data/src/core/ext/upb-generated/validate/validate.upb.h +732 -586
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +28 -0
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +60 -0
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +52 -0
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +143 -0
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +42 -0
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +84 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +36 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +94 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +54 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +166 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +36 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +85 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +354 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.h +140 -0
- data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c +38 -0
- data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.h +30 -0
- data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.c +41 -0
- data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +251 -0
- data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.h +105 -0
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +383 -0
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.h +115 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +100 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +543 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +145 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.c +53 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +136 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c +127 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.h +65 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.c +56 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +272 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +135 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +143 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.h +55 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.c +56 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c +66 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.c +263 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.h +100 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +233 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.h +70 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.c +56 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +231 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h +85 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +43 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c +59 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +68 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c +107 -0
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.h +50 -0
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +113 -0
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.h +50 -0
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.c +146 -0
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.h +55 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.c +50 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +195 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +55 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +193 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.h +65 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +59 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.c +141 -0
- data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.h +70 -0
- data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.c +141 -0
- data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.h +70 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +101 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +944 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +290 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c +71 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c +61 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c +51 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.c +102 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.h +55 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +120 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c +76 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +505 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +115 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +44 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h +30 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +170 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h +55 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +97 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +246 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h +60 -0
- data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.c +72 -0
- data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c +60 -0
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +142 -0
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +65 -0
- data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.c +73 -0
- data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.c +72 -0
- data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +80 -0
- data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.c +80 -0
- data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.c +74 -0
- data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +130 -0
- data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.h +50 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.c +64 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.c +56 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.c +54 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.c +53 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +73 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c +69 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.c +63 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.c +81 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.c +92 -0
- data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.h +65 -0
- data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.c +95 -0
- data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.h +55 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.c +34 -0
- data/src/core/ext/{upb-generated/gogoproto/gogo.upb.h → upbdefs-generated/envoy/type/v3/http.upbdefs.h} +10 -10
- data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.c +59 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.c +54 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.c +47 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.c +40 -0
- data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.h +30 -0
- data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.c +61 -0
- data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c +39 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +386 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.h +165 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c +40 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c +37 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c +65 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.h +50 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c +40 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c +66 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.h +75 -0
- data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c +42 -0
- data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c +70 -0
- data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c +56 -0
- data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c +33 -0
- data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.h +30 -0
- data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c +49 -0
- data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c +43 -0
- data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.c +44 -0
- data/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +310 -0
- data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.h +145 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c +42 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c +62 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c +45 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c +49 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c +67 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.c +50 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.h +35 -0
- data/src/core/ext/xds/certificate_provider_factory.h +61 -0
- data/src/core/ext/xds/certificate_provider_registry.cc +103 -0
- data/src/core/ext/xds/certificate_provider_registry.h +57 -0
- data/src/core/ext/xds/certificate_provider_store.cc +87 -0
- data/src/core/ext/xds/certificate_provider_store.h +112 -0
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +144 -0
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +69 -0
- data/src/core/ext/xds/xds_api.cc +3791 -0
- data/src/core/ext/xds/xds_api.h +671 -0
- data/src/core/ext/xds/xds_bootstrap.cc +555 -0
- data/src/core/ext/xds/xds_bootstrap.h +120 -0
- data/src/core/ext/xds/xds_certificate_provider.cc +405 -0
- data/src/core/ext/xds/xds_certificate_provider.h +151 -0
- data/src/core/ext/{filters/client_channel/xds → xds}/xds_channel_args.h +9 -6
- data/src/core/ext/{filters/client_channel/xds → xds}/xds_client.cc +983 -773
- data/src/core/ext/xds/xds_client.h +365 -0
- data/src/core/ext/xds/xds_client_stats.cc +159 -0
- data/src/core/ext/{filters/client_channel/xds → xds}/xds_client_stats.h +80 -40
- data/src/core/ext/xds/xds_http_fault_filter.cc +226 -0
- data/src/core/ext/xds/xds_http_fault_filter.h +63 -0
- data/src/core/ext/xds/xds_http_filters.cc +114 -0
- data/src/core/ext/xds/xds_http_filters.h +130 -0
- data/src/core/ext/xds/xds_server_config_fetcher.cc +532 -0
- data/src/core/lib/channel/channel_args.cc +24 -22
- data/src/core/lib/channel/channel_args.h +3 -2
- data/src/core/lib/channel/channel_stack.cc +12 -0
- data/src/core/lib/channel/channel_stack.h +27 -13
- data/src/core/lib/channel/channel_trace.cc +6 -8
- data/src/core/lib/channel/channel_trace.h +1 -1
- data/src/core/lib/channel/channelz.cc +137 -97
- data/src/core/lib/channel/channelz.h +47 -26
- data/src/core/lib/channel/channelz_registry.cc +34 -15
- data/src/core/lib/channel/channelz_registry.h +3 -1
- data/src/core/lib/channel/connected_channel.cc +7 -5
- data/src/core/lib/channel/context.h +1 -1
- data/src/core/lib/channel/handshaker.cc +15 -59
- data/src/core/lib/channel/handshaker.h +7 -22
- data/src/core/lib/channel/handshaker_registry.cc +5 -17
- data/src/core/lib/channel/status_util.cc +14 -5
- data/src/core/lib/channel/status_util.h +5 -0
- data/src/core/lib/compression/compression.cc +8 -4
- data/src/core/lib/compression/compression_args.cc +3 -2
- data/src/core/lib/compression/compression_internal.cc +10 -5
- data/src/core/lib/compression/compression_internal.h +2 -1
- data/src/core/lib/compression/message_compress.cc +5 -1
- data/src/core/lib/compression/stream_compression_identity.cc +1 -3
- data/src/core/lib/debug/stats.cc +21 -27
- data/src/core/lib/debug/stats.h +5 -3
- data/src/core/lib/debug/stats_data.cc +1 -0
- data/src/core/lib/debug/stats_data.h +13 -13
- data/src/core/lib/gpr/alloc.cc +3 -2
- data/src/core/lib/gpr/cpu_iphone.cc +10 -2
- data/src/core/lib/gpr/log.cc +59 -17
- data/src/core/lib/gpr/log_linux.cc +23 -9
- data/src/core/lib/gpr/log_posix.cc +19 -7
- data/src/core/lib/gpr/log_windows.cc +18 -4
- data/src/core/lib/gpr/murmur_hash.cc +1 -1
- data/src/core/lib/gpr/spinlock.h +12 -5
- data/src/core/lib/gpr/string.cc +33 -55
- data/src/core/lib/gpr/string.h +9 -24
- data/src/core/lib/gpr/sync.cc +4 -4
- data/src/core/lib/gpr/sync_abseil.cc +5 -6
- data/src/core/lib/gpr/sync_posix.cc +2 -8
- data/src/core/lib/gpr/sync_windows.cc +2 -2
- data/src/core/lib/gpr/time.cc +16 -12
- data/src/core/lib/gpr/time_posix.cc +1 -1
- data/src/core/lib/gpr/time_precise.cc +5 -2
- data/src/core/lib/gpr/time_precise.h +6 -2
- data/src/core/lib/gpr/tls.h +4 -0
- data/src/core/lib/gpr/tls_msvc.h +2 -0
- data/src/core/lib/gpr/tls_stdcpp.h +48 -0
- data/src/core/lib/gpr/useful.h +5 -4
- data/src/core/lib/gprpp/arena.h +3 -2
- data/src/core/lib/gprpp/atomic.h +9 -9
- data/src/core/lib/gprpp/dual_ref_counted.h +331 -0
- data/src/core/lib/gprpp/examine_stack.cc +43 -0
- data/src/core/lib/gprpp/examine_stack.h +46 -0
- data/src/core/lib/gprpp/fork.cc +3 -3
- data/src/core/lib/gprpp/global_config_env.cc +8 -6
- data/src/core/lib/gprpp/host_port.cc +29 -35
- data/src/core/lib/gprpp/host_port.h +14 -17
- data/src/core/lib/gprpp/manual_constructor.h +1 -1
- data/src/core/lib/gprpp/mpscq.cc +2 -2
- data/src/core/lib/gprpp/orphanable.h +4 -8
- data/src/core/lib/gprpp/ref_counted.h +91 -68
- data/src/core/lib/gprpp/ref_counted_ptr.h +173 -7
- data/src/core/lib/gprpp/stat.h +38 -0
- data/src/core/lib/gprpp/stat_posix.cc +49 -0
- data/src/core/lib/gprpp/stat_windows.cc +48 -0
- data/src/core/lib/gprpp/sync.h +129 -40
- data/src/core/lib/gprpp/thd.h +3 -3
- data/src/core/lib/gprpp/thd_posix.cc +42 -37
- data/src/core/lib/gprpp/thd_windows.cc +3 -1
- data/src/core/lib/gprpp/time_util.cc +77 -0
- data/src/core/lib/gprpp/time_util.h +42 -0
- data/src/core/lib/http/format_request.cc +46 -65
- data/src/core/lib/http/httpcli.cc +16 -14
- data/src/core/lib/http/httpcli.h +4 -6
- data/src/core/lib/http/httpcli_security_connector.cc +13 -13
- data/src/core/lib/http/parser.cc +47 -27
- data/src/core/lib/http/parser.h +2 -3
- data/src/core/lib/iomgr/buffer_list.h +23 -22
- data/src/core/lib/iomgr/call_combiner.cc +8 -5
- data/src/core/lib/iomgr/call_combiner.h +3 -2
- data/src/core/lib/iomgr/cfstream_handle.cc +6 -4
- data/src/core/lib/iomgr/closure.h +2 -3
- data/src/core/lib/iomgr/combiner.cc +2 -1
- data/src/core/lib/iomgr/dualstack_socket_posix.cc +47 -0
- data/src/core/lib/iomgr/endpoint.cc +5 -1
- data/src/core/lib/iomgr/endpoint.h +8 -4
- data/src/core/lib/iomgr/endpoint_cfstream.cc +38 -14
- data/src/core/lib/iomgr/endpoint_pair.h +2 -3
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +10 -10
- data/src/core/lib/iomgr/error.cc +23 -21
- data/src/core/lib/iomgr/error.h +1 -2
- data/src/core/lib/iomgr/error_cfstream.cc +9 -8
- data/src/core/lib/iomgr/error_internal.h +1 -1
- data/src/core/lib/iomgr/ev_apple.cc +359 -0
- data/src/core/lib/iomgr/ev_apple.h +43 -0
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +46 -43
- data/src/core/lib/iomgr/ev_epollex_linux.cc +46 -45
- data/src/core/lib/iomgr/ev_poll_posix.cc +18 -15
- data/src/core/lib/iomgr/ev_posix.cc +5 -6
- data/src/core/lib/iomgr/exec_ctx.cc +7 -3
- data/src/core/lib/iomgr/exec_ctx.h +26 -10
- data/src/core/lib/iomgr/executor.cc +2 -1
- data/src/core/lib/iomgr/executor.h +1 -1
- data/src/core/lib/iomgr/executor/mpmcqueue.h +5 -5
- data/src/core/lib/iomgr/executor/threadpool.h +4 -4
- data/src/core/lib/iomgr/iomgr.cc +1 -1
- data/src/core/lib/iomgr/iomgr_posix.cc +0 -1
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +84 -21
- data/src/core/lib/iomgr/is_epollexclusive_available.cc +14 -0
- data/src/core/lib/iomgr/load_file.h +1 -1
- data/src/core/lib/iomgr/lockfree_event.cc +19 -14
- data/src/core/lib/iomgr/lockfree_event.h +2 -2
- data/src/core/lib/iomgr/parse_address.cc +322 -0
- data/src/core/lib/iomgr/parse_address.h +77 -0
- data/src/core/lib/iomgr/poller/eventmanager_libuv.cc +2 -1
- data/src/core/lib/iomgr/poller/eventmanager_libuv.h +1 -1
- data/src/core/lib/iomgr/pollset_set_custom.cc +11 -11
- data/src/core/lib/{gprpp/optional.h → iomgr/pollset_uv.h} +11 -12
- data/src/core/lib/iomgr/port.h +2 -21
- data/src/core/lib/iomgr/python_util.h +46 -0
- data/src/core/lib/iomgr/resolve_address.cc +4 -4
- data/src/core/lib/iomgr/resolve_address.h +4 -6
- data/src/core/lib/iomgr/resolve_address_custom.cc +42 -57
- data/src/core/lib/iomgr/resolve_address_custom.h +4 -2
- data/src/core/lib/iomgr/resolve_address_posix.cc +11 -16
- data/src/core/lib/iomgr/resolve_address_windows.cc +16 -25
- data/src/core/lib/iomgr/resource_quota.cc +39 -38
- data/src/core/lib/iomgr/sockaddr_utils.cc +161 -44
- data/src/core/lib/iomgr/sockaddr_utils.h +40 -19
- data/src/core/lib/iomgr/socket_factory_posix.cc +3 -2
- data/src/core/lib/iomgr/socket_factory_posix.h +2 -3
- data/src/core/lib/iomgr/socket_mutator.cc +3 -2
- data/src/core/lib/iomgr/socket_mutator.h +2 -3
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +103 -81
- data/src/core/lib/iomgr/socket_utils_posix.h +3 -0
- data/src/core/lib/iomgr/socket_windows.cc +4 -5
- data/src/core/lib/iomgr/tcp_client.cc +3 -3
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +14 -18
- data/src/core/lib/iomgr/tcp_client_custom.cc +13 -15
- data/src/core/lib/iomgr/tcp_client_posix.cc +31 -37
- data/src/core/lib/iomgr/tcp_client_windows.cc +10 -11
- data/src/core/lib/iomgr/tcp_custom.cc +56 -36
- data/src/core/lib/iomgr/tcp_custom.h +1 -1
- data/src/core/lib/iomgr/tcp_posix.cc +48 -29
- data/src/core/lib/iomgr/tcp_server.cc +3 -4
- data/src/core/lib/iomgr/tcp_server.h +7 -5
- data/src/core/lib/iomgr/tcp_server_custom.cc +39 -45
- data/src/core/lib/iomgr/tcp_server_posix.cc +38 -44
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +3 -4
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +7 -8
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +10 -18
- data/src/core/lib/iomgr/tcp_server_windows.cc +16 -16
- data/src/core/lib/iomgr/tcp_uv.cc +5 -4
- data/src/core/lib/iomgr/tcp_windows.cc +26 -10
- data/src/core/lib/iomgr/time_averaged_stats.h +2 -3
- data/src/core/lib/iomgr/timer_custom.cc +5 -5
- data/src/core/lib/iomgr/timer_generic.cc +20 -20
- data/src/core/lib/{gprpp/inlined_vector.h → iomgr/timer_generic.h} +19 -17
- data/src/core/lib/iomgr/timer_heap.h +2 -3
- data/src/core/lib/iomgr/timer_manager.cc +3 -3
- data/src/core/lib/iomgr/udp_server.cc +33 -38
- data/src/core/lib/iomgr/udp_server.h +6 -4
- data/src/core/lib/iomgr/unix_sockets_posix.cc +36 -30
- data/src/core/lib/iomgr/unix_sockets_posix.h +8 -1
- data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +12 -2
- data/src/core/lib/iomgr/wakeup_fd_nospecial.cc +1 -1
- data/src/core/lib/iomgr/wakeup_fd_pipe.cc +2 -2
- data/src/core/lib/json/json.h +15 -4
- data/src/core/lib/json/json_reader.cc +33 -30
- data/src/core/lib/json/json_util.cc +58 -0
- data/src/core/lib/json/json_util.h +204 -0
- data/src/core/lib/json/json_writer.cc +15 -13
- data/src/core/lib/matchers/matchers.cc +339 -0
- data/src/core/lib/matchers/matchers.h +160 -0
- data/src/core/lib/security/context/security_context.cc +4 -3
- data/src/core/lib/security/context/security_context.h +3 -1
- data/src/core/lib/security/credentials/alts/alts_credentials.cc +2 -1
- data/src/core/lib/security/credentials/alts/alts_credentials.h +1 -1
- data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +1 -1
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +12 -0
- data/src/core/lib/security/credentials/composite/composite_credentials.h +6 -3
- data/src/core/lib/security/credentials/credentials.cc +7 -91
- data/src/core/lib/security/credentials/credentials.h +18 -66
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +413 -0
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +80 -0
- data/src/core/lib/security/credentials/external/aws_request_signer.cc +213 -0
- data/src/core/lib/security/credentials/external/aws_request_signer.h +72 -0
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +497 -0
- data/src/core/lib/security/credentials/external/external_account_credentials.h +120 -0
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +135 -0
- data/src/core/lib/security/credentials/external/file_external_account_credentials.h +48 -0
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +213 -0
- data/src/core/lib/security/credentials/external/url_external_account_credentials.h +58 -0
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +3 -2
- data/src/core/lib/security/credentials/fake/fake_credentials.h +4 -0
- data/src/core/lib/security/credentials/google_default/credentials_generic.cc +8 -6
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +90 -67
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +8 -6
- data/src/core/lib/security/credentials/iam/iam_credentials.h +4 -0
- data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +64 -0
- data/src/core/lib/security/credentials/jwt/json_token.cc +4 -4
- data/src/core/lib/security/credentials/jwt/json_token.h +2 -5
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +7 -4
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +13 -0
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +13 -19
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +2 -3
- data/src/core/lib/security/credentials/local/local_credentials.cc +2 -1
- data/src/core/lib/security/credentials/local/local_credentials.h +1 -1
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +109 -97
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +14 -7
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +20 -7
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +2 -0
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +27 -6
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +12 -2
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +346 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +213 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +399 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +138 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +78 -140
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +74 -167
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +18 -13
- data/src/core/lib/security/credentials/tls/tls_credentials.h +3 -3
- data/src/core/lib/security/credentials/tls/tls_utils.cc +91 -0
- data/src/core/lib/security/credentials/tls/tls_utils.h +38 -0
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +244 -0
- data/src/core/lib/security/credentials/xds/xds_credentials.h +69 -0
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +22 -7
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +27 -32
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +121 -0
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +87 -0
- data/src/core/lib/security/security_connector/load_system_roots.h +4 -0
- data/src/core/lib/security/security_connector/load_system_roots_linux.cc +3 -2
- data/src/core/lib/security/security_connector/load_system_roots_linux.h +2 -0
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +4 -4
- data/src/core/lib/security/security_connector/security_connector.cc +6 -3
- data/src/core/lib/security/security_connector/security_connector.h +6 -4
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +42 -40
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +8 -5
- data/src/core/lib/security/security_connector/ssl_utils.cc +100 -27
- data/src/core/lib/security/security_connector/ssl_utils.h +37 -31
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +394 -284
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +108 -42
- data/src/core/lib/security/transport/auth_filters.h +0 -5
- data/src/core/lib/security/transport/client_auth_filter.cc +11 -11
- data/src/core/lib/security/transport/secure_endpoint.cc +9 -3
- data/src/core/lib/security/transport/security_handshaker.cc +36 -8
- data/src/core/lib/security/transport/server_auth_filter.cc +2 -1
- data/src/core/lib/security/util/json_util.cc +12 -13
- data/src/core/lib/security/util/json_util.h +1 -0
- data/src/core/lib/slice/slice.cc +45 -5
- data/src/core/lib/slice/slice_buffer.cc +2 -1
- data/src/core/lib/slice/slice_intern.cc +13 -16
- data/src/core/lib/slice/slice_internal.h +17 -2
- data/src/core/lib/slice/slice_utils.h +9 -0
- data/src/core/lib/surface/byte_buffer_reader.cc +2 -47
- data/src/core/lib/surface/call.cc +95 -88
- data/src/core/lib/surface/call.h +2 -1
- data/src/core/lib/surface/call_details.cc +8 -8
- data/src/core/lib/surface/call_log_batch.cc +50 -58
- data/src/core/lib/surface/channel.cc +86 -72
- data/src/core/lib/surface/channel.h +54 -7
- data/src/core/lib/surface/channel_init.cc +1 -1
- data/src/core/lib/surface/channel_ping.cc +2 -3
- data/src/core/lib/surface/completion_queue.cc +64 -63
- data/src/core/lib/surface/completion_queue.h +16 -16
- data/src/core/lib/surface/event_string.cc +18 -25
- data/src/core/lib/surface/event_string.h +3 -1
- data/src/core/lib/surface/init.cc +45 -29
- data/src/core/lib/surface/init_secure.cc +1 -4
- data/src/core/lib/surface/lame_client.cc +47 -54
- data/src/core/lib/surface/lame_client.h +5 -0
- data/src/core/lib/surface/server.cc +1309 -1300
- data/src/core/lib/surface/server.h +469 -45
- data/src/core/lib/surface/validate_metadata.h +3 -0
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/authority_override.cc +40 -0
- data/src/core/lib/transport/authority_override.h +37 -0
- data/src/core/lib/transport/bdp_estimator.cc +1 -1
- data/src/core/lib/transport/bdp_estimator.h +2 -1
- data/src/core/lib/transport/byte_stream.h +10 -5
- data/src/core/lib/transport/connectivity_state.cc +23 -17
- data/src/core/lib/transport/connectivity_state.h +31 -15
- data/src/core/lib/transport/error_utils.cc +13 -0
- data/src/core/lib/transport/error_utils.h +7 -1
- data/src/core/lib/transport/metadata.cc +19 -5
- data/src/core/lib/transport/metadata.h +2 -2
- data/src/core/lib/transport/metadata_batch.cc +27 -0
- data/src/core/lib/transport/metadata_batch.h +20 -7
- data/src/core/lib/transport/static_metadata.cc +296 -277
- data/src/core/lib/transport/static_metadata.h +81 -74
- data/src/core/lib/transport/status_conversion.cc +6 -14
- data/src/core/lib/transport/status_metadata.cc +4 -3
- data/src/core/lib/transport/timeout_encoding.cc +4 -4
- data/src/core/lib/transport/transport.cc +7 -6
- data/src/core/lib/transport/transport.h +24 -10
- data/src/core/lib/transport/transport_op_string.cc +61 -102
- data/src/core/lib/uri/uri_parser.cc +135 -258
- data/src/core/lib/uri/uri_parser.h +60 -23
- data/src/core/plugin_registry/grpc_plugin_registry.cc +65 -12
- data/src/core/tsi/alts/crypt/aes_gcm.cc +0 -2
- data/src/core/tsi/alts/crypt/gsec.cc +5 -4
- data/src/core/tsi/alts/frame_protector/frame_handler.cc +8 -6
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +49 -38
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +8 -4
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +98 -48
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +9 -1
- data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +3 -3
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.h +2 -3
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.cc +8 -6
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +4 -4
- data/src/core/tsi/fake_transport_security.cc +27 -20
- data/src/core/tsi/local_transport_security.cc +5 -1
- data/src/core/tsi/local_transport_security.h +6 -7
- data/src/core/tsi/ssl/session_cache/ssl_session.h +0 -2
- data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +1 -1
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +0 -2
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +3 -4
- data/src/core/tsi/ssl_transport_security.cc +226 -105
- data/src/core/tsi/ssl_transport_security.h +28 -16
- data/src/core/tsi/ssl_types.h +0 -2
- data/src/core/tsi/transport_security.cc +10 -8
- data/src/core/tsi/transport_security.h +6 -9
- data/src/core/tsi/transport_security_grpc.h +2 -3
- data/src/core/tsi/transport_security_interface.h +9 -4
- data/src/ruby/bin/math_services_pb.rb +4 -4
- data/src/ruby/ext/grpc/extconf.rb +15 -4
- data/src/ruby/ext/grpc/rb_call.c +12 -3
- data/src/ruby/ext/grpc/rb_call.h +4 -0
- data/src/ruby/ext/grpc/rb_call_credentials.c +57 -12
- data/src/ruby/ext/grpc/rb_channel.c +10 -1
- data/src/ruby/ext/grpc/rb_channel_credentials.c +20 -1
- data/src/ruby/ext/grpc/rb_channel_credentials.h +4 -0
- data/src/ruby/ext/grpc/rb_compression_options.c +1 -1
- data/src/ruby/ext/grpc/rb_enable_cpp.cc +1 -1
- data/src/ruby/ext/grpc/rb_event_thread.c +2 -0
- data/src/ruby/ext/grpc/rb_grpc.c +4 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +44 -18
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +83 -44
- data/src/ruby/ext/grpc/rb_server.c +13 -1
- data/src/ruby/ext/grpc/rb_server_credentials.c +19 -3
- data/src/ruby/ext/grpc/rb_server_credentials.h +4 -0
- data/src/ruby/ext/grpc/rb_xds_channel_credentials.c +215 -0
- data/src/ruby/ext/grpc/rb_xds_channel_credentials.h +35 -0
- data/src/ruby/ext/grpc/rb_xds_server_credentials.c +169 -0
- data/src/ruby/ext/grpc/rb_xds_server_credentials.h +35 -0
- data/src/ruby/lib/grpc/errors.rb +103 -42
- data/src/ruby/lib/grpc/generic/active_call.rb +2 -3
- data/src/ruby/lib/grpc/generic/client_stub.rb +5 -3
- data/src/ruby/lib/grpc/generic/interceptors.rb +5 -5
- data/src/ruby/lib/grpc/generic/rpc_server.rb +9 -10
- data/src/ruby/lib/grpc/generic/service.rb +5 -4
- data/src/ruby/lib/grpc/structs.rb +1 -1
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/generate_proto_ruby.sh +5 -3
- data/src/ruby/pb/grpc/health/v1/health_services_pb.rb +2 -2
- data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +51 -0
- data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +61 -11
- data/src/ruby/spec/call_spec.rb +1 -1
- data/src/ruby/spec/channel_credentials_spec.rb +42 -0
- data/src/ruby/spec/channel_spec.rb +17 -6
- data/src/ruby/spec/client_auth_spec.rb +27 -1
- data/src/ruby/spec/debug_message_spec.rb +134 -0
- data/src/ruby/spec/errors_spec.rb +1 -1
- data/src/ruby/spec/generic/active_call_spec.rb +21 -10
- data/src/ruby/spec/generic/client_stub_spec.rb +4 -4
- data/src/ruby/spec/generic/rpc_server_spec.rb +1 -1
- data/src/ruby/spec/generic/service_spec.rb +2 -0
- data/src/ruby/spec/pb/codegen/grpc/testing/package_options_import2.proto +23 -0
- data/src/ruby/spec/pb/codegen/grpc/testing/package_options_ruby_style.proto +7 -0
- data/src/ruby/spec/pb/codegen/grpc/testing/same_package_service_name.proto +27 -0
- data/src/ruby/spec/pb/codegen/grpc/testing/same_ruby_package_service_name.proto +29 -0
- data/src/ruby/spec/pb/codegen/package_option_spec.rb +29 -7
- data/src/ruby/spec/server_credentials_spec.rb +25 -0
- data/src/ruby/spec/server_spec.rb +22 -0
- data/src/ruby/spec/support/services.rb +10 -4
- data/src/ruby/spec/testdata/ca.pem +18 -13
- data/src/ruby/spec/testdata/client.key +26 -14
- data/src/ruby/spec/testdata/client.pem +18 -12
- data/src/ruby/spec/testdata/server1.key +26 -14
- data/src/ruby/spec/testdata/server1.pem +20 -14
- data/src/ruby/spec/user_agent_spec.rb +74 -0
- data/third_party/abseil-cpp/absl/algorithm/container.h +1764 -0
- data/third_party/abseil-cpp/absl/base/attributes.h +99 -38
- data/third_party/abseil-cpp/absl/base/call_once.h +1 -1
- data/third_party/abseil-cpp/absl/base/casts.h +9 -6
- data/third_party/abseil-cpp/absl/base/config.h +60 -17
- data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +428 -335
- data/third_party/abseil-cpp/absl/base/internal/bits.h +17 -16
- data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +166 -0
- data/third_party/abseil-cpp/absl/base/internal/dynamic_annotations.h +398 -0
- data/third_party/abseil-cpp/absl/base/internal/exponential_biased.cc +93 -0
- data/third_party/abseil-cpp/absl/base/internal/exponential_biased.h +130 -0
- data/third_party/abseil-cpp/absl/base/internal/invoke.h +4 -4
- data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +620 -0
- data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.h +126 -0
- data/third_party/abseil-cpp/absl/base/internal/low_level_scheduling.h +29 -1
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +2 -2
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +7 -5
- data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +25 -38
- data/third_party/abseil-cpp/absl/base/internal/spinlock.h +19 -25
- data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +8 -0
- data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +28 -5
- data/third_party/abseil-cpp/absl/base/internal/sysinfo.h +8 -0
- data/third_party/abseil-cpp/absl/base/internal/tsan_mutex_interface.h +3 -1
- data/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +2 -2
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +3 -3
- data/third_party/abseil-cpp/absl/base/macros.h +36 -109
- data/third_party/abseil-cpp/absl/base/optimization.h +61 -1
- data/third_party/abseil-cpp/absl/base/options.h +31 -4
- data/third_party/abseil-cpp/absl/base/policy_checks.h +1 -1
- data/third_party/abseil-cpp/absl/base/thread_annotations.h +94 -39
- data/third_party/abseil-cpp/absl/container/fixed_array.h +532 -0
- data/third_party/abseil-cpp/absl/container/flat_hash_map.h +606 -0
- data/third_party/abseil-cpp/absl/container/inlined_vector.h +33 -36
- data/third_party/abseil-cpp/absl/container/internal/common.h +206 -0
- data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +33 -8
- data/third_party/abseil-cpp/absl/container/internal/container_memory.h +460 -0
- data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +161 -0
- data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +208 -0
- data/third_party/abseil-cpp/absl/container/internal/hashtable_debug_hooks.h +85 -0
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +270 -0
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +321 -0
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler_force_weak_definition.cc +30 -0
- data/third_party/abseil-cpp/absl/container/internal/have_sse.h +50 -0
- data/third_party/abseil-cpp/absl/container/internal/layout.h +743 -0
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +197 -0
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +48 -0
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +1903 -0
- data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc +139 -0
- data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.h +32 -0
- data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +1945 -0
- data/third_party/abseil-cpp/absl/debugging/internal/demangle.h +71 -0
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +382 -0
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +134 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +196 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +134 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +89 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +108 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +248 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_unimplemented-inl.inc +24 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_win32-inl.inc +93 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +346 -0
- data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +149 -0
- data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +173 -0
- data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.h +158 -0
- data/third_party/abseil-cpp/absl/debugging/stacktrace.cc +140 -0
- data/third_party/abseil-cpp/absl/debugging/stacktrace.h +231 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize.cc +36 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize.h +99 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize_darwin.inc +101 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +1560 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize_unimplemented.inc +40 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize_win32.inc +81 -0
- data/third_party/abseil-cpp/absl/functional/bind_front.h +184 -0
- data/third_party/abseil-cpp/absl/functional/function_ref.h +139 -0
- data/third_party/abseil-cpp/absl/functional/internal/front_binder.h +95 -0
- data/third_party/abseil-cpp/absl/functional/internal/function_ref.h +106 -0
- data/third_party/abseil-cpp/absl/hash/hash.h +325 -0
- data/third_party/abseil-cpp/absl/hash/internal/city.cc +346 -0
- data/third_party/abseil-cpp/absl/hash/internal/city.h +96 -0
- data/third_party/abseil-cpp/absl/hash/internal/hash.cc +55 -0
- data/third_party/abseil-cpp/absl/hash/internal/hash.h +996 -0
- data/third_party/abseil-cpp/absl/memory/memory.h +4 -0
- data/third_party/abseil-cpp/absl/meta/type_traits.h +2 -8
- data/third_party/abseil-cpp/absl/numeric/int128.cc +13 -27
- data/third_party/abseil-cpp/absl/numeric/int128.h +16 -15
- data/third_party/abseil-cpp/absl/status/internal/status_internal.h +51 -0
- data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +399 -0
- data/third_party/abseil-cpp/absl/status/status.cc +445 -0
- data/third_party/abseil-cpp/absl/status/status.h +817 -0
- data/third_party/abseil-cpp/absl/status/status_payload_printer.cc +38 -0
- data/third_party/abseil-cpp/absl/status/status_payload_printer.h +51 -0
- data/third_party/abseil-cpp/absl/status/statusor.cc +71 -0
- data/third_party/abseil-cpp/absl/status/statusor.h +760 -0
- data/third_party/abseil-cpp/absl/strings/charconv.cc +2 -2
- data/third_party/abseil-cpp/absl/strings/cord.cc +1998 -0
- data/third_party/abseil-cpp/absl/strings/cord.h +1276 -0
- data/third_party/abseil-cpp/absl/strings/escaping.cc +9 -9
- data/third_party/abseil-cpp/absl/strings/internal/char_map.h +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.cc +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.h +2 -2
- data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +2 -2
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +173 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +222 -136
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +136 -64
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +14 -21
- data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +7 -14
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +31 -7
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +147 -135
- data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +999 -87
- data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.h +3 -3
- data/third_party/abseil-cpp/absl/strings/internal/str_format/output.h +4 -12
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +8 -6
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +13 -11
- data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +2 -2
- data/third_party/abseil-cpp/absl/strings/str_cat.cc +4 -4
- data/third_party/abseil-cpp/absl/strings/str_cat.h +1 -1
- data/third_party/abseil-cpp/absl/strings/str_format.h +289 -13
- data/third_party/abseil-cpp/absl/strings/str_split.cc +2 -2
- data/third_party/abseil-cpp/absl/strings/str_split.h +1 -0
- data/third_party/abseil-cpp/absl/strings/string_view.h +26 -19
- data/third_party/abseil-cpp/absl/strings/substitute.cc +5 -5
- data/third_party/abseil-cpp/absl/strings/substitute.h +32 -29
- data/third_party/abseil-cpp/absl/synchronization/barrier.cc +52 -0
- data/third_party/abseil-cpp/absl/synchronization/barrier.h +79 -0
- data/third_party/abseil-cpp/absl/synchronization/blocking_counter.cc +57 -0
- data/third_party/abseil-cpp/absl/synchronization/blocking_counter.h +99 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +140 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.h +60 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +698 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.h +141 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +155 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/mutex_nonprod.inc +249 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +106 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +115 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +492 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +159 -0
- data/third_party/abseil-cpp/absl/synchronization/mutex.cc +2739 -0
- data/third_party/abseil-cpp/absl/synchronization/mutex.h +1065 -0
- data/third_party/abseil-cpp/absl/synchronization/notification.cc +78 -0
- data/third_party/abseil-cpp/absl/synchronization/notification.h +123 -0
- data/third_party/abseil-cpp/absl/time/civil_time.cc +175 -0
- data/third_party/abseil-cpp/absl/time/civil_time.h +538 -0
- data/third_party/abseil-cpp/absl/time/clock.cc +569 -0
- data/third_party/abseil-cpp/absl/time/clock.h +74 -0
- data/third_party/abseil-cpp/absl/time/duration.cc +953 -0
- data/third_party/abseil-cpp/absl/time/format.cc +160 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time.h +332 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +632 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +386 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/zone_info_source.h +102 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/civil_time_detail.cc +94 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.cc +140 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.h +52 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +1029 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.cc +45 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.h +76 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.cc +113 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.h +93 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +965 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.h +137 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +309 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.h +55 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +187 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.cc +159 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.h +132 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +122 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +116 -0
- data/third_party/abseil-cpp/absl/time/internal/get_current_time_chrono.inc +31 -0
- data/third_party/abseil-cpp/absl/time/internal/get_current_time_posix.inc +24 -0
- data/third_party/abseil-cpp/absl/time/time.cc +499 -0
- data/third_party/abseil-cpp/absl/time/time.h +1583 -0
- data/third_party/abseil-cpp/absl/types/bad_variant_access.cc +64 -0
- data/third_party/abseil-cpp/absl/types/bad_variant_access.h +82 -0
- data/third_party/abseil-cpp/absl/types/internal/variant.h +1646 -0
- data/third_party/abseil-cpp/absl/types/optional.h +9 -9
- data/third_party/abseil-cpp/absl/types/span.h +49 -36
- data/third_party/abseil-cpp/absl/types/variant.h +861 -0
- data/third_party/abseil-cpp/absl/utility/utility.h +2 -2
- data/third_party/address_sorting/include/address_sorting/address_sorting.h +2 -0
- data/third_party/boringssl-with-bazel/err_data.c +759 -707
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +6 -6
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_enum.c +5 -5
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.c +6 -6
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +6 -13
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_octet.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +5 -3
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +15 -20
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_locl.h +30 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_enum.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_string.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +28 -79
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +39 -85
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +5 -16
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.c +10 -61
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/bio/socket_helper.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +158 -0
- data/third_party/boringssl-with-bazel/src/crypto/bn_extra/bn_asn1.c +3 -10
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.c +8 -9
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +60 -45
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/derive_key.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_chacha20poly1305.c +6 -81
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +87 -0
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/cpu-aarch64-win.c +41 -0
- data/third_party/boringssl-with-bazel/src/crypto/cpu-arm-linux.c +18 -7
- data/third_party/boringssl-with-bazel/src/crypto/cpu-arm.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/cpu-intel.c +13 -4
- data/third_party/boringssl-with-bazel/src/crypto/crypto.c +11 -0
- data/third_party/boringssl-with-bazel/src/{third_party/fiat → crypto/curve25519}/curve25519.c +18 -26
- data/third_party/boringssl-with-bazel/src/{third_party/fiat → crypto/curve25519}/curve25519_tables.h +13 -21
- data/third_party/boringssl-with-bazel/src/{third_party/fiat → crypto/curve25519}/internal.h +14 -22
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/spake25519.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/{dh → dh_extra}/dh_asn1.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/{dh → dh_extra}/params.c +179 -0
- data/third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c +25 -0
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +19 -43
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa_asn1.c +55 -4
- data/third_party/boringssl-with-bazel/src/crypto/dsa/internal.h +34 -0
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_asn1.c +2 -17
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +385 -0
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +56 -0
- data/third_party/boringssl-with-bazel/src/crypto/ecdh_extra/ecdh_extra.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/err/err.c +33 -32
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +159 -0
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_dsa_asn1.c +6 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes_nohw.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/mode_wrappers.c +17 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +5 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bn.c +13 -20
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +2 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/exponentiation.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +34 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery.c +8 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/mul.c +30 -154
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +21 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +173 -35
- data/third_party/boringssl-with-bazel/src/crypto/{dh → fipsmodule/dh}/check.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/{dh → fipsmodule/dh}/dh.c +149 -211
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digests.c +16 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +301 -117
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +22 -28
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_montgomery.c +96 -55
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/felem.c +25 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +434 -161
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/oct.c +63 -71
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +18 -25
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-x86_64-table.h +9481 -9485
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-x86_64.c +104 -122
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +740 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256_table.h +297 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/scalar.c +90 -11
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple.c +125 -148
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +189 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/util.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/wnaf.c +61 -18
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdh/ecdh.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +20 -5
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.c +137 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.h +49 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/getrandom_fillin.h +64 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +69 -5
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +162 -55
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +24 -121
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/blinding.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +73 -40
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +122 -55
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +217 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +44 -35
- data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +532 -0
- data/third_party/boringssl-with-bazel/src/crypto/hpke/internal.h +246 -0
- data/third_party/boringssl-with-bazel/src/crypto/mem.c +47 -16
- data/third_party/boringssl-with-bazel/src/crypto/obj/obj_dat.h +15 -1
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h +7 -0
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +36 -5
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305.c +10 -7
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_arm.c +13 -11
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_vec.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/deterministic.c +6 -10
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/passive.c +34 -0
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/rand_extra.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/windows.c +16 -0
- data/third_party/boringssl-with-bazel/src/crypto/stack/stack.c +7 -13
- data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/thread_win.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +318 -0
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +1399 -0
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +858 -0
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c +766 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/a_strex.c +7 -7
- data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +10 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +4 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c +5 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_crl.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509.c +0 -67
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +21 -37
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_ext.c +27 -21
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_obj.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_r2x.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +10 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +89 -11
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +7 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_txt.c +67 -67
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.c +4 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +62 -44
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +67 -25
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +13 -11
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +10 -10
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c +22 -17
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +38 -17
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.c +28 -40
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_pkey.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +0 -154
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_sig.c +20 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +68 -9
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/ext_dat.h +1 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_data.c +5 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akey.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +25 -24
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bitst.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +32 -28
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_genn.c +42 -22
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ia5.c +3 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_info.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +25 -36
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +126 -40
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +7 -7
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +6 -6
- data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +24 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/aes.h +16 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +54 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +662 -556
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +0 -167
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +19 -7
- data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +4 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/blake2.h +62 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +22 -7
- data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +25 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/cpu.h +22 -32
- data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +10 -5
- data/third_party/boringssl-with-bazel/src/include/openssl/des.h +6 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +82 -20
- data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +11 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +16 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +15 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +6 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/err.h +2 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +85 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/nid.h +5 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/opensslconf.h +3 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +202 -134
- data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +6 -17
- data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +31 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/sha.h +26 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/span.h +2 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +359 -120
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +33 -10
- data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +310 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +1140 -755
- data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +1 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +593 -440
- data/third_party/boringssl-with-bazel/src/ssl/bio_ssl.cc +18 -5
- data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +0 -4
- data/third_party/boringssl-with-bazel/src/ssl/d1_lib.cc +3 -3
- data/third_party/boringssl-with-bazel/src/ssl/dtls_method.cc +13 -4
- data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +181 -57
- data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +45 -26
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +43 -45
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +32 -10
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +160 -80
- data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +10 -10
- data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +2 -3
- data/third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc +21 -21
- data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +77 -8
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +7 -6
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +8 -9
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +131 -15
- data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +13 -2
- data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +50 -15
- data/third_party/boringssl-with-bazel/src/ssl/ssl_stat.cc +6 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_transcript.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +5 -5
- data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +53 -30
- data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +636 -100
- data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +2 -3
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +187 -68
- data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +71 -90
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +247 -73
- data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +63 -25
- data/third_party/boringssl-with-bazel/src/ssl/tls_record.cc +5 -3
- data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_32.h +245 -175
- data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64.h +135 -75
- data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_32.h +1593 -1672
- data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_64.h +512 -503
- data/third_party/re2/re2/bitmap256.h +117 -0
- data/third_party/re2/re2/bitstate.cc +385 -0
- data/third_party/re2/re2/compile.cc +1279 -0
- data/third_party/re2/re2/dfa.cc +2130 -0
- data/third_party/re2/re2/filtered_re2.cc +121 -0
- data/third_party/re2/re2/filtered_re2.h +109 -0
- data/third_party/re2/re2/mimics_pcre.cc +197 -0
- data/third_party/re2/re2/nfa.cc +713 -0
- data/third_party/re2/re2/onepass.cc +623 -0
- data/third_party/re2/re2/parse.cc +2464 -0
- data/third_party/re2/re2/perl_groups.cc +119 -0
- data/third_party/re2/re2/pod_array.h +55 -0
- data/third_party/re2/re2/prefilter.cc +710 -0
- data/third_party/re2/re2/prefilter.h +108 -0
- data/third_party/re2/re2/prefilter_tree.cc +407 -0
- data/third_party/re2/re2/prefilter_tree.h +139 -0
- data/third_party/re2/re2/prog.cc +988 -0
- data/third_party/re2/re2/prog.h +436 -0
- data/third_party/re2/re2/re2.cc +1362 -0
- data/third_party/re2/re2/re2.h +1002 -0
- data/third_party/re2/re2/regexp.cc +980 -0
- data/third_party/re2/re2/regexp.h +659 -0
- data/third_party/re2/re2/set.cc +154 -0
- data/third_party/re2/re2/set.h +80 -0
- data/third_party/re2/re2/simplify.cc +657 -0
- data/third_party/re2/re2/sparse_array.h +392 -0
- data/third_party/re2/re2/sparse_set.h +264 -0
- data/third_party/re2/re2/stringpiece.cc +65 -0
- data/third_party/re2/re2/stringpiece.h +210 -0
- data/third_party/re2/re2/tostring.cc +351 -0
- data/third_party/re2/re2/unicode_casefold.cc +582 -0
- data/third_party/re2/re2/unicode_casefold.h +78 -0
- data/third_party/re2/re2/unicode_groups.cc +6269 -0
- data/third_party/re2/re2/unicode_groups.h +67 -0
- data/third_party/re2/re2/walker-inl.h +246 -0
- data/third_party/re2/util/benchmark.h +156 -0
- data/third_party/re2/util/flags.h +26 -0
- data/third_party/re2/util/logging.h +109 -0
- data/third_party/re2/util/malloc_counter.h +19 -0
- data/third_party/re2/util/mix.h +41 -0
- data/third_party/re2/util/mutex.h +148 -0
- data/third_party/re2/util/pcre.cc +1025 -0
- data/third_party/re2/util/pcre.h +681 -0
- data/third_party/re2/util/rune.cc +260 -0
- data/third_party/re2/util/strutil.cc +149 -0
- data/third_party/re2/util/strutil.h +21 -0
- data/third_party/re2/util/test.h +50 -0
- data/third_party/re2/util/utf.h +44 -0
- data/third_party/re2/util/util.h +42 -0
- data/third_party/upb/third_party/wyhash/wyhash.h +145 -0
- data/third_party/upb/upb/decode.c +604 -511
- data/third_party/upb/upb/decode.h +20 -1
- data/third_party/upb/upb/decode.int.h +163 -0
- data/third_party/upb/upb/decode_fast.c +1040 -0
- data/third_party/upb/upb/decode_fast.h +126 -0
- data/third_party/upb/upb/def.c +2178 -0
- data/third_party/upb/upb/def.h +315 -0
- data/third_party/upb/upb/def.hpp +439 -0
- data/third_party/upb/upb/encode.c +311 -211
- data/third_party/upb/upb/encode.h +27 -2
- data/third_party/upb/upb/msg.c +215 -70
- data/third_party/upb/upb/msg.h +558 -14
- data/third_party/upb/upb/port_def.inc +105 -63
- data/third_party/upb/upb/port_undef.inc +10 -7
- data/third_party/upb/upb/reflection.c +408 -0
- data/third_party/upb/upb/reflection.h +168 -0
- data/third_party/upb/upb/table.c +73 -269
- data/third_party/upb/upb/table.int.h +25 -57
- data/third_party/upb/upb/text_encode.c +421 -0
- data/third_party/upb/upb/text_encode.h +38 -0
- data/third_party/upb/upb/upb.c +138 -135
- data/third_party/upb/upb/upb.h +119 -146
- data/third_party/upb/upb/upb.hpp +88 -0
- data/third_party/upb/upb/upb.int.h +29 -0
- data/third_party/xxhash/xxhash.h +5443 -0
- metadata +686 -160
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.cc +0 -1754
- data/src/core/ext/filters/client_channel/parse_address.cc +0 -237
- data/src/core/ext/filters/client_channel/parse_address.h +0 -53
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.cc +0 -484
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc +0 -65
- data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +0 -359
- data/src/core/ext/filters/client_channel/resolving_lb_policy.h +0 -122
- data/src/core/ext/filters/client_channel/xds/xds_api.cc +0 -1779
- data/src/core/ext/filters/client_channel/xds/xds_api.h +0 -280
- data/src/core/ext/filters/client_channel/xds/xds_bootstrap.cc +0 -347
- data/src/core/ext/filters/client_channel/xds/xds_bootstrap.h +0 -87
- data/src/core/ext/filters/client_channel/xds/xds_channel.h +0 -46
- data/src/core/ext/filters/client_channel/xds/xds_channel_secure.cc +0 -104
- data/src/core/ext/filters/client_channel/xds/xds_client.h +0 -274
- data/src/core/ext/filters/client_channel/xds/xds_client_stats.cc +0 -116
- data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.c +0 -246
- data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.h +0 -905
- data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.h +0 -53
- data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.c +0 -390
- data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.h +0 -1411
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.c +0 -73
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.h +0 -218
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/filter.upb.c +0 -34
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/filter.upb.h +0 -69
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/outlier_detection.upb.c +0 -54
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/outlier_detection.upb.h +0 -305
- data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.c +0 -111
- data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.h +0 -328
- data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.c +0 -292
- data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.h +0 -847
- data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.c +0 -95
- data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.h +0 -322
- data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.c +0 -196
- data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.h +0 -642
- data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.c +0 -168
- data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.h +0 -658
- data/src/core/ext/upb-generated/envoy/api/v2/core/http_uri.upb.c +0 -35
- data/src/core/ext/upb-generated/envoy/api/v2/core/http_uri.upb.h +0 -80
- data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.c +0 -132
- data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.h +0 -436
- data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.c +0 -128
- data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.h +0 -392
- data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.c +0 -30
- data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.h +0 -53
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.c +0 -91
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.h +0 -240
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.c +0 -17
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.h +0 -33
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.c +0 -88
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.h +0 -258
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.c +0 -111
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.h +0 -324
- data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.c +0 -30
- data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.h +0 -53
- data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.c +0 -104
- data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.h +0 -383
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.c +0 -17
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.h +0 -33
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.c +0 -144
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.h +0 -527
- data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.c +0 -42
- data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.h +0 -112
- data/src/core/ext/upb-generated/envoy/api/v2/rds.upb.h +0 -53
- data/src/core/ext/upb-generated/envoy/api/v2/route.upb.c +0 -62
- data/src/core/ext/upb-generated/envoy/api/v2/route.upb.h +0 -199
- data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.c +0 -17
- data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.h +0 -33
- data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.c +0 -793
- data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.h +0 -2936
- data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.c +0 -58
- data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.h +0 -134
- data/src/core/ext/upb-generated/envoy/api/v2/srds.upb.h +0 -53
- data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.c +0 -227
- data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.h +0 -725
- data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.c +0 -296
- data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.h +0 -1072
- data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.c +0 -32
- data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.h +0 -65
- data/src/core/ext/upb-generated/envoy/service/discovery/v2/ads.upb.c +0 -23
- data/src/core/ext/upb-generated/envoy/service/discovery/v2/ads.upb.h +0 -50
- data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.c +0 -52
- data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.h +0 -130
- data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.c +0 -47
- data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.h +0 -108
- data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.c +0 -52
- data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.h +0 -133
- data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.c +0 -87
- data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.h +0 -258
- data/src/core/ext/upb-generated/envoy/type/percent.upb.c +0 -38
- data/src/core/ext/upb-generated/envoy/type/percent.upb.h +0 -87
- data/src/core/ext/upb-generated/envoy/type/range.upb.c +0 -49
- data/src/core/ext/upb-generated/envoy/type/range.upb.h +0 -112
- data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.c +0 -28
- data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.h +0 -62
- data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.c +0 -88
- data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.h +0 -249
- data/src/core/ext/upb-generated/gogoproto/gogo.upb.c +0 -17
- data/src/core/lib/gprpp/map.h +0 -59
- data/src/core/lib/gprpp/string_view.h +0 -60
- data/src/core/lib/iomgr/iomgr_posix.h +0 -26
- data/src/core/lib/security/transport/target_authority_table.cc +0 -75
- data/src/core/lib/security/transport/target_authority_table.h +0 -40
- data/src/core/lib/slice/slice_hash_table.h +0 -199
- data/src/core/lib/slice/slice_weak_hash_table.h +0 -102
- data/src/core/tsi/grpc_shadow_boringssl.h +0 -3311
- data/third_party/abseil-cpp/absl/base/dynamic_annotations.cc +0 -129
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pku.c +0 -110
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_sxnet.c +0 -274
- data/third_party/boringssl-with-bazel/src/third_party/fiat/p256.c +0 -1063
- data/third_party/upb/upb/generated_util.h +0 -105
- data/third_party/upb/upb/port.c +0 -26
@@ -0,0 +1,96 @@
|
|
1
|
+
//
|
2
|
+
// Copyright 2020 gRPC authors.
|
3
|
+
//
|
4
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
// you may not use this file except in compliance with the License.
|
6
|
+
// You may obtain a copy of the License at
|
7
|
+
//
|
8
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
//
|
10
|
+
// Unless required by applicable law or agreed to in writing, software
|
11
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
// See the License for the specific language governing permissions and
|
14
|
+
// limitations under the License.
|
15
|
+
//
|
16
|
+
|
17
|
+
#include <grpc/support/port_platform.h>
|
18
|
+
|
19
|
+
#include "src/core/ext/filters/client_channel/lb_policy/address_filtering.h"
|
20
|
+
|
21
|
+
#include "absl/strings/str_cat.h"
|
22
|
+
#include "absl/strings/str_join.h"
|
23
|
+
|
24
|
+
#include "src/core/lib/channel/channel_args.h"
|
25
|
+
|
26
|
+
#define GRPC_ARG_HIERARCHICAL_PATH "grpc.internal.address.hierarchical_path"
|
27
|
+
|
28
|
+
namespace grpc_core {
|
29
|
+
|
30
|
+
const char* kHierarchicalPathAttributeKey = "hierarchical_path";
|
31
|
+
|
32
|
+
namespace {
|
33
|
+
|
34
|
+
class HierarchicalPathAttribute : public ServerAddress::AttributeInterface {
|
35
|
+
public:
|
36
|
+
explicit HierarchicalPathAttribute(std::vector<std::string> path)
|
37
|
+
: path_(std::move(path)) {}
|
38
|
+
|
39
|
+
std::unique_ptr<AttributeInterface> Copy() const override {
|
40
|
+
return absl::make_unique<HierarchicalPathAttribute>(path_);
|
41
|
+
}
|
42
|
+
|
43
|
+
int Cmp(const AttributeInterface* other) const override {
|
44
|
+
const std::vector<std::string>& other_path =
|
45
|
+
static_cast<const HierarchicalPathAttribute*>(other)->path_;
|
46
|
+
for (size_t i = 0; i < path_.size(); ++i) {
|
47
|
+
if (other_path.size() == i) return 1;
|
48
|
+
int r = path_[i].compare(other_path[i]);
|
49
|
+
if (r != 0) return r;
|
50
|
+
}
|
51
|
+
if (other_path.size() > path_.size()) return -1;
|
52
|
+
return 0;
|
53
|
+
}
|
54
|
+
|
55
|
+
std::string ToString() const override {
|
56
|
+
return absl::StrCat("[", absl::StrJoin(path_, ", "), "]");
|
57
|
+
}
|
58
|
+
|
59
|
+
const std::vector<std::string>& path() const { return path_; }
|
60
|
+
|
61
|
+
private:
|
62
|
+
std::vector<std::string> path_;
|
63
|
+
};
|
64
|
+
|
65
|
+
} // namespace
|
66
|
+
|
67
|
+
std::unique_ptr<ServerAddress::AttributeInterface>
|
68
|
+
MakeHierarchicalPathAttribute(std::vector<std::string> path) {
|
69
|
+
return absl::make_unique<HierarchicalPathAttribute>(std::move(path));
|
70
|
+
}
|
71
|
+
|
72
|
+
HierarchicalAddressMap MakeHierarchicalAddressMap(
|
73
|
+
const ServerAddressList& addresses) {
|
74
|
+
HierarchicalAddressMap result;
|
75
|
+
for (const ServerAddress& address : addresses) {
|
76
|
+
const HierarchicalPathAttribute* path_attribute =
|
77
|
+
static_cast<const HierarchicalPathAttribute*>(
|
78
|
+
address.GetAttribute(kHierarchicalPathAttributeKey));
|
79
|
+
if (path_attribute == nullptr) continue;
|
80
|
+
const std::vector<std::string>& path = path_attribute->path();
|
81
|
+
auto it = path.begin();
|
82
|
+
ServerAddressList& target_list = result[*it];
|
83
|
+
std::unique_ptr<HierarchicalPathAttribute> new_attribute;
|
84
|
+
++it;
|
85
|
+
if (it != path.end()) {
|
86
|
+
std::vector<std::string> remaining_path(it, path.end());
|
87
|
+
new_attribute = absl::make_unique<HierarchicalPathAttribute>(
|
88
|
+
std::move(remaining_path));
|
89
|
+
}
|
90
|
+
target_list.emplace_back(address.WithAttribute(
|
91
|
+
kHierarchicalPathAttributeKey, std::move(new_attribute)));
|
92
|
+
}
|
93
|
+
return result;
|
94
|
+
}
|
95
|
+
|
96
|
+
} // namespace grpc_core
|
@@ -0,0 +1,101 @@
|
|
1
|
+
//
|
2
|
+
// Copyright 2020 gRPC authors.
|
3
|
+
//
|
4
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
// you may not use this file except in compliance with the License.
|
6
|
+
// You may obtain a copy of the License at
|
7
|
+
//
|
8
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
//
|
10
|
+
// Unless required by applicable law or agreed to in writing, software
|
11
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
// See the License for the specific language governing permissions and
|
14
|
+
// limitations under the License.
|
15
|
+
//
|
16
|
+
|
17
|
+
#ifndef GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_ADDRESS_FILTERING_H
|
18
|
+
#define GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_ADDRESS_FILTERING_H
|
19
|
+
|
20
|
+
#include <grpc/support/port_platform.h>
|
21
|
+
|
22
|
+
#include <map>
|
23
|
+
#include <string>
|
24
|
+
#include <vector>
|
25
|
+
|
26
|
+
#include "src/core/ext/filters/client_channel/server_address.h"
|
27
|
+
|
28
|
+
// The resolver returns a flat list of addresses. When a hierarchy of
|
29
|
+
// LB policies is in use, each leaf of the hierarchy will need a
|
30
|
+
// different subset of those addresses. This library provides a
|
31
|
+
// mechanism for determining which address is passed to which leaf
|
32
|
+
// policy.
|
33
|
+
//
|
34
|
+
// Each address will have an associated path that indicates which child
|
35
|
+
// it should be sent to at each level of the hierarchy to wind up at the
|
36
|
+
// right leaf policy. Each LB policy will look at the first element of
|
37
|
+
// the path of each address to determine which child to send the address
|
38
|
+
// to. It will then remove that first element when passing the address
|
39
|
+
// down to its child.
|
40
|
+
//
|
41
|
+
// For example, consider the following LB policy hierarchy:
|
42
|
+
//
|
43
|
+
// - priority
|
44
|
+
// - child0 (weighted_target)
|
45
|
+
// - localityA (round_robin)
|
46
|
+
// - localityB (round_robin)
|
47
|
+
// - child1 (weighted_target)
|
48
|
+
// - localityC (round_robin)
|
49
|
+
// - localityD (round_robin)
|
50
|
+
//
|
51
|
+
// Now consider the following addresses:
|
52
|
+
// - 10.0.0.1:80 path=["child0", "localityA"]
|
53
|
+
// - 10.0.0.2:80 path=["child0", "localityB"]
|
54
|
+
// - 10.0.0.3:80 path=["child1", "localityC"]
|
55
|
+
// - 10.0.0.4:80 path=["child1", "localityD"]
|
56
|
+
//
|
57
|
+
// The priority policy will split this up into two lists, one for each
|
58
|
+
// of its children:
|
59
|
+
// - child0:
|
60
|
+
// - 10.0.0.1:80 path=["localityA"]
|
61
|
+
// - 10.0.0.2:80 path=["localityB"]
|
62
|
+
// - child1:
|
63
|
+
// - 10.0.0.3:80 path=["localityC"]
|
64
|
+
// - 10.0.0.4:80 path=["localityD"]
|
65
|
+
//
|
66
|
+
// The weighted_target policy for child0 will split its list up into two
|
67
|
+
// lists, one for each of its children:
|
68
|
+
// - localityA:
|
69
|
+
// - 10.0.0.1:80 path=[]
|
70
|
+
// - localityB:
|
71
|
+
// - 10.0.0.2:80 path=[]
|
72
|
+
//
|
73
|
+
// Similarly, the weighted_target policy for child1 will split its list
|
74
|
+
// up into two lists, one for each of its children:
|
75
|
+
// - localityC:
|
76
|
+
// - 10.0.0.3:80 path=[]
|
77
|
+
// - localityD:
|
78
|
+
// - 10.0.0.4:80 path=[]
|
79
|
+
|
80
|
+
namespace grpc_core {
|
81
|
+
|
82
|
+
// The attribute key to be used for hierarchical paths in ServerAddress.
|
83
|
+
extern const char* kHierarchicalPathAttributeKey;
|
84
|
+
|
85
|
+
// Constructs an address attribute containing the hierarchical path
|
86
|
+
// to be associated with the address.
|
87
|
+
std::unique_ptr<ServerAddress::AttributeInterface>
|
88
|
+
MakeHierarchicalPathAttribute(std::vector<std::string> path);
|
89
|
+
|
90
|
+
// A map from the next path element to the addresses that fall under
|
91
|
+
// that path element.
|
92
|
+
using HierarchicalAddressMap = std::map<std::string, ServerAddressList>;
|
93
|
+
|
94
|
+
// Splits up the addresses into a separate list for each child.
|
95
|
+
HierarchicalAddressMap MakeHierarchicalAddressMap(
|
96
|
+
const ServerAddressList& addresses);
|
97
|
+
|
98
|
+
} // namespace grpc_core
|
99
|
+
|
100
|
+
#endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_ADDRESS_FILTERING_H \
|
101
|
+
*/
|
@@ -36,28 +36,31 @@ class ChildPolicyHandler::Helper
|
|
36
36
|
explicit Helper(RefCountedPtr<ChildPolicyHandler> parent)
|
37
37
|
: parent_(std::move(parent)) {}
|
38
38
|
|
39
|
-
~Helper() { parent_.reset(DEBUG_LOCATION, "Helper"); }
|
39
|
+
~Helper() override { parent_.reset(DEBUG_LOCATION, "Helper"); }
|
40
40
|
|
41
41
|
RefCountedPtr<SubchannelInterface> CreateSubchannel(
|
42
|
-
const grpc_channel_args& args) override {
|
42
|
+
ServerAddress address, const grpc_channel_args& args) override {
|
43
43
|
if (parent_->shutting_down_) return nullptr;
|
44
44
|
if (!CalledByCurrentChild() && !CalledByPendingChild()) return nullptr;
|
45
|
-
return parent_->channel_control_helper()->CreateSubchannel(
|
45
|
+
return parent_->channel_control_helper()->CreateSubchannel(
|
46
|
+
std::move(address), args);
|
46
47
|
}
|
47
48
|
|
48
|
-
void UpdateState(grpc_connectivity_state state,
|
49
|
+
void UpdateState(grpc_connectivity_state state, const absl::Status& status,
|
49
50
|
std::unique_ptr<SubchannelPicker> picker) override {
|
50
51
|
if (parent_->shutting_down_) return;
|
51
52
|
// If this request is from the pending child policy, ignore it until
|
52
|
-
// it reports
|
53
|
+
// it reports something other than CONNECTING, at which point we swap it
|
54
|
+
// into place.
|
53
55
|
if (CalledByPendingChild()) {
|
54
56
|
if (GRPC_TRACE_FLAG_ENABLED(*(parent_->tracer_))) {
|
55
57
|
gpr_log(GPR_INFO,
|
56
58
|
"[child_policy_handler %p] helper %p: pending child policy %p "
|
57
|
-
"reports state=%s",
|
58
|
-
parent_.get(), this, child_, ConnectivityStateName(state)
|
59
|
+
"reports state=%s (%s)",
|
60
|
+
parent_.get(), this, child_, ConnectivityStateName(state),
|
61
|
+
status.ToString().c_str());
|
59
62
|
}
|
60
|
-
if (state
|
63
|
+
if (state == GRPC_CHANNEL_CONNECTING) return;
|
61
64
|
grpc_pollset_set_del_pollset_set(
|
62
65
|
parent_->child_policy_->interested_parties(),
|
63
66
|
parent_->interested_parties());
|
@@ -66,7 +69,8 @@ class ChildPolicyHandler::Helper
|
|
66
69
|
// This request is from an outdated child, so ignore it.
|
67
70
|
return;
|
68
71
|
}
|
69
|
-
parent_->channel_control_helper()->UpdateState(state,
|
72
|
+
parent_->channel_control_helper()->UpdateState(state, status,
|
73
|
+
std::move(picker));
|
70
74
|
}
|
71
75
|
|
72
76
|
void RequestReresolution() override {
|
@@ -86,7 +90,8 @@ class ChildPolicyHandler::Helper
|
|
86
90
|
parent_->channel_control_helper()->RequestReresolution();
|
87
91
|
}
|
88
92
|
|
89
|
-
void AddTraceEvent(TraceSeverity severity,
|
93
|
+
void AddTraceEvent(TraceSeverity severity,
|
94
|
+
absl::string_view message) override {
|
90
95
|
if (parent_->shutting_down_) return;
|
91
96
|
if (!CalledByPendingChild() && !CalledByCurrentChild()) return;
|
92
97
|
parent_->channel_control_helper()->AddTraceEvent(severity, message);
|
@@ -201,6 +206,10 @@ void ChildPolicyHandler::UpdateLocked(UpdateArgs args) {
|
|
201
206
|
// Cases 1, 2b, and 3b: create a new child policy.
|
202
207
|
// If child_policy_ is null, we set it (case 1), else we set
|
203
208
|
// pending_child_policy_ (cases 2b and 3b).
|
209
|
+
// TODO(roth): In cases 2b and 3b, we should start a timer here, so
|
210
|
+
// that there's an upper bound on the amount of time it takes us to
|
211
|
+
// switch to the new policy, even if the new policy stays in
|
212
|
+
// CONNECTING for a very long period of time.
|
204
213
|
if (GRPC_TRACE_FLAG_ENABLED(*tracer_)) {
|
205
214
|
gpr_log(GPR_INFO,
|
206
215
|
"[child_policy_handler %p] creating new %schild policy %s", this,
|
@@ -251,7 +260,7 @@ OrphanablePtr<LoadBalancingPolicy> ChildPolicyHandler::CreateChildPolicy(
|
|
251
260
|
const char* child_policy_name, const grpc_channel_args& args) {
|
252
261
|
Helper* helper = new Helper(Ref(DEBUG_LOCATION, "Helper"));
|
253
262
|
LoadBalancingPolicy::Args lb_policy_args;
|
254
|
-
lb_policy_args.
|
263
|
+
lb_policy_args.work_serializer = work_serializer();
|
255
264
|
lb_policy_args.channel_control_helper =
|
256
265
|
std::unique_ptr<ChannelControlHelper>(helper);
|
257
266
|
lb_policy_args.args = &args;
|
@@ -36,7 +36,7 @@ class ChildPolicyHandler : public LoadBalancingPolicy {
|
|
36
36
|
ChildPolicyHandler(Args args, TraceFlag* tracer)
|
37
37
|
: LoadBalancingPolicy(std::move(args)), tracer_(tracer) {}
|
38
38
|
|
39
|
-
|
39
|
+
const char* name() const override { return "child_policy_handler"; }
|
40
40
|
|
41
41
|
void UpdateLocked(UpdateArgs args) override;
|
42
42
|
void ExitIdleLocked() override;
|
@@ -64,6 +64,14 @@
|
|
64
64
|
#include <limits.h>
|
65
65
|
#include <string.h>
|
66
66
|
|
67
|
+
#include "absl/container/inlined_vector.h"
|
68
|
+
#include "absl/strings/str_cat.h"
|
69
|
+
#include "absl/strings/str_format.h"
|
70
|
+
#include "absl/strings/str_join.h"
|
71
|
+
#include "absl/strings/strip.h"
|
72
|
+
|
73
|
+
#include "upb/upb.hpp"
|
74
|
+
|
67
75
|
#include <grpc/byte_buffer_reader.h>
|
68
76
|
#include <grpc/grpc.h>
|
69
77
|
#include <grpc/support/alloc.h>
|
@@ -74,12 +82,12 @@
|
|
74
82
|
#include "src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h"
|
75
83
|
#include "src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h"
|
76
84
|
#include "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h"
|
85
|
+
#include "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h"
|
77
86
|
#include "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h"
|
78
87
|
#include "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h"
|
79
88
|
#include "src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h"
|
80
89
|
#include "src/core/ext/filters/client_channel/lb_policy_factory.h"
|
81
90
|
#include "src/core/ext/filters/client_channel/lb_policy_registry.h"
|
82
|
-
#include "src/core/ext/filters/client_channel/parse_address.h"
|
83
91
|
#include "src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h"
|
84
92
|
#include "src/core/ext/filters/client_channel/server_address.h"
|
85
93
|
#include "src/core/lib/backoff/backoff.h"
|
@@ -90,11 +98,10 @@
|
|
90
98
|
#include "src/core/lib/gprpp/memory.h"
|
91
99
|
#include "src/core/lib/gprpp/orphanable.h"
|
92
100
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
93
|
-
#include "src/core/lib/iomgr/
|
101
|
+
#include "src/core/lib/iomgr/parse_address.h"
|
94
102
|
#include "src/core/lib/iomgr/sockaddr.h"
|
95
103
|
#include "src/core/lib/iomgr/sockaddr_utils.h"
|
96
104
|
#include "src/core/lib/iomgr/timer.h"
|
97
|
-
#include "src/core/lib/slice/slice_hash_table.h"
|
98
105
|
#include "src/core/lib/slice/slice_internal.h"
|
99
106
|
#include "src/core/lib/slice/slice_string_helpers.h"
|
100
107
|
#include "src/core/lib/surface/call.h"
|
@@ -118,22 +125,29 @@ TraceFlag grpc_lb_glb_trace(false, "glb");
|
|
118
125
|
const char kGrpcLbClientStatsMetadataKey[] = "grpclb_client_stats";
|
119
126
|
const char kGrpcLbLbTokenMetadataKey[] = "lb-token";
|
120
127
|
|
128
|
+
const char kGrpcLbAddressAttributeKey[] = "grpclb";
|
129
|
+
|
121
130
|
namespace {
|
122
131
|
|
123
132
|
constexpr char kGrpclb[] = "grpclb";
|
124
133
|
|
125
134
|
class GrpcLbConfig : public LoadBalancingPolicy::Config {
|
126
135
|
public:
|
127
|
-
|
128
|
-
|
136
|
+
GrpcLbConfig(RefCountedPtr<LoadBalancingPolicy::Config> child_policy,
|
137
|
+
std::string service_name)
|
138
|
+
: child_policy_(std::move(child_policy)),
|
139
|
+
service_name_(std::move(service_name)) {}
|
129
140
|
const char* name() const override { return kGrpclb; }
|
130
141
|
|
131
142
|
RefCountedPtr<LoadBalancingPolicy::Config> child_policy() const {
|
132
143
|
return child_policy_;
|
133
144
|
}
|
134
145
|
|
146
|
+
const std::string& service_name() const { return service_name_; }
|
147
|
+
|
135
148
|
private:
|
136
149
|
RefCountedPtr<LoadBalancingPolicy::Config> child_policy_;
|
150
|
+
std::string service_name_;
|
137
151
|
};
|
138
152
|
|
139
153
|
class GrpcLb : public LoadBalancingPolicy {
|
@@ -151,7 +165,7 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
151
165
|
public:
|
152
166
|
explicit BalancerCallState(
|
153
167
|
RefCountedPtr<LoadBalancingPolicy> parent_grpclb_policy);
|
154
|
-
~BalancerCallState();
|
168
|
+
~BalancerCallState() override;
|
155
169
|
|
156
170
|
// It's the caller's responsibility to ensure that Orphan() is called from
|
157
171
|
// inside the combiner.
|
@@ -178,11 +192,11 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
178
192
|
static void OnBalancerMessageReceived(void* arg, grpc_error* error);
|
179
193
|
static void OnBalancerStatusReceived(void* arg, grpc_error* error);
|
180
194
|
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
195
|
+
void MaybeSendClientLoadReportLocked(grpc_error* error);
|
196
|
+
void ClientLoadReportDoneLocked(grpc_error* error);
|
197
|
+
void OnInitialRequestSentLocked();
|
198
|
+
void OnBalancerMessageReceivedLocked();
|
199
|
+
void OnBalancerStatusReceivedLocked(grpc_error* error);
|
186
200
|
|
187
201
|
// The owning LB policy.
|
188
202
|
RefCountedPtr<LoadBalancingPolicy> grpclb_policy_;
|
@@ -222,6 +236,59 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
222
236
|
grpc_closure client_load_report_closure_;
|
223
237
|
};
|
224
238
|
|
239
|
+
class SubchannelWrapper : public DelegatingSubchannel {
|
240
|
+
public:
|
241
|
+
SubchannelWrapper(RefCountedPtr<SubchannelInterface> subchannel,
|
242
|
+
std::string lb_token,
|
243
|
+
RefCountedPtr<GrpcLbClientStats> client_stats)
|
244
|
+
: DelegatingSubchannel(std::move(subchannel)),
|
245
|
+
lb_token_(std::move(lb_token)),
|
246
|
+
client_stats_(std::move(client_stats)) {}
|
247
|
+
|
248
|
+
const std::string& lb_token() const { return lb_token_; }
|
249
|
+
GrpcLbClientStats* client_stats() const { return client_stats_.get(); }
|
250
|
+
|
251
|
+
private:
|
252
|
+
std::string lb_token_;
|
253
|
+
RefCountedPtr<GrpcLbClientStats> client_stats_;
|
254
|
+
};
|
255
|
+
|
256
|
+
class TokenAndClientStatsAttribute
|
257
|
+
: public ServerAddress::AttributeInterface {
|
258
|
+
public:
|
259
|
+
TokenAndClientStatsAttribute(std::string lb_token,
|
260
|
+
RefCountedPtr<GrpcLbClientStats> client_stats)
|
261
|
+
: lb_token_(std::move(lb_token)),
|
262
|
+
client_stats_(std::move(client_stats)) {}
|
263
|
+
|
264
|
+
std::unique_ptr<AttributeInterface> Copy() const override {
|
265
|
+
return absl::make_unique<TokenAndClientStatsAttribute>(lb_token_,
|
266
|
+
client_stats_);
|
267
|
+
}
|
268
|
+
|
269
|
+
int Cmp(const AttributeInterface* other_base) const override {
|
270
|
+
const TokenAndClientStatsAttribute* other =
|
271
|
+
static_cast<const TokenAndClientStatsAttribute*>(other_base);
|
272
|
+
int r = lb_token_.compare(other->lb_token_);
|
273
|
+
if (r != 0) return r;
|
274
|
+
return GPR_ICMP(client_stats_.get(), other->client_stats_.get());
|
275
|
+
}
|
276
|
+
|
277
|
+
std::string ToString() const override {
|
278
|
+
return absl::StrFormat("lb_token=\"%s\" client_stats=%p", lb_token_,
|
279
|
+
client_stats_.get());
|
280
|
+
}
|
281
|
+
|
282
|
+
const std::string& lb_token() const { return lb_token_; }
|
283
|
+
RefCountedPtr<GrpcLbClientStats> client_stats() const {
|
284
|
+
return client_stats_;
|
285
|
+
}
|
286
|
+
|
287
|
+
private:
|
288
|
+
std::string lb_token_;
|
289
|
+
RefCountedPtr<GrpcLbClientStats> client_stats_;
|
290
|
+
};
|
291
|
+
|
225
292
|
class Serverlist : public RefCounted<Serverlist> {
|
226
293
|
public:
|
227
294
|
// Takes ownership of serverlist.
|
@@ -233,7 +300,7 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
233
300
|
const std::vector<GrpcLbServer>& serverlist() const { return serverlist_; }
|
234
301
|
|
235
302
|
// Returns a text representation suitable for logging.
|
236
|
-
|
303
|
+
std::string AsText() const;
|
237
304
|
|
238
305
|
// Extracts all non-drop entries into a ServerAddressList.
|
239
306
|
ServerAddressList GetServerAddressList(
|
@@ -247,37 +314,32 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
247
314
|
// should not be dropped.
|
248
315
|
//
|
249
316
|
// Note: This is called from the picker, so it will be invoked in
|
250
|
-
// the channel's data plane
|
251
|
-
//
|
317
|
+
// the channel's data plane mutex, NOT the control plane
|
318
|
+
// work_serializer. It should not be accessed by any other part of the LB
|
252
319
|
// policy.
|
253
320
|
const char* ShouldDrop();
|
254
321
|
|
255
322
|
private:
|
256
323
|
std::vector<GrpcLbServer> serverlist_;
|
257
324
|
|
258
|
-
// Guarded by the channel's data plane
|
259
|
-
// plane
|
325
|
+
// Guarded by the channel's data plane mutex, NOT the control
|
326
|
+
// plane work_serializer. It should not be accessed by anything but the
|
260
327
|
// picker via the ShouldDrop() method.
|
261
328
|
size_t drop_index_ = 0;
|
262
329
|
};
|
263
330
|
|
264
331
|
class Picker : public SubchannelPicker {
|
265
332
|
public:
|
266
|
-
Picker(
|
333
|
+
Picker(RefCountedPtr<Serverlist> serverlist,
|
267
334
|
std::unique_ptr<SubchannelPicker> child_picker,
|
268
335
|
RefCountedPtr<GrpcLbClientStats> client_stats)
|
269
|
-
:
|
270
|
-
serverlist_(std::move(serverlist)),
|
336
|
+
: serverlist_(std::move(serverlist)),
|
271
337
|
child_picker_(std::move(child_picker)),
|
272
338
|
client_stats_(std::move(client_stats)) {}
|
273
339
|
|
274
340
|
PickResult Pick(PickArgs args) override;
|
275
341
|
|
276
342
|
private:
|
277
|
-
// Storing the address for logging, but not holding a ref.
|
278
|
-
// DO NOT DEFERENCE!
|
279
|
-
GrpcLb* parent_;
|
280
|
-
|
281
343
|
// Serverlist to be used for determining drops.
|
282
344
|
RefCountedPtr<Serverlist> serverlist_;
|
283
345
|
|
@@ -291,39 +353,71 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
291
353
|
: parent_(std::move(parent)) {}
|
292
354
|
|
293
355
|
RefCountedPtr<SubchannelInterface> CreateSubchannel(
|
294
|
-
const grpc_channel_args& args) override;
|
295
|
-
void UpdateState(grpc_connectivity_state state,
|
356
|
+
ServerAddress address, const grpc_channel_args& args) override;
|
357
|
+
void UpdateState(grpc_connectivity_state state, const absl::Status& status,
|
296
358
|
std::unique_ptr<SubchannelPicker> picker) override;
|
297
359
|
void RequestReresolution() override;
|
298
|
-
void AddTraceEvent(TraceSeverity severity,
|
360
|
+
void AddTraceEvent(TraceSeverity severity,
|
361
|
+
absl::string_view message) override;
|
299
362
|
|
300
363
|
private:
|
301
364
|
RefCountedPtr<GrpcLb> parent_;
|
302
365
|
};
|
303
366
|
|
304
|
-
|
367
|
+
class StateWatcher : public AsyncConnectivityStateWatcherInterface {
|
368
|
+
public:
|
369
|
+
explicit StateWatcher(RefCountedPtr<GrpcLb> parent)
|
370
|
+
: AsyncConnectivityStateWatcherInterface(parent->work_serializer()),
|
371
|
+
parent_(std::move(parent)) {}
|
372
|
+
|
373
|
+
~StateWatcher() override { parent_.reset(DEBUG_LOCATION, "StateWatcher"); }
|
374
|
+
|
375
|
+
private:
|
376
|
+
void OnConnectivityStateChange(grpc_connectivity_state new_state,
|
377
|
+
const absl::Status& status) override {
|
378
|
+
if (parent_->fallback_at_startup_checks_pending_ &&
|
379
|
+
new_state == GRPC_CHANNEL_TRANSIENT_FAILURE) {
|
380
|
+
// In TRANSIENT_FAILURE. Cancel the fallback timer and go into
|
381
|
+
// fallback mode immediately.
|
382
|
+
gpr_log(GPR_INFO,
|
383
|
+
"[grpclb %p] balancer channel in state:TRANSIENT_FAILURE (%s); "
|
384
|
+
"entering fallback mode",
|
385
|
+
parent_.get(), status.ToString().c_str());
|
386
|
+
parent_->fallback_at_startup_checks_pending_ = false;
|
387
|
+
grpc_timer_cancel(&parent_->lb_fallback_timer_);
|
388
|
+
parent_->fallback_mode_ = true;
|
389
|
+
parent_->CreateOrUpdateChildPolicyLocked();
|
390
|
+
// Cancel the watch, since we don't care about the channel state once we
|
391
|
+
// go into fallback mode.
|
392
|
+
parent_->CancelBalancerChannelConnectivityWatchLocked();
|
393
|
+
}
|
394
|
+
}
|
395
|
+
|
396
|
+
RefCountedPtr<GrpcLb> parent_;
|
397
|
+
};
|
398
|
+
|
399
|
+
~GrpcLb() override;
|
305
400
|
|
306
401
|
void ShutdownLocked() override;
|
307
402
|
|
308
403
|
// Helper functions used in UpdateLocked().
|
309
404
|
void ProcessAddressesAndChannelArgsLocked(const ServerAddressList& addresses,
|
310
405
|
const grpc_channel_args& args);
|
311
|
-
static
|
312
|
-
|
313
|
-
|
314
|
-
grpc_error* error);
|
406
|
+
static ServerAddressList AddNullLbTokenToAddresses(
|
407
|
+
const ServerAddressList& addresses);
|
408
|
+
|
315
409
|
void CancelBalancerChannelConnectivityWatchLocked();
|
316
410
|
|
317
411
|
// Methods for dealing with fallback state.
|
318
412
|
void MaybeEnterFallbackModeAfterStartup();
|
319
413
|
static void OnFallbackTimer(void* arg, grpc_error* error);
|
320
|
-
|
414
|
+
void OnFallbackTimerLocked(grpc_error* error);
|
321
415
|
|
322
416
|
// Methods for dealing with the balancer call.
|
323
417
|
void StartBalancerCallLocked();
|
324
418
|
void StartBalancerCallRetryTimerLocked();
|
325
419
|
static void OnBalancerCallRetryTimer(void* arg, grpc_error* error);
|
326
|
-
|
420
|
+
void OnBalancerCallRetryTimerLocked(grpc_error* error);
|
327
421
|
|
328
422
|
// Methods for dealing with the child policy.
|
329
423
|
grpc_channel_args* CreateChildPolicyArgsLocked(
|
@@ -333,7 +427,9 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
333
427
|
void CreateOrUpdateChildPolicyLocked();
|
334
428
|
|
335
429
|
// Who the client is trying to communicate with.
|
336
|
-
|
430
|
+
std::string server_name_;
|
431
|
+
// Configurations for the policy.
|
432
|
+
RefCountedPtr<GrpcLbConfig> config_;
|
337
433
|
|
338
434
|
// Current channel args from the resolver.
|
339
435
|
grpc_channel_args* args_ = nullptr;
|
@@ -343,8 +439,11 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
343
439
|
|
344
440
|
// The channel for communicating with the LB server.
|
345
441
|
grpc_channel* lb_channel_ = nullptr;
|
442
|
+
StateWatcher* watcher_ = nullptr;
|
346
443
|
// Response generator to inject address updates into lb_channel_.
|
347
444
|
RefCountedPtr<FakeResolverResponseGenerator> response_generator_;
|
445
|
+
// Parent channelz node.
|
446
|
+
RefCountedPtr<channelz::ChannelNode> parent_channelz_node_;
|
348
447
|
|
349
448
|
// The data associated with the current LB call. It holds a ref to this LB
|
350
449
|
// policy. It's initialized every time we query for backends. It's reset to
|
@@ -375,13 +474,9 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
375
474
|
bool fallback_at_startup_checks_pending_ = false;
|
376
475
|
grpc_timer lb_fallback_timer_;
|
377
476
|
grpc_closure lb_on_fallback_;
|
378
|
-
grpc_connectivity_state lb_channel_connectivity_ = GRPC_CHANNEL_IDLE;
|
379
|
-
grpc_closure lb_channel_on_connectivity_changed_;
|
380
477
|
|
381
478
|
// The child policy to use for the backends.
|
382
479
|
OrphanablePtr<LoadBalancingPolicy> child_policy_;
|
383
|
-
// The child policy config.
|
384
|
-
RefCountedPtr<LoadBalancingPolicy::Config> child_policy_config_;
|
385
480
|
// Child policy in state READY.
|
386
481
|
bool child_policy_ready_ = false;
|
387
482
|
};
|
@@ -397,7 +492,7 @@ bool GrpcLb::Serverlist::operator==(const Serverlist& other) const {
|
|
397
492
|
void ParseServer(const GrpcLbServer& server, grpc_resolved_address* addr) {
|
398
493
|
memset(addr, 0, sizeof(*addr));
|
399
494
|
if (server.drop) return;
|
400
|
-
const uint16_t netorder_port = grpc_htons((
|
495
|
+
const uint16_t netorder_port = grpc_htons(static_cast<uint16_t>(server.port));
|
401
496
|
/* the addresses are given in binary format (a in(6)_addr struct) in
|
402
497
|
* server->ip_address.bytes. */
|
403
498
|
if (server.ip_size == 4) {
|
@@ -408,91 +503,49 @@ void ParseServer(const GrpcLbServer& server, grpc_resolved_address* addr) {
|
|
408
503
|
addr4->sin_port = netorder_port;
|
409
504
|
} else if (server.ip_size == 16) {
|
410
505
|
addr->len = static_cast<socklen_t>(sizeof(grpc_sockaddr_in6));
|
411
|
-
grpc_sockaddr_in6* addr6 =
|
506
|
+
grpc_sockaddr_in6* addr6 =
|
507
|
+
reinterpret_cast<grpc_sockaddr_in6*>(&addr->addr);
|
412
508
|
addr6->sin6_family = GRPC_AF_INET6;
|
413
509
|
memcpy(&addr6->sin6_addr, server.ip_addr, server.ip_size);
|
414
510
|
addr6->sin6_port = netorder_port;
|
415
511
|
}
|
416
512
|
}
|
417
513
|
|
418
|
-
|
419
|
-
|
420
|
-
gpr_strvec_init(&entries);
|
514
|
+
std::string GrpcLb::Serverlist::AsText() const {
|
515
|
+
std::vector<std::string> entries;
|
421
516
|
for (size_t i = 0; i < serverlist_.size(); ++i) {
|
422
517
|
const GrpcLbServer& server = serverlist_[i];
|
423
|
-
|
518
|
+
std::string ipport;
|
424
519
|
if (server.drop) {
|
425
|
-
ipport =
|
520
|
+
ipport = "(drop)";
|
426
521
|
} else {
|
427
522
|
grpc_resolved_address addr;
|
428
523
|
ParseServer(server, &addr);
|
429
|
-
grpc_sockaddr_to_string(&
|
524
|
+
ipport = grpc_sockaddr_to_string(&addr, false);
|
430
525
|
}
|
431
|
-
|
432
|
-
|
433
|
-
server.load_balance_token);
|
434
|
-
gpr_free(ipport);
|
435
|
-
gpr_strvec_add(&entries, entry);
|
526
|
+
entries.push_back(absl::StrFormat(" %" PRIuPTR ": %s token=%s\n", i,
|
527
|
+
ipport, server.load_balance_token));
|
436
528
|
}
|
437
|
-
|
438
|
-
gpr_strvec_destroy(&entries);
|
439
|
-
return result;
|
440
|
-
}
|
441
|
-
|
442
|
-
// vtables for channel args for LB token and client stats.
|
443
|
-
void* lb_token_copy(void* token) {
|
444
|
-
return gpr_strdup(static_cast<char*>(token));
|
445
|
-
}
|
446
|
-
void lb_token_destroy(void* token) { gpr_free(token); }
|
447
|
-
void* client_stats_copy(void* p) {
|
448
|
-
GrpcLbClientStats* client_stats = static_cast<GrpcLbClientStats*>(p);
|
449
|
-
client_stats->Ref().release();
|
450
|
-
return p;
|
529
|
+
return absl::StrJoin(entries, "");
|
451
530
|
}
|
452
|
-
void client_stats_destroy(void* p) {
|
453
|
-
GrpcLbClientStats* client_stats = static_cast<GrpcLbClientStats*>(p);
|
454
|
-
client_stats->Unref();
|
455
|
-
}
|
456
|
-
int equal_cmp(void* /*p1*/, void* /*p2*/) {
|
457
|
-
// Always indicate a match, since we don't want this channel arg to
|
458
|
-
// affect the subchannel's key in the index.
|
459
|
-
// TODO(roth): Is this right? This does prevent us from needlessly
|
460
|
-
// recreating the subchannel whenever the LB token or client stats
|
461
|
-
// changes (i.e., when the balancer call is terminated and reestablished).
|
462
|
-
// However, it means that we don't actually recreate the subchannel,
|
463
|
-
// which means that we won't ever switch over to using the new LB
|
464
|
-
// token or client stats. A better approach might be to find somewhere
|
465
|
-
// other than the subchannel args to store the LB token and client
|
466
|
-
// stats. They could be stored in a map and then looked up for each
|
467
|
-
// call. Or we could do something more complicated whereby
|
468
|
-
// we create our own subchannel wrapper to store them, although that would
|
469
|
-
// involve a lot of refcounting overhead.
|
470
|
-
// Given that we're trying to move from grpclb to xds at this point,
|
471
|
-
// and that no one has actually reported any problems with this, we
|
472
|
-
// probably won't bother fixing this at this point.
|
473
|
-
return 0;
|
474
|
-
}
|
475
|
-
const grpc_arg_pointer_vtable lb_token_arg_vtable = {
|
476
|
-
lb_token_copy, lb_token_destroy, equal_cmp};
|
477
|
-
const grpc_arg_pointer_vtable client_stats_arg_vtable = {
|
478
|
-
client_stats_copy, client_stats_destroy, equal_cmp};
|
479
531
|
|
480
532
|
bool IsServerValid(const GrpcLbServer& server, size_t idx, bool log) {
|
481
533
|
if (server.drop) return false;
|
482
534
|
if (GPR_UNLIKELY(server.port >> 16 != 0)) {
|
483
535
|
if (log) {
|
484
536
|
gpr_log(GPR_ERROR,
|
485
|
-
"Invalid port '%d' at index %
|
486
|
-
|
537
|
+
"Invalid port '%d' at index %" PRIuPTR
|
538
|
+
" of serverlist. Ignoring.",
|
539
|
+
server.port, idx);
|
487
540
|
}
|
488
541
|
return false;
|
489
542
|
}
|
490
543
|
if (GPR_UNLIKELY(server.ip_size != 4 && server.ip_size != 16)) {
|
491
544
|
if (log) {
|
492
545
|
gpr_log(GPR_ERROR,
|
493
|
-
"Expected IP to be 4 or 16 bytes, got %d at index %
|
494
|
-
"serverlist. Ignoring",
|
495
|
-
server.ip_size,
|
546
|
+
"Expected IP to be 4 or 16 bytes, got %d at index %" PRIuPTR
|
547
|
+
" of serverlist. Ignoring",
|
548
|
+
server.ip_size, idx);
|
496
549
|
}
|
497
550
|
return false;
|
498
551
|
}
|
@@ -502,6 +555,8 @@ bool IsServerValid(const GrpcLbServer& server, size_t idx, bool log) {
|
|
502
555
|
// Returns addresses extracted from the serverlist.
|
503
556
|
ServerAddressList GrpcLb::Serverlist::GetServerAddressList(
|
504
557
|
GrpcLbClientStats* client_stats) const {
|
558
|
+
RefCountedPtr<GrpcLbClientStats> stats;
|
559
|
+
if (client_stats != nullptr) stats = client_stats->Ref();
|
505
560
|
ServerAddressList addresses;
|
506
561
|
for (size_t i = 0; i < serverlist_.size(); ++i) {
|
507
562
|
const GrpcLbServer& server = serverlist_[i];
|
@@ -510,36 +565,23 @@ ServerAddressList GrpcLb::Serverlist::GetServerAddressList(
|
|
510
565
|
grpc_resolved_address addr;
|
511
566
|
ParseServer(server, &addr);
|
512
567
|
// LB token processing.
|
513
|
-
|
514
|
-
|
515
|
-
|
516
|
-
|
517
|
-
const size_t lb_token_length =
|
518
|
-
strnlen(server.load_balance_token, lb_token_max_length);
|
519
|
-
memcpy(lb_token, server.load_balance_token, lb_token_length);
|
520
|
-
lb_token[lb_token_length] = '\0';
|
521
|
-
} else {
|
522
|
-
char* uri = grpc_sockaddr_to_uri(&addr);
|
568
|
+
const size_t lb_token_length = strnlen(
|
569
|
+
server.load_balance_token, GPR_ARRAY_SIZE(server.load_balance_token));
|
570
|
+
std::string lb_token(server.load_balance_token, lb_token_length);
|
571
|
+
if (lb_token.empty()) {
|
523
572
|
gpr_log(GPR_INFO,
|
524
573
|
"Missing LB token for backend address '%s'. The empty token will "
|
525
574
|
"be used instead",
|
526
|
-
|
527
|
-
gpr_free(uri);
|
528
|
-
lb_token[0] = '\0';
|
575
|
+
grpc_sockaddr_to_uri(&addr).c_str());
|
529
576
|
}
|
577
|
+
// Attach attribute to address containing LB token and stats object.
|
578
|
+
std::map<const char*, std::unique_ptr<ServerAddress::AttributeInterface>>
|
579
|
+
attributes;
|
580
|
+
attributes[kGrpcLbAddressAttributeKey] =
|
581
|
+
absl::make_unique<TokenAndClientStatsAttribute>(std::move(lb_token),
|
582
|
+
stats);
|
530
583
|
// Add address.
|
531
|
-
|
532
|
-
args_to_add.emplace_back(grpc_channel_arg_pointer_create(
|
533
|
-
const_cast<char*>(GRPC_ARG_GRPCLB_ADDRESS_LB_TOKEN), lb_token,
|
534
|
-
&lb_token_arg_vtable));
|
535
|
-
if (client_stats != nullptr) {
|
536
|
-
args_to_add.emplace_back(grpc_channel_arg_pointer_create(
|
537
|
-
const_cast<char*>(GRPC_ARG_GRPCLB_ADDRESS_CLIENT_STATS), client_stats,
|
538
|
-
&client_stats_arg_vtable));
|
539
|
-
}
|
540
|
-
grpc_channel_args* args = grpc_channel_args_copy_and_add(
|
541
|
-
nullptr, args_to_add.data(), args_to_add.size());
|
542
|
-
addresses.emplace_back(addr, args);
|
584
|
+
addresses.emplace_back(addr, /*args=*/nullptr, std::move(attributes));
|
543
585
|
}
|
544
586
|
return addresses;
|
545
587
|
}
|
@@ -566,7 +608,8 @@ const char* GrpcLb::Serverlist::ShouldDrop() {
|
|
566
608
|
GrpcLb::PickResult GrpcLb::Picker::Pick(PickArgs args) {
|
567
609
|
PickResult result;
|
568
610
|
// Check if we should drop the call.
|
569
|
-
const char* drop_token =
|
611
|
+
const char* drop_token =
|
612
|
+
serverlist_ == nullptr ? nullptr : serverlist_->ShouldDrop();
|
570
613
|
if (drop_token != nullptr) {
|
571
614
|
// Update client load reporting stats to indicate the number of
|
572
615
|
// dropped calls. Note that we have to do this here instead of in
|
@@ -584,35 +627,34 @@ GrpcLb::PickResult GrpcLb::Picker::Pick(PickArgs args) {
|
|
584
627
|
// If pick succeeded, add LB token to initial metadata.
|
585
628
|
if (result.type == PickResult::PICK_COMPLETE &&
|
586
629
|
result.subchannel != nullptr) {
|
630
|
+
const SubchannelWrapper* subchannel_wrapper =
|
631
|
+
static_cast<SubchannelWrapper*>(result.subchannel.get());
|
587
632
|
// Encode client stats object into metadata for use by
|
588
633
|
// client_load_reporting filter.
|
589
|
-
|
590
|
-
|
591
|
-
GRPC_ARG_GRPCLB_ADDRESS_CLIENT_STATS);
|
592
|
-
if (arg != nullptr && arg->type == GRPC_ARG_POINTER &&
|
593
|
-
arg->value.pointer.p != nullptr) {
|
594
|
-
GrpcLbClientStats* client_stats =
|
595
|
-
static_cast<GrpcLbClientStats*>(arg->value.pointer.p);
|
634
|
+
GrpcLbClientStats* client_stats = subchannel_wrapper->client_stats();
|
635
|
+
if (client_stats != nullptr) {
|
596
636
|
client_stats->Ref().release(); // Ref passed via metadata.
|
597
637
|
// The metadata value is a hack: we pretend the pointer points to
|
598
638
|
// a string and rely on the client_load_reporting filter to know
|
599
639
|
// how to interpret it.
|
600
640
|
args.initial_metadata->Add(
|
601
641
|
kGrpcLbClientStatsMetadataKey,
|
602
|
-
|
642
|
+
absl::string_view(reinterpret_cast<const char*>(client_stats), 0));
|
603
643
|
// Update calls-started.
|
604
644
|
client_stats->AddCallStarted();
|
605
645
|
}
|
606
646
|
// Encode the LB token in metadata.
|
607
|
-
|
608
|
-
|
609
|
-
|
610
|
-
|
611
|
-
|
612
|
-
|
647
|
+
// Create a new copy on the call arena, since the subchannel list
|
648
|
+
// may get refreshed between when we return this pick and when the
|
649
|
+
// initial metadata goes out on the wire.
|
650
|
+
if (!subchannel_wrapper->lb_token().empty()) {
|
651
|
+
char* lb_token = static_cast<char*>(
|
652
|
+
args.call_state->Alloc(subchannel_wrapper->lb_token().size() + 1));
|
653
|
+
strcpy(lb_token, subchannel_wrapper->lb_token().c_str());
|
654
|
+
args.initial_metadata->Add(kGrpcLbLbTokenMetadataKey, lb_token);
|
613
655
|
}
|
614
|
-
|
615
|
-
|
656
|
+
// Unwrap subchannel to pass up to the channel.
|
657
|
+
result.subchannel = subchannel_wrapper->wrapped_subchannel();
|
616
658
|
}
|
617
659
|
return result;
|
618
660
|
}
|
@@ -622,62 +664,64 @@ GrpcLb::PickResult GrpcLb::Picker::Pick(PickArgs args) {
|
|
622
664
|
//
|
623
665
|
|
624
666
|
RefCountedPtr<SubchannelInterface> GrpcLb::Helper::CreateSubchannel(
|
625
|
-
const grpc_channel_args& args) {
|
667
|
+
ServerAddress address, const grpc_channel_args& args) {
|
626
668
|
if (parent_->shutting_down_) return nullptr;
|
627
|
-
|
669
|
+
const TokenAndClientStatsAttribute* attribute =
|
670
|
+
static_cast<const TokenAndClientStatsAttribute*>(
|
671
|
+
address.GetAttribute(kGrpcLbAddressAttributeKey));
|
672
|
+
if (attribute == nullptr) {
|
673
|
+
gpr_log(GPR_ERROR,
|
674
|
+
"[grpclb %p] no TokenAndClientStatsAttribute for address %p",
|
675
|
+
parent_.get(), address.ToString().c_str());
|
676
|
+
abort();
|
677
|
+
}
|
678
|
+
std::string lb_token = attribute->lb_token();
|
679
|
+
RefCountedPtr<GrpcLbClientStats> client_stats = attribute->client_stats();
|
680
|
+
return MakeRefCounted<SubchannelWrapper>(
|
681
|
+
parent_->channel_control_helper()->CreateSubchannel(std::move(address),
|
682
|
+
args),
|
683
|
+
std::move(lb_token), std::move(client_stats));
|
628
684
|
}
|
629
685
|
|
630
686
|
void GrpcLb::Helper::UpdateState(grpc_connectivity_state state,
|
687
|
+
const absl::Status& status,
|
631
688
|
std::unique_ptr<SubchannelPicker> picker) {
|
632
689
|
if (parent_->shutting_down_) return;
|
633
690
|
// Record whether child policy reports READY.
|
634
691
|
parent_->child_policy_ready_ = state == GRPC_CHANNEL_READY;
|
635
692
|
// Enter fallback mode if needed.
|
636
693
|
parent_->MaybeEnterFallbackModeAfterStartup();
|
637
|
-
//
|
638
|
-
//
|
639
|
-
//
|
640
|
-
//
|
641
|
-
//
|
642
|
-
//
|
643
|
-
//
|
644
|
-
//
|
645
|
-
|
646
|
-
|
647
|
-
|
648
|
-
|
649
|
-
|
650
|
-
// to process drops for picks that yield a QUEUE result; this would
|
651
|
-
// result in dropping too many calls, since we will see the
|
652
|
-
// queued picks multiple times, and we'd consider each one a
|
653
|
-
// separate call for the drop calculation.
|
654
|
-
//
|
655
|
-
// Cases 1 and 3b: return picker from the child policy as-is.
|
656
|
-
if (parent_->serverlist_ == nullptr ||
|
657
|
-
(!parent_->serverlist_->ContainsAllDropEntries() &&
|
658
|
-
state != GRPC_CHANNEL_READY)) {
|
659
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
660
|
-
gpr_log(GPR_INFO,
|
661
|
-
"[grpclb %p helper %p] state=%s passing child picker %p as-is",
|
662
|
-
parent_.get(), this, ConnectivityStateName(state), picker.get());
|
663
|
-
}
|
664
|
-
parent_->channel_control_helper()->UpdateState(state, std::move(picker));
|
665
|
-
return;
|
666
|
-
}
|
667
|
-
// Cases 2 and 3a: wrap picker from the child in our own picker.
|
668
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
669
|
-
gpr_log(GPR_INFO, "[grpclb %p helper %p] state=%s wrapping child picker %p",
|
670
|
-
parent_.get(), this, ConnectivityStateName(state), picker.get());
|
694
|
+
// We pass the serverlist to the picker so that it can handle drops.
|
695
|
+
// However, we don't want to handle drops in the case where the child
|
696
|
+
// policy is reporting a state other than READY (unless we are
|
697
|
+
// dropping *all* calls), because we don't want to process drops for picks
|
698
|
+
// that yield a QUEUE result; this would result in dropping too many calls,
|
699
|
+
// since we will see the queued picks multiple times, and we'd consider each
|
700
|
+
// one a separate call for the drop calculation. So in this case, we pass
|
701
|
+
// a null serverlist to the picker, which tells it not to do drops.
|
702
|
+
RefCountedPtr<Serverlist> serverlist;
|
703
|
+
if (state == GRPC_CHANNEL_READY ||
|
704
|
+
(parent_->serverlist_ != nullptr &&
|
705
|
+
parent_->serverlist_->ContainsAllDropEntries())) {
|
706
|
+
serverlist = parent_->serverlist_;
|
671
707
|
}
|
672
708
|
RefCountedPtr<GrpcLbClientStats> client_stats;
|
673
709
|
if (parent_->lb_calld_ != nullptr &&
|
674
710
|
parent_->lb_calld_->client_stats() != nullptr) {
|
675
711
|
client_stats = parent_->lb_calld_->client_stats()->Ref();
|
676
712
|
}
|
713
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
714
|
+
gpr_log(GPR_INFO,
|
715
|
+
"[grpclb %p helper %p] state=%s (%s) wrapping child "
|
716
|
+
"picker %p (serverlist=%p, client_stats=%p)",
|
717
|
+
parent_.get(), this, ConnectivityStateName(state),
|
718
|
+
status.ToString().c_str(), picker.get(), serverlist.get(),
|
719
|
+
client_stats.get());
|
720
|
+
}
|
677
721
|
parent_->channel_control_helper()->UpdateState(
|
678
|
-
state,
|
679
|
-
absl::make_unique<Picker>(
|
680
|
-
std::move(
|
722
|
+
state, status,
|
723
|
+
absl::make_unique<Picker>(std::move(serverlist), std::move(picker),
|
724
|
+
std::move(client_stats)));
|
681
725
|
}
|
682
726
|
|
683
727
|
void GrpcLb::Helper::RequestReresolution() {
|
@@ -692,7 +736,8 @@ void GrpcLb::Helper::RequestReresolution() {
|
|
692
736
|
}
|
693
737
|
}
|
694
738
|
|
695
|
-
void GrpcLb::Helper::AddTraceEvent(TraceSeverity severity,
|
739
|
+
void GrpcLb::Helper::AddTraceEvent(TraceSeverity severity,
|
740
|
+
absl::string_view message) {
|
696
741
|
if (parent_->shutting_down_) return;
|
697
742
|
parent_->channel_control_helper()->AddTraceEvent(severity, message);
|
698
743
|
}
|
@@ -703,15 +748,25 @@ void GrpcLb::Helper::AddTraceEvent(TraceSeverity severity, StringView message) {
|
|
703
748
|
|
704
749
|
GrpcLb::BalancerCallState::BalancerCallState(
|
705
750
|
RefCountedPtr<LoadBalancingPolicy> parent_grpclb_policy)
|
706
|
-
: InternallyRefCounted<BalancerCallState>(
|
751
|
+
: InternallyRefCounted<BalancerCallState>(
|
752
|
+
GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace) ? "BalancerCallState"
|
753
|
+
: nullptr),
|
707
754
|
grpclb_policy_(std::move(parent_grpclb_policy)) {
|
708
755
|
GPR_ASSERT(grpclb_policy_ != nullptr);
|
709
756
|
GPR_ASSERT(!grpclb_policy()->shutting_down_);
|
710
757
|
// Init the LB call. Note that the LB call will progress every time there's
|
711
758
|
// activity in grpclb_policy_->interested_parties(), which is comprised of
|
712
759
|
// the polling entities from client_channel.
|
713
|
-
GPR_ASSERT(grpclb_policy()->server_name_
|
714
|
-
|
760
|
+
GPR_ASSERT(!grpclb_policy()->server_name_.empty());
|
761
|
+
// Closure Initialization
|
762
|
+
GRPC_CLOSURE_INIT(&lb_on_initial_request_sent_, OnInitialRequestSent, this,
|
763
|
+
grpc_schedule_on_exec_ctx);
|
764
|
+
GRPC_CLOSURE_INIT(&lb_on_balancer_message_received_,
|
765
|
+
OnBalancerMessageReceived, this, grpc_schedule_on_exec_ctx);
|
766
|
+
GRPC_CLOSURE_INIT(&lb_on_balancer_status_received_, OnBalancerStatusReceived,
|
767
|
+
this, grpc_schedule_on_exec_ctx);
|
768
|
+
GRPC_CLOSURE_INIT(&client_load_report_closure_, MaybeSendClientLoadReport,
|
769
|
+
this, grpc_schedule_on_exec_ctx);
|
715
770
|
const grpc_millis deadline =
|
716
771
|
grpclb_policy()->lb_call_timeout_ms_ == 0
|
717
772
|
? GRPC_MILLIS_INF_FUTURE
|
@@ -723,8 +778,11 @@ GrpcLb::BalancerCallState::BalancerCallState(
|
|
723
778
|
nullptr, deadline, nullptr);
|
724
779
|
// Init the LB call request payload.
|
725
780
|
upb::Arena arena;
|
726
|
-
grpc_slice request_payload_slice =
|
727
|
-
|
781
|
+
grpc_slice request_payload_slice = GrpcLbRequestCreate(
|
782
|
+
grpclb_policy()->config_->service_name().empty()
|
783
|
+
? grpclb_policy()->server_name_.c_str()
|
784
|
+
: grpclb_policy()->config_->service_name().c_str(),
|
785
|
+
arena.ptr());
|
728
786
|
send_message_payload_ =
|
729
787
|
grpc_raw_byte_buffer_create(&request_payload_slice, 1);
|
730
788
|
grpc_slice_unref_internal(request_payload_slice);
|
@@ -749,7 +807,7 @@ void GrpcLb::BalancerCallState::Orphan() {
|
|
749
807
|
// lb_on_balancer_status_received_ will complete the cancellation and clean
|
750
808
|
// up. Otherwise, we are here because grpclb_policy has to orphan a failed
|
751
809
|
// call, then the following cancellation will be a no-op.
|
752
|
-
|
810
|
+
grpc_call_cancel_internal(lb_call_);
|
753
811
|
if (client_load_report_timer_callback_pending_) {
|
754
812
|
grpc_timer_cancel(&client_load_report_timer_);
|
755
813
|
}
|
@@ -788,10 +846,9 @@ void GrpcLb::BalancerCallState::StartQuery() {
|
|
788
846
|
// with the callback.
|
789
847
|
auto self = Ref(DEBUG_LOCATION, "on_initial_request_sent");
|
790
848
|
self.release();
|
791
|
-
|
792
|
-
|
793
|
-
|
794
|
-
lb_call_, ops, (size_t)(op - ops), &lb_on_initial_request_sent_);
|
849
|
+
call_error = grpc_call_start_batch_and_execute(lb_call_, ops,
|
850
|
+
static_cast<size_t>(op - ops),
|
851
|
+
&lb_on_initial_request_sent_);
|
795
852
|
GPR_ASSERT(GRPC_CALL_OK == call_error);
|
796
853
|
// Op: recv initial metadata.
|
797
854
|
op = ops;
|
@@ -812,10 +869,9 @@ void GrpcLb::BalancerCallState::StartQuery() {
|
|
812
869
|
// with the callback.
|
813
870
|
self = Ref(DEBUG_LOCATION, "on_message_received");
|
814
871
|
self.release();
|
815
|
-
GRPC_CLOSURE_INIT(&lb_on_balancer_message_received_,
|
816
|
-
OnBalancerMessageReceived, this, grpc_schedule_on_exec_ctx);
|
817
872
|
call_error = grpc_call_start_batch_and_execute(
|
818
|
-
lb_call_, ops,
|
873
|
+
lb_call_, ops, static_cast<size_t>(op - ops),
|
874
|
+
&lb_on_balancer_message_received_);
|
819
875
|
GPR_ASSERT(GRPC_CALL_OK == call_error);
|
820
876
|
// Op: recv server status.
|
821
877
|
op = ops;
|
@@ -830,10 +886,9 @@ void GrpcLb::BalancerCallState::StartQuery() {
|
|
830
886
|
// This callback signals the end of the LB call, so it relies on the initial
|
831
887
|
// ref instead of a new ref. When it's invoked, it's the initial ref that is
|
832
888
|
// unreffed.
|
833
|
-
GRPC_CLOSURE_INIT(&lb_on_balancer_status_received_, OnBalancerStatusReceived,
|
834
|
-
this, grpc_schedule_on_exec_ctx);
|
835
889
|
call_error = grpc_call_start_batch_and_execute(
|
836
|
-
lb_call_, ops,
|
890
|
+
lb_call_, ops, static_cast<size_t>(op - ops),
|
891
|
+
&lb_on_balancer_status_received_);
|
837
892
|
GPR_ASSERT(GRPC_CALL_OK == call_error);
|
838
893
|
}
|
839
894
|
|
@@ -850,28 +905,27 @@ void GrpcLb::BalancerCallState::ScheduleNextClientLoadReportLocked() {
|
|
850
905
|
void GrpcLb::BalancerCallState::MaybeSendClientLoadReport(void* arg,
|
851
906
|
grpc_error* error) {
|
852
907
|
BalancerCallState* lb_calld = static_cast<BalancerCallState*>(arg);
|
853
|
-
|
854
|
-
|
855
|
-
|
856
|
-
|
908
|
+
GRPC_ERROR_REF(error); // ref owned by lambda
|
909
|
+
lb_calld->grpclb_policy()->work_serializer()->Run(
|
910
|
+
[lb_calld, error]() { lb_calld->MaybeSendClientLoadReportLocked(error); },
|
911
|
+
DEBUG_LOCATION);
|
857
912
|
}
|
858
913
|
|
859
914
|
void GrpcLb::BalancerCallState::MaybeSendClientLoadReportLocked(
|
860
|
-
|
861
|
-
|
862
|
-
|
863
|
-
|
864
|
-
|
865
|
-
lb_calld->Unref(DEBUG_LOCATION, "client_load_report");
|
915
|
+
grpc_error* error) {
|
916
|
+
client_load_report_timer_callback_pending_ = false;
|
917
|
+
if (error != GRPC_ERROR_NONE || this != grpclb_policy()->lb_calld_.get()) {
|
918
|
+
Unref(DEBUG_LOCATION, "client_load_report");
|
919
|
+
GRPC_ERROR_UNREF(error);
|
866
920
|
return;
|
867
921
|
}
|
868
922
|
// If we've already sent the initial request, then we can go ahead and send
|
869
923
|
// the load report. Otherwise, we need to wait until the initial request has
|
870
924
|
// been sent to send this (see OnInitialRequestSentLocked()).
|
871
|
-
if (
|
872
|
-
|
925
|
+
if (send_message_payload_ == nullptr) {
|
926
|
+
SendClientLoadReportLocked();
|
873
927
|
} else {
|
874
|
-
|
928
|
+
client_load_report_is_due_ = true;
|
875
929
|
}
|
876
930
|
}
|
877
931
|
|
@@ -892,7 +946,7 @@ void GrpcLb::BalancerCallState::SendClientLoadReportLocked() {
|
|
892
946
|
if (num_calls_started == 0 && num_calls_finished == 0 &&
|
893
947
|
num_calls_finished_with_client_failed_to_send == 0 &&
|
894
948
|
num_calls_finished_known_received == 0 &&
|
895
|
-
(drop_token_counts == nullptr || drop_token_counts->
|
949
|
+
(drop_token_counts == nullptr || drop_token_counts->empty())) {
|
896
950
|
if (last_client_load_report_counters_were_zero_) {
|
897
951
|
ScheduleNextClientLoadReportLocked();
|
898
952
|
return;
|
@@ -930,140 +984,125 @@ void GrpcLb::BalancerCallState::SendClientLoadReportLocked() {
|
|
930
984
|
void GrpcLb::BalancerCallState::ClientLoadReportDone(void* arg,
|
931
985
|
grpc_error* error) {
|
932
986
|
BalancerCallState* lb_calld = static_cast<BalancerCallState*>(arg);
|
933
|
-
|
934
|
-
|
935
|
-
|
936
|
-
|
987
|
+
GRPC_ERROR_REF(error); // ref owned by lambda
|
988
|
+
lb_calld->grpclb_policy()->work_serializer()->Run(
|
989
|
+
[lb_calld, error]() { lb_calld->ClientLoadReportDoneLocked(error); },
|
990
|
+
DEBUG_LOCATION);
|
937
991
|
}
|
938
992
|
|
939
|
-
void GrpcLb::BalancerCallState::ClientLoadReportDoneLocked(
|
940
|
-
|
941
|
-
|
942
|
-
|
943
|
-
|
944
|
-
|
945
|
-
if (error != GRPC_ERROR_NONE || lb_calld != grpclb_policy->lb_calld_.get()) {
|
946
|
-
lb_calld->Unref(DEBUG_LOCATION, "client_load_report");
|
993
|
+
void GrpcLb::BalancerCallState::ClientLoadReportDoneLocked(grpc_error* error) {
|
994
|
+
grpc_byte_buffer_destroy(send_message_payload_);
|
995
|
+
send_message_payload_ = nullptr;
|
996
|
+
if (error != GRPC_ERROR_NONE || this != grpclb_policy()->lb_calld_.get()) {
|
997
|
+
Unref(DEBUG_LOCATION, "client_load_report");
|
998
|
+
GRPC_ERROR_UNREF(error);
|
947
999
|
return;
|
948
1000
|
}
|
949
|
-
|
1001
|
+
ScheduleNextClientLoadReportLocked();
|
950
1002
|
}
|
951
1003
|
|
952
1004
|
void GrpcLb::BalancerCallState::OnInitialRequestSent(void* arg,
|
953
|
-
grpc_error* error) {
|
1005
|
+
grpc_error* /*error*/) {
|
954
1006
|
BalancerCallState* lb_calld = static_cast<BalancerCallState*>(arg);
|
955
|
-
lb_calld->grpclb_policy()->
|
956
|
-
|
957
|
-
OnInitialRequestSentLocked, lb_calld, nullptr),
|
958
|
-
GRPC_ERROR_REF(error));
|
1007
|
+
lb_calld->grpclb_policy()->work_serializer()->Run(
|
1008
|
+
[lb_calld]() { lb_calld->OnInitialRequestSentLocked(); }, DEBUG_LOCATION);
|
959
1009
|
}
|
960
1010
|
|
961
|
-
void GrpcLb::BalancerCallState::OnInitialRequestSentLocked(
|
962
|
-
|
963
|
-
|
964
|
-
grpc_byte_buffer_destroy(lb_calld->send_message_payload_);
|
965
|
-
lb_calld->send_message_payload_ = nullptr;
|
1011
|
+
void GrpcLb::BalancerCallState::OnInitialRequestSentLocked() {
|
1012
|
+
grpc_byte_buffer_destroy(send_message_payload_);
|
1013
|
+
send_message_payload_ = nullptr;
|
966
1014
|
// If we attempted to send a client load report before the initial request was
|
967
1015
|
// sent (and this lb_calld is still in use), send the load report now.
|
968
|
-
if (
|
969
|
-
|
970
|
-
|
971
|
-
lb_calld->client_load_report_is_due_ = false;
|
1016
|
+
if (client_load_report_is_due_ && this == grpclb_policy()->lb_calld_.get()) {
|
1017
|
+
SendClientLoadReportLocked();
|
1018
|
+
client_load_report_is_due_ = false;
|
972
1019
|
}
|
973
|
-
|
1020
|
+
Unref(DEBUG_LOCATION, "on_initial_request_sent");
|
974
1021
|
}
|
975
1022
|
|
976
|
-
void GrpcLb::BalancerCallState::OnBalancerMessageReceived(
|
977
|
-
|
1023
|
+
void GrpcLb::BalancerCallState::OnBalancerMessageReceived(
|
1024
|
+
void* arg, grpc_error* /*error*/) {
|
978
1025
|
BalancerCallState* lb_calld = static_cast<BalancerCallState*>(arg);
|
979
|
-
lb_calld->grpclb_policy()->
|
980
|
-
|
981
|
-
|
982
|
-
GRPC_ERROR_REF(error));
|
1026
|
+
lb_calld->grpclb_policy()->work_serializer()->Run(
|
1027
|
+
[lb_calld]() { lb_calld->OnBalancerMessageReceivedLocked(); },
|
1028
|
+
DEBUG_LOCATION);
|
983
1029
|
}
|
984
1030
|
|
985
|
-
void GrpcLb::BalancerCallState::OnBalancerMessageReceivedLocked(
|
986
|
-
void* arg, grpc_error* /*error*/) {
|
987
|
-
BalancerCallState* lb_calld = static_cast<BalancerCallState*>(arg);
|
988
|
-
GrpcLb* grpclb_policy = lb_calld->grpclb_policy();
|
1031
|
+
void GrpcLb::BalancerCallState::OnBalancerMessageReceivedLocked() {
|
989
1032
|
// Null payload means the LB call was cancelled.
|
990
|
-
if (
|
991
|
-
|
992
|
-
|
1033
|
+
if (this != grpclb_policy()->lb_calld_.get() ||
|
1034
|
+
recv_message_payload_ == nullptr) {
|
1035
|
+
Unref(DEBUG_LOCATION, "on_message_received");
|
993
1036
|
return;
|
994
1037
|
}
|
995
1038
|
grpc_byte_buffer_reader bbr;
|
996
|
-
grpc_byte_buffer_reader_init(&bbr,
|
1039
|
+
grpc_byte_buffer_reader_init(&bbr, recv_message_payload_);
|
997
1040
|
grpc_slice response_slice = grpc_byte_buffer_reader_readall(&bbr);
|
998
1041
|
grpc_byte_buffer_reader_destroy(&bbr);
|
999
|
-
grpc_byte_buffer_destroy(
|
1000
|
-
|
1042
|
+
grpc_byte_buffer_destroy(recv_message_payload_);
|
1043
|
+
recv_message_payload_ = nullptr;
|
1001
1044
|
GrpcLbResponse response;
|
1002
1045
|
upb::Arena arena;
|
1003
1046
|
if (!GrpcLbResponseParse(response_slice, arena.ptr(), &response) ||
|
1004
|
-
(response.type == response.INITIAL &&
|
1047
|
+
(response.type == response.INITIAL && seen_initial_response_)) {
|
1005
1048
|
char* response_slice_str =
|
1006
1049
|
grpc_dump_slice(response_slice, GPR_DUMP_ASCII | GPR_DUMP_HEX);
|
1007
1050
|
gpr_log(GPR_ERROR,
|
1008
1051
|
"[grpclb %p] lb_calld=%p: Invalid LB response received: '%s'. "
|
1009
1052
|
"Ignoring.",
|
1010
|
-
grpclb_policy,
|
1053
|
+
grpclb_policy(), this, response_slice_str);
|
1011
1054
|
gpr_free(response_slice_str);
|
1012
1055
|
} else {
|
1013
1056
|
switch (response.type) {
|
1014
1057
|
case response.INITIAL: {
|
1015
1058
|
if (response.client_stats_report_interval != 0) {
|
1016
|
-
|
1059
|
+
client_stats_report_interval_ =
|
1017
1060
|
GPR_MAX(GPR_MS_PER_SEC, response.client_stats_report_interval);
|
1018
1061
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
1019
1062
|
gpr_log(GPR_INFO,
|
1020
1063
|
"[grpclb %p] lb_calld=%p: Received initial LB response "
|
1021
1064
|
"message; client load reporting interval = %" PRId64
|
1022
1065
|
" milliseconds",
|
1023
|
-
grpclb_policy,
|
1024
|
-
lb_calld->client_stats_report_interval_);
|
1066
|
+
grpclb_policy(), this, client_stats_report_interval_);
|
1025
1067
|
}
|
1026
1068
|
} else if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
1027
1069
|
gpr_log(GPR_INFO,
|
1028
1070
|
"[grpclb %p] lb_calld=%p: Received initial LB response "
|
1029
1071
|
"message; client load reporting NOT enabled",
|
1030
|
-
grpclb_policy,
|
1072
|
+
grpclb_policy(), this);
|
1031
1073
|
}
|
1032
|
-
|
1074
|
+
seen_initial_response_ = true;
|
1033
1075
|
break;
|
1034
1076
|
}
|
1035
1077
|
case response.SERVERLIST: {
|
1036
|
-
GPR_ASSERT(
|
1078
|
+
GPR_ASSERT(lb_call_ != nullptr);
|
1037
1079
|
auto serverlist_wrapper =
|
1038
1080
|
MakeRefCounted<Serverlist>(std::move(response.serverlist));
|
1039
1081
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
1040
|
-
grpc_core::UniquePtr<char> serverlist_text =
|
1041
|
-
serverlist_wrapper->AsText();
|
1042
1082
|
gpr_log(GPR_INFO,
|
1043
1083
|
"[grpclb %p] lb_calld=%p: Serverlist with %" PRIuPTR
|
1044
1084
|
" servers received:\n%s",
|
1045
|
-
grpclb_policy,
|
1085
|
+
grpclb_policy(), this,
|
1046
1086
|
serverlist_wrapper->serverlist().size(),
|
1047
|
-
|
1087
|
+
serverlist_wrapper->AsText().c_str());
|
1048
1088
|
}
|
1049
|
-
|
1089
|
+
seen_serverlist_ = true;
|
1050
1090
|
// Start sending client load report only after we start using the
|
1051
1091
|
// serverlist returned from the current LB call.
|
1052
|
-
if (
|
1053
|
-
|
1054
|
-
lb_calld->client_stats_ = MakeRefCounted<GrpcLbClientStats>();
|
1092
|
+
if (client_stats_report_interval_ > 0 && client_stats_ == nullptr) {
|
1093
|
+
client_stats_ = MakeRefCounted<GrpcLbClientStats>();
|
1055
1094
|
// Ref held by callback.
|
1056
|
-
|
1057
|
-
|
1095
|
+
Ref(DEBUG_LOCATION, "client_load_report").release();
|
1096
|
+
ScheduleNextClientLoadReportLocked();
|
1058
1097
|
}
|
1059
1098
|
// Check if the serverlist differs from the previous one.
|
1060
|
-
if (grpclb_policy->serverlist_ != nullptr &&
|
1061
|
-
*grpclb_policy->serverlist_ == *serverlist_wrapper) {
|
1099
|
+
if (grpclb_policy()->serverlist_ != nullptr &&
|
1100
|
+
*grpclb_policy()->serverlist_ == *serverlist_wrapper) {
|
1062
1101
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
1063
1102
|
gpr_log(GPR_INFO,
|
1064
1103
|
"[grpclb %p] lb_calld=%p: Incoming server list identical "
|
1065
1104
|
"to current, ignoring.",
|
1066
|
-
grpclb_policy,
|
1105
|
+
grpclb_policy(), this);
|
1067
1106
|
}
|
1068
1107
|
} else { // New serverlist.
|
1069
1108
|
// Dispose of the fallback.
|
@@ -1085,167 +1124,145 @@ void GrpcLb::BalancerCallState::OnBalancerMessageReceivedLocked(
|
|
1085
1124
|
// the grpclb implementation at this point, since we're deprecating
|
1086
1125
|
// it in favor of the xds policy. We will implement this the
|
1087
1126
|
// right way in the xds policy instead.
|
1088
|
-
if (grpclb_policy->fallback_mode_) {
|
1127
|
+
if (grpclb_policy()->fallback_mode_) {
|
1089
1128
|
gpr_log(GPR_INFO,
|
1090
1129
|
"[grpclb %p] Received response from balancer; exiting "
|
1091
1130
|
"fallback mode",
|
1092
|
-
grpclb_policy);
|
1093
|
-
grpclb_policy->fallback_mode_ = false;
|
1131
|
+
grpclb_policy());
|
1132
|
+
grpclb_policy()->fallback_mode_ = false;
|
1094
1133
|
}
|
1095
|
-
if (grpclb_policy->fallback_at_startup_checks_pending_) {
|
1096
|
-
grpclb_policy->fallback_at_startup_checks_pending_ = false;
|
1097
|
-
grpc_timer_cancel(&grpclb_policy->lb_fallback_timer_);
|
1098
|
-
grpclb_policy->CancelBalancerChannelConnectivityWatchLocked();
|
1134
|
+
if (grpclb_policy()->fallback_at_startup_checks_pending_) {
|
1135
|
+
grpclb_policy()->fallback_at_startup_checks_pending_ = false;
|
1136
|
+
grpc_timer_cancel(&grpclb_policy()->lb_fallback_timer_);
|
1137
|
+
grpclb_policy()->CancelBalancerChannelConnectivityWatchLocked();
|
1099
1138
|
}
|
1100
1139
|
// Update the serverlist in the GrpcLb instance. This serverlist
|
1101
1140
|
// instance will be destroyed either upon the next update or when the
|
1102
1141
|
// GrpcLb instance is destroyed.
|
1103
|
-
grpclb_policy->serverlist_ = std::move(serverlist_wrapper);
|
1104
|
-
grpclb_policy->CreateOrUpdateChildPolicyLocked();
|
1142
|
+
grpclb_policy()->serverlist_ = std::move(serverlist_wrapper);
|
1143
|
+
grpclb_policy()->CreateOrUpdateChildPolicyLocked();
|
1105
1144
|
}
|
1106
1145
|
break;
|
1107
1146
|
}
|
1108
1147
|
case response.FALLBACK: {
|
1109
|
-
if (!grpclb_policy->fallback_mode_) {
|
1148
|
+
if (!grpclb_policy()->fallback_mode_) {
|
1110
1149
|
gpr_log(GPR_INFO,
|
1111
1150
|
"[grpclb %p] Entering fallback mode as requested by balancer",
|
1112
|
-
grpclb_policy);
|
1113
|
-
if (grpclb_policy->fallback_at_startup_checks_pending_) {
|
1114
|
-
grpclb_policy->fallback_at_startup_checks_pending_ = false;
|
1115
|
-
grpc_timer_cancel(&grpclb_policy->lb_fallback_timer_);
|
1116
|
-
grpclb_policy->CancelBalancerChannelConnectivityWatchLocked();
|
1151
|
+
grpclb_policy());
|
1152
|
+
if (grpclb_policy()->fallback_at_startup_checks_pending_) {
|
1153
|
+
grpclb_policy()->fallback_at_startup_checks_pending_ = false;
|
1154
|
+
grpc_timer_cancel(&grpclb_policy()->lb_fallback_timer_);
|
1155
|
+
grpclb_policy()->CancelBalancerChannelConnectivityWatchLocked();
|
1117
1156
|
}
|
1118
|
-
grpclb_policy->fallback_mode_ = true;
|
1119
|
-
grpclb_policy->CreateOrUpdateChildPolicyLocked();
|
1157
|
+
grpclb_policy()->fallback_mode_ = true;
|
1158
|
+
grpclb_policy()->CreateOrUpdateChildPolicyLocked();
|
1120
1159
|
// Reset serverlist, so that if the balancer exits fallback
|
1121
1160
|
// mode by sending the same serverlist we were previously
|
1122
1161
|
// using, we don't incorrectly ignore it as a duplicate.
|
1123
|
-
grpclb_policy->serverlist_.reset();
|
1162
|
+
grpclb_policy()->serverlist_.reset();
|
1124
1163
|
}
|
1125
1164
|
break;
|
1126
1165
|
}
|
1127
1166
|
}
|
1128
1167
|
}
|
1129
1168
|
grpc_slice_unref_internal(response_slice);
|
1130
|
-
if (!grpclb_policy->shutting_down_) {
|
1169
|
+
if (!grpclb_policy()->shutting_down_) {
|
1131
1170
|
// Keep listening for serverlist updates.
|
1132
1171
|
grpc_op op;
|
1133
1172
|
memset(&op, 0, sizeof(op));
|
1134
1173
|
op.op = GRPC_OP_RECV_MESSAGE;
|
1135
|
-
op.data.recv_message.recv_message = &
|
1174
|
+
op.data.recv_message.recv_message = &recv_message_payload_;
|
1136
1175
|
op.flags = 0;
|
1137
1176
|
op.reserved = nullptr;
|
1138
1177
|
// Reuse the "OnBalancerMessageReceivedLocked" ref taken in StartQuery().
|
1139
|
-
GRPC_CLOSURE_INIT(&lb_calld->lb_on_balancer_message_received_,
|
1140
|
-
GrpcLb::BalancerCallState::OnBalancerMessageReceived,
|
1141
|
-
lb_calld, grpc_schedule_on_exec_ctx);
|
1142
1178
|
const grpc_call_error call_error = grpc_call_start_batch_and_execute(
|
1143
|
-
|
1144
|
-
&lb_calld->lb_on_balancer_message_received_);
|
1179
|
+
lb_call_, &op, 1, &lb_on_balancer_message_received_);
|
1145
1180
|
GPR_ASSERT(GRPC_CALL_OK == call_error);
|
1146
1181
|
} else {
|
1147
|
-
|
1182
|
+
Unref(DEBUG_LOCATION, "on_message_received+grpclb_shutdown");
|
1148
1183
|
}
|
1149
1184
|
}
|
1150
1185
|
|
1151
1186
|
void GrpcLb::BalancerCallState::OnBalancerStatusReceived(void* arg,
|
1152
1187
|
grpc_error* error) {
|
1153
1188
|
BalancerCallState* lb_calld = static_cast<BalancerCallState*>(arg);
|
1154
|
-
|
1155
|
-
|
1156
|
-
|
1157
|
-
|
1189
|
+
GRPC_ERROR_REF(error); // owned by lambda
|
1190
|
+
lb_calld->grpclb_policy()->work_serializer()->Run(
|
1191
|
+
[lb_calld, error]() { lb_calld->OnBalancerStatusReceivedLocked(error); },
|
1192
|
+
DEBUG_LOCATION);
|
1158
1193
|
}
|
1159
1194
|
|
1160
1195
|
void GrpcLb::BalancerCallState::OnBalancerStatusReceivedLocked(
|
1161
|
-
|
1162
|
-
|
1163
|
-
GrpcLb* grpclb_policy = lb_calld->grpclb_policy();
|
1164
|
-
GPR_ASSERT(lb_calld->lb_call_ != nullptr);
|
1196
|
+
grpc_error* error) {
|
1197
|
+
GPR_ASSERT(lb_call_ != nullptr);
|
1165
1198
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
1166
|
-
char* status_details =
|
1167
|
-
grpc_slice_to_c_string(lb_calld->lb_call_status_details_);
|
1199
|
+
char* status_details = grpc_slice_to_c_string(lb_call_status_details_);
|
1168
1200
|
gpr_log(GPR_INFO,
|
1169
1201
|
"[grpclb %p] lb_calld=%p: Status from LB server received. "
|
1170
1202
|
"Status = %d, details = '%s', (lb_call: %p), error '%s'",
|
1171
|
-
grpclb_policy,
|
1172
|
-
|
1203
|
+
grpclb_policy(), this, lb_call_status_, status_details, lb_call_,
|
1204
|
+
grpc_error_string(error));
|
1173
1205
|
gpr_free(status_details);
|
1174
1206
|
}
|
1207
|
+
GRPC_ERROR_UNREF(error);
|
1175
1208
|
// If this lb_calld is still in use, this call ended because of a failure so
|
1176
1209
|
// we want to retry connecting. Otherwise, we have deliberately ended this
|
1177
1210
|
// call and no further action is required.
|
1178
|
-
if (
|
1211
|
+
if (this == grpclb_policy()->lb_calld_.get()) {
|
1179
1212
|
// If the fallback-at-startup checks are pending, go into fallback mode
|
1180
1213
|
// immediately. This short-circuits the timeout for the fallback-at-startup
|
1181
1214
|
// case.
|
1182
|
-
if (grpclb_policy->fallback_at_startup_checks_pending_) {
|
1183
|
-
GPR_ASSERT(!
|
1215
|
+
if (grpclb_policy()->fallback_at_startup_checks_pending_) {
|
1216
|
+
GPR_ASSERT(!seen_serverlist_);
|
1184
1217
|
gpr_log(GPR_INFO,
|
1185
1218
|
"[grpclb %p] Balancer call finished without receiving "
|
1186
1219
|
"serverlist; entering fallback mode",
|
1187
|
-
grpclb_policy);
|
1188
|
-
grpclb_policy->fallback_at_startup_checks_pending_ = false;
|
1189
|
-
grpc_timer_cancel(&grpclb_policy->lb_fallback_timer_);
|
1190
|
-
grpclb_policy->CancelBalancerChannelConnectivityWatchLocked();
|
1191
|
-
grpclb_policy->fallback_mode_ = true;
|
1192
|
-
grpclb_policy->CreateOrUpdateChildPolicyLocked();
|
1220
|
+
grpclb_policy());
|
1221
|
+
grpclb_policy()->fallback_at_startup_checks_pending_ = false;
|
1222
|
+
grpc_timer_cancel(&grpclb_policy()->lb_fallback_timer_);
|
1223
|
+
grpclb_policy()->CancelBalancerChannelConnectivityWatchLocked();
|
1224
|
+
grpclb_policy()->fallback_mode_ = true;
|
1225
|
+
grpclb_policy()->CreateOrUpdateChildPolicyLocked();
|
1193
1226
|
} else {
|
1194
1227
|
// This handles the fallback-after-startup case.
|
1195
|
-
grpclb_policy->MaybeEnterFallbackModeAfterStartup();
|
1228
|
+
grpclb_policy()->MaybeEnterFallbackModeAfterStartup();
|
1196
1229
|
}
|
1197
|
-
grpclb_policy->lb_calld_.reset();
|
1198
|
-
GPR_ASSERT(!grpclb_policy->shutting_down_);
|
1199
|
-
grpclb_policy->channel_control_helper()->RequestReresolution();
|
1200
|
-
if (
|
1230
|
+
grpclb_policy()->lb_calld_.reset();
|
1231
|
+
GPR_ASSERT(!grpclb_policy()->shutting_down_);
|
1232
|
+
grpclb_policy()->channel_control_helper()->RequestReresolution();
|
1233
|
+
if (seen_initial_response_) {
|
1201
1234
|
// If we lose connection to the LB server, reset the backoff and restart
|
1202
1235
|
// the LB call immediately.
|
1203
|
-
grpclb_policy->lb_call_backoff_.Reset();
|
1204
|
-
grpclb_policy->StartBalancerCallLocked();
|
1236
|
+
grpclb_policy()->lb_call_backoff_.Reset();
|
1237
|
+
grpclb_policy()->StartBalancerCallLocked();
|
1205
1238
|
} else {
|
1206
1239
|
// If this LB call fails establishing any connection to the LB server,
|
1207
1240
|
// retry later.
|
1208
|
-
grpclb_policy->StartBalancerCallRetryTimerLocked();
|
1241
|
+
grpclb_policy()->StartBalancerCallRetryTimerLocked();
|
1209
1242
|
}
|
1210
1243
|
}
|
1211
|
-
|
1244
|
+
Unref(DEBUG_LOCATION, "lb_call_ended");
|
1212
1245
|
}
|
1213
1246
|
|
1214
1247
|
//
|
1215
1248
|
// helper code for creating balancer channel
|
1216
1249
|
//
|
1217
1250
|
|
1218
|
-
ServerAddressList ExtractBalancerAddresses(const
|
1219
|
-
ServerAddressList
|
1220
|
-
|
1221
|
-
|
1222
|
-
|
1223
|
-
// recursively use the grpclb policy in the channel used to talk to
|
1224
|
-
// the balancers. Note that we do NOT strip out the balancer_name
|
1225
|
-
// channel arg, since we need that to set the authority correctly
|
1226
|
-
// to talk to the balancers.
|
1227
|
-
static const char* args_to_remove[] = {
|
1228
|
-
GRPC_ARG_ADDRESS_IS_BALANCER,
|
1229
|
-
};
|
1230
|
-
balancer_addresses.emplace_back(
|
1231
|
-
addresses[i].address(),
|
1232
|
-
grpc_channel_args_copy_and_remove(addresses[i].args(), args_to_remove,
|
1233
|
-
GPR_ARRAY_SIZE(args_to_remove)));
|
1234
|
-
}
|
1235
|
-
}
|
1236
|
-
return balancer_addresses;
|
1251
|
+
ServerAddressList ExtractBalancerAddresses(const grpc_channel_args& args) {
|
1252
|
+
const ServerAddressList* addresses =
|
1253
|
+
FindGrpclbBalancerAddressesInChannelArgs(args);
|
1254
|
+
if (addresses != nullptr) return *addresses;
|
1255
|
+
return ServerAddressList();
|
1237
1256
|
}
|
1238
1257
|
|
1239
1258
|
/* Returns the channel args for the LB channel, used to create a bidirectional
|
1240
1259
|
* stream for the reception of load balancing updates.
|
1241
1260
|
*
|
1242
1261
|
* Inputs:
|
1243
|
-
* - \a addresses: corresponding to the balancers.
|
1244
1262
|
* - \a response_generator: in order to propagate updates from the resolver
|
1245
1263
|
* above the grpclb policy.
|
1246
1264
|
* - \a args: other args inherited from the grpclb policy. */
|
1247
1265
|
grpc_channel_args* BuildBalancerChannelArgs(
|
1248
|
-
const ServerAddressList& addresses,
|
1249
1266
|
FakeResolverResponseGenerator* response_generator,
|
1250
1267
|
const grpc_channel_args* args) {
|
1251
1268
|
// Channel args to remove.
|
@@ -1277,31 +1294,24 @@ grpc_channel_args* BuildBalancerChannelArgs(
|
|
1277
1294
|
GRPC_ARG_CHANNELZ_CHANNEL_NODE,
|
1278
1295
|
};
|
1279
1296
|
// Channel args to add.
|
1280
|
-
InlinedVector<grpc_arg, 3> args_to_add
|
1281
|
-
|
1282
|
-
|
1283
|
-
args_to_add.emplace_back(
|
1297
|
+
absl::InlinedVector<grpc_arg, 3> args_to_add = {
|
1298
|
+
// The fake resolver response generator, which we use to inject
|
1299
|
+
// address updates into the LB channel.
|
1284
1300
|
grpc_core::FakeResolverResponseGenerator::MakeChannelArg(
|
1285
|
-
response_generator)
|
1286
|
-
|
1287
|
-
|
1288
|
-
|
1289
|
-
|
1290
|
-
|
1291
|
-
|
1292
|
-
|
1293
|
-
if (arg != nullptr && arg->type == GRPC_ARG_POINTER &&
|
1294
|
-
arg->value.pointer.p != nullptr) {
|
1295
|
-
channelz_node = static_cast<channelz::ChannelNode*>(arg->value.pointer.p);
|
1296
|
-
args_to_add.emplace_back(
|
1297
|
-
channelz::MakeParentUuidArg(channelz_node->uuid()));
|
1298
|
-
}
|
1301
|
+
response_generator),
|
1302
|
+
// A channel arg indicating the target is a grpclb load balancer.
|
1303
|
+
grpc_channel_arg_integer_create(
|
1304
|
+
const_cast<char*>(GRPC_ARG_ADDRESS_IS_GRPCLB_LOAD_BALANCER), 1),
|
1305
|
+
// Tells channelz that this is an internal channel.
|
1306
|
+
grpc_channel_arg_integer_create(
|
1307
|
+
const_cast<char*>(GRPC_ARG_CHANNELZ_IS_INTERNAL_CHANNEL), 1),
|
1308
|
+
};
|
1299
1309
|
// Construct channel args.
|
1300
1310
|
grpc_channel_args* new_args = grpc_channel_args_copy_and_add_and_remove(
|
1301
1311
|
args, args_to_remove, GPR_ARRAY_SIZE(args_to_remove), args_to_add.data(),
|
1302
1312
|
args_to_add.size());
|
1303
1313
|
// Make any necessary modifications for security.
|
1304
|
-
return ModifyGrpclbBalancerChannelArgs(
|
1314
|
+
return ModifyGrpclbBalancerChannelArgs(new_args);
|
1305
1315
|
}
|
1306
1316
|
|
1307
1317
|
//
|
@@ -1319,19 +1329,23 @@ GrpcLb::GrpcLb(Args args)
|
|
1319
1329
|
.set_jitter(GRPC_GRPCLB_RECONNECT_JITTER)
|
1320
1330
|
.set_max_backoff(GRPC_GRPCLB_RECONNECT_MAX_BACKOFF_SECONDS *
|
1321
1331
|
1000)) {
|
1332
|
+
// Closure Initialization
|
1333
|
+
GRPC_CLOSURE_INIT(&lb_on_fallback_, &GrpcLb::OnFallbackTimer, this,
|
1334
|
+
grpc_schedule_on_exec_ctx);
|
1335
|
+
GRPC_CLOSURE_INIT(&lb_on_call_retry_, &GrpcLb::OnBalancerCallRetryTimer, this,
|
1336
|
+
grpc_schedule_on_exec_ctx);
|
1322
1337
|
// Record server name.
|
1323
1338
|
const grpc_arg* arg = grpc_channel_args_find(args.args, GRPC_ARG_SERVER_URI);
|
1324
1339
|
const char* server_uri = grpc_channel_arg_get_string(arg);
|
1325
1340
|
GPR_ASSERT(server_uri != nullptr);
|
1326
|
-
|
1327
|
-
GPR_ASSERT(uri->path
|
1328
|
-
server_name_ =
|
1341
|
+
absl::StatusOr<URI> uri = URI::Parse(server_uri);
|
1342
|
+
GPR_ASSERT(uri.ok() && !uri->path().empty());
|
1343
|
+
server_name_ = std::string(absl::StripPrefix(uri->path(), "/"));
|
1329
1344
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
1330
1345
|
gpr_log(GPR_INFO,
|
1331
1346
|
"[grpclb %p] Will use '%s' as the server name for LB request.",
|
1332
|
-
this, server_name_);
|
1347
|
+
this, server_name_.c_str());
|
1333
1348
|
}
|
1334
|
-
grpc_uri_destroy(uri);
|
1335
1349
|
// Record LB call timeout.
|
1336
1350
|
arg = grpc_channel_args_find(args.args, GRPC_ARG_GRPCLB_CALL_TIMEOUT_MS);
|
1337
1351
|
lb_call_timeout_ms_ = grpc_channel_arg_get_integer(arg, {0, 0, INT_MAX});
|
@@ -1341,10 +1355,7 @@ GrpcLb::GrpcLb(Args args)
|
|
1341
1355
|
arg, {GRPC_GRPCLB_DEFAULT_FALLBACK_TIMEOUT_MS, 0, INT_MAX});
|
1342
1356
|
}
|
1343
1357
|
|
1344
|
-
GrpcLb::~GrpcLb() {
|
1345
|
-
gpr_free((void*)server_name_);
|
1346
|
-
grpc_channel_args_destroy(args_);
|
1347
|
-
}
|
1358
|
+
GrpcLb::~GrpcLb() { grpc_channel_args_destroy(args_); }
|
1348
1359
|
|
1349
1360
|
void GrpcLb::ShutdownLocked() {
|
1350
1361
|
shutting_down_ = true;
|
@@ -1353,6 +1364,7 @@ void GrpcLb::ShutdownLocked() {
|
|
1353
1364
|
grpc_timer_cancel(&lb_call_retry_timer_);
|
1354
1365
|
}
|
1355
1366
|
if (fallback_at_startup_checks_pending_) {
|
1367
|
+
fallback_at_startup_checks_pending_ = false;
|
1356
1368
|
grpc_timer_cancel(&lb_fallback_timer_);
|
1357
1369
|
CancelBalancerChannelConnectivityWatchLocked();
|
1358
1370
|
}
|
@@ -1366,6 +1378,12 @@ void GrpcLb::ShutdownLocked() {
|
|
1366
1378
|
// OnBalancerChannelConnectivityChangedLocked(), and we need to be
|
1367
1379
|
// alive when that callback is invoked.
|
1368
1380
|
if (lb_channel_ != nullptr) {
|
1381
|
+
if (parent_channelz_node_ != nullptr) {
|
1382
|
+
channelz::ChannelNode* child_channelz_node =
|
1383
|
+
grpc_channel_get_channelz_node(lb_channel_);
|
1384
|
+
GPR_ASSERT(child_channelz_node != nullptr);
|
1385
|
+
parent_channelz_node_->RemoveChildChannel(child_channelz_node->uuid());
|
1386
|
+
}
|
1369
1387
|
grpc_channel_destroy(lb_channel_);
|
1370
1388
|
lb_channel_ = nullptr;
|
1371
1389
|
}
|
@@ -1386,12 +1404,8 @@ void GrpcLb::ResetBackoffLocked() {
|
|
1386
1404
|
|
1387
1405
|
void GrpcLb::UpdateLocked(UpdateArgs args) {
|
1388
1406
|
const bool is_initial_update = lb_channel_ == nullptr;
|
1389
|
-
|
1390
|
-
|
1391
|
-
child_policy_config_ = grpclb_config->child_policy();
|
1392
|
-
} else {
|
1393
|
-
child_policy_config_ = nullptr;
|
1394
|
-
}
|
1407
|
+
config_ = args.config;
|
1408
|
+
GPR_ASSERT(config_ != nullptr);
|
1395
1409
|
ProcessAddressesAndChannelArgsLocked(args.addresses, *args.args);
|
1396
1410
|
// Update the existing child policy.
|
1397
1411
|
if (child_policy_ != nullptr) CreateOrUpdateChildPolicyLocked();
|
@@ -1402,8 +1416,6 @@ void GrpcLb::UpdateLocked(UpdateArgs args) {
|
|
1402
1416
|
// Start timer.
|
1403
1417
|
grpc_millis deadline = ExecCtx::Get()->Now() + fallback_at_startup_timeout_;
|
1404
1418
|
Ref(DEBUG_LOCATION, "on_fallback_timer").release(); // Ref for callback
|
1405
|
-
GRPC_CLOSURE_INIT(&lb_on_fallback_, &GrpcLb::OnFallbackTimer, this,
|
1406
|
-
grpc_schedule_on_exec_ctx);
|
1407
1419
|
grpc_timer_init(&lb_fallback_timer_, deadline, &lb_on_fallback_);
|
1408
1420
|
// Start watching the channel's connectivity state. If the channel
|
1409
1421
|
// goes into state TRANSIENT_FAILURE before the timer fires, we go into
|
@@ -1412,15 +1424,10 @@ void GrpcLb::UpdateLocked(UpdateArgs args) {
|
|
1412
1424
|
grpc_channel_get_channel_stack(lb_channel_));
|
1413
1425
|
GPR_ASSERT(client_channel_elem->filter == &grpc_client_channel_filter);
|
1414
1426
|
// Ref held by callback.
|
1415
|
-
Ref(DEBUG_LOCATION, "
|
1416
|
-
|
1417
|
-
|
1418
|
-
|
1419
|
-
grpc_client_channel_watch_connectivity_state(
|
1420
|
-
client_channel_elem,
|
1421
|
-
grpc_polling_entity_create_from_pollset_set(interested_parties()),
|
1422
|
-
&lb_channel_connectivity_, &lb_channel_on_connectivity_changed_,
|
1423
|
-
nullptr);
|
1427
|
+
watcher_ = new StateWatcher(Ref(DEBUG_LOCATION, "StateWatcher"));
|
1428
|
+
grpc_client_channel_start_connectivity_watch(
|
1429
|
+
client_channel_elem, GRPC_CHANNEL_IDLE,
|
1430
|
+
OrphanablePtr<AsyncConnectivityStateWatcherInterface>(watcher_));
|
1424
1431
|
// Start balancer call.
|
1425
1432
|
StartBalancerCallLocked();
|
1426
1433
|
}
|
@@ -1430,46 +1437,49 @@ void GrpcLb::UpdateLocked(UpdateArgs args) {
|
|
1430
1437
|
// helpers for UpdateLocked()
|
1431
1438
|
//
|
1432
1439
|
|
1433
|
-
|
1434
|
-
|
1435
|
-
|
1436
|
-
|
1437
|
-
|
1438
|
-
|
1439
|
-
|
1440
|
-
for (size_t i = 0; i < addresses.size(); ++i) {
|
1441
|
-
if (!addresses[i].IsBalancer()) {
|
1442
|
-
backend_addresses.emplace_back(
|
1443
|
-
addresses[i].address(),
|
1444
|
-
grpc_channel_args_copy_and_add(addresses[i].args(), &arg, 1));
|
1445
|
-
}
|
1440
|
+
ServerAddressList GrpcLb::AddNullLbTokenToAddresses(
|
1441
|
+
const ServerAddressList& addresses) {
|
1442
|
+
ServerAddressList addresses_out;
|
1443
|
+
for (const ServerAddress& address : addresses) {
|
1444
|
+
addresses_out.emplace_back(address.WithAttribute(
|
1445
|
+
kGrpcLbAddressAttributeKey,
|
1446
|
+
absl::make_unique<TokenAndClientStatsAttribute>("", nullptr)));
|
1446
1447
|
}
|
1447
|
-
return
|
1448
|
+
return addresses_out;
|
1448
1449
|
}
|
1449
1450
|
|
1450
1451
|
void GrpcLb::ProcessAddressesAndChannelArgsLocked(
|
1451
1452
|
const ServerAddressList& addresses, const grpc_channel_args& args) {
|
1452
1453
|
// Update fallback address list.
|
1453
|
-
fallback_backend_addresses_ =
|
1454
|
+
fallback_backend_addresses_ = AddNullLbTokenToAddresses(addresses);
|
1454
1455
|
// Make sure that GRPC_ARG_LB_POLICY_NAME is set in channel args,
|
1455
1456
|
// since we use this to trigger the client_load_reporting filter.
|
1456
1457
|
static const char* args_to_remove[] = {GRPC_ARG_LB_POLICY_NAME};
|
1457
1458
|
grpc_arg new_arg = grpc_channel_arg_string_create(
|
1458
|
-
(
|
1459
|
+
const_cast<char*>(GRPC_ARG_LB_POLICY_NAME), const_cast<char*>("grpclb"));
|
1459
1460
|
grpc_channel_args_destroy(args_);
|
1460
1461
|
args_ = grpc_channel_args_copy_and_add_and_remove(
|
1461
1462
|
&args, args_to_remove, GPR_ARRAY_SIZE(args_to_remove), &new_arg, 1);
|
1462
1463
|
// Construct args for balancer channel.
|
1463
|
-
ServerAddressList balancer_addresses = ExtractBalancerAddresses(
|
1464
|
-
grpc_channel_args* lb_channel_args =
|
1465
|
-
|
1464
|
+
ServerAddressList balancer_addresses = ExtractBalancerAddresses(args);
|
1465
|
+
grpc_channel_args* lb_channel_args =
|
1466
|
+
BuildBalancerChannelArgs(response_generator_.get(), &args);
|
1466
1467
|
// Create balancer channel if needed.
|
1467
1468
|
if (lb_channel_ == nullptr) {
|
1468
|
-
|
1469
|
-
|
1470
|
-
|
1469
|
+
std::string uri_str = absl::StrCat("fake:///", server_name_);
|
1470
|
+
lb_channel_ =
|
1471
|
+
CreateGrpclbBalancerChannel(uri_str.c_str(), *lb_channel_args);
|
1471
1472
|
GPR_ASSERT(lb_channel_ != nullptr);
|
1472
|
-
|
1473
|
+
// Set up channelz linkage.
|
1474
|
+
channelz::ChannelNode* child_channelz_node =
|
1475
|
+
grpc_channel_get_channelz_node(lb_channel_);
|
1476
|
+
channelz::ChannelNode* parent_channelz_node =
|
1477
|
+
grpc_channel_args_find_pointer<channelz::ChannelNode>(
|
1478
|
+
&args, GRPC_ARG_CHANNELZ_CHANNEL_NODE);
|
1479
|
+
if (child_channelz_node != nullptr && parent_channelz_node != nullptr) {
|
1480
|
+
parent_channelz_node->AddChildChannel(child_channelz_node->uuid());
|
1481
|
+
parent_channelz_node_ = parent_channelz_node->Ref();
|
1482
|
+
}
|
1473
1483
|
}
|
1474
1484
|
// Propagate updates to the LB channel (pick_first) through the fake
|
1475
1485
|
// resolver.
|
@@ -1479,60 +1489,11 @@ void GrpcLb::ProcessAddressesAndChannelArgsLocked(
|
|
1479
1489
|
response_generator_->SetResponse(std::move(result));
|
1480
1490
|
}
|
1481
1491
|
|
1482
|
-
void GrpcLb::OnBalancerChannelConnectivityChanged(void* arg,
|
1483
|
-
grpc_error* error) {
|
1484
|
-
GrpcLb* self = static_cast<GrpcLb*>(arg);
|
1485
|
-
self->combiner()->Run(
|
1486
|
-
GRPC_CLOSURE_INIT(&self->lb_channel_on_connectivity_changed_,
|
1487
|
-
&GrpcLb::OnBalancerChannelConnectivityChangedLocked,
|
1488
|
-
self, nullptr),
|
1489
|
-
GRPC_ERROR_REF(error));
|
1490
|
-
}
|
1491
|
-
|
1492
|
-
void GrpcLb::OnBalancerChannelConnectivityChangedLocked(void* arg,
|
1493
|
-
grpc_error* /*error*/) {
|
1494
|
-
GrpcLb* self = static_cast<GrpcLb*>(arg);
|
1495
|
-
if (!self->shutting_down_ && self->fallback_at_startup_checks_pending_) {
|
1496
|
-
if (self->lb_channel_connectivity_ != GRPC_CHANNEL_TRANSIENT_FAILURE) {
|
1497
|
-
// Not in TRANSIENT_FAILURE. Renew connectivity watch.
|
1498
|
-
grpc_channel_element* client_channel_elem =
|
1499
|
-
grpc_channel_stack_last_element(
|
1500
|
-
grpc_channel_get_channel_stack(self->lb_channel_));
|
1501
|
-
GPR_ASSERT(client_channel_elem->filter == &grpc_client_channel_filter);
|
1502
|
-
GRPC_CLOSURE_INIT(&self->lb_channel_on_connectivity_changed_,
|
1503
|
-
&GrpcLb::OnBalancerChannelConnectivityChanged, self,
|
1504
|
-
grpc_schedule_on_exec_ctx);
|
1505
|
-
grpc_client_channel_watch_connectivity_state(
|
1506
|
-
client_channel_elem,
|
1507
|
-
grpc_polling_entity_create_from_pollset_set(
|
1508
|
-
self->interested_parties()),
|
1509
|
-
&self->lb_channel_connectivity_,
|
1510
|
-
&self->lb_channel_on_connectivity_changed_, nullptr);
|
1511
|
-
return; // Early out so we don't drop the ref below.
|
1512
|
-
}
|
1513
|
-
// In TRANSIENT_FAILURE. Cancel the fallback timer and go into
|
1514
|
-
// fallback mode immediately.
|
1515
|
-
gpr_log(GPR_INFO,
|
1516
|
-
"[grpclb %p] balancer channel in state TRANSIENT_FAILURE; "
|
1517
|
-
"entering fallback mode",
|
1518
|
-
self);
|
1519
|
-
self->fallback_at_startup_checks_pending_ = false;
|
1520
|
-
grpc_timer_cancel(&self->lb_fallback_timer_);
|
1521
|
-
self->fallback_mode_ = true;
|
1522
|
-
self->CreateOrUpdateChildPolicyLocked();
|
1523
|
-
}
|
1524
|
-
// Done watching connectivity state, so drop ref.
|
1525
|
-
self->Unref(DEBUG_LOCATION, "watch_lb_channel_connectivity");
|
1526
|
-
}
|
1527
|
-
|
1528
1492
|
void GrpcLb::CancelBalancerChannelConnectivityWatchLocked() {
|
1529
1493
|
grpc_channel_element* client_channel_elem = grpc_channel_stack_last_element(
|
1530
1494
|
grpc_channel_get_channel_stack(lb_channel_));
|
1531
1495
|
GPR_ASSERT(client_channel_elem->filter == &grpc_client_channel_filter);
|
1532
|
-
|
1533
|
-
client_channel_elem,
|
1534
|
-
grpc_polling_entity_create_from_pollset_set(interested_parties()),
|
1535
|
-
nullptr, &lb_channel_on_connectivity_changed_, nullptr);
|
1496
|
+
grpc_client_channel_stop_connectivity_watch(client_channel_elem, watcher_);
|
1536
1497
|
}
|
1537
1498
|
|
1538
1499
|
//
|
@@ -1571,33 +1532,30 @@ void GrpcLb::StartBalancerCallRetryTimerLocked() {
|
|
1571
1532
|
// with the callback.
|
1572
1533
|
auto self = Ref(DEBUG_LOCATION, "on_balancer_call_retry_timer");
|
1573
1534
|
self.release();
|
1574
|
-
GRPC_CLOSURE_INIT(&lb_on_call_retry_, &GrpcLb::OnBalancerCallRetryTimer, this,
|
1575
|
-
grpc_schedule_on_exec_ctx);
|
1576
1535
|
retry_timer_callback_pending_ = true;
|
1577
1536
|
grpc_timer_init(&lb_call_retry_timer_, next_try, &lb_on_call_retry_);
|
1578
1537
|
}
|
1579
1538
|
|
1580
1539
|
void GrpcLb::OnBalancerCallRetryTimer(void* arg, grpc_error* error) {
|
1581
1540
|
GrpcLb* grpclb_policy = static_cast<GrpcLb*>(arg);
|
1582
|
-
|
1583
|
-
|
1584
|
-
|
1585
|
-
|
1586
|
-
|
1541
|
+
GRPC_ERROR_REF(error); // ref owned by lambda
|
1542
|
+
grpclb_policy->work_serializer()->Run(
|
1543
|
+
[grpclb_policy, error]() {
|
1544
|
+
grpclb_policy->OnBalancerCallRetryTimerLocked(error);
|
1545
|
+
},
|
1546
|
+
DEBUG_LOCATION);
|
1587
1547
|
}
|
1588
1548
|
|
1589
|
-
void GrpcLb::OnBalancerCallRetryTimerLocked(
|
1590
|
-
|
1591
|
-
|
1592
|
-
if (!grpclb_policy->shutting_down_ && error == GRPC_ERROR_NONE &&
|
1593
|
-
grpclb_policy->lb_calld_ == nullptr) {
|
1549
|
+
void GrpcLb::OnBalancerCallRetryTimerLocked(grpc_error* error) {
|
1550
|
+
retry_timer_callback_pending_ = false;
|
1551
|
+
if (!shutting_down_ && error == GRPC_ERROR_NONE && lb_calld_ == nullptr) {
|
1594
1552
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
1595
|
-
gpr_log(GPR_INFO, "[grpclb %p] Restarting call to LB server",
|
1596
|
-
grpclb_policy);
|
1553
|
+
gpr_log(GPR_INFO, "[grpclb %p] Restarting call to LB server", this);
|
1597
1554
|
}
|
1598
|
-
|
1555
|
+
StartBalancerCallLocked();
|
1599
1556
|
}
|
1600
|
-
|
1557
|
+
Unref(DEBUG_LOCATION, "on_balancer_call_retry_timer");
|
1558
|
+
GRPC_ERROR_UNREF(error);
|
1601
1559
|
}
|
1602
1560
|
|
1603
1561
|
//
|
@@ -1624,28 +1582,28 @@ void GrpcLb::MaybeEnterFallbackModeAfterStartup() {
|
|
1624
1582
|
|
1625
1583
|
void GrpcLb::OnFallbackTimer(void* arg, grpc_error* error) {
|
1626
1584
|
GrpcLb* grpclb_policy = static_cast<GrpcLb*>(arg);
|
1627
|
-
|
1628
|
-
|
1629
|
-
|
1630
|
-
|
1585
|
+
GRPC_ERROR_REF(error); // ref owned by lambda
|
1586
|
+
grpclb_policy->work_serializer()->Run(
|
1587
|
+
[grpclb_policy, error]() { grpclb_policy->OnFallbackTimerLocked(error); },
|
1588
|
+
DEBUG_LOCATION);
|
1631
1589
|
}
|
1632
1590
|
|
1633
|
-
void GrpcLb::OnFallbackTimerLocked(
|
1634
|
-
GrpcLb* grpclb_policy = static_cast<GrpcLb*>(arg);
|
1591
|
+
void GrpcLb::OnFallbackTimerLocked(grpc_error* error) {
|
1635
1592
|
// If we receive a serverlist after the timer fires but before this callback
|
1636
1593
|
// actually runs, don't fall back.
|
1637
|
-
if (
|
1638
|
-
|
1594
|
+
if (fallback_at_startup_checks_pending_ && !shutting_down_ &&
|
1595
|
+
error == GRPC_ERROR_NONE) {
|
1639
1596
|
gpr_log(GPR_INFO,
|
1640
1597
|
"[grpclb %p] No response from balancer after fallback timeout; "
|
1641
1598
|
"entering fallback mode",
|
1642
|
-
|
1643
|
-
|
1644
|
-
|
1645
|
-
|
1646
|
-
|
1599
|
+
this);
|
1600
|
+
fallback_at_startup_checks_pending_ = false;
|
1601
|
+
CancelBalancerChannelConnectivityWatchLocked();
|
1602
|
+
fallback_mode_ = true;
|
1603
|
+
CreateOrUpdateChildPolicyLocked();
|
1647
1604
|
}
|
1648
|
-
|
1605
|
+
Unref(DEBUG_LOCATION, "on_fallback_timer");
|
1606
|
+
GRPC_ERROR_UNREF(error);
|
1649
1607
|
}
|
1650
1608
|
|
1651
1609
|
//
|
@@ -1654,7 +1612,7 @@ void GrpcLb::OnFallbackTimerLocked(void* arg, grpc_error* error) {
|
|
1654
1612
|
|
1655
1613
|
grpc_channel_args* GrpcLb::CreateChildPolicyArgsLocked(
|
1656
1614
|
bool is_backend_from_grpclb_load_balancer) {
|
1657
|
-
InlinedVector<grpc_arg, 2> args_to_add;
|
1615
|
+
absl::InlinedVector<grpc_arg, 2> args_to_add;
|
1658
1616
|
args_to_add.emplace_back(grpc_channel_arg_integer_create(
|
1659
1617
|
const_cast<char*>(GRPC_ARG_ADDRESS_IS_BACKEND_FROM_GRPCLB_LOAD_BALANCER),
|
1660
1618
|
is_backend_from_grpclb_load_balancer));
|
@@ -1669,7 +1627,7 @@ grpc_channel_args* GrpcLb::CreateChildPolicyArgsLocked(
|
|
1669
1627
|
OrphanablePtr<LoadBalancingPolicy> GrpcLb::CreateChildPolicyLocked(
|
1670
1628
|
const grpc_channel_args* args) {
|
1671
1629
|
LoadBalancingPolicy::Args lb_policy_args;
|
1672
|
-
lb_policy_args.
|
1630
|
+
lb_policy_args.work_serializer = work_serializer();
|
1673
1631
|
lb_policy_args.args = args;
|
1674
1632
|
lb_policy_args.channel_control_helper = absl::make_unique<Helper>(Ref());
|
1675
1633
|
OrphanablePtr<LoadBalancingPolicy> lb_policy =
|
@@ -1707,7 +1665,7 @@ void GrpcLb::CreateOrUpdateChildPolicyLocked() {
|
|
1707
1665
|
update_args.args =
|
1708
1666
|
CreateChildPolicyArgsLocked(is_backend_from_grpclb_load_balancer);
|
1709
1667
|
GPR_ASSERT(update_args.args != nullptr);
|
1710
|
-
update_args.config =
|
1668
|
+
update_args.config = config_->child_policy();
|
1711
1669
|
// Create child policy if needed.
|
1712
1670
|
if (child_policy_ == nullptr) {
|
1713
1671
|
child_policy_ = CreateChildPolicyLocked(update_args.args);
|
@@ -1737,12 +1695,23 @@ class GrpcLbFactory : public LoadBalancingPolicyFactory {
|
|
1737
1695
|
const Json& json, grpc_error** error) const override {
|
1738
1696
|
GPR_DEBUG_ASSERT(error != nullptr && *error == GRPC_ERROR_NONE);
|
1739
1697
|
if (json.type() == Json::Type::JSON_NULL) {
|
1740
|
-
return MakeRefCounted<GrpcLbConfig>(nullptr);
|
1698
|
+
return MakeRefCounted<GrpcLbConfig>(nullptr, "");
|
1741
1699
|
}
|
1742
1700
|
std::vector<grpc_error*> error_list;
|
1743
1701
|
Json child_policy_config_json_tmp;
|
1744
1702
|
const Json* child_policy_config_json;
|
1745
|
-
|
1703
|
+
std::string service_name;
|
1704
|
+
auto it = json.object_value().find("serviceName");
|
1705
|
+
if (it != json.object_value().end()) {
|
1706
|
+
const Json& service_name_json = it->second;
|
1707
|
+
if (service_name_json.type() != Json::Type::STRING) {
|
1708
|
+
error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
1709
|
+
"field:serviceName error:type should be string"));
|
1710
|
+
} else {
|
1711
|
+
service_name = service_name_json.string_value();
|
1712
|
+
}
|
1713
|
+
}
|
1714
|
+
it = json.object_value().find("childPolicy");
|
1746
1715
|
if (it == json.object_value().end()) {
|
1747
1716
|
child_policy_config_json_tmp = Json::Array{Json::Object{
|
1748
1717
|
{"round_robin", Json::Object()},
|
@@ -1762,7 +1731,8 @@ class GrpcLbFactory : public LoadBalancingPolicyFactory {
|
|
1762
1731
|
GRPC_ERROR_CREATE_FROM_VECTOR("field:childPolicy", &child_errors));
|
1763
1732
|
}
|
1764
1733
|
if (error_list.empty()) {
|
1765
|
-
return MakeRefCounted<GrpcLbConfig>(std::move(child_policy_config)
|
1734
|
+
return MakeRefCounted<GrpcLbConfig>(std::move(child_policy_config),
|
1735
|
+
std::move(service_name));
|
1766
1736
|
} else {
|
1767
1737
|
*error = GRPC_ERROR_CREATE_FROM_VECTOR("GrpcLb Parser", &error_list);
|
1768
1738
|
return nullptr;
|
@@ -1795,7 +1765,8 @@ bool maybe_add_client_load_reporting_filter(grpc_channel_stack_builder* builder,
|
|
1795
1765
|
// will minimize the number of metadata elements that the filter
|
1796
1766
|
// needs to iterate through to find the ClientStats object.
|
1797
1767
|
return grpc_channel_stack_builder_prepend_filter(
|
1798
|
-
builder,
|
1768
|
+
builder, static_cast<const grpc_channel_filter*>(arg), nullptr,
|
1769
|
+
nullptr);
|
1799
1770
|
}
|
1800
1771
|
return true;
|
1801
1772
|
}
|
@@ -1806,10 +1777,10 @@ void grpc_lb_policy_grpclb_init() {
|
|
1806
1777
|
grpc_core::LoadBalancingPolicyRegistry::Builder::
|
1807
1778
|
RegisterLoadBalancingPolicyFactory(
|
1808
1779
|
absl::make_unique<grpc_core::GrpcLbFactory>());
|
1809
|
-
grpc_channel_init_register_stage(
|
1810
|
-
|
1811
|
-
|
1812
|
-
|
1780
|
+
grpc_channel_init_register_stage(
|
1781
|
+
GRPC_CLIENT_SUBCHANNEL, GRPC_CHANNEL_INIT_BUILTIN_PRIORITY,
|
1782
|
+
maybe_add_client_load_reporting_filter,
|
1783
|
+
const_cast<grpc_channel_filter*>(&grpc_client_load_reporting_filter));
|
1813
1784
|
}
|
1814
1785
|
|
1815
1786
|
void grpc_lb_policy_grpclb_shutdown() {}
|