grpc 1.26.0 → 1.30.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 +7860 -11139
- data/etc/roots.pem +44 -0
- data/include/grpc/grpc.h +2 -2
- data/include/grpc/grpc_security.h +59 -24
- data/include/grpc/grpc_security_constants.h +28 -0
- data/include/grpc/impl/codegen/grpc_types.h +38 -21
- data/include/grpc/impl/codegen/port_platform.h +14 -3
- data/include/grpc/impl/codegen/sync.h +5 -3
- data/include/grpc/impl/codegen/sync_abseil.h +36 -0
- data/include/grpc/module.modulemap +25 -37
- data/include/grpc/support/sync_abseil.h +26 -0
- data/src/core/ext/filters/client_channel/backend_metric.cc +7 -4
- data/src/core/ext/filters/client_channel/client_channel.cc +273 -264
- data/src/core/ext/filters/client_channel/client_channel_channelz.cc +31 -47
- data/src/core/ext/filters/client_channel/client_channel_channelz.h +1 -3
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +3 -2
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +7 -22
- data/src/core/ext/filters/client_channel/health/health_check_client.h +3 -3
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +1 -1
- data/src/core/ext/filters/client_channel/http_proxy.cc +25 -15
- data/src/core/ext/filters/client_channel/lb_policy.cc +20 -18
- data/src/core/ext/filters/client_channel/lb_policy.h +42 -33
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +83 -0
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +99 -0
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +297 -0
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +83 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +423 -627
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +89 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +40 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +11 -9
- 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 +88 -121
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +28 -57
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +18 -21
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +871 -0
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +10 -14
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +5 -11
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +734 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +150 -101
- data/src/core/ext/filters/client_channel/lb_policy/xds/eds.cc +938 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/lrs.cc +528 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +1 -2
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_routing.cc +834 -0
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +3 -3
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +49 -77
- data/src/core/ext/filters/client_channel/lb_policy_registry.h +1 -1
- data/src/core/ext/filters/client_channel/local_subchannel_pool.h +2 -1
- data/src/core/ext/filters/client_channel/parse_address.cc +22 -21
- data/src/core/ext/filters/client_channel/resolver.cc +5 -8
- data/src/core/ext/filters/client_channel/resolver.h +12 -14
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +129 -128
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.cc +35 -35
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +8 -7
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +17 -21
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +5 -5
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +72 -117
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +186 -135
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +5 -3
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc +7 -4
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +42 -45
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +94 -103
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +0 -4
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +5 -5
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +61 -10
- data/src/core/ext/filters/client_channel/resolver_factory.h +2 -2
- data/src/core/ext/filters/client_channel/resolver_registry.cc +6 -3
- data/src/core/ext/filters/client_channel/resolver_registry.h +8 -8
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +242 -300
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +21 -18
- data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +56 -206
- data/src/core/ext/filters/client_channel/resolving_lb_policy.h +11 -14
- data/src/core/ext/filters/client_channel/server_address.cc +6 -9
- data/src/core/ext/filters/client_channel/server_address.h +6 -12
- data/src/core/ext/filters/client_channel/service_config.cc +144 -253
- data/src/core/ext/filters/client_channel/service_config.h +32 -109
- data/src/core/ext/filters/client_channel/service_config_call_data.h +68 -0
- data/src/core/ext/filters/client_channel/service_config_parser.cc +87 -0
- data/src/core/ext/filters/client_channel/service_config_parser.h +89 -0
- data/src/core/ext/filters/client_channel/subchannel.cc +54 -24
- data/src/core/ext/filters/client_channel/subchannel.h +35 -11
- data/src/core/ext/filters/client_channel/xds/xds_api.cc +1556 -232
- data/src/core/ext/filters/client_channel/xds/xds_api.h +213 -114
- data/src/core/ext/filters/client_channel/xds/xds_bootstrap.cc +237 -345
- data/src/core/ext/filters/client_channel/xds/xds_bootstrap.h +34 -46
- data/src/core/ext/filters/client_channel/xds/xds_channel.h +3 -1
- data/src/core/ext/filters/client_channel/xds/xds_channel_secure.cc +18 -11
- data/src/core/ext/filters/client_channel/xds/xds_client.cc +1326 -399
- data/src/core/ext/filters/client_channel/xds/xds_client.h +124 -41
- data/src/core/ext/filters/client_channel/xds/xds_client_stats.cc +59 -138
- data/src/core/ext/filters/client_channel/xds/xds_client_stats.h +133 -154
- data/src/core/ext/filters/http/client/http_client_filter.cc +23 -28
- data/src/core/ext/filters/http/client_authority_filter.cc +4 -4
- data/src/core/ext/filters/http/http_filters_plugin.cc +27 -12
- 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 +358 -0
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.h +29 -0
- data/src/core/ext/filters/message_size/message_size_filter.cc +38 -44
- data/src/core/ext/filters/message_size/message_size_filter.h +5 -5
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +7 -10
- data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +4 -6
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +28 -29
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +1 -0
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +3 -3
- data/src/core/ext/transport/chttp2/transport/frame_goaway.h +2 -3
- data/src/core/ext/transport/chttp2/transport/frame_ping.h +2 -3
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +2 -3
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +2 -3
- data/src/core/ext/transport/chttp2/transport/frame_window_update.h +2 -3
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +29 -16
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +2 -3
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +2 -3
- 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 +14 -21
- data/src/core/ext/transport/chttp2/transport/stream_map.h +2 -3
- data/src/core/ext/transport/chttp2/transport/writing.cc +16 -9
- data/src/core/ext/transport/inproc/inproc_transport.cc +41 -42
- data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c +17 -0
- data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +30 -0
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +27 -0
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +54 -0
- data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.c +5 -205
- data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.h +5 -788
- data/src/core/ext/upb-generated/envoy/api/v2/auth/common.upb.c +114 -0
- data/src/core/ext/upb-generated/envoy/api/v2/auth/common.upb.h +418 -0
- data/src/core/ext/upb-generated/envoy/api/v2/auth/secret.upb.c +72 -0
- data/src/core/ext/upb-generated/envoy/api/v2/auth/secret.upb.h +197 -0
- data/src/core/ext/upb-generated/envoy/api/v2/auth/tls.upb.c +105 -0
- data/src/core/ext/upb-generated/envoy/api/v2/auth/tls.upb.h +378 -0
- data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.c +5 -362
- data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.h +14 -1337
- data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.c +403 -0
- data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.h +1447 -0
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.c +30 -8
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.h +60 -0
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/filter.upb.c +2 -0
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/outlier_detection.upb.c +2 -0
- data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.c +7 -4
- data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/api/v2/core/backoff.upb.c +35 -0
- data/src/core/ext/upb-generated/envoy/api/v2/core/backoff.upb.h +78 -0
- data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.c +87 -23
- data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.h +262 -62
- data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.c +20 -15
- data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.h +46 -32
- data/src/core/ext/upb-generated/envoy/api/v2/core/event_service_config.upb.c +34 -0
- data/src/core/ext/upb-generated/envoy/api/v2/core/event_service_config.upb.h +72 -0
- data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.c +27 -4
- data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.h +70 -0
- data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.c +46 -25
- data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.h +98 -25
- data/src/core/ext/upb-generated/envoy/api/v2/core/http_uri.upb.c +2 -0
- data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.c +77 -21
- data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.h +201 -4
- data/src/core/ext/upb-generated/envoy/api/v2/core/socket_option.upb.c +34 -0
- data/src/core/ext/upb-generated/envoy/api/v2/core/socket_option.upb.h +89 -0
- data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.c +2 -0
- data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.c +8 -68
- data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.h +14 -201
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.c +92 -0
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.h +240 -0
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.c +2 -71
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.h +3 -228
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.c +91 -0
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.h +266 -0
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.c +2 -0
- data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.c +31 -0
- data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.h +53 -0
- data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.c +109 -0
- data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.h +399 -0
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.c +18 -0
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.h +33 -0
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.c +145 -0
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.h +527 -0
- data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.c +43 -0
- data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.h +112 -0
- data/src/core/ext/upb-generated/envoy/api/v2/rds.upb.c +30 -0
- data/src/core/ext/upb-generated/envoy/api/v2/rds.upb.h +53 -0
- data/src/core/ext/upb-generated/envoy/api/v2/route.upb.c +63 -0
- data/src/core/ext/upb-generated/envoy/api/v2/route.upb.h +199 -0
- data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.c +18 -0
- data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.h +33 -0
- data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.c +815 -0
- data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.h +3032 -0
- data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.c +59 -0
- data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.h +134 -0
- data/src/core/ext/upb-generated/envoy/api/v2/srds.upb.c +28 -0
- data/src/core/ext/upb-generated/envoy/api/v2/srds.upb.h +53 -0
- data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.c +228 -0
- data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.h +725 -0
- data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.c +316 -0
- data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.h +1132 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.c +33 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.h +65 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v2/http_tracer.upb.c +51 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v2/http_tracer.upb.h +125 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/v2/ads.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.c +4 -2
- data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.h +4 -0
- data/src/core/ext/upb-generated/envoy/type/http.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.c +63 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.h +144 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.c +53 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.h +133 -0
- data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.c +88 -0
- data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.h +258 -0
- data/src/core/ext/upb-generated/envoy/type/percent.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/type/range.upb.c +12 -0
- data/src/core/ext/upb-generated/envoy/type/range.upb.h +27 -0
- data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.c +29 -0
- data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.h +62 -0
- data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.c +89 -0
- data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.h +249 -0
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +9 -8
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +30 -24
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +30 -27
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +64 -52
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +13 -5
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +34 -0
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +48 -0
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +104 -0
- data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c +17 -0
- data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +30 -0
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +28 -0
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +65 -0
- data/src/core/ext/upb-generated/validate/validate.upb.c +44 -39
- data/src/core/ext/upb-generated/validate/validate.upb.h +155 -119
- data/src/core/lib/channel/channel_args.cc +15 -14
- data/src/core/lib/channel/channel_args.h +3 -1
- data/src/core/lib/channel/channel_stack.h +20 -13
- data/src/core/lib/channel/channel_trace.cc +32 -41
- data/src/core/lib/channel/channel_trace.h +3 -3
- data/src/core/lib/channel/channelz.cc +163 -254
- data/src/core/lib/channel/channelz.h +20 -12
- data/src/core/lib/channel/channelz_registry.cc +52 -77
- data/src/core/lib/channel/channelz_registry.h +4 -4
- 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 +11 -13
- data/src/core/lib/channel/handshaker.h +4 -2
- data/src/core/lib/channel/handshaker_registry.cc +5 -17
- data/src/core/lib/channel/status_util.cc +2 -3
- data/src/core/lib/compression/message_compress.cc +5 -1
- data/src/core/lib/debug/stats.cc +21 -27
- data/src/core/lib/debug/stats.h +3 -1
- data/src/core/lib/gpr/spinlock.h +2 -3
- data/src/core/lib/gpr/string.cc +2 -26
- data/src/core/lib/gpr/string.h +0 -16
- data/src/core/lib/gpr/sync_abseil.cc +116 -0
- data/src/core/lib/gpr/sync_posix.cc +8 -5
- data/src/core/lib/gpr/sync_windows.cc +4 -2
- data/src/core/lib/gpr/time.cc +4 -0
- data/src/core/lib/gpr/time_posix.cc +1 -1
- data/src/core/lib/gpr/time_precise.cc +1 -1
- data/src/core/lib/gprpp/atomic.h +6 -6
- data/src/core/lib/gprpp/fork.cc +1 -1
- data/src/core/lib/gprpp/host_port.cc +30 -36
- data/src/core/lib/gprpp/host_port.h +14 -17
- data/src/core/lib/gprpp/map.h +5 -11
- data/src/core/lib/gprpp/memory.h +2 -6
- data/src/core/lib/gprpp/ref_counted_ptr.h +5 -0
- data/src/core/lib/gprpp/sync.h +9 -0
- data/src/core/lib/http/format_request.cc +46 -65
- data/src/core/lib/http/httpcli.cc +2 -3
- data/src/core/lib/http/httpcli.h +2 -3
- data/src/core/lib/http/httpcli_security_connector.cc +5 -5
- data/src/core/lib/http/parser.h +2 -3
- data/src/core/lib/iomgr/buffer_list.cc +36 -35
- data/src/core/lib/iomgr/buffer_list.h +22 -21
- data/src/core/lib/iomgr/call_combiner.h +3 -2
- data/src/core/lib/iomgr/cfstream_handle.cc +3 -2
- data/src/core/lib/iomgr/closure.h +2 -3
- data/src/core/lib/iomgr/dualstack_socket_posix.cc +47 -0
- data/src/core/lib/iomgr/endpoint_cfstream.cc +2 -3
- data/src/core/lib/iomgr/endpoint_pair.h +2 -3
- data/src/core/lib/iomgr/error.cc +6 -9
- data/src/core/lib/iomgr/error.h +4 -5
- data/src/core/lib/iomgr/ev_apple.cc +356 -0
- data/src/core/lib/iomgr/ev_apple.h +43 -0
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +20 -23
- data/src/core/lib/iomgr/ev_epollex_linux.cc +14 -7
- data/src/core/lib/iomgr/ev_poll_posix.cc +3 -3
- data/src/core/lib/iomgr/ev_posix.cc +2 -3
- data/src/core/lib/iomgr/exec_ctx.h +14 -2
- data/src/core/lib/iomgr/executor.cc +1 -1
- data/src/core/lib/iomgr/fork_posix.cc +4 -0
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +84 -20
- data/src/core/lib/iomgr/load_file.cc +1 -0
- data/src/core/lib/iomgr/poller/eventmanager_libuv.cc +87 -0
- data/src/core/lib/iomgr/poller/eventmanager_libuv.h +88 -0
- data/src/core/lib/iomgr/pollset_set_custom.cc +10 -10
- data/src/core/lib/iomgr/pollset_uv.h +32 -0
- data/src/core/lib/iomgr/port.h +1 -0
- data/src/core/lib/iomgr/python_util.h +46 -0
- data/src/core/lib/iomgr/resolve_address.h +4 -6
- data/src/core/lib/iomgr/resolve_address_custom.cc +29 -39
- data/src/core/lib/iomgr/resolve_address_custom.h +4 -2
- data/src/core/lib/iomgr/resolve_address_posix.cc +10 -11
- data/src/core/lib/iomgr/resolve_address_windows.cc +8 -17
- data/src/core/lib/iomgr/resource_quota.cc +4 -6
- data/src/core/lib/iomgr/sockaddr_utils.cc +23 -29
- data/src/core/lib/iomgr/sockaddr_utils.h +9 -14
- data/src/core/lib/iomgr/socket_factory_posix.h +2 -3
- data/src/core/lib/iomgr/socket_mutator.h +2 -3
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +21 -26
- data/src/core/lib/iomgr/socket_utils_posix.h +15 -0
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +5 -7
- data/src/core/lib/iomgr/tcp_client_posix.cc +25 -22
- data/src/core/lib/iomgr/tcp_client_posix.h +6 -6
- data/src/core/lib/iomgr/tcp_client_windows.cc +2 -3
- data/src/core/lib/iomgr/tcp_custom.cc +2 -3
- data/src/core/lib/iomgr/tcp_custom.h +3 -0
- data/src/core/lib/iomgr/tcp_posix.cc +608 -56
- data/src/core/lib/iomgr/tcp_server_custom.cc +20 -11
- data/src/core/lib/iomgr/tcp_server_posix.cc +5 -4
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +13 -4
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +8 -11
- data/src/core/lib/iomgr/tcp_uv.cc +3 -2
- data/src/core/lib/iomgr/time_averaged_stats.h +2 -3
- data/src/core/lib/iomgr/timer_generic.cc +2 -3
- data/src/core/lib/iomgr/timer_generic.h +39 -0
- data/src/core/lib/iomgr/timer_heap.h +2 -3
- data/src/core/lib/iomgr/udp_server.cc +9 -14
- data/src/core/lib/iomgr/work_serializer.cc +155 -0
- data/src/core/lib/iomgr/work_serializer.h +65 -0
- data/src/core/lib/json/json.h +209 -68
- data/src/core/lib/json/json_reader.cc +511 -319
- data/src/core/lib/json/json_writer.cc +202 -110
- data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +1 -1
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +19 -0
- data/src/core/lib/security/credentials/composite/composite_credentials.h +11 -4
- data/src/core/lib/security/credentials/credentials.cc +0 -84
- data/src/core/lib/security/credentials/credentials.h +18 -60
- data/src/core/lib/security/credentials/fake/fake_credentials.h +6 -1
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +9 -12
- 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/jwt/json_token.cc +26 -56
- data/src/core/lib/security/credentials/jwt/json_token.h +4 -6
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +8 -18
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +12 -0
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +151 -168
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +4 -6
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +92 -61
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +10 -4
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +19 -4
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +4 -1
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +43 -13
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +47 -11
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +128 -0
- data/src/core/lib/security/credentials/tls/tls_credentials.h +62 -0
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +34 -6
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +29 -9
- data/src/core/lib/security/security_connector/load_system_roots_fallback.cc +2 -2
- data/src/core/lib/security/security_connector/load_system_roots_linux.cc +5 -4
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +32 -7
- data/src/core/lib/security/security_connector/security_connector.h +1 -1
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +20 -37
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +4 -6
- data/src/core/lib/security/security_connector/ssl_utils.cc +107 -16
- data/src/core/lib/security/security_connector/ssl_utils.h +24 -11
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +603 -0
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +183 -0
- data/src/core/lib/security/transport/client_auth_filter.cc +34 -2
- data/src/core/lib/security/transport/security_handshaker.cc +2 -2
- data/src/core/lib/security/util/json_util.cc +22 -15
- data/src/core/lib/security/util/json_util.h +2 -2
- data/src/core/lib/slice/slice_intern.cc +2 -3
- data/src/core/lib/slice/slice_internal.h +14 -0
- 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 +2 -3
- data/src/core/lib/surface/call_log_batch.cc +50 -58
- data/src/core/lib/surface/channel.cc +53 -31
- data/src/core/lib/surface/channel.h +35 -4
- data/src/core/lib/surface/channel_ping.cc +2 -3
- data/src/core/lib/surface/completion_queue.cc +55 -34
- 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_secure.cc +1 -4
- data/src/core/lib/surface/server.cc +570 -369
- data/src/core/lib/surface/server.h +32 -0
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/byte_stream.h +7 -2
- data/src/core/lib/transport/connectivity_state.cc +7 -6
- data/src/core/lib/transport/connectivity_state.h +5 -3
- data/src/core/lib/transport/metadata.cc +3 -3
- data/src/core/lib/transport/metadata_batch.h +2 -3
- data/src/core/lib/transport/static_metadata.h +1 -1
- data/src/core/lib/transport/status_conversion.cc +6 -14
- data/src/core/lib/transport/transport.cc +2 -3
- data/src/core/lib/transport/transport.h +3 -2
- data/src/core/lib/transport/transport_op_string.cc +61 -102
- data/src/core/lib/uri/uri_parser.h +2 -3
- data/src/core/plugin_registry/grpc_plugin_registry.cc +20 -4
- data/src/core/tsi/alts/crypt/aes_gcm.cc +0 -2
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +9 -2
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +8 -4
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +44 -4
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +10 -2
- 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_zero_copy_grpc_protector.cc +3 -3
- data/src/core/tsi/fake_transport_security.cc +17 -18
- data/src/core/tsi/fake_transport_security.h +2 -0
- 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.h +0 -2
- data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +1 -1
- data/src/core/tsi/ssl_transport_security.cc +197 -47
- data/src/core/tsi/ssl_transport_security.h +23 -9
- data/src/core/tsi/ssl_types.h +0 -2
- data/src/core/tsi/transport_security.cc +13 -0
- data/src/core/tsi/transport_security.h +6 -9
- data/src/core/tsi/transport_security_grpc.cc +2 -2
- data/src/core/tsi/transport_security_grpc.h +4 -5
- data/src/core/tsi/transport_security_interface.h +15 -3
- data/src/ruby/bin/math_pb.rb +5 -5
- data/src/ruby/ext/grpc/rb_call.c +9 -1
- data/src/ruby/ext/grpc/rb_call_credentials.c +4 -1
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +2 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +4 -1
- 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/interceptors.rb +4 -4
- 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_pb.rb +3 -3
- data/src/ruby/pb/src/proto/grpc/testing/empty_pb.rb +1 -1
- data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +34 -13
- data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +16 -0
- data/src/ruby/spec/debug_message_spec.rb +134 -0
- data/src/ruby/spec/generic/service_spec.rb +2 -0
- data/src/ruby/spec/pb/codegen/grpc/testing/package_options_ruby_style.proto +5 -0
- data/src/ruby/spec/pb/codegen/package_option_spec.rb +2 -0
- 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/third_party/abseil-cpp/absl/algorithm/algorithm.h +159 -0
- data/third_party/abseil-cpp/absl/base/attributes.h +621 -0
- data/third_party/abseil-cpp/absl/base/call_once.h +226 -0
- data/third_party/abseil-cpp/absl/base/casts.h +184 -0
- data/third_party/abseil-cpp/absl/base/config.h +671 -0
- data/third_party/abseil-cpp/absl/base/const_init.h +76 -0
- data/third_party/abseil-cpp/absl/base/dynamic_annotations.cc +129 -0
- data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +389 -0
- data/third_party/abseil-cpp/absl/base/internal/atomic_hook.h +200 -0
- data/third_party/abseil-cpp/absl/base/internal/bits.h +218 -0
- data/third_party/abseil-cpp/absl/base/internal/cycleclock.cc +107 -0
- data/third_party/abseil-cpp/absl/base/internal/cycleclock.h +94 -0
- data/third_party/abseil-cpp/absl/base/internal/endian.h +266 -0
- data/third_party/abseil-cpp/absl/base/internal/errno_saver.h +43 -0
- data/third_party/abseil-cpp/absl/base/internal/hide_ptr.h +51 -0
- data/third_party/abseil-cpp/absl/base/internal/identity.h +37 -0
- data/third_party/abseil-cpp/absl/base/internal/inline_variable.h +107 -0
- data/third_party/abseil-cpp/absl/base/internal/invoke.h +187 -0
- data/third_party/abseil-cpp/absl/base/internal/low_level_scheduling.h +107 -0
- data/third_party/abseil-cpp/absl/base/internal/per_thread_tls.h +52 -0
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +240 -0
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +183 -0
- data/third_party/abseil-cpp/absl/base/internal/scheduling_mode.h +58 -0
- data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +233 -0
- data/third_party/abseil-cpp/absl/base/internal/spinlock.h +243 -0
- data/third_party/abseil-cpp/absl/base/internal/spinlock_akaros.inc +35 -0
- data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +66 -0
- data/third_party/abseil-cpp/absl/base/internal/spinlock_posix.inc +46 -0
- data/third_party/abseil-cpp/absl/base/internal/spinlock_wait.cc +81 -0
- data/third_party/abseil-cpp/absl/base/internal/spinlock_wait.h +93 -0
- data/third_party/abseil-cpp/absl/base/internal/spinlock_win32.inc +37 -0
- data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +416 -0
- data/third_party/abseil-cpp/absl/base/internal/sysinfo.h +66 -0
- data/third_party/abseil-cpp/absl/base/internal/thread_annotations.h +271 -0
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +152 -0
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +259 -0
- data/third_party/abseil-cpp/absl/base/internal/throw_delegate.cc +108 -0
- data/third_party/abseil-cpp/absl/base/internal/throw_delegate.h +75 -0
- data/third_party/abseil-cpp/absl/base/internal/tsan_mutex_interface.h +66 -0
- data/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +158 -0
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +140 -0
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +124 -0
- data/third_party/abseil-cpp/absl/base/log_severity.cc +27 -0
- data/third_party/abseil-cpp/absl/base/log_severity.h +121 -0
- data/third_party/abseil-cpp/absl/base/macros.h +220 -0
- data/third_party/abseil-cpp/absl/base/optimization.h +181 -0
- data/third_party/abseil-cpp/absl/base/options.h +211 -0
- data/third_party/abseil-cpp/absl/base/policy_checks.h +111 -0
- data/third_party/abseil-cpp/absl/base/port.h +26 -0
- data/third_party/abseil-cpp/absl/base/thread_annotations.h +280 -0
- data/third_party/abseil-cpp/absl/container/inlined_vector.h +848 -0
- data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +265 -0
- data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +892 -0
- data/third_party/abseil-cpp/absl/memory/memory.h +695 -0
- data/third_party/abseil-cpp/absl/meta/type_traits.h +759 -0
- data/third_party/abseil-cpp/absl/numeric/int128.cc +404 -0
- data/third_party/abseil-cpp/absl/numeric/int128.h +1091 -0
- data/third_party/abseil-cpp/absl/numeric/int128_have_intrinsic.inc +302 -0
- data/third_party/abseil-cpp/absl/numeric/int128_no_intrinsic.inc +308 -0
- data/third_party/abseil-cpp/absl/strings/ascii.cc +200 -0
- data/third_party/abseil-cpp/absl/strings/ascii.h +242 -0
- data/third_party/abseil-cpp/absl/strings/charconv.cc +984 -0
- data/third_party/abseil-cpp/absl/strings/charconv.h +119 -0
- data/third_party/abseil-cpp/absl/strings/escaping.cc +949 -0
- data/third_party/abseil-cpp/absl/strings/escaping.h +164 -0
- data/third_party/abseil-cpp/absl/strings/internal/char_map.h +156 -0
- data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.cc +359 -0
- data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.h +423 -0
- data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +504 -0
- data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.h +99 -0
- data/third_party/abseil-cpp/absl/strings/internal/escaping.cc +180 -0
- data/third_party/abseil-cpp/absl/strings/internal/escaping.h +58 -0
- data/third_party/abseil-cpp/absl/strings/internal/memutil.cc +112 -0
- data/third_party/abseil-cpp/absl/strings/internal/memutil.h +148 -0
- data/third_party/abseil-cpp/absl/strings/internal/ostringstream.cc +36 -0
- data/third_party/abseil-cpp/absl/strings/internal/ostringstream.h +89 -0
- data/third_party/abseil-cpp/absl/strings/internal/resize_uninitialized.h +73 -0
- data/third_party/abseil-cpp/absl/strings/internal/stl_type_traits.h +248 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +388 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +432 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +245 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +209 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +326 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +51 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +415 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +493 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.h +23 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/output.cc +72 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/output.h +104 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +334 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +333 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_join_internal.h +314 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +455 -0
- data/third_party/abseil-cpp/absl/strings/internal/utf8.cc +53 -0
- data/third_party/abseil-cpp/absl/strings/internal/utf8.h +50 -0
- data/third_party/abseil-cpp/absl/strings/match.cc +40 -0
- data/third_party/abseil-cpp/absl/strings/match.h +90 -0
- data/third_party/abseil-cpp/absl/strings/numbers.cc +965 -0
- data/third_party/abseil-cpp/absl/strings/numbers.h +266 -0
- data/third_party/abseil-cpp/absl/strings/str_cat.cc +246 -0
- data/third_party/abseil-cpp/absl/strings/str_cat.h +408 -0
- data/third_party/abseil-cpp/absl/strings/str_format.h +537 -0
- data/third_party/abseil-cpp/absl/strings/str_join.h +293 -0
- data/third_party/abseil-cpp/absl/strings/str_replace.cc +82 -0
- data/third_party/abseil-cpp/absl/strings/str_replace.h +219 -0
- data/third_party/abseil-cpp/absl/strings/str_split.cc +139 -0
- data/third_party/abseil-cpp/absl/strings/str_split.h +513 -0
- data/third_party/abseil-cpp/absl/strings/string_view.cc +235 -0
- data/third_party/abseil-cpp/absl/strings/string_view.h +622 -0
- data/third_party/abseil-cpp/absl/strings/strip.h +91 -0
- data/third_party/abseil-cpp/absl/strings/substitute.cc +171 -0
- data/third_party/abseil-cpp/absl/strings/substitute.h +693 -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 +922 -0
- data/third_party/abseil-cpp/absl/time/format.cc +153 -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 +622 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +384 -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 +922 -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 +121 -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 +958 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.h +138 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +308 -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 +115 -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 +1584 -0
- data/third_party/abseil-cpp/absl/types/bad_optional_access.cc +48 -0
- data/third_party/abseil-cpp/absl/types/bad_optional_access.h +78 -0
- data/third_party/abseil-cpp/absl/types/internal/optional.h +396 -0
- data/third_party/abseil-cpp/absl/types/internal/span.h +128 -0
- data/third_party/abseil-cpp/absl/types/optional.h +776 -0
- data/third_party/abseil-cpp/absl/types/span.h +713 -0
- data/third_party/abseil-cpp/absl/utility/utility.h +350 -0
- data/third_party/boringssl-with-bazel/err_data.c +1439 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_bitstr.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_bool.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_d2i_fp.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_dup.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_enum.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_gentm.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_i2d_fp.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_int.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_mbstr.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_object.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_octet.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_print.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_strnid.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +212 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_type.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_utctm.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_utf8.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/asn1_lib.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/asn1_locl.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/asn1_par.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/asn_pack.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/f_enum.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/f_int.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/f_string.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_dec.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_enc.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_fre.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_new.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_typ.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_utl.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/time_support.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/base64/base64.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/bio.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/bio_mem.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/bio/connect.c +545 -0
- data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +279 -0
- data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +317 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/hexdump.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/internal.h +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/bio/pair.c +488 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/printf.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/socket.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/socket_helper.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bn_extra/bn_asn1.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bn_extra/convert.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/buf/buf.c +172 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bytestring/asn1_compat.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bytestring/ber.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbb.c +719 -0
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +688 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bytestring/internal.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bytestring/unicode.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/chacha/chacha.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/chacha/internal.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/cipher_extra.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/derive_key.c +152 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_aesccm.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_aesctrhmac.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_aesgcmsiv.c +891 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_chacha20poly1305.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_null.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_rc2.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_rc4.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_tls.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/internal.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/tls_cbc.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cmac/cmac.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/conf/conf.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/conf/conf_def.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/conf/internal.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-aarch64-fuchsia.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-aarch64-linux.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/cpu-arm-linux.c +220 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-arm-linux.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-arm.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/cpu-intel.c +291 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-ppc64le.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/crypto.c +226 -0
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +2159 -0
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519_tables.h +7872 -0
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/internal.h +146 -0
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/spake25519.c +539 -0
- data/third_party/boringssl-with-bazel/src/crypto/dh/check.c +217 -0
- data/third_party/boringssl-with-bazel/src/crypto/dh/dh.c +533 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/dh/dh_asn1.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/dh/params.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/digest_extra/digest_extra.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +980 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/dsa/dsa_asn1.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/ec_extra/ec_asn1.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_derive.c +95 -0
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +425 -0
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +78 -0
- data/third_party/boringssl-with-bazel/src/crypto/ecdh_extra/ecdh_extra.c +124 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/ecdsa_extra/ecdsa_asn1.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/engine/engine.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/err/err.c +850 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/err/internal.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/digestsign.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/evp.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/evp_asn1.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/evp_ctx.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/internal.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_dsa_asn1.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec.c +286 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_ec_asn1.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_ed25519.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_ed25519_asn1.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa.c +648 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_rsa_asn1.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_x25519.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519_asn1.c +248 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/pbkdf.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/print.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/scrypt.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/sign.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/ex_data.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes.c +108 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes_nohw.c +1282 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/internal.h +238 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/aes/key_wrap.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/mode_wrappers.c +106 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +263 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/add.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/asm/x86_64-gcc.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/bn.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/bytes.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/cmp.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/ctx.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/div.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/div_extra.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/exponentiation.c +1288 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/gcd.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/gcd_extra.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/generic.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +694 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/jacobi.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery.c +502 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/montgomery_inv.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/mul.c +749 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/prime.c +1068 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/random.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/rsaz_exp.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/rsaz_exp.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/shift.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/sqrt.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/cipher/aead.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/cipher/cipher.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +1302 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/cipher/e_des.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/cipher/internal.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/delocate.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/des/des.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/des/internal.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/digest/digest.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digests.c +296 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/digest/internal.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/digest/md32_common.h +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +1252 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +465 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_montgomery.c +524 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/felem.c +100 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +775 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/oct.c +328 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +1178 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-x86_64-table.h +9497 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-x86_64.c +632 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/p256-x86_64.h +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +736 -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 +175 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple.c +357 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +270 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/util.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/wnaf.c +270 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdh/ecdh.c +122 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +328 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/fips_shared_support.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/hmac/hmac.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/is_fips.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/md4/md4.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/md5/internal.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/md5/md5.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/modes/cbc.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/modes/cfb.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/modes/ctr.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +729 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm_nohw.c +304 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +441 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/modes/ofb.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/modes/polyval.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rand/ctrdrbg.c +0 -0
- 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 +163 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +378 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +391 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/blinding.c +243 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +127 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rsa/padding.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +898 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +1358 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/self_check/self_check.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/sha/internal.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/sha/sha1-altivec.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/sha/sha1.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/sha/sha256.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +544 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/tls/internal.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/tls/kdf.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/hkdf/hkdf.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/hrss/hrss.c +2100 -0
- data/third_party/boringssl-with-bazel/src/crypto/hrss/internal.h +61 -0
- data/third_party/boringssl-with-bazel/src/crypto/internal.h +834 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/lhash/lhash.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/mem.c +359 -0
- data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +549 -0
- data/third_party/boringssl-with-bazel/src/crypto/obj/obj_dat.h +11585 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/obj/obj_xref.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_all.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_info.c +360 -0
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +777 -0
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_oth.c +87 -0
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pk8.c +257 -0
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pkey.c +218 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_x509.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_xaux.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs7/internal.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs7/pkcs7.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +385 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs8/internal.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs8/p5_pbev2.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs8/pkcs8.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs8/pkcs8_x509.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/poly1305/internal.h +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305.c +318 -0
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_arm.c +305 -0
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_vec.c +856 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pool/internal.h +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/pool/pool.c +220 -0
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/deterministic.c +52 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rand_extra/forkunsafe.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rand_extra/fuchsia.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rand_extra/rand_extra.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/windows.c +69 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rc4/rc4.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/refcount_c11.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/refcount_lock.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rsa_extra/rsa_asn1.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rsa_extra/rsa_print.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/siphash/siphash.c +82 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/stack/stack.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/thread.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/thread_none.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +210 -0
- data/third_party/boringssl-with-bazel/src/crypto/thread_win.c +260 -0
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +278 -0
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +1474 -0
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +720 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/a_digest.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/a_sign.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/a_strex.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/a_verify.c +114 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/algorithm.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/asn1_gen.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/by_dir.c +458 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/by_file.c +275 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/charmap.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/i2d_pr.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/internal.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/rsa_pss.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/t_crl.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/t_req.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/t_x509.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/t_x509a.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/vpm_int.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_att.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +476 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_d2.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_def.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_ext.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_lu.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_obj.c +198 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_r2x.c +116 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +341 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +185 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +326 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_txt.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_v3.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +2487 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.c +671 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509cset.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +389 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509rset.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509spki.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_algor.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +399 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_attrib.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_crl.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_exten.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_info.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_name.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_pkey.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_pubkey.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_req.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_sig.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_spki.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_val.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_x509.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_x509a.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/ext_dat.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/internal.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_cache.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_data.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_int.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_lib.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_map.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_node.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_tree.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_akey.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_akeya.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +629 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_bcons.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_bitst.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_conf.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_cpols.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_crld.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c +100 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_extku.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_genn.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_ia5.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_info.c +218 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_int.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_lib.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_ncons.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_ocsp.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_pci.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_pcia.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_pcons.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_pku.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_pmaps.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_prn.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +843 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_skey.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_sxnet.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +1395 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/aead.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/aes.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/arm_arch.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/asn1.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/asn1_mac.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/asn1t.h +0 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +575 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/base64.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/bio.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/blowfish.h +0 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/bn.h +1057 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/buf.h +137 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/buffer.h +0 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +561 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/cast.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/chacha.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/cipher.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/cmac.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/conf.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/cpu.h +0 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +149 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/curve25519.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/des.h +0 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +319 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +331 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +457 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/dtls1.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/e_os2.h +0 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +424 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/ec_key.h +372 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ecdh.h +0 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +205 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/engine.h +0 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/err.h +465 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +1050 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ex_data.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/hkdf.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/hmac.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/hrss.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/is_boringssl.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/lhash.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/md4.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/md5.h +0 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/mem.h +175 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/nid.h +4259 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/obj.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/obj_mac.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/objects.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/opensslconf.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/opensslv.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ossl_typ.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/pem.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/pkcs12.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/pkcs7.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/pkcs8.h +0 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/poly1305.h +49 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/pool.h +0 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +111 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/rc4.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ripemd.h +0 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +818 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/safestack.h +0 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/sha.h +294 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/siphash.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/span.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/srtp.h +0 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +5198 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ssl3.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/stack.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/thread.h +0 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +632 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +291 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/type_check.h +0 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +1207 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +681 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/x509v3.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/bio_ssl.cc +0 -0
- data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +837 -0
- data/third_party/boringssl-with-bazel/src/ssl/d1_lib.cc +268 -0
- data/third_party/boringssl-with-bazel/src/ssl/d1_pkt.cc +273 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/d1_srtp.cc +0 -0
- data/third_party/boringssl-with-bazel/src/ssl/dtls_method.cc +200 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/dtls_record.cc +0 -0
- data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +675 -0
- data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +703 -0
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +1890 -0
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +1805 -0
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +3572 -0
- data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +724 -0
- data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +221 -0
- data/third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc +458 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_aead_ctx.cc +0 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +856 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_buffer.cc +306 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +1019 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +1718 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_file.cc +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_key_share.cc +0 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +3015 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +835 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +1333 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_stat.cc +230 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_transcript.cc +0 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +394 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_x509.cc +0 -0
- data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +365 -0
- data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +3870 -0
- data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +689 -0
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +1017 -0
- data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +513 -0
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +1096 -0
- data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +317 -0
- data/third_party/boringssl-with-bazel/src/ssl/tls_record.cc +703 -0
- data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_32.h +981 -0
- data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64.h +619 -0
- data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_32.h +3147 -0
- data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_64.h +1226 -0
- data/third_party/upb/upb/decode.c +4 -0
- data/third_party/upb/upb/port.c +0 -1
- data/third_party/upb/upb/port_def.inc +1 -3
- data/third_party/upb/upb/table.c +2 -1
- metadata +758 -509
- data/src/boringssl/err_data.c +0 -1407
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.cc +0 -1898
- data/src/core/lib/gprpp/inlined_vector.h +0 -246
- data/src/core/lib/gprpp/optional.h +0 -48
- data/src/core/lib/gprpp/string_view.h +0 -165
- data/src/core/lib/iomgr/logical_thread.cc +0 -103
- data/src/core/lib/iomgr/logical_thread.h +0 -52
- data/src/core/lib/json/json.cc +0 -94
- data/src/core/lib/json/json_common.h +0 -34
- data/src/core/lib/json/json_reader.h +0 -146
- data/src/core/lib/json/json_string.cc +0 -367
- data/src/core/lib/json/json_writer.h +0 -84
- data/src/core/lib/security/credentials/tls/spiffe_credentials.cc +0 -129
- data/src/core/lib/security/credentials/tls/spiffe_credentials.h +0 -62
- data/src/core/lib/security/security_connector/tls/spiffe_security_connector.cc +0 -541
- data/src/core/lib/security/security_connector/tls/spiffe_security_connector.h +0 -158
- data/src/core/tsi/grpc_shadow_boringssl.h +0 -3297
- data/third_party/boringssl/crypto/asn1/a_time.c +0 -213
- data/third_party/boringssl/crypto/bio/connect.c +0 -546
- data/third_party/boringssl/crypto/bio/fd.c +0 -280
- data/third_party/boringssl/crypto/bio/file.c +0 -318
- data/third_party/boringssl/crypto/bio/pair.c +0 -489
- data/third_party/boringssl/crypto/buf/buf.c +0 -231
- data/third_party/boringssl/crypto/bytestring/cbb.c +0 -680
- data/third_party/boringssl/crypto/bytestring/cbs.c +0 -631
- data/third_party/boringssl/crypto/cipher_extra/derive_key.c +0 -152
- data/third_party/boringssl/crypto/cipher_extra/e_aesgcmsiv.c +0 -883
- data/third_party/boringssl/crypto/cpu-arm-linux.c +0 -219
- data/third_party/boringssl/crypto/cpu-intel.c +0 -282
- data/third_party/boringssl/crypto/crypto.c +0 -215
- data/third_party/boringssl/crypto/curve25519/spake25519.c +0 -539
- data/third_party/boringssl/crypto/dh/check.c +0 -217
- data/third_party/boringssl/crypto/dh/dh.c +0 -519
- data/third_party/boringssl/crypto/dsa/dsa.c +0 -970
- data/third_party/boringssl/crypto/ec_extra/ec_derive.c +0 -96
- data/third_party/boringssl/crypto/ecdh_extra/ecdh_extra.c +0 -124
- data/third_party/boringssl/crypto/err/err.c +0 -849
- data/third_party/boringssl/crypto/evp/p_ec.c +0 -287
- data/third_party/boringssl/crypto/evp/p_rsa.c +0 -636
- data/third_party/boringssl/crypto/evp/p_x25519_asn1.c +0 -249
- data/third_party/boringssl/crypto/fipsmodule/aes/aes.c +0 -860
- data/third_party/boringssl/crypto/fipsmodule/aes/internal.h +0 -240
- data/third_party/boringssl/crypto/fipsmodule/aes/mode_wrappers.c +0 -108
- data/third_party/boringssl/crypto/fipsmodule/bcm.c +0 -260
- data/third_party/boringssl/crypto/fipsmodule/bn/exponentiation.c +0 -1288
- data/third_party/boringssl/crypto/fipsmodule/bn/internal.h +0 -691
- data/third_party/boringssl/crypto/fipsmodule/bn/montgomery.c +0 -502
- data/third_party/boringssl/crypto/fipsmodule/bn/mul.c +0 -873
- data/third_party/boringssl/crypto/fipsmodule/bn/prime.c +0 -1069
- data/third_party/boringssl/crypto/fipsmodule/cipher/e_aes.c +0 -1304
- data/third_party/boringssl/crypto/fipsmodule/digest/digests.c +0 -280
- data/third_party/boringssl/crypto/fipsmodule/ec/ec.c +0 -1080
- data/third_party/boringssl/crypto/fipsmodule/ec/ec_key.c +0 -479
- data/third_party/boringssl/crypto/fipsmodule/ec/ec_montgomery.c +0 -483
- data/third_party/boringssl/crypto/fipsmodule/ec/felem.c +0 -82
- data/third_party/boringssl/crypto/fipsmodule/ec/internal.h +0 -503
- data/third_party/boringssl/crypto/fipsmodule/ec/oct.c +0 -336
- data/third_party/boringssl/crypto/fipsmodule/ec/p224-64.c +0 -1187
- data/third_party/boringssl/crypto/fipsmodule/ec/p256-x86_64-table.h +0 -9501
- data/third_party/boringssl/crypto/fipsmodule/ec/p256-x86_64.c +0 -651
- data/third_party/boringssl/crypto/fipsmodule/ec/scalar.c +0 -96
- data/third_party/boringssl/crypto/fipsmodule/ec/simple.c +0 -380
- data/third_party/boringssl/crypto/fipsmodule/ec/simple_mul.c +0 -84
- data/third_party/boringssl/crypto/fipsmodule/ec/wnaf.c +0 -227
- data/third_party/boringssl/crypto/fipsmodule/ecdh/ecdh.c +0 -122
- data/third_party/boringssl/crypto/fipsmodule/ecdsa/ecdsa.c +0 -313
- data/third_party/boringssl/crypto/fipsmodule/modes/gcm.c +0 -877
- data/third_party/boringssl/crypto/fipsmodule/modes/internal.h +0 -451
- data/third_party/boringssl/crypto/fipsmodule/rand/internal.h +0 -127
- data/third_party/boringssl/crypto/fipsmodule/rand/rand.c +0 -363
- data/third_party/boringssl/crypto/fipsmodule/rand/urandom.c +0 -481
- data/third_party/boringssl/crypto/fipsmodule/rsa/blinding.c +0 -239
- data/third_party/boringssl/crypto/fipsmodule/rsa/internal.h +0 -126
- data/third_party/boringssl/crypto/fipsmodule/rsa/rsa.c +0 -879
- data/third_party/boringssl/crypto/fipsmodule/rsa/rsa_impl.c +0 -1335
- data/third_party/boringssl/crypto/fipsmodule/sha/sha512.c +0 -535
- data/third_party/boringssl/crypto/hrss/hrss.c +0 -2201
- data/third_party/boringssl/crypto/hrss/internal.h +0 -62
- data/third_party/boringssl/crypto/internal.h +0 -814
- data/third_party/boringssl/crypto/mem.c +0 -272
- data/third_party/boringssl/crypto/obj/obj.c +0 -554
- data/third_party/boringssl/crypto/obj/obj_dat.h +0 -11550
- data/third_party/boringssl/crypto/pem/pem_info.c +0 -361
- data/third_party/boringssl/crypto/pem/pem_lib.c +0 -777
- data/third_party/boringssl/crypto/pem/pem_oth.c +0 -88
- data/third_party/boringssl/crypto/pem/pem_pk8.c +0 -258
- data/third_party/boringssl/crypto/pem/pem_pkey.c +0 -219
- data/third_party/boringssl/crypto/pkcs7/pkcs7_x509.c +0 -385
- data/third_party/boringssl/crypto/poly1305/poly1305.c +0 -318
- data/third_party/boringssl/crypto/poly1305/poly1305_arm.c +0 -304
- data/third_party/boringssl/crypto/poly1305/poly1305_vec.c +0 -839
- data/third_party/boringssl/crypto/pool/pool.c +0 -221
- data/third_party/boringssl/crypto/rand_extra/deterministic.c +0 -56
- data/third_party/boringssl/crypto/rand_extra/windows.c +0 -53
- data/third_party/boringssl/crypto/siphash/siphash.c +0 -80
- data/third_party/boringssl/crypto/thread_pthread.c +0 -206
- data/third_party/boringssl/crypto/thread_win.c +0 -256
- data/third_party/boringssl/crypto/x509/a_verify.c +0 -115
- data/third_party/boringssl/crypto/x509/by_dir.c +0 -458
- data/third_party/boringssl/crypto/x509/by_file.c +0 -276
- data/third_party/boringssl/crypto/x509/x509_cmp.c +0 -477
- data/third_party/boringssl/crypto/x509/x509_obj.c +0 -198
- data/third_party/boringssl/crypto/x509/x509_r2x.c +0 -117
- data/third_party/boringssl/crypto/x509/x509_req.c +0 -342
- data/third_party/boringssl/crypto/x509/x509_set.c +0 -169
- data/third_party/boringssl/crypto/x509/x509_trs.c +0 -327
- data/third_party/boringssl/crypto/x509/x509_vfy.c +0 -2483
- data/third_party/boringssl/crypto/x509/x509_vpm.c +0 -672
- data/third_party/boringssl/crypto/x509/x509name.c +0 -388
- data/third_party/boringssl/crypto/x509/x_all.c +0 -400
- data/third_party/boringssl/crypto/x509v3/v3_alt.c +0 -629
- data/third_party/boringssl/crypto/x509v3/v3_enum.c +0 -100
- data/third_party/boringssl/crypto/x509v3/v3_info.c +0 -219
- data/third_party/boringssl/crypto/x509v3/v3_purp.c +0 -844
- data/third_party/boringssl/crypto/x509v3/v3_utl.c +0 -1396
- data/third_party/boringssl/include/openssl/base.h +0 -571
- data/third_party/boringssl/include/openssl/bn.h +0 -1045
- data/third_party/boringssl/include/openssl/buf.h +0 -137
- data/third_party/boringssl/include/openssl/bytestring.h +0 -527
- data/third_party/boringssl/include/openssl/crypto.h +0 -144
- data/third_party/boringssl/include/openssl/dh.h +0 -299
- data/third_party/boringssl/include/openssl/digest.h +0 -330
- data/third_party/boringssl/include/openssl/dsa.h +0 -441
- data/third_party/boringssl/include/openssl/ec.h +0 -417
- data/third_party/boringssl/include/openssl/ec_key.h +0 -370
- data/third_party/boringssl/include/openssl/ecdsa.h +0 -199
- data/third_party/boringssl/include/openssl/err.h +0 -461
- data/third_party/boringssl/include/openssl/evp.h +0 -1030
- data/third_party/boringssl/include/openssl/mem.h +0 -160
- data/third_party/boringssl/include/openssl/nid.h +0 -4245
- data/third_party/boringssl/include/openssl/poly1305.h +0 -51
- data/third_party/boringssl/include/openssl/rand.h +0 -125
- data/third_party/boringssl/include/openssl/rsa.h +0 -787
- data/third_party/boringssl/include/openssl/sha.h +0 -268
- data/third_party/boringssl/include/openssl/ssl.h +0 -5113
- data/third_party/boringssl/include/openssl/tls1.h +0 -634
- data/third_party/boringssl/include/openssl/x509.h +0 -1205
- data/third_party/boringssl/include/openssl/x509_vfy.h +0 -680
- data/third_party/boringssl/ssl/d1_both.cc +0 -842
- data/third_party/boringssl/ssl/d1_lib.cc +0 -268
- data/third_party/boringssl/ssl/d1_pkt.cc +0 -274
- data/third_party/boringssl/ssl/dtls_method.cc +0 -192
- data/third_party/boringssl/ssl/handoff.cc +0 -489
- data/third_party/boringssl/ssl/handshake.cc +0 -691
- data/third_party/boringssl/ssl/handshake_client.cc +0 -1871
- data/third_party/boringssl/ssl/handshake_server.cc +0 -1801
- data/third_party/boringssl/ssl/internal.h +0 -3549
- data/third_party/boringssl/ssl/s3_both.cc +0 -724
- data/third_party/boringssl/ssl/s3_lib.cc +0 -222
- data/third_party/boringssl/ssl/s3_pkt.cc +0 -459
- data/third_party/boringssl/ssl/ssl_asn1.cc +0 -828
- data/third_party/boringssl/ssl/ssl_buffer.cc +0 -287
- data/third_party/boringssl/ssl/ssl_cert.cc +0 -1016
- data/third_party/boringssl/ssl/ssl_cipher.cc +0 -1719
- data/third_party/boringssl/ssl/ssl_lib.cc +0 -3011
- data/third_party/boringssl/ssl/ssl_privkey.cc +0 -824
- data/third_party/boringssl/ssl/ssl_session.cc +0 -1273
- data/third_party/boringssl/ssl/ssl_stat.cc +0 -224
- data/third_party/boringssl/ssl/ssl_versions.cc +0 -394
- data/third_party/boringssl/ssl/t1_enc.cc +0 -361
- data/third_party/boringssl/ssl/t1_lib.cc +0 -4036
- data/third_party/boringssl/ssl/tls13_both.cc +0 -689
- data/third_party/boringssl/ssl/tls13_client.cc +0 -947
- data/third_party/boringssl/ssl/tls13_enc.cc +0 -561
- data/third_party/boringssl/ssl/tls13_server.cc +0 -1089
- data/third_party/boringssl/ssl/tls_method.cc +0 -279
- data/third_party/boringssl/ssl/tls_record.cc +0 -698
- data/third_party/boringssl/third_party/fiat/curve25519.c +0 -2167
- data/third_party/boringssl/third_party/fiat/curve25519_32.h +0 -911
- data/third_party/boringssl/third_party/fiat/curve25519_64.h +0 -559
- data/third_party/boringssl/third_party/fiat/curve25519_tables.h +0 -7880
- data/third_party/boringssl/third_party/fiat/internal.h +0 -154
- data/third_party/boringssl/third_party/fiat/p256.c +0 -1063
- data/third_party/boringssl/third_party/fiat/p256_32.h +0 -3226
- data/third_party/boringssl/third_party/fiat/p256_64.h +0 -1217
@@ -0,0 +1,83 @@
|
|
1
|
+
//
|
2
|
+
// Copyright 2018 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_CHILD_POLICY_HANDLER_H
|
18
|
+
#define GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_CHILD_POLICY_HANDLER_H
|
19
|
+
|
20
|
+
#include <grpc/support/port_platform.h>
|
21
|
+
|
22
|
+
#include "src/core/ext/filters/client_channel/lb_policy.h"
|
23
|
+
#include "src/core/lib/debug/trace.h"
|
24
|
+
#include "src/core/lib/gprpp/orphanable.h"
|
25
|
+
|
26
|
+
namespace grpc_core {
|
27
|
+
|
28
|
+
// A class that makes it easy to gracefully switch child policies.
|
29
|
+
//
|
30
|
+
// Callers should instantiate this instead of using
|
31
|
+
// LoadBalancingPolicyRegistry::CreateLoadBalancingPolicy(). Once
|
32
|
+
// instantiated, this object will automatically take care of
|
33
|
+
// constructing the child policy as needed upon receiving an update.
|
34
|
+
class ChildPolicyHandler : public LoadBalancingPolicy {
|
35
|
+
public:
|
36
|
+
ChildPolicyHandler(Args args, TraceFlag* tracer)
|
37
|
+
: LoadBalancingPolicy(std::move(args)), tracer_(tracer) {}
|
38
|
+
|
39
|
+
virtual const char* name() const override { return "child_policy_handler"; }
|
40
|
+
|
41
|
+
void UpdateLocked(UpdateArgs args) override;
|
42
|
+
void ExitIdleLocked() override;
|
43
|
+
void ResetBackoffLocked() override;
|
44
|
+
|
45
|
+
// Returns true if transitioning from the old config to the new config
|
46
|
+
// requires instantiating a new policy object.
|
47
|
+
virtual bool ConfigChangeRequiresNewPolicyInstance(
|
48
|
+
LoadBalancingPolicy::Config* old_config,
|
49
|
+
LoadBalancingPolicy::Config* new_config) const;
|
50
|
+
|
51
|
+
// Instantiates a new policy of the specified name.
|
52
|
+
// May be overridden by subclasses to avoid recursion when an LB
|
53
|
+
// policy factory returns a ChildPolicyHandler.
|
54
|
+
virtual OrphanablePtr<LoadBalancingPolicy> CreateLoadBalancingPolicy(
|
55
|
+
const char* name, LoadBalancingPolicy::Args args) const;
|
56
|
+
|
57
|
+
private:
|
58
|
+
class Helper;
|
59
|
+
|
60
|
+
void ShutdownLocked() override;
|
61
|
+
|
62
|
+
OrphanablePtr<LoadBalancingPolicy> CreateChildPolicy(
|
63
|
+
const char* child_policy_name, const grpc_channel_args& args);
|
64
|
+
|
65
|
+
// Passed in from caller at construction time.
|
66
|
+
TraceFlag* tracer_;
|
67
|
+
|
68
|
+
bool shutting_down_ = false;
|
69
|
+
|
70
|
+
// The most recent config passed to UpdateLocked().
|
71
|
+
// If pending_child_policy_ is non-null, this is the config passed to
|
72
|
+
// pending_child_policy_; otherwise, it's the config passed to child_policy_.
|
73
|
+
RefCountedPtr<LoadBalancingPolicy::Config> current_config_;
|
74
|
+
|
75
|
+
// Child LB policy.
|
76
|
+
OrphanablePtr<LoadBalancingPolicy> child_policy_;
|
77
|
+
OrphanablePtr<LoadBalancingPolicy> pending_child_policy_;
|
78
|
+
};
|
79
|
+
|
80
|
+
} // namespace grpc_core
|
81
|
+
|
82
|
+
#endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_CHILD_POLICY_HANDLER_H \
|
83
|
+
*/
|
@@ -64,6 +64,10 @@
|
|
64
64
|
#include <limits.h>
|
65
65
|
#include <string.h>
|
66
66
|
|
67
|
+
#include "absl/container/inlined_vector.h"
|
68
|
+
#include "absl/strings/str_format.h"
|
69
|
+
#include "absl/strings/str_join.h"
|
70
|
+
|
67
71
|
#include <grpc/byte_buffer_reader.h>
|
68
72
|
#include <grpc/grpc.h>
|
69
73
|
#include <grpc/support/alloc.h>
|
@@ -71,8 +75,10 @@
|
|
71
75
|
#include <grpc/support/time.h>
|
72
76
|
|
73
77
|
#include "src/core/ext/filters/client_channel/client_channel.h"
|
78
|
+
#include "src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h"
|
74
79
|
#include "src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h"
|
75
80
|
#include "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h"
|
81
|
+
#include "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h"
|
76
82
|
#include "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h"
|
77
83
|
#include "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h"
|
78
84
|
#include "src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h"
|
@@ -89,7 +95,6 @@
|
|
89
95
|
#include "src/core/lib/gprpp/memory.h"
|
90
96
|
#include "src/core/lib/gprpp/orphanable.h"
|
91
97
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
92
|
-
#include "src/core/lib/iomgr/combiner.h"
|
93
98
|
#include "src/core/lib/iomgr/sockaddr.h"
|
94
99
|
#include "src/core/lib/iomgr/sockaddr_utils.h"
|
95
100
|
#include "src/core/lib/iomgr/timer.h"
|
@@ -121,10 +126,9 @@ namespace {
|
|
121
126
|
|
122
127
|
constexpr char kGrpclb[] = "grpclb";
|
123
128
|
|
124
|
-
class
|
129
|
+
class GrpcLbConfig : public LoadBalancingPolicy::Config {
|
125
130
|
public:
|
126
|
-
explicit
|
127
|
-
RefCountedPtr<LoadBalancingPolicy::Config> child_policy)
|
131
|
+
explicit GrpcLbConfig(RefCountedPtr<LoadBalancingPolicy::Config> child_policy)
|
128
132
|
: child_policy_(std::move(child_policy)) {}
|
129
133
|
const char* name() const override { return kGrpclb; }
|
130
134
|
|
@@ -172,19 +176,17 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
172
176
|
void ScheduleNextClientLoadReportLocked();
|
173
177
|
void SendClientLoadReportLocked();
|
174
178
|
|
175
|
-
static bool LoadReportCountersAreZero(grpc_grpclb_request* request);
|
176
|
-
|
177
179
|
static void MaybeSendClientLoadReport(void* arg, grpc_error* error);
|
178
180
|
static void ClientLoadReportDone(void* arg, grpc_error* error);
|
179
181
|
static void OnInitialRequestSent(void* arg, grpc_error* error);
|
180
182
|
static void OnBalancerMessageReceived(void* arg, grpc_error* error);
|
181
183
|
static void OnBalancerStatusReceived(void* arg, grpc_error* error);
|
182
184
|
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
185
|
+
void MaybeSendClientLoadReportLocked(grpc_error* error);
|
186
|
+
void ClientLoadReportDoneLocked(grpc_error* error);
|
187
|
+
void OnInitialRequestSentLocked();
|
188
|
+
void OnBalancerMessageReceivedLocked();
|
189
|
+
void OnBalancerStatusReceivedLocked(grpc_error* error);
|
188
190
|
|
189
191
|
// The owning LB policy.
|
190
192
|
RefCountedPtr<LoadBalancingPolicy> grpclb_policy_;
|
@@ -227,17 +229,15 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
227
229
|
class Serverlist : public RefCounted<Serverlist> {
|
228
230
|
public:
|
229
231
|
// Takes ownership of serverlist.
|
230
|
-
explicit Serverlist(
|
231
|
-
: serverlist_(serverlist) {}
|
232
|
-
|
233
|
-
~Serverlist() { grpc_grpclb_destroy_serverlist(serverlist_); }
|
232
|
+
explicit Serverlist(std::vector<GrpcLbServer> serverlist)
|
233
|
+
: serverlist_(std::move(serverlist)) {}
|
234
234
|
|
235
235
|
bool operator==(const Serverlist& other) const;
|
236
236
|
|
237
|
-
const
|
237
|
+
const std::vector<GrpcLbServer>& serverlist() const { return serverlist_; }
|
238
238
|
|
239
239
|
// Returns a text representation suitable for logging.
|
240
|
-
|
240
|
+
std::string AsText() const;
|
241
241
|
|
242
242
|
// Extracts all non-drop entries into a ServerAddressList.
|
243
243
|
ServerAddressList GetServerAddressList(
|
@@ -251,16 +251,16 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
251
251
|
// should not be dropped.
|
252
252
|
//
|
253
253
|
// Note: This is called from the picker, so it will be invoked in
|
254
|
-
// the channel's data plane
|
255
|
-
//
|
254
|
+
// the channel's data plane mutex, NOT the control plane
|
255
|
+
// work_serializer. It should not be accessed by any other part of the LB
|
256
256
|
// policy.
|
257
257
|
const char* ShouldDrop();
|
258
258
|
|
259
259
|
private:
|
260
|
-
|
260
|
+
std::vector<GrpcLbServer> serverlist_;
|
261
261
|
|
262
|
-
// Guarded by the channel's data plane
|
263
|
-
// plane
|
262
|
+
// Guarded by the channel's data plane mutex, NOT the control
|
263
|
+
// plane work_serializer. It should not be accessed by anything but the
|
264
264
|
// picker via the ShouldDrop() method.
|
265
265
|
size_t drop_index_ = 0;
|
266
266
|
};
|
@@ -299,16 +299,42 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
299
299
|
void UpdateState(grpc_connectivity_state state,
|
300
300
|
std::unique_ptr<SubchannelPicker> picker) override;
|
301
301
|
void RequestReresolution() override;
|
302
|
-
void AddTraceEvent(TraceSeverity severity,
|
302
|
+
void AddTraceEvent(TraceSeverity severity,
|
303
|
+
absl::string_view message) override;
|
304
|
+
|
305
|
+
private:
|
306
|
+
RefCountedPtr<GrpcLb> parent_;
|
307
|
+
};
|
308
|
+
|
309
|
+
class StateWatcher : public AsyncConnectivityStateWatcherInterface {
|
310
|
+
public:
|
311
|
+
explicit StateWatcher(RefCountedPtr<GrpcLb> parent)
|
312
|
+
: AsyncConnectivityStateWatcherInterface(parent->work_serializer()),
|
313
|
+
parent_(std::move(parent)) {}
|
303
314
|
|
304
|
-
|
315
|
+
~StateWatcher() { parent_.reset(DEBUG_LOCATION, "StateWatcher"); }
|
305
316
|
|
306
317
|
private:
|
307
|
-
|
308
|
-
|
318
|
+
void OnConnectivityStateChange(grpc_connectivity_state new_state) override {
|
319
|
+
if (parent_->fallback_at_startup_checks_pending_ &&
|
320
|
+
new_state == GRPC_CHANNEL_TRANSIENT_FAILURE) {
|
321
|
+
// In TRANSIENT_FAILURE. Cancel the fallback timer and go into
|
322
|
+
// fallback mode immediately.
|
323
|
+
gpr_log(GPR_INFO,
|
324
|
+
"[grpclb %p] balancer channel in state TRANSIENT_FAILURE; "
|
325
|
+
"entering fallback mode",
|
326
|
+
parent_.get());
|
327
|
+
parent_->fallback_at_startup_checks_pending_ = false;
|
328
|
+
grpc_timer_cancel(&parent_->lb_fallback_timer_);
|
329
|
+
parent_->fallback_mode_ = true;
|
330
|
+
parent_->CreateOrUpdateChildPolicyLocked();
|
331
|
+
// Cancel the watch, since we don't care about the channel state once we
|
332
|
+
// go into fallback mode.
|
333
|
+
parent_->CancelBalancerChannelConnectivityWatchLocked();
|
334
|
+
}
|
335
|
+
}
|
309
336
|
|
310
337
|
RefCountedPtr<GrpcLb> parent_;
|
311
|
-
LoadBalancingPolicy* child_ = nullptr;
|
312
338
|
};
|
313
339
|
|
314
340
|
~GrpcLb();
|
@@ -318,28 +344,25 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
318
344
|
// Helper functions used in UpdateLocked().
|
319
345
|
void ProcessAddressesAndChannelArgsLocked(const ServerAddressList& addresses,
|
320
346
|
const grpc_channel_args& args);
|
321
|
-
|
322
|
-
grpc_error* error);
|
323
|
-
static void OnBalancerChannelConnectivityChangedLocked(void* arg,
|
324
|
-
grpc_error* error);
|
347
|
+
|
325
348
|
void CancelBalancerChannelConnectivityWatchLocked();
|
326
349
|
|
327
350
|
// Methods for dealing with fallback state.
|
328
351
|
void MaybeEnterFallbackModeAfterStartup();
|
329
352
|
static void OnFallbackTimer(void* arg, grpc_error* error);
|
330
|
-
|
353
|
+
void OnFallbackTimerLocked(grpc_error* error);
|
331
354
|
|
332
355
|
// Methods for dealing with the balancer call.
|
333
356
|
void StartBalancerCallLocked();
|
334
357
|
void StartBalancerCallRetryTimerLocked();
|
335
358
|
static void OnBalancerCallRetryTimer(void* arg, grpc_error* error);
|
336
|
-
|
359
|
+
void OnBalancerCallRetryTimerLocked(grpc_error* error);
|
337
360
|
|
338
361
|
// Methods for dealing with the child policy.
|
339
362
|
grpc_channel_args* CreateChildPolicyArgsLocked(
|
340
363
|
bool is_backend_from_grpclb_load_balancer);
|
341
364
|
OrphanablePtr<LoadBalancingPolicy> CreateChildPolicyLocked(
|
342
|
-
const
|
365
|
+
const grpc_channel_args* args);
|
343
366
|
void CreateOrUpdateChildPolicyLocked();
|
344
367
|
|
345
368
|
// Who the client is trying to communicate with.
|
@@ -353,6 +376,7 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
353
376
|
|
354
377
|
// The channel for communicating with the LB server.
|
355
378
|
grpc_channel* lb_channel_ = nullptr;
|
379
|
+
StateWatcher* watcher_ = nullptr;
|
356
380
|
// Response generator to inject address updates into lb_channel_.
|
357
381
|
RefCountedPtr<FakeResolverResponseGenerator> response_generator_;
|
358
382
|
|
@@ -385,14 +409,9 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
385
409
|
bool fallback_at_startup_checks_pending_ = false;
|
386
410
|
grpc_timer lb_fallback_timer_;
|
387
411
|
grpc_closure lb_on_fallback_;
|
388
|
-
grpc_connectivity_state lb_channel_connectivity_ = GRPC_CHANNEL_IDLE;
|
389
|
-
grpc_closure lb_channel_on_connectivity_changed_;
|
390
412
|
|
391
413
|
// The child policy to use for the backends.
|
392
414
|
OrphanablePtr<LoadBalancingPolicy> child_policy_;
|
393
|
-
// When switching child policies, the new policy will be stored here
|
394
|
-
// until it reports READY, at which point it will be moved to child_policy_.
|
395
|
-
OrphanablePtr<LoadBalancingPolicy> pending_child_policy_;
|
396
415
|
// The child policy config.
|
397
416
|
RefCountedPtr<LoadBalancingPolicy::Config> child_policy_config_;
|
398
417
|
// Child policy in state READY.
|
@@ -404,54 +423,46 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
404
423
|
//
|
405
424
|
|
406
425
|
bool GrpcLb::Serverlist::operator==(const Serverlist& other) const {
|
407
|
-
return
|
426
|
+
return serverlist_ == other.serverlist_;
|
408
427
|
}
|
409
428
|
|
410
|
-
void ParseServer(const
|
411
|
-
grpc_resolved_address* addr) {
|
429
|
+
void ParseServer(const GrpcLbServer& server, grpc_resolved_address* addr) {
|
412
430
|
memset(addr, 0, sizeof(*addr));
|
413
|
-
if (server
|
414
|
-
const uint16_t netorder_port = grpc_htons((uint16_t)server
|
431
|
+
if (server.drop) return;
|
432
|
+
const uint16_t netorder_port = grpc_htons((uint16_t)server.port);
|
415
433
|
/* the addresses are given in binary format (a in(6)_addr struct) in
|
416
434
|
* server->ip_address.bytes. */
|
417
|
-
|
418
|
-
if (ip.size == 4) {
|
435
|
+
if (server.ip_size == 4) {
|
419
436
|
addr->len = static_cast<socklen_t>(sizeof(grpc_sockaddr_in));
|
420
437
|
grpc_sockaddr_in* addr4 = reinterpret_cast<grpc_sockaddr_in*>(&addr->addr);
|
421
438
|
addr4->sin_family = GRPC_AF_INET;
|
422
|
-
memcpy(&addr4->sin_addr,
|
439
|
+
memcpy(&addr4->sin_addr, server.ip_addr, server.ip_size);
|
423
440
|
addr4->sin_port = netorder_port;
|
424
|
-
} else if (
|
441
|
+
} else if (server.ip_size == 16) {
|
425
442
|
addr->len = static_cast<socklen_t>(sizeof(grpc_sockaddr_in6));
|
426
443
|
grpc_sockaddr_in6* addr6 = (grpc_sockaddr_in6*)&addr->addr;
|
427
444
|
addr6->sin6_family = GRPC_AF_INET6;
|
428
|
-
memcpy(&addr6->sin6_addr,
|
445
|
+
memcpy(&addr6->sin6_addr, server.ip_addr, server.ip_size);
|
429
446
|
addr6->sin6_port = netorder_port;
|
430
447
|
}
|
431
448
|
}
|
432
449
|
|
433
|
-
|
434
|
-
|
435
|
-
|
436
|
-
|
437
|
-
|
438
|
-
|
439
|
-
|
440
|
-
ipport = gpr_strdup("(drop)");
|
450
|
+
std::string GrpcLb::Serverlist::AsText() const {
|
451
|
+
std::vector<std::string> entries;
|
452
|
+
for (size_t i = 0; i < serverlist_.size(); ++i) {
|
453
|
+
const GrpcLbServer& server = serverlist_[i];
|
454
|
+
std::string ipport;
|
455
|
+
if (server.drop) {
|
456
|
+
ipport = "(drop)";
|
441
457
|
} else {
|
442
458
|
grpc_resolved_address addr;
|
443
459
|
ParseServer(server, &addr);
|
444
|
-
grpc_sockaddr_to_string(&
|
460
|
+
ipport = grpc_sockaddr_to_string(&addr, false);
|
445
461
|
}
|
446
|
-
|
447
|
-
|
448
|
-
server->load_balance_token);
|
449
|
-
gpr_free(ipport);
|
450
|
-
gpr_strvec_add(&entries, entry);
|
462
|
+
entries.push_back(absl::StrFormat(" %" PRIuPTR ": %s token=%s\n", i,
|
463
|
+
ipport, server.load_balance_token));
|
451
464
|
}
|
452
|
-
|
453
|
-
gpr_strvec_destroy(&entries);
|
454
|
-
return result;
|
465
|
+
return absl::StrJoin(entries, "");
|
455
466
|
}
|
456
467
|
|
457
468
|
// vtables for channel args for LB token and client stats.
|
@@ -492,23 +503,22 @@ const grpc_arg_pointer_vtable lb_token_arg_vtable = {
|
|
492
503
|
const grpc_arg_pointer_vtable client_stats_arg_vtable = {
|
493
504
|
client_stats_copy, client_stats_destroy, equal_cmp};
|
494
505
|
|
495
|
-
bool IsServerValid(const
|
496
|
-
if (server
|
497
|
-
|
498
|
-
if (GPR_UNLIKELY(server->port >> 16 != 0)) {
|
506
|
+
bool IsServerValid(const GrpcLbServer& server, size_t idx, bool log) {
|
507
|
+
if (server.drop) return false;
|
508
|
+
if (GPR_UNLIKELY(server.port >> 16 != 0)) {
|
499
509
|
if (log) {
|
500
510
|
gpr_log(GPR_ERROR,
|
501
511
|
"Invalid port '%d' at index %lu of serverlist. Ignoring.",
|
502
|
-
server
|
512
|
+
server.port, (unsigned long)idx);
|
503
513
|
}
|
504
514
|
return false;
|
505
515
|
}
|
506
|
-
if (GPR_UNLIKELY(
|
516
|
+
if (GPR_UNLIKELY(server.ip_size != 4 && server.ip_size != 16)) {
|
507
517
|
if (log) {
|
508
518
|
gpr_log(GPR_ERROR,
|
509
519
|
"Expected IP to be 4 or 16 bytes, got %d at index %lu of "
|
510
520
|
"serverlist. Ignoring",
|
511
|
-
|
521
|
+
server.ip_size, (unsigned long)idx);
|
512
522
|
}
|
513
523
|
return false;
|
514
524
|
}
|
@@ -519,20 +529,20 @@ bool IsServerValid(const grpc_grpclb_server* server, size_t idx, bool log) {
|
|
519
529
|
ServerAddressList GrpcLb::Serverlist::GetServerAddressList(
|
520
530
|
GrpcLbClientStats* client_stats) const {
|
521
531
|
ServerAddressList addresses;
|
522
|
-
for (size_t i = 0; i < serverlist_
|
523
|
-
const
|
524
|
-
if (!IsServerValid(
|
532
|
+
for (size_t i = 0; i < serverlist_.size(); ++i) {
|
533
|
+
const GrpcLbServer& server = serverlist_[i];
|
534
|
+
if (!IsServerValid(server, i, false)) continue;
|
525
535
|
// Address processing.
|
526
536
|
grpc_resolved_address addr;
|
527
537
|
ParseServer(server, &addr);
|
528
538
|
// LB token processing.
|
529
|
-
char lb_token[GPR_ARRAY_SIZE(server
|
530
|
-
if (server
|
539
|
+
char lb_token[GPR_ARRAY_SIZE(server.load_balance_token) + 1];
|
540
|
+
if (server.load_balance_token[0] != 0) {
|
531
541
|
const size_t lb_token_max_length =
|
532
|
-
GPR_ARRAY_SIZE(server
|
542
|
+
GPR_ARRAY_SIZE(server.load_balance_token);
|
533
543
|
const size_t lb_token_length =
|
534
|
-
strnlen(server
|
535
|
-
memcpy(lb_token, server
|
544
|
+
strnlen(server.load_balance_token, lb_token_max_length);
|
545
|
+
memcpy(lb_token, server.load_balance_token, lb_token_length);
|
536
546
|
lb_token[lb_token_length] = '\0';
|
537
547
|
} else {
|
538
548
|
char* uri = grpc_sockaddr_to_uri(&addr);
|
@@ -544,7 +554,7 @@ ServerAddressList GrpcLb::Serverlist::GetServerAddressList(
|
|
544
554
|
lb_token[0] = '\0';
|
545
555
|
}
|
546
556
|
// Add address.
|
547
|
-
InlinedVector<grpc_arg, 2> args_to_add;
|
557
|
+
absl::InlinedVector<grpc_arg, 2> args_to_add;
|
548
558
|
args_to_add.emplace_back(grpc_channel_arg_pointer_create(
|
549
559
|
const_cast<char*>(GRPC_ARG_GRPCLB_ADDRESS_LB_TOKEN), lb_token,
|
550
560
|
&lb_token_arg_vtable));
|
@@ -561,18 +571,18 @@ ServerAddressList GrpcLb::Serverlist::GetServerAddressList(
|
|
561
571
|
}
|
562
572
|
|
563
573
|
bool GrpcLb::Serverlist::ContainsAllDropEntries() const {
|
564
|
-
if (serverlist_
|
565
|
-
for (
|
566
|
-
if (!
|
574
|
+
if (serverlist_.empty()) return false;
|
575
|
+
for (const GrpcLbServer& server : serverlist_) {
|
576
|
+
if (!server.drop) return false;
|
567
577
|
}
|
568
578
|
return true;
|
569
579
|
}
|
570
580
|
|
571
581
|
const char* GrpcLb::Serverlist::ShouldDrop() {
|
572
|
-
if (serverlist_
|
573
|
-
|
574
|
-
drop_index_ = (drop_index_ + 1) % serverlist_
|
575
|
-
return server
|
582
|
+
if (serverlist_.empty()) return nullptr;
|
583
|
+
GrpcLbServer& server = serverlist_[drop_index_];
|
584
|
+
drop_index_ = (drop_index_ + 1) % serverlist_.size();
|
585
|
+
return server.drop ? server.load_balance_token : nullptr;
|
576
586
|
}
|
577
587
|
|
578
588
|
//
|
@@ -615,7 +625,7 @@ GrpcLb::PickResult GrpcLb::Picker::Pick(PickArgs args) {
|
|
615
625
|
// how to interpret it.
|
616
626
|
args.initial_metadata->Add(
|
617
627
|
kGrpcLbClientStatsMetadataKey,
|
618
|
-
|
628
|
+
absl::string_view(reinterpret_cast<const char*>(client_stats), 0));
|
619
629
|
// Update calls-started.
|
620
630
|
client_stats->AddCallStarted();
|
621
631
|
}
|
@@ -637,46 +647,15 @@ GrpcLb::PickResult GrpcLb::Picker::Pick(PickArgs args) {
|
|
637
647
|
// GrpcLb::Helper
|
638
648
|
//
|
639
649
|
|
640
|
-
bool GrpcLb::Helper::CalledByPendingChild() const {
|
641
|
-
GPR_ASSERT(child_ != nullptr);
|
642
|
-
return child_ == parent_->pending_child_policy_.get();
|
643
|
-
}
|
644
|
-
|
645
|
-
bool GrpcLb::Helper::CalledByCurrentChild() const {
|
646
|
-
GPR_ASSERT(child_ != nullptr);
|
647
|
-
return child_ == parent_->child_policy_.get();
|
648
|
-
}
|
649
|
-
|
650
650
|
RefCountedPtr<SubchannelInterface> GrpcLb::Helper::CreateSubchannel(
|
651
651
|
const grpc_channel_args& args) {
|
652
|
-
if (parent_->shutting_down_
|
653
|
-
(!CalledByPendingChild() && !CalledByCurrentChild())) {
|
654
|
-
return nullptr;
|
655
|
-
}
|
652
|
+
if (parent_->shutting_down_) return nullptr;
|
656
653
|
return parent_->channel_control_helper()->CreateSubchannel(args);
|
657
654
|
}
|
658
655
|
|
659
656
|
void GrpcLb::Helper::UpdateState(grpc_connectivity_state state,
|
660
657
|
std::unique_ptr<SubchannelPicker> picker) {
|
661
658
|
if (parent_->shutting_down_) return;
|
662
|
-
// If this request is from the pending child policy, ignore it until
|
663
|
-
// it reports READY, at which point we swap it into place.
|
664
|
-
if (CalledByPendingChild()) {
|
665
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
666
|
-
gpr_log(GPR_INFO,
|
667
|
-
"[grpclb %p helper %p] pending child policy %p reports state=%s",
|
668
|
-
parent_.get(), this, parent_->pending_child_policy_.get(),
|
669
|
-
ConnectivityStateName(state));
|
670
|
-
}
|
671
|
-
if (state != GRPC_CHANNEL_READY) return;
|
672
|
-
grpc_pollset_set_del_pollset_set(
|
673
|
-
parent_->child_policy_->interested_parties(),
|
674
|
-
parent_->interested_parties());
|
675
|
-
parent_->child_policy_ = std::move(parent_->pending_child_policy_);
|
676
|
-
} else if (!CalledByCurrentChild()) {
|
677
|
-
// This request is from an outdated child, so ignore it.
|
678
|
-
return;
|
679
|
-
}
|
680
659
|
// Record whether child policy reports READY.
|
681
660
|
parent_->child_policy_ready_ = state == GRPC_CHANNEL_READY;
|
682
661
|
// Enter fallback mode if needed.
|
@@ -722,22 +701,13 @@ void GrpcLb::Helper::UpdateState(grpc_connectivity_state state,
|
|
722
701
|
client_stats = parent_->lb_calld_->client_stats()->Ref();
|
723
702
|
}
|
724
703
|
parent_->channel_control_helper()->UpdateState(
|
725
|
-
state,
|
704
|
+
state,
|
705
|
+
absl::make_unique<Picker>(parent_.get(), parent_->serverlist_,
|
726
706
|
std::move(picker), std::move(client_stats)));
|
727
707
|
}
|
728
708
|
|
729
709
|
void GrpcLb::Helper::RequestReresolution() {
|
730
710
|
if (parent_->shutting_down_) return;
|
731
|
-
const LoadBalancingPolicy* latest_child_policy =
|
732
|
-
parent_->pending_child_policy_ != nullptr
|
733
|
-
? parent_->pending_child_policy_.get()
|
734
|
-
: parent_->child_policy_.get();
|
735
|
-
if (child_ != latest_child_policy) return;
|
736
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
737
|
-
gpr_log(GPR_INFO,
|
738
|
-
"[grpclb %p] Re-resolution requested from %schild policy (%p).",
|
739
|
-
parent_.get(), CalledByPendingChild() ? "pending " : "", child_);
|
740
|
-
}
|
741
711
|
// If we are talking to a balancer, we expect to get updated addresses
|
742
712
|
// from the balancer, so we can ignore the re-resolution request from
|
743
713
|
// the child policy. Otherwise, pass the re-resolution request up to the
|
@@ -748,11 +718,9 @@ void GrpcLb::Helper::RequestReresolution() {
|
|
748
718
|
}
|
749
719
|
}
|
750
720
|
|
751
|
-
void GrpcLb::Helper::AddTraceEvent(TraceSeverity severity,
|
752
|
-
|
753
|
-
|
754
|
-
return;
|
755
|
-
}
|
721
|
+
void GrpcLb::Helper::AddTraceEvent(TraceSeverity severity,
|
722
|
+
absl::string_view message) {
|
723
|
+
if (parent_->shutting_down_) return;
|
756
724
|
parent_->channel_control_helper()->AddTraceEvent(severity, message);
|
757
725
|
}
|
758
726
|
|
@@ -771,6 +739,15 @@ GrpcLb::BalancerCallState::BalancerCallState(
|
|
771
739
|
// the polling entities from client_channel.
|
772
740
|
GPR_ASSERT(grpclb_policy()->server_name_ != nullptr);
|
773
741
|
GPR_ASSERT(grpclb_policy()->server_name_[0] != '\0');
|
742
|
+
// Closure Initialization
|
743
|
+
GRPC_CLOSURE_INIT(&lb_on_initial_request_sent_, OnInitialRequestSent, this,
|
744
|
+
grpc_schedule_on_exec_ctx);
|
745
|
+
GRPC_CLOSURE_INIT(&lb_on_balancer_message_received_,
|
746
|
+
OnBalancerMessageReceived, this, grpc_schedule_on_exec_ctx);
|
747
|
+
GRPC_CLOSURE_INIT(&lb_on_balancer_status_received_, OnBalancerStatusReceived,
|
748
|
+
this, grpc_schedule_on_exec_ctx);
|
749
|
+
GRPC_CLOSURE_INIT(&client_load_report_closure_, MaybeSendClientLoadReport,
|
750
|
+
this, grpc_schedule_on_exec_ctx);
|
774
751
|
const grpc_millis deadline =
|
775
752
|
grpclb_policy()->lb_call_timeout_ms_ == 0
|
776
753
|
? GRPC_MILLIS_INF_FUTURE
|
@@ -782,10 +759,8 @@ GrpcLb::BalancerCallState::BalancerCallState(
|
|
782
759
|
nullptr, deadline, nullptr);
|
783
760
|
// Init the LB call request payload.
|
784
761
|
upb::Arena arena;
|
785
|
-
grpc_grpclb_request* request =
|
786
|
-
grpc_grpclb_request_create(grpclb_policy()->server_name_, arena.ptr());
|
787
762
|
grpc_slice request_payload_slice =
|
788
|
-
|
763
|
+
GrpcLbRequestCreate(grpclb_policy()->server_name_, arena.ptr());
|
789
764
|
send_message_payload_ =
|
790
765
|
grpc_raw_byte_buffer_create(&request_payload_slice, 1);
|
791
766
|
grpc_slice_unref_internal(request_payload_slice);
|
@@ -849,8 +824,6 @@ void GrpcLb::BalancerCallState::StartQuery() {
|
|
849
824
|
// with the callback.
|
850
825
|
auto self = Ref(DEBUG_LOCATION, "on_initial_request_sent");
|
851
826
|
self.release();
|
852
|
-
GRPC_CLOSURE_INIT(&lb_on_initial_request_sent_, OnInitialRequestSent, this,
|
853
|
-
grpc_schedule_on_exec_ctx);
|
854
827
|
call_error = grpc_call_start_batch_and_execute(
|
855
828
|
lb_call_, ops, (size_t)(op - ops), &lb_on_initial_request_sent_);
|
856
829
|
GPR_ASSERT(GRPC_CALL_OK == call_error);
|
@@ -873,8 +846,6 @@ void GrpcLb::BalancerCallState::StartQuery() {
|
|
873
846
|
// with the callback.
|
874
847
|
self = Ref(DEBUG_LOCATION, "on_message_received");
|
875
848
|
self.release();
|
876
|
-
GRPC_CLOSURE_INIT(&lb_on_balancer_message_received_,
|
877
|
-
OnBalancerMessageReceived, this, grpc_schedule_on_exec_ctx);
|
878
849
|
call_error = grpc_call_start_batch_and_execute(
|
879
850
|
lb_call_, ops, (size_t)(op - ops), &lb_on_balancer_message_received_);
|
880
851
|
GPR_ASSERT(GRPC_CALL_OK == call_error);
|
@@ -891,8 +862,6 @@ void GrpcLb::BalancerCallState::StartQuery() {
|
|
891
862
|
// This callback signals the end of the LB call, so it relies on the initial
|
892
863
|
// ref instead of a new ref. When it's invoked, it's the initial ref that is
|
893
864
|
// unreffed.
|
894
|
-
GRPC_CLOSURE_INIT(&lb_on_balancer_status_received_, OnBalancerStatusReceived,
|
895
|
-
this, grpc_schedule_on_exec_ctx);
|
896
865
|
call_error = grpc_call_start_batch_and_execute(
|
897
866
|
lb_call_, ops, (size_t)(op - ops), &lb_on_balancer_status_received_);
|
898
867
|
GPR_ASSERT(GRPC_CALL_OK == call_error);
|
@@ -911,58 +880,48 @@ void GrpcLb::BalancerCallState::ScheduleNextClientLoadReportLocked() {
|
|
911
880
|
void GrpcLb::BalancerCallState::MaybeSendClientLoadReport(void* arg,
|
912
881
|
grpc_error* error) {
|
913
882
|
BalancerCallState* lb_calld = static_cast<BalancerCallState*>(arg);
|
914
|
-
|
915
|
-
|
916
|
-
|
917
|
-
|
883
|
+
GRPC_ERROR_REF(error); // ref owned by lambda
|
884
|
+
lb_calld->grpclb_policy()->work_serializer()->Run(
|
885
|
+
[lb_calld, error]() { lb_calld->MaybeSendClientLoadReportLocked(error); },
|
886
|
+
DEBUG_LOCATION);
|
918
887
|
}
|
919
888
|
|
920
889
|
void GrpcLb::BalancerCallState::MaybeSendClientLoadReportLocked(
|
921
|
-
|
922
|
-
|
923
|
-
|
924
|
-
|
925
|
-
|
926
|
-
lb_calld->Unref(DEBUG_LOCATION, "client_load_report");
|
890
|
+
grpc_error* error) {
|
891
|
+
client_load_report_timer_callback_pending_ = false;
|
892
|
+
if (error != GRPC_ERROR_NONE || this != grpclb_policy()->lb_calld_.get()) {
|
893
|
+
Unref(DEBUG_LOCATION, "client_load_report");
|
894
|
+
GRPC_ERROR_UNREF(error);
|
927
895
|
return;
|
928
896
|
}
|
929
897
|
// If we've already sent the initial request, then we can go ahead and send
|
930
898
|
// the load report. Otherwise, we need to wait until the initial request has
|
931
899
|
// been sent to send this (see OnInitialRequestSentLocked()).
|
932
|
-
if (
|
933
|
-
|
900
|
+
if (send_message_payload_ == nullptr) {
|
901
|
+
SendClientLoadReportLocked();
|
934
902
|
} else {
|
935
|
-
|
903
|
+
client_load_report_is_due_ = true;
|
936
904
|
}
|
937
905
|
}
|
938
906
|
|
939
|
-
bool GrpcLb::BalancerCallState::LoadReportCountersAreZero(
|
940
|
-
grpc_grpclb_request* request) {
|
941
|
-
const grpc_lb_v1_ClientStats* cstats =
|
942
|
-
grpc_lb_v1_LoadBalanceRequest_client_stats(request);
|
943
|
-
if (cstats == nullptr) {
|
944
|
-
return true;
|
945
|
-
}
|
946
|
-
size_t drop_count;
|
947
|
-
grpc_lb_v1_ClientStats_calls_finished_with_drop(cstats, &drop_count);
|
948
|
-
return grpc_lb_v1_ClientStats_num_calls_started(cstats) == 0 &&
|
949
|
-
grpc_lb_v1_ClientStats_num_calls_finished(cstats) == 0 &&
|
950
|
-
grpc_lb_v1_ClientStats_num_calls_finished_with_client_failed_to_send(
|
951
|
-
cstats) == 0 &&
|
952
|
-
grpc_lb_v1_ClientStats_num_calls_finished_known_received(cstats) ==
|
953
|
-
0 &&
|
954
|
-
drop_count == 0;
|
955
|
-
}
|
956
|
-
|
957
907
|
void GrpcLb::BalancerCallState::SendClientLoadReportLocked() {
|
958
908
|
// Construct message payload.
|
959
909
|
GPR_ASSERT(send_message_payload_ == nullptr);
|
960
|
-
|
961
|
-
|
962
|
-
|
910
|
+
// Get snapshot of stats.
|
911
|
+
int64_t num_calls_started;
|
912
|
+
int64_t num_calls_finished;
|
913
|
+
int64_t num_calls_finished_with_client_failed_to_send;
|
914
|
+
int64_t num_calls_finished_known_received;
|
915
|
+
std::unique_ptr<GrpcLbClientStats::DroppedCallCounts> drop_token_counts;
|
916
|
+
client_stats_->Get(&num_calls_started, &num_calls_finished,
|
917
|
+
&num_calls_finished_with_client_failed_to_send,
|
918
|
+
&num_calls_finished_known_received, &drop_token_counts);
|
963
919
|
// Skip client load report if the counters were all zero in the last
|
964
920
|
// report and they are still zero in this one.
|
965
|
-
if (
|
921
|
+
if (num_calls_started == 0 && num_calls_finished == 0 &&
|
922
|
+
num_calls_finished_with_client_failed_to_send == 0 &&
|
923
|
+
num_calls_finished_known_received == 0 &&
|
924
|
+
(drop_token_counts == nullptr || drop_token_counts->size() == 0)) {
|
966
925
|
if (last_client_load_report_counters_were_zero_) {
|
967
926
|
ScheduleNextClientLoadReportLocked();
|
968
927
|
return;
|
@@ -971,8 +930,12 @@ void GrpcLb::BalancerCallState::SendClientLoadReportLocked() {
|
|
971
930
|
} else {
|
972
931
|
last_client_load_report_counters_were_zero_ = false;
|
973
932
|
}
|
974
|
-
|
975
|
-
|
933
|
+
// Populate load report.
|
934
|
+
upb::Arena arena;
|
935
|
+
grpc_slice request_payload_slice = GrpcLbLoadReportRequestCreate(
|
936
|
+
num_calls_started, num_calls_finished,
|
937
|
+
num_calls_finished_with_client_failed_to_send,
|
938
|
+
num_calls_finished_known_received, drop_token_counts.get(), arena.ptr());
|
976
939
|
send_message_payload_ =
|
977
940
|
grpc_raw_byte_buffer_create(&request_payload_slice, 1);
|
978
941
|
grpc_slice_unref_internal(request_payload_slice);
|
@@ -996,291 +959,275 @@ void GrpcLb::BalancerCallState::SendClientLoadReportLocked() {
|
|
996
959
|
void GrpcLb::BalancerCallState::ClientLoadReportDone(void* arg,
|
997
960
|
grpc_error* error) {
|
998
961
|
BalancerCallState* lb_calld = static_cast<BalancerCallState*>(arg);
|
999
|
-
|
1000
|
-
|
1001
|
-
|
1002
|
-
|
962
|
+
GRPC_ERROR_REF(error); // ref owned by lambda
|
963
|
+
lb_calld->grpclb_policy()->work_serializer()->Run(
|
964
|
+
[lb_calld, error]() { lb_calld->ClientLoadReportDoneLocked(error); },
|
965
|
+
DEBUG_LOCATION);
|
1003
966
|
}
|
1004
967
|
|
1005
|
-
void GrpcLb::BalancerCallState::ClientLoadReportDoneLocked(
|
1006
|
-
|
1007
|
-
|
1008
|
-
|
1009
|
-
|
1010
|
-
|
1011
|
-
if (error != GRPC_ERROR_NONE || lb_calld != grpclb_policy->lb_calld_.get()) {
|
1012
|
-
lb_calld->Unref(DEBUG_LOCATION, "client_load_report");
|
968
|
+
void GrpcLb::BalancerCallState::ClientLoadReportDoneLocked(grpc_error* error) {
|
969
|
+
grpc_byte_buffer_destroy(send_message_payload_);
|
970
|
+
send_message_payload_ = nullptr;
|
971
|
+
if (error != GRPC_ERROR_NONE || this != grpclb_policy()->lb_calld_.get()) {
|
972
|
+
Unref(DEBUG_LOCATION, "client_load_report");
|
973
|
+
GRPC_ERROR_UNREF(error);
|
1013
974
|
return;
|
1014
975
|
}
|
1015
|
-
|
976
|
+
ScheduleNextClientLoadReportLocked();
|
1016
977
|
}
|
1017
978
|
|
1018
979
|
void GrpcLb::BalancerCallState::OnInitialRequestSent(void* arg,
|
1019
|
-
grpc_error* error) {
|
980
|
+
grpc_error* /*error*/) {
|
1020
981
|
BalancerCallState* lb_calld = static_cast<BalancerCallState*>(arg);
|
1021
|
-
lb_calld->grpclb_policy()->
|
1022
|
-
|
1023
|
-
OnInitialRequestSentLocked, lb_calld, nullptr),
|
1024
|
-
GRPC_ERROR_REF(error));
|
982
|
+
lb_calld->grpclb_policy()->work_serializer()->Run(
|
983
|
+
[lb_calld]() { lb_calld->OnInitialRequestSentLocked(); }, DEBUG_LOCATION);
|
1025
984
|
}
|
1026
985
|
|
1027
|
-
void GrpcLb::BalancerCallState::OnInitialRequestSentLocked(
|
1028
|
-
|
1029
|
-
|
1030
|
-
grpc_byte_buffer_destroy(lb_calld->send_message_payload_);
|
1031
|
-
lb_calld->send_message_payload_ = nullptr;
|
986
|
+
void GrpcLb::BalancerCallState::OnInitialRequestSentLocked() {
|
987
|
+
grpc_byte_buffer_destroy(send_message_payload_);
|
988
|
+
send_message_payload_ = nullptr;
|
1032
989
|
// If we attempted to send a client load report before the initial request was
|
1033
990
|
// sent (and this lb_calld is still in use), send the load report now.
|
1034
|
-
if (
|
1035
|
-
|
1036
|
-
|
1037
|
-
lb_calld->client_load_report_is_due_ = false;
|
991
|
+
if (client_load_report_is_due_ && this == grpclb_policy()->lb_calld_.get()) {
|
992
|
+
SendClientLoadReportLocked();
|
993
|
+
client_load_report_is_due_ = false;
|
1038
994
|
}
|
1039
|
-
|
995
|
+
Unref(DEBUG_LOCATION, "on_initial_request_sent");
|
1040
996
|
}
|
1041
997
|
|
1042
|
-
void GrpcLb::BalancerCallState::OnBalancerMessageReceived(
|
1043
|
-
|
998
|
+
void GrpcLb::BalancerCallState::OnBalancerMessageReceived(
|
999
|
+
void* arg, grpc_error* /*error*/) {
|
1044
1000
|
BalancerCallState* lb_calld = static_cast<BalancerCallState*>(arg);
|
1045
|
-
lb_calld->grpclb_policy()->
|
1046
|
-
|
1047
|
-
|
1048
|
-
GRPC_ERROR_REF(error));
|
1001
|
+
lb_calld->grpclb_policy()->work_serializer()->Run(
|
1002
|
+
[lb_calld]() { lb_calld->OnBalancerMessageReceivedLocked(); },
|
1003
|
+
DEBUG_LOCATION);
|
1049
1004
|
}
|
1050
1005
|
|
1051
|
-
void GrpcLb::BalancerCallState::OnBalancerMessageReceivedLocked(
|
1052
|
-
void* arg, grpc_error* /*error*/) {
|
1053
|
-
BalancerCallState* lb_calld = static_cast<BalancerCallState*>(arg);
|
1054
|
-
GrpcLb* grpclb_policy = lb_calld->grpclb_policy();
|
1006
|
+
void GrpcLb::BalancerCallState::OnBalancerMessageReceivedLocked() {
|
1055
1007
|
// Null payload means the LB call was cancelled.
|
1056
|
-
if (
|
1057
|
-
|
1058
|
-
|
1008
|
+
if (this != grpclb_policy()->lb_calld_.get() ||
|
1009
|
+
recv_message_payload_ == nullptr) {
|
1010
|
+
Unref(DEBUG_LOCATION, "on_message_received");
|
1059
1011
|
return;
|
1060
1012
|
}
|
1061
1013
|
grpc_byte_buffer_reader bbr;
|
1062
|
-
grpc_byte_buffer_reader_init(&bbr,
|
1014
|
+
grpc_byte_buffer_reader_init(&bbr, recv_message_payload_);
|
1063
1015
|
grpc_slice response_slice = grpc_byte_buffer_reader_readall(&bbr);
|
1064
1016
|
grpc_byte_buffer_reader_destroy(&bbr);
|
1065
|
-
grpc_byte_buffer_destroy(
|
1066
|
-
|
1067
|
-
|
1068
|
-
grpc_grpclb_serverlist* serverlist;
|
1017
|
+
grpc_byte_buffer_destroy(recv_message_payload_);
|
1018
|
+
recv_message_payload_ = nullptr;
|
1019
|
+
GrpcLbResponse response;
|
1069
1020
|
upb::Arena arena;
|
1070
|
-
if (!
|
1071
|
-
(
|
1072
|
-
response_slice, arena.ptr())) != nullptr) {
|
1073
|
-
// Have NOT seen initial response, look for initial response.
|
1074
|
-
const google_protobuf_Duration* client_stats_report_interval =
|
1075
|
-
grpc_lb_v1_InitialLoadBalanceResponse_client_stats_report_interval(
|
1076
|
-
initial_response);
|
1077
|
-
if (client_stats_report_interval != nullptr) {
|
1078
|
-
lb_calld->client_stats_report_interval_ =
|
1079
|
-
GPR_MAX(GPR_MS_PER_SEC,
|
1080
|
-
grpc_grpclb_duration_to_millis(client_stats_report_interval));
|
1081
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
1082
|
-
gpr_log(GPR_INFO,
|
1083
|
-
"[grpclb %p] lb_calld=%p: Received initial LB response "
|
1084
|
-
"message; client load reporting interval = %" PRId64
|
1085
|
-
" milliseconds",
|
1086
|
-
grpclb_policy, lb_calld,
|
1087
|
-
lb_calld->client_stats_report_interval_);
|
1088
|
-
}
|
1089
|
-
} else if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
1090
|
-
gpr_log(GPR_INFO,
|
1091
|
-
"[grpclb %p] lb_calld=%p: Received initial LB response message; "
|
1092
|
-
"client load reporting NOT enabled",
|
1093
|
-
grpclb_policy, lb_calld);
|
1094
|
-
}
|
1095
|
-
lb_calld->seen_initial_response_ = true;
|
1096
|
-
} else if ((serverlist = grpc_grpclb_response_parse_serverlist(
|
1097
|
-
response_slice)) != nullptr) {
|
1098
|
-
// Have seen initial response, look for serverlist.
|
1099
|
-
GPR_ASSERT(lb_calld->lb_call_ != nullptr);
|
1100
|
-
auto serverlist_wrapper = MakeRefCounted<Serverlist>(serverlist);
|
1101
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
1102
|
-
grpc_core::UniquePtr<char> serverlist_text = serverlist_wrapper->AsText();
|
1103
|
-
gpr_log(GPR_INFO,
|
1104
|
-
"[grpclb %p] lb_calld=%p: Serverlist with %" PRIuPTR
|
1105
|
-
" servers received:\n%s",
|
1106
|
-
grpclb_policy, lb_calld, serverlist->num_servers,
|
1107
|
-
serverlist_text.get());
|
1108
|
-
}
|
1109
|
-
lb_calld->seen_serverlist_ = true;
|
1110
|
-
// Start sending client load report only after we start using the
|
1111
|
-
// serverlist returned from the current LB call.
|
1112
|
-
if (lb_calld->client_stats_report_interval_ > 0 &&
|
1113
|
-
lb_calld->client_stats_ == nullptr) {
|
1114
|
-
lb_calld->client_stats_ = MakeRefCounted<GrpcLbClientStats>();
|
1115
|
-
// Ref held by callback.
|
1116
|
-
lb_calld->Ref(DEBUG_LOCATION, "client_load_report").release();
|
1117
|
-
lb_calld->ScheduleNextClientLoadReportLocked();
|
1118
|
-
}
|
1119
|
-
// Check if the serverlist differs from the previous one.
|
1120
|
-
if (grpclb_policy->serverlist_ != nullptr &&
|
1121
|
-
*grpclb_policy->serverlist_ == *serverlist_wrapper) {
|
1122
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
1123
|
-
gpr_log(GPR_INFO,
|
1124
|
-
"[grpclb %p] lb_calld=%p: Incoming server list identical to "
|
1125
|
-
"current, ignoring.",
|
1126
|
-
grpclb_policy, lb_calld);
|
1127
|
-
}
|
1128
|
-
} else { // New serverlist.
|
1129
|
-
// Dispose of the fallback.
|
1130
|
-
// TODO(roth): Ideally, we should stay in fallback mode until we
|
1131
|
-
// know that we can reach at least one of the backends in the new
|
1132
|
-
// serverlist. Unfortunately, we can't do that, since we need to
|
1133
|
-
// send the new addresses to the child policy in order to determine
|
1134
|
-
// if they are reachable, and if we don't exit fallback mode now,
|
1135
|
-
// CreateOrUpdateChildPolicyLocked() will use the fallback
|
1136
|
-
// addresses instead of the addresses from the new serverlist.
|
1137
|
-
// However, if we can't reach any of the servers in the new
|
1138
|
-
// serverlist, then the child policy will never switch away from
|
1139
|
-
// the fallback addresses, but the grpclb policy will still think
|
1140
|
-
// that we're not in fallback mode, which means that we won't send
|
1141
|
-
// updates to the child policy when the fallback addresses are
|
1142
|
-
// updated by the resolver. This is sub-optimal, but the only way
|
1143
|
-
// to fix it is to maintain a completely separate child policy for
|
1144
|
-
// fallback mode, and that's more work than we want to put into
|
1145
|
-
// the grpclb implementation at this point, since we're deprecating
|
1146
|
-
// it in favor of the xds policy. We will implement this the
|
1147
|
-
// right way in the xds policy instead.
|
1148
|
-
if (grpclb_policy->fallback_mode_) {
|
1149
|
-
gpr_log(GPR_INFO,
|
1150
|
-
"[grpclb %p] Received response from balancer; exiting "
|
1151
|
-
"fallback mode",
|
1152
|
-
grpclb_policy);
|
1153
|
-
grpclb_policy->fallback_mode_ = false;
|
1154
|
-
}
|
1155
|
-
if (grpclb_policy->fallback_at_startup_checks_pending_) {
|
1156
|
-
grpclb_policy->fallback_at_startup_checks_pending_ = false;
|
1157
|
-
grpc_timer_cancel(&grpclb_policy->lb_fallback_timer_);
|
1158
|
-
grpclb_policy->CancelBalancerChannelConnectivityWatchLocked();
|
1159
|
-
}
|
1160
|
-
// Update the serverlist in the GrpcLb instance. This serverlist
|
1161
|
-
// instance will be destroyed either upon the next update or when the
|
1162
|
-
// GrpcLb instance is destroyed.
|
1163
|
-
grpclb_policy->serverlist_ = std::move(serverlist_wrapper);
|
1164
|
-
grpclb_policy->CreateOrUpdateChildPolicyLocked();
|
1165
|
-
}
|
1166
|
-
} else {
|
1167
|
-
// No valid initial response or serverlist found.
|
1021
|
+
if (!GrpcLbResponseParse(response_slice, arena.ptr(), &response) ||
|
1022
|
+
(response.type == response.INITIAL && seen_initial_response_)) {
|
1168
1023
|
char* response_slice_str =
|
1169
1024
|
grpc_dump_slice(response_slice, GPR_DUMP_ASCII | GPR_DUMP_HEX);
|
1170
1025
|
gpr_log(GPR_ERROR,
|
1171
1026
|
"[grpclb %p] lb_calld=%p: Invalid LB response received: '%s'. "
|
1172
1027
|
"Ignoring.",
|
1173
|
-
grpclb_policy,
|
1028
|
+
grpclb_policy(), this, response_slice_str);
|
1174
1029
|
gpr_free(response_slice_str);
|
1030
|
+
} else {
|
1031
|
+
switch (response.type) {
|
1032
|
+
case response.INITIAL: {
|
1033
|
+
if (response.client_stats_report_interval != 0) {
|
1034
|
+
client_stats_report_interval_ =
|
1035
|
+
GPR_MAX(GPR_MS_PER_SEC, response.client_stats_report_interval);
|
1036
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
1037
|
+
gpr_log(GPR_INFO,
|
1038
|
+
"[grpclb %p] lb_calld=%p: Received initial LB response "
|
1039
|
+
"message; client load reporting interval = %" PRId64
|
1040
|
+
" milliseconds",
|
1041
|
+
grpclb_policy(), this, client_stats_report_interval_);
|
1042
|
+
}
|
1043
|
+
} else if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
1044
|
+
gpr_log(GPR_INFO,
|
1045
|
+
"[grpclb %p] lb_calld=%p: Received initial LB response "
|
1046
|
+
"message; client load reporting NOT enabled",
|
1047
|
+
grpclb_policy(), this);
|
1048
|
+
}
|
1049
|
+
seen_initial_response_ = true;
|
1050
|
+
break;
|
1051
|
+
}
|
1052
|
+
case response.SERVERLIST: {
|
1053
|
+
GPR_ASSERT(lb_call_ != nullptr);
|
1054
|
+
auto serverlist_wrapper =
|
1055
|
+
MakeRefCounted<Serverlist>(std::move(response.serverlist));
|
1056
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
1057
|
+
gpr_log(GPR_INFO,
|
1058
|
+
"[grpclb %p] lb_calld=%p: Serverlist with %" PRIuPTR
|
1059
|
+
" servers received:\n%s",
|
1060
|
+
grpclb_policy(), this,
|
1061
|
+
serverlist_wrapper->serverlist().size(),
|
1062
|
+
serverlist_wrapper->AsText().c_str());
|
1063
|
+
}
|
1064
|
+
seen_serverlist_ = true;
|
1065
|
+
// Start sending client load report only after we start using the
|
1066
|
+
// serverlist returned from the current LB call.
|
1067
|
+
if (client_stats_report_interval_ > 0 && client_stats_ == nullptr) {
|
1068
|
+
client_stats_ = MakeRefCounted<GrpcLbClientStats>();
|
1069
|
+
// Ref held by callback.
|
1070
|
+
Ref(DEBUG_LOCATION, "client_load_report").release();
|
1071
|
+
ScheduleNextClientLoadReportLocked();
|
1072
|
+
}
|
1073
|
+
// Check if the serverlist differs from the previous one.
|
1074
|
+
if (grpclb_policy()->serverlist_ != nullptr &&
|
1075
|
+
*grpclb_policy()->serverlist_ == *serverlist_wrapper) {
|
1076
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
1077
|
+
gpr_log(GPR_INFO,
|
1078
|
+
"[grpclb %p] lb_calld=%p: Incoming server list identical "
|
1079
|
+
"to current, ignoring.",
|
1080
|
+
grpclb_policy(), this);
|
1081
|
+
}
|
1082
|
+
} else { // New serverlist.
|
1083
|
+
// Dispose of the fallback.
|
1084
|
+
// TODO(roth): Ideally, we should stay in fallback mode until we
|
1085
|
+
// know that we can reach at least one of the backends in the new
|
1086
|
+
// serverlist. Unfortunately, we can't do that, since we need to
|
1087
|
+
// send the new addresses to the child policy in order to determine
|
1088
|
+
// if they are reachable, and if we don't exit fallback mode now,
|
1089
|
+
// CreateOrUpdateChildPolicyLocked() will use the fallback
|
1090
|
+
// addresses instead of the addresses from the new serverlist.
|
1091
|
+
// However, if we can't reach any of the servers in the new
|
1092
|
+
// serverlist, then the child policy will never switch away from
|
1093
|
+
// the fallback addresses, but the grpclb policy will still think
|
1094
|
+
// that we're not in fallback mode, which means that we won't send
|
1095
|
+
// updates to the child policy when the fallback addresses are
|
1096
|
+
// updated by the resolver. This is sub-optimal, but the only way
|
1097
|
+
// to fix it is to maintain a completely separate child policy for
|
1098
|
+
// fallback mode, and that's more work than we want to put into
|
1099
|
+
// the grpclb implementation at this point, since we're deprecating
|
1100
|
+
// it in favor of the xds policy. We will implement this the
|
1101
|
+
// right way in the xds policy instead.
|
1102
|
+
if (grpclb_policy()->fallback_mode_) {
|
1103
|
+
gpr_log(GPR_INFO,
|
1104
|
+
"[grpclb %p] Received response from balancer; exiting "
|
1105
|
+
"fallback mode",
|
1106
|
+
grpclb_policy());
|
1107
|
+
grpclb_policy()->fallback_mode_ = false;
|
1108
|
+
}
|
1109
|
+
if (grpclb_policy()->fallback_at_startup_checks_pending_) {
|
1110
|
+
grpclb_policy()->fallback_at_startup_checks_pending_ = false;
|
1111
|
+
grpc_timer_cancel(&grpclb_policy()->lb_fallback_timer_);
|
1112
|
+
grpclb_policy()->CancelBalancerChannelConnectivityWatchLocked();
|
1113
|
+
}
|
1114
|
+
// Update the serverlist in the GrpcLb instance. This serverlist
|
1115
|
+
// instance will be destroyed either upon the next update or when the
|
1116
|
+
// GrpcLb instance is destroyed.
|
1117
|
+
grpclb_policy()->serverlist_ = std::move(serverlist_wrapper);
|
1118
|
+
grpclb_policy()->CreateOrUpdateChildPolicyLocked();
|
1119
|
+
}
|
1120
|
+
break;
|
1121
|
+
}
|
1122
|
+
case response.FALLBACK: {
|
1123
|
+
if (!grpclb_policy()->fallback_mode_) {
|
1124
|
+
gpr_log(GPR_INFO,
|
1125
|
+
"[grpclb %p] Entering fallback mode as requested by balancer",
|
1126
|
+
grpclb_policy());
|
1127
|
+
if (grpclb_policy()->fallback_at_startup_checks_pending_) {
|
1128
|
+
grpclb_policy()->fallback_at_startup_checks_pending_ = false;
|
1129
|
+
grpc_timer_cancel(&grpclb_policy()->lb_fallback_timer_);
|
1130
|
+
grpclb_policy()->CancelBalancerChannelConnectivityWatchLocked();
|
1131
|
+
}
|
1132
|
+
grpclb_policy()->fallback_mode_ = true;
|
1133
|
+
grpclb_policy()->CreateOrUpdateChildPolicyLocked();
|
1134
|
+
// Reset serverlist, so that if the balancer exits fallback
|
1135
|
+
// mode by sending the same serverlist we were previously
|
1136
|
+
// using, we don't incorrectly ignore it as a duplicate.
|
1137
|
+
grpclb_policy()->serverlist_.reset();
|
1138
|
+
}
|
1139
|
+
break;
|
1140
|
+
}
|
1141
|
+
}
|
1175
1142
|
}
|
1176
1143
|
grpc_slice_unref_internal(response_slice);
|
1177
|
-
if (!grpclb_policy->shutting_down_) {
|
1144
|
+
if (!grpclb_policy()->shutting_down_) {
|
1178
1145
|
// Keep listening for serverlist updates.
|
1179
1146
|
grpc_op op;
|
1180
1147
|
memset(&op, 0, sizeof(op));
|
1181
1148
|
op.op = GRPC_OP_RECV_MESSAGE;
|
1182
|
-
op.data.recv_message.recv_message = &
|
1149
|
+
op.data.recv_message.recv_message = &recv_message_payload_;
|
1183
1150
|
op.flags = 0;
|
1184
1151
|
op.reserved = nullptr;
|
1185
1152
|
// Reuse the "OnBalancerMessageReceivedLocked" ref taken in StartQuery().
|
1186
|
-
GRPC_CLOSURE_INIT(&lb_calld->lb_on_balancer_message_received_,
|
1187
|
-
GrpcLb::BalancerCallState::OnBalancerMessageReceived,
|
1188
|
-
lb_calld, grpc_schedule_on_exec_ctx);
|
1189
1153
|
const grpc_call_error call_error = grpc_call_start_batch_and_execute(
|
1190
|
-
|
1191
|
-
&lb_calld->lb_on_balancer_message_received_);
|
1154
|
+
lb_call_, &op, 1, &lb_on_balancer_message_received_);
|
1192
1155
|
GPR_ASSERT(GRPC_CALL_OK == call_error);
|
1193
1156
|
} else {
|
1194
|
-
|
1157
|
+
Unref(DEBUG_LOCATION, "on_message_received+grpclb_shutdown");
|
1195
1158
|
}
|
1196
1159
|
}
|
1197
1160
|
|
1198
1161
|
void GrpcLb::BalancerCallState::OnBalancerStatusReceived(void* arg,
|
1199
1162
|
grpc_error* error) {
|
1200
1163
|
BalancerCallState* lb_calld = static_cast<BalancerCallState*>(arg);
|
1201
|
-
|
1202
|
-
|
1203
|
-
|
1204
|
-
|
1164
|
+
GRPC_ERROR_REF(error); // owned by lambda
|
1165
|
+
lb_calld->grpclb_policy()->work_serializer()->Run(
|
1166
|
+
[lb_calld, error]() { lb_calld->OnBalancerStatusReceivedLocked(error); },
|
1167
|
+
DEBUG_LOCATION);
|
1205
1168
|
}
|
1206
1169
|
|
1207
1170
|
void GrpcLb::BalancerCallState::OnBalancerStatusReceivedLocked(
|
1208
|
-
|
1209
|
-
|
1210
|
-
GrpcLb* grpclb_policy = lb_calld->grpclb_policy();
|
1211
|
-
GPR_ASSERT(lb_calld->lb_call_ != nullptr);
|
1171
|
+
grpc_error* error) {
|
1172
|
+
GPR_ASSERT(lb_call_ != nullptr);
|
1212
1173
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
1213
|
-
char* status_details =
|
1214
|
-
grpc_slice_to_c_string(lb_calld->lb_call_status_details_);
|
1174
|
+
char* status_details = grpc_slice_to_c_string(lb_call_status_details_);
|
1215
1175
|
gpr_log(GPR_INFO,
|
1216
1176
|
"[grpclb %p] lb_calld=%p: Status from LB server received. "
|
1217
1177
|
"Status = %d, details = '%s', (lb_call: %p), error '%s'",
|
1218
|
-
grpclb_policy,
|
1219
|
-
|
1178
|
+
grpclb_policy(), this, lb_call_status_, status_details, lb_call_,
|
1179
|
+
grpc_error_string(error));
|
1220
1180
|
gpr_free(status_details);
|
1221
1181
|
}
|
1182
|
+
GRPC_ERROR_UNREF(error);
|
1222
1183
|
// If this lb_calld is still in use, this call ended because of a failure so
|
1223
1184
|
// we want to retry connecting. Otherwise, we have deliberately ended this
|
1224
1185
|
// call and no further action is required.
|
1225
|
-
if (
|
1186
|
+
if (this == grpclb_policy()->lb_calld_.get()) {
|
1226
1187
|
// If the fallback-at-startup checks are pending, go into fallback mode
|
1227
1188
|
// immediately. This short-circuits the timeout for the fallback-at-startup
|
1228
1189
|
// case.
|
1229
|
-
if (grpclb_policy->fallback_at_startup_checks_pending_) {
|
1230
|
-
GPR_ASSERT(!
|
1190
|
+
if (grpclb_policy()->fallback_at_startup_checks_pending_) {
|
1191
|
+
GPR_ASSERT(!seen_serverlist_);
|
1231
1192
|
gpr_log(GPR_INFO,
|
1232
1193
|
"[grpclb %p] Balancer call finished without receiving "
|
1233
1194
|
"serverlist; entering fallback mode",
|
1234
|
-
grpclb_policy);
|
1235
|
-
grpclb_policy->fallback_at_startup_checks_pending_ = false;
|
1236
|
-
grpc_timer_cancel(&grpclb_policy->lb_fallback_timer_);
|
1237
|
-
grpclb_policy->CancelBalancerChannelConnectivityWatchLocked();
|
1238
|
-
grpclb_policy->fallback_mode_ = true;
|
1239
|
-
grpclb_policy->CreateOrUpdateChildPolicyLocked();
|
1195
|
+
grpclb_policy());
|
1196
|
+
grpclb_policy()->fallback_at_startup_checks_pending_ = false;
|
1197
|
+
grpc_timer_cancel(&grpclb_policy()->lb_fallback_timer_);
|
1198
|
+
grpclb_policy()->CancelBalancerChannelConnectivityWatchLocked();
|
1199
|
+
grpclb_policy()->fallback_mode_ = true;
|
1200
|
+
grpclb_policy()->CreateOrUpdateChildPolicyLocked();
|
1240
1201
|
} else {
|
1241
1202
|
// This handles the fallback-after-startup case.
|
1242
|
-
grpclb_policy->MaybeEnterFallbackModeAfterStartup();
|
1203
|
+
grpclb_policy()->MaybeEnterFallbackModeAfterStartup();
|
1243
1204
|
}
|
1244
|
-
grpclb_policy->lb_calld_.reset();
|
1245
|
-
GPR_ASSERT(!grpclb_policy->shutting_down_);
|
1246
|
-
grpclb_policy->channel_control_helper()->RequestReresolution();
|
1247
|
-
if (
|
1205
|
+
grpclb_policy()->lb_calld_.reset();
|
1206
|
+
GPR_ASSERT(!grpclb_policy()->shutting_down_);
|
1207
|
+
grpclb_policy()->channel_control_helper()->RequestReresolution();
|
1208
|
+
if (seen_initial_response_) {
|
1248
1209
|
// If we lose connection to the LB server, reset the backoff and restart
|
1249
1210
|
// the LB call immediately.
|
1250
|
-
grpclb_policy->lb_call_backoff_.Reset();
|
1251
|
-
grpclb_policy->StartBalancerCallLocked();
|
1211
|
+
grpclb_policy()->lb_call_backoff_.Reset();
|
1212
|
+
grpclb_policy()->StartBalancerCallLocked();
|
1252
1213
|
} else {
|
1253
1214
|
// If this LB call fails establishing any connection to the LB server,
|
1254
1215
|
// retry later.
|
1255
|
-
grpclb_policy->StartBalancerCallRetryTimerLocked();
|
1216
|
+
grpclb_policy()->StartBalancerCallRetryTimerLocked();
|
1256
1217
|
}
|
1257
1218
|
}
|
1258
|
-
|
1219
|
+
Unref(DEBUG_LOCATION, "lb_call_ended");
|
1259
1220
|
}
|
1260
1221
|
|
1261
1222
|
//
|
1262
1223
|
// helper code for creating balancer channel
|
1263
1224
|
//
|
1264
1225
|
|
1265
|
-
ServerAddressList ExtractBalancerAddresses(const
|
1266
|
-
ServerAddressList
|
1267
|
-
|
1268
|
-
|
1269
|
-
|
1270
|
-
// recursively use the grpclb policy in the channel used to talk to
|
1271
|
-
// the balancers. Note that we do NOT strip out the balancer_name
|
1272
|
-
// channel arg, since we need that to set the authority correctly
|
1273
|
-
// to talk to the balancers.
|
1274
|
-
static const char* args_to_remove[] = {
|
1275
|
-
GRPC_ARG_ADDRESS_IS_BALANCER,
|
1276
|
-
};
|
1277
|
-
balancer_addresses.emplace_back(
|
1278
|
-
addresses[i].address(),
|
1279
|
-
grpc_channel_args_copy_and_remove(addresses[i].args(), args_to_remove,
|
1280
|
-
GPR_ARRAY_SIZE(args_to_remove)));
|
1281
|
-
}
|
1282
|
-
}
|
1283
|
-
return balancer_addresses;
|
1226
|
+
ServerAddressList ExtractBalancerAddresses(const grpc_channel_args& args) {
|
1227
|
+
const ServerAddressList* addresses =
|
1228
|
+
FindGrpclbBalancerAddressesInChannelArgs(args);
|
1229
|
+
if (addresses != nullptr) return *addresses;
|
1230
|
+
return ServerAddressList();
|
1284
1231
|
}
|
1285
1232
|
|
1286
1233
|
/* Returns the channel args for the LB channel, used to create a bidirectional
|
@@ -1324,7 +1271,7 @@ grpc_channel_args* BuildBalancerChannelArgs(
|
|
1324
1271
|
GRPC_ARG_CHANNELZ_CHANNEL_NODE,
|
1325
1272
|
};
|
1326
1273
|
// Channel args to add.
|
1327
|
-
InlinedVector<grpc_arg, 3> args_to_add;
|
1274
|
+
absl::InlinedVector<grpc_arg, 3> args_to_add;
|
1328
1275
|
// The fake resolver response generator, which we use to inject
|
1329
1276
|
// address updates into the LB channel.
|
1330
1277
|
args_to_add.emplace_back(
|
@@ -1366,6 +1313,11 @@ GrpcLb::GrpcLb(Args args)
|
|
1366
1313
|
.set_jitter(GRPC_GRPCLB_RECONNECT_JITTER)
|
1367
1314
|
.set_max_backoff(GRPC_GRPCLB_RECONNECT_MAX_BACKOFF_SECONDS *
|
1368
1315
|
1000)) {
|
1316
|
+
// Closure Initialization
|
1317
|
+
GRPC_CLOSURE_INIT(&lb_on_fallback_, &GrpcLb::OnFallbackTimer, this,
|
1318
|
+
grpc_schedule_on_exec_ctx);
|
1319
|
+
GRPC_CLOSURE_INIT(&lb_on_call_retry_, &GrpcLb::OnBalancerCallRetryTimer, this,
|
1320
|
+
grpc_schedule_on_exec_ctx);
|
1369
1321
|
// Record server name.
|
1370
1322
|
const grpc_arg* arg = grpc_channel_args_find(args.args, GRPC_ARG_SERVER_URI);
|
1371
1323
|
const char* server_uri = grpc_channel_arg_get_string(arg);
|
@@ -1400,19 +1352,15 @@ void GrpcLb::ShutdownLocked() {
|
|
1400
1352
|
grpc_timer_cancel(&lb_call_retry_timer_);
|
1401
1353
|
}
|
1402
1354
|
if (fallback_at_startup_checks_pending_) {
|
1355
|
+
fallback_at_startup_checks_pending_ = false;
|
1403
1356
|
grpc_timer_cancel(&lb_fallback_timer_);
|
1404
1357
|
CancelBalancerChannelConnectivityWatchLocked();
|
1405
1358
|
}
|
1406
1359
|
if (child_policy_ != nullptr) {
|
1407
1360
|
grpc_pollset_set_del_pollset_set(child_policy_->interested_parties(),
|
1408
1361
|
interested_parties());
|
1362
|
+
child_policy_.reset();
|
1409
1363
|
}
|
1410
|
-
if (pending_child_policy_ != nullptr) {
|
1411
|
-
grpc_pollset_set_del_pollset_set(
|
1412
|
-
pending_child_policy_->interested_parties(), interested_parties());
|
1413
|
-
}
|
1414
|
-
child_policy_.reset();
|
1415
|
-
pending_child_policy_.reset();
|
1416
1364
|
// We destroy the LB channel here instead of in our destructor because
|
1417
1365
|
// destroying the channel triggers a last callback to
|
1418
1366
|
// OnBalancerChannelConnectivityChangedLocked(), and we need to be
|
@@ -1434,15 +1382,11 @@ void GrpcLb::ResetBackoffLocked() {
|
|
1434
1382
|
if (child_policy_ != nullptr) {
|
1435
1383
|
child_policy_->ResetBackoffLocked();
|
1436
1384
|
}
|
1437
|
-
if (pending_child_policy_ != nullptr) {
|
1438
|
-
pending_child_policy_->ResetBackoffLocked();
|
1439
|
-
}
|
1440
1385
|
}
|
1441
1386
|
|
1442
1387
|
void GrpcLb::UpdateLocked(UpdateArgs args) {
|
1443
1388
|
const bool is_initial_update = lb_channel_ == nullptr;
|
1444
|
-
auto* grpclb_config =
|
1445
|
-
static_cast<const ParsedGrpcLbConfig*>(args.config.get());
|
1389
|
+
auto* grpclb_config = static_cast<const GrpcLbConfig*>(args.config.get());
|
1446
1390
|
if (grpclb_config != nullptr) {
|
1447
1391
|
child_policy_config_ = grpclb_config->child_policy();
|
1448
1392
|
} else {
|
@@ -1458,8 +1402,6 @@ void GrpcLb::UpdateLocked(UpdateArgs args) {
|
|
1458
1402
|
// Start timer.
|
1459
1403
|
grpc_millis deadline = ExecCtx::Get()->Now() + fallback_at_startup_timeout_;
|
1460
1404
|
Ref(DEBUG_LOCATION, "on_fallback_timer").release(); // Ref for callback
|
1461
|
-
GRPC_CLOSURE_INIT(&lb_on_fallback_, &GrpcLb::OnFallbackTimer, this,
|
1462
|
-
grpc_schedule_on_exec_ctx);
|
1463
1405
|
grpc_timer_init(&lb_fallback_timer_, deadline, &lb_on_fallback_);
|
1464
1406
|
// Start watching the channel's connectivity state. If the channel
|
1465
1407
|
// goes into state TRANSIENT_FAILURE before the timer fires, we go into
|
@@ -1468,15 +1410,10 @@ void GrpcLb::UpdateLocked(UpdateArgs args) {
|
|
1468
1410
|
grpc_channel_get_channel_stack(lb_channel_));
|
1469
1411
|
GPR_ASSERT(client_channel_elem->filter == &grpc_client_channel_filter);
|
1470
1412
|
// Ref held by callback.
|
1471
|
-
Ref(DEBUG_LOCATION, "
|
1472
|
-
|
1473
|
-
|
1474
|
-
|
1475
|
-
grpc_client_channel_watch_connectivity_state(
|
1476
|
-
client_channel_elem,
|
1477
|
-
grpc_polling_entity_create_from_pollset_set(interested_parties()),
|
1478
|
-
&lb_channel_connectivity_, &lb_channel_on_connectivity_changed_,
|
1479
|
-
nullptr);
|
1413
|
+
watcher_ = new StateWatcher(Ref(DEBUG_LOCATION, "StateWatcher"));
|
1414
|
+
grpc_client_channel_start_connectivity_watch(
|
1415
|
+
client_channel_elem, GRPC_CHANNEL_IDLE,
|
1416
|
+
OrphanablePtr<AsyncConnectivityStateWatcherInterface>(watcher_));
|
1480
1417
|
// Start balancer call.
|
1481
1418
|
StartBalancerCallLocked();
|
1482
1419
|
}
|
@@ -1486,27 +1423,25 @@ void GrpcLb::UpdateLocked(UpdateArgs args) {
|
|
1486
1423
|
// helpers for UpdateLocked()
|
1487
1424
|
//
|
1488
1425
|
|
1489
|
-
|
1490
|
-
|
1426
|
+
ServerAddressList AddNullLbTokenToAddresses(
|
1427
|
+
const ServerAddressList& addresses) {
|
1491
1428
|
static const char* lb_token = "";
|
1492
1429
|
grpc_arg arg = grpc_channel_arg_pointer_create(
|
1493
1430
|
const_cast<char*>(GRPC_ARG_GRPCLB_ADDRESS_LB_TOKEN),
|
1494
1431
|
const_cast<char*>(lb_token), &lb_token_arg_vtable);
|
1495
|
-
ServerAddressList
|
1432
|
+
ServerAddressList addresses_out;
|
1496
1433
|
for (size_t i = 0; i < addresses.size(); ++i) {
|
1497
|
-
|
1498
|
-
|
1499
|
-
|
1500
|
-
grpc_channel_args_copy_and_add(addresses[i].args(), &arg, 1));
|
1501
|
-
}
|
1434
|
+
addresses_out.emplace_back(
|
1435
|
+
addresses[i].address(),
|
1436
|
+
grpc_channel_args_copy_and_add(addresses[i].args(), &arg, 1));
|
1502
1437
|
}
|
1503
|
-
return
|
1438
|
+
return addresses_out;
|
1504
1439
|
}
|
1505
1440
|
|
1506
1441
|
void GrpcLb::ProcessAddressesAndChannelArgsLocked(
|
1507
1442
|
const ServerAddressList& addresses, const grpc_channel_args& args) {
|
1508
1443
|
// Update fallback address list.
|
1509
|
-
fallback_backend_addresses_ =
|
1444
|
+
fallback_backend_addresses_ = AddNullLbTokenToAddresses(addresses);
|
1510
1445
|
// Make sure that GRPC_ARG_LB_POLICY_NAME is set in channel args,
|
1511
1446
|
// since we use this to trigger the client_load_reporting filter.
|
1512
1447
|
static const char* args_to_remove[] = {GRPC_ARG_LB_POLICY_NAME};
|
@@ -1516,7 +1451,7 @@ void GrpcLb::ProcessAddressesAndChannelArgsLocked(
|
|
1516
1451
|
args_ = grpc_channel_args_copy_and_add_and_remove(
|
1517
1452
|
&args, args_to_remove, GPR_ARRAY_SIZE(args_to_remove), &new_arg, 1);
|
1518
1453
|
// Construct args for balancer channel.
|
1519
|
-
ServerAddressList balancer_addresses = ExtractBalancerAddresses(
|
1454
|
+
ServerAddressList balancer_addresses = ExtractBalancerAddresses(args);
|
1520
1455
|
grpc_channel_args* lb_channel_args = BuildBalancerChannelArgs(
|
1521
1456
|
balancer_addresses, response_generator_.get(), &args);
|
1522
1457
|
// Create balancer channel if needed.
|
@@ -1535,60 +1470,11 @@ void GrpcLb::ProcessAddressesAndChannelArgsLocked(
|
|
1535
1470
|
response_generator_->SetResponse(std::move(result));
|
1536
1471
|
}
|
1537
1472
|
|
1538
|
-
void GrpcLb::OnBalancerChannelConnectivityChanged(void* arg,
|
1539
|
-
grpc_error* error) {
|
1540
|
-
GrpcLb* self = static_cast<GrpcLb*>(arg);
|
1541
|
-
self->combiner()->Run(
|
1542
|
-
GRPC_CLOSURE_INIT(&self->lb_channel_on_connectivity_changed_,
|
1543
|
-
&GrpcLb::OnBalancerChannelConnectivityChangedLocked,
|
1544
|
-
self, nullptr),
|
1545
|
-
GRPC_ERROR_REF(error));
|
1546
|
-
}
|
1547
|
-
|
1548
|
-
void GrpcLb::OnBalancerChannelConnectivityChangedLocked(void* arg,
|
1549
|
-
grpc_error* /*error*/) {
|
1550
|
-
GrpcLb* self = static_cast<GrpcLb*>(arg);
|
1551
|
-
if (!self->shutting_down_ && self->fallback_at_startup_checks_pending_) {
|
1552
|
-
if (self->lb_channel_connectivity_ != GRPC_CHANNEL_TRANSIENT_FAILURE) {
|
1553
|
-
// Not in TRANSIENT_FAILURE. Renew connectivity watch.
|
1554
|
-
grpc_channel_element* client_channel_elem =
|
1555
|
-
grpc_channel_stack_last_element(
|
1556
|
-
grpc_channel_get_channel_stack(self->lb_channel_));
|
1557
|
-
GPR_ASSERT(client_channel_elem->filter == &grpc_client_channel_filter);
|
1558
|
-
GRPC_CLOSURE_INIT(&self->lb_channel_on_connectivity_changed_,
|
1559
|
-
&GrpcLb::OnBalancerChannelConnectivityChanged, self,
|
1560
|
-
grpc_schedule_on_exec_ctx);
|
1561
|
-
grpc_client_channel_watch_connectivity_state(
|
1562
|
-
client_channel_elem,
|
1563
|
-
grpc_polling_entity_create_from_pollset_set(
|
1564
|
-
self->interested_parties()),
|
1565
|
-
&self->lb_channel_connectivity_,
|
1566
|
-
&self->lb_channel_on_connectivity_changed_, nullptr);
|
1567
|
-
return; // Early out so we don't drop the ref below.
|
1568
|
-
}
|
1569
|
-
// In TRANSIENT_FAILURE. Cancel the fallback timer and go into
|
1570
|
-
// fallback mode immediately.
|
1571
|
-
gpr_log(GPR_INFO,
|
1572
|
-
"[grpclb %p] balancer channel in state TRANSIENT_FAILURE; "
|
1573
|
-
"entering fallback mode",
|
1574
|
-
self);
|
1575
|
-
self->fallback_at_startup_checks_pending_ = false;
|
1576
|
-
grpc_timer_cancel(&self->lb_fallback_timer_);
|
1577
|
-
self->fallback_mode_ = true;
|
1578
|
-
self->CreateOrUpdateChildPolicyLocked();
|
1579
|
-
}
|
1580
|
-
// Done watching connectivity state, so drop ref.
|
1581
|
-
self->Unref(DEBUG_LOCATION, "watch_lb_channel_connectivity");
|
1582
|
-
}
|
1583
|
-
|
1584
1473
|
void GrpcLb::CancelBalancerChannelConnectivityWatchLocked() {
|
1585
1474
|
grpc_channel_element* client_channel_elem = grpc_channel_stack_last_element(
|
1586
1475
|
grpc_channel_get_channel_stack(lb_channel_));
|
1587
1476
|
GPR_ASSERT(client_channel_elem->filter == &grpc_client_channel_filter);
|
1588
|
-
|
1589
|
-
client_channel_elem,
|
1590
|
-
grpc_polling_entity_create_from_pollset_set(interested_parties()),
|
1591
|
-
nullptr, &lb_channel_on_connectivity_changed_, nullptr);
|
1477
|
+
grpc_client_channel_stop_connectivity_watch(client_channel_elem, watcher_);
|
1592
1478
|
}
|
1593
1479
|
|
1594
1480
|
//
|
@@ -1627,33 +1513,30 @@ void GrpcLb::StartBalancerCallRetryTimerLocked() {
|
|
1627
1513
|
// with the callback.
|
1628
1514
|
auto self = Ref(DEBUG_LOCATION, "on_balancer_call_retry_timer");
|
1629
1515
|
self.release();
|
1630
|
-
GRPC_CLOSURE_INIT(&lb_on_call_retry_, &GrpcLb::OnBalancerCallRetryTimer, this,
|
1631
|
-
grpc_schedule_on_exec_ctx);
|
1632
1516
|
retry_timer_callback_pending_ = true;
|
1633
1517
|
grpc_timer_init(&lb_call_retry_timer_, next_try, &lb_on_call_retry_);
|
1634
1518
|
}
|
1635
1519
|
|
1636
1520
|
void GrpcLb::OnBalancerCallRetryTimer(void* arg, grpc_error* error) {
|
1637
1521
|
GrpcLb* grpclb_policy = static_cast<GrpcLb*>(arg);
|
1638
|
-
|
1639
|
-
|
1640
|
-
|
1641
|
-
|
1642
|
-
|
1522
|
+
GRPC_ERROR_REF(error); // ref owned by lambda
|
1523
|
+
grpclb_policy->work_serializer()->Run(
|
1524
|
+
[grpclb_policy, error]() {
|
1525
|
+
grpclb_policy->OnBalancerCallRetryTimerLocked(error);
|
1526
|
+
},
|
1527
|
+
DEBUG_LOCATION);
|
1643
1528
|
}
|
1644
1529
|
|
1645
|
-
void GrpcLb::OnBalancerCallRetryTimerLocked(
|
1646
|
-
|
1647
|
-
|
1648
|
-
if (!grpclb_policy->shutting_down_ && error == GRPC_ERROR_NONE &&
|
1649
|
-
grpclb_policy->lb_calld_ == nullptr) {
|
1530
|
+
void GrpcLb::OnBalancerCallRetryTimerLocked(grpc_error* error) {
|
1531
|
+
retry_timer_callback_pending_ = false;
|
1532
|
+
if (!shutting_down_ && error == GRPC_ERROR_NONE && lb_calld_ == nullptr) {
|
1650
1533
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
1651
|
-
gpr_log(GPR_INFO, "[grpclb %p] Restarting call to LB server",
|
1652
|
-
grpclb_policy);
|
1534
|
+
gpr_log(GPR_INFO, "[grpclb %p] Restarting call to LB server", this);
|
1653
1535
|
}
|
1654
|
-
|
1536
|
+
StartBalancerCallLocked();
|
1655
1537
|
}
|
1656
|
-
|
1538
|
+
Unref(DEBUG_LOCATION, "on_balancer_call_retry_timer");
|
1539
|
+
GRPC_ERROR_UNREF(error);
|
1657
1540
|
}
|
1658
1541
|
|
1659
1542
|
//
|
@@ -1680,28 +1563,28 @@ void GrpcLb::MaybeEnterFallbackModeAfterStartup() {
|
|
1680
1563
|
|
1681
1564
|
void GrpcLb::OnFallbackTimer(void* arg, grpc_error* error) {
|
1682
1565
|
GrpcLb* grpclb_policy = static_cast<GrpcLb*>(arg);
|
1683
|
-
|
1684
|
-
|
1685
|
-
|
1686
|
-
|
1566
|
+
GRPC_ERROR_REF(error); // ref owned by lambda
|
1567
|
+
grpclb_policy->work_serializer()->Run(
|
1568
|
+
[grpclb_policy, error]() { grpclb_policy->OnFallbackTimerLocked(error); },
|
1569
|
+
DEBUG_LOCATION);
|
1687
1570
|
}
|
1688
1571
|
|
1689
|
-
void GrpcLb::OnFallbackTimerLocked(
|
1690
|
-
GrpcLb* grpclb_policy = static_cast<GrpcLb*>(arg);
|
1572
|
+
void GrpcLb::OnFallbackTimerLocked(grpc_error* error) {
|
1691
1573
|
// If we receive a serverlist after the timer fires but before this callback
|
1692
1574
|
// actually runs, don't fall back.
|
1693
|
-
if (
|
1694
|
-
|
1575
|
+
if (fallback_at_startup_checks_pending_ && !shutting_down_ &&
|
1576
|
+
error == GRPC_ERROR_NONE) {
|
1695
1577
|
gpr_log(GPR_INFO,
|
1696
1578
|
"[grpclb %p] No response from balancer after fallback timeout; "
|
1697
1579
|
"entering fallback mode",
|
1698
|
-
|
1699
|
-
|
1700
|
-
|
1701
|
-
|
1702
|
-
|
1580
|
+
this);
|
1581
|
+
fallback_at_startup_checks_pending_ = false;
|
1582
|
+
CancelBalancerChannelConnectivityWatchLocked();
|
1583
|
+
fallback_mode_ = true;
|
1584
|
+
CreateOrUpdateChildPolicyLocked();
|
1703
1585
|
}
|
1704
|
-
|
1586
|
+
Unref(DEBUG_LOCATION, "on_fallback_timer");
|
1587
|
+
GRPC_ERROR_UNREF(error);
|
1705
1588
|
}
|
1706
1589
|
|
1707
1590
|
//
|
@@ -1710,7 +1593,7 @@ void GrpcLb::OnFallbackTimerLocked(void* arg, grpc_error* error) {
|
|
1710
1593
|
|
1711
1594
|
grpc_channel_args* GrpcLb::CreateChildPolicyArgsLocked(
|
1712
1595
|
bool is_backend_from_grpclb_load_balancer) {
|
1713
|
-
InlinedVector<grpc_arg, 2> args_to_add;
|
1596
|
+
absl::InlinedVector<grpc_arg, 2> args_to_add;
|
1714
1597
|
args_to_add.emplace_back(grpc_channel_arg_integer_create(
|
1715
1598
|
const_cast<char*>(GRPC_ARG_ADDRESS_IS_BACKEND_FROM_GRPCLB_LOAD_BALANCER),
|
1716
1599
|
is_backend_from_grpclb_load_balancer));
|
@@ -1723,25 +1606,17 @@ grpc_channel_args* GrpcLb::CreateChildPolicyArgsLocked(
|
|
1723
1606
|
}
|
1724
1607
|
|
1725
1608
|
OrphanablePtr<LoadBalancingPolicy> GrpcLb::CreateChildPolicyLocked(
|
1726
|
-
const
|
1727
|
-
Helper* helper = new Helper(Ref());
|
1609
|
+
const grpc_channel_args* args) {
|
1728
1610
|
LoadBalancingPolicy::Args lb_policy_args;
|
1729
|
-
lb_policy_args.
|
1611
|
+
lb_policy_args.work_serializer = work_serializer();
|
1730
1612
|
lb_policy_args.args = args;
|
1731
|
-
lb_policy_args.channel_control_helper =
|
1732
|
-
std::unique_ptr<ChannelControlHelper>(helper);
|
1613
|
+
lb_policy_args.channel_control_helper = absl::make_unique<Helper>(Ref());
|
1733
1614
|
OrphanablePtr<LoadBalancingPolicy> lb_policy =
|
1734
|
-
|
1735
|
-
|
1736
|
-
if (GPR_UNLIKELY(lb_policy == nullptr)) {
|
1737
|
-
gpr_log(GPR_ERROR, "[grpclb %p] Failure creating child policy %s", this,
|
1738
|
-
name);
|
1739
|
-
return nullptr;
|
1740
|
-
}
|
1741
|
-
helper->set_child(lb_policy.get());
|
1615
|
+
MakeOrphanable<ChildPolicyHandler>(std::move(lb_policy_args),
|
1616
|
+
&grpc_lb_glb_trace);
|
1742
1617
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
1743
|
-
gpr_log(GPR_INFO, "[grpclb %p] Created new child policy
|
1744
|
-
|
1618
|
+
gpr_log(GPR_INFO, "[grpclb %p] Created new child policy handler (%p)", this,
|
1619
|
+
lb_policy.get());
|
1745
1620
|
}
|
1746
1621
|
// Add the gRPC LB's interested_parties pollset_set to that of the newly
|
1747
1622
|
// created child policy. This will make the child policy progress upon
|
@@ -1772,97 +1647,16 @@ void GrpcLb::CreateOrUpdateChildPolicyLocked() {
|
|
1772
1647
|
CreateChildPolicyArgsLocked(is_backend_from_grpclb_load_balancer);
|
1773
1648
|
GPR_ASSERT(update_args.args != nullptr);
|
1774
1649
|
update_args.config = child_policy_config_;
|
1775
|
-
//
|
1776
|
-
|
1777
|
-
|
1778
|
-
// policy transitions into state READY, we swap it into child_policy_,
|
1779
|
-
// replacing the original child policy. So pending_child_policy_ is
|
1780
|
-
// non-null only between when we apply an update that changes the child
|
1781
|
-
// policy name and when the new child reports state READY.
|
1782
|
-
//
|
1783
|
-
// Updates can arrive at any point during this transition. We always
|
1784
|
-
// apply updates relative to the most recently created child policy,
|
1785
|
-
// even if the most recent one is still in pending_child_policy_. This
|
1786
|
-
// is true both when applying the updates to an existing child policy
|
1787
|
-
// and when determining whether we need to create a new policy.
|
1788
|
-
//
|
1789
|
-
// As a result of this, there are several cases to consider here:
|
1790
|
-
//
|
1791
|
-
// 1. We have no existing child policy (i.e., we have started up but
|
1792
|
-
// have not yet received a serverlist from the balancer or gone
|
1793
|
-
// into fallback mode; in this case, both child_policy_ and
|
1794
|
-
// pending_child_policy_ are null). In this case, we create a
|
1795
|
-
// new child policy and store it in child_policy_.
|
1796
|
-
//
|
1797
|
-
// 2. We have an existing child policy and have no pending child policy
|
1798
|
-
// from a previous update (i.e., either there has not been a
|
1799
|
-
// previous update that changed the policy name, or we have already
|
1800
|
-
// finished swapping in the new policy; in this case, child_policy_
|
1801
|
-
// is non-null but pending_child_policy_ is null). In this case:
|
1802
|
-
// a. If child_policy_->name() equals child_policy_name, then we
|
1803
|
-
// update the existing child policy.
|
1804
|
-
// b. If child_policy_->name() does not equal child_policy_name,
|
1805
|
-
// we create a new policy. The policy will be stored in
|
1806
|
-
// pending_child_policy_ and will later be swapped into
|
1807
|
-
// child_policy_ by the helper when the new child transitions
|
1808
|
-
// into state READY.
|
1809
|
-
//
|
1810
|
-
// 3. We have an existing child policy and have a pending child policy
|
1811
|
-
// from a previous update (i.e., a previous update set
|
1812
|
-
// pending_child_policy_ as per case 2b above and that policy has
|
1813
|
-
// not yet transitioned into state READY and been swapped into
|
1814
|
-
// child_policy_; in this case, both child_policy_ and
|
1815
|
-
// pending_child_policy_ are non-null). In this case:
|
1816
|
-
// a. If pending_child_policy_->name() equals child_policy_name,
|
1817
|
-
// then we update the existing pending child policy.
|
1818
|
-
// b. If pending_child_policy->name() does not equal
|
1819
|
-
// child_policy_name, then we create a new policy. The new
|
1820
|
-
// policy is stored in pending_child_policy_ (replacing the one
|
1821
|
-
// that was there before, which will be immediately shut down)
|
1822
|
-
// and will later be swapped into child_policy_ by the helper
|
1823
|
-
// when the new child transitions into state READY.
|
1824
|
-
const char* child_policy_name = child_policy_config_ == nullptr
|
1825
|
-
? "round_robin"
|
1826
|
-
: child_policy_config_->name();
|
1827
|
-
const bool create_policy =
|
1828
|
-
// case 1
|
1829
|
-
child_policy_ == nullptr ||
|
1830
|
-
// case 2b
|
1831
|
-
(pending_child_policy_ == nullptr &&
|
1832
|
-
strcmp(child_policy_->name(), child_policy_name) != 0) ||
|
1833
|
-
// case 3b
|
1834
|
-
(pending_child_policy_ != nullptr &&
|
1835
|
-
strcmp(pending_child_policy_->name(), child_policy_name) != 0);
|
1836
|
-
LoadBalancingPolicy* policy_to_update = nullptr;
|
1837
|
-
if (create_policy) {
|
1838
|
-
// Cases 1, 2b, and 3b: create a new child policy.
|
1839
|
-
// If child_policy_ is null, we set it (case 1), else we set
|
1840
|
-
// pending_child_policy_ (cases 2b and 3b).
|
1841
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
1842
|
-
gpr_log(GPR_INFO, "[grpclb %p] Creating new %schild policy %s", this,
|
1843
|
-
child_policy_ == nullptr ? "" : "pending ", child_policy_name);
|
1844
|
-
}
|
1845
|
-
// Swap the policy into place.
|
1846
|
-
auto& lb_policy =
|
1847
|
-
child_policy_ == nullptr ? child_policy_ : pending_child_policy_;
|
1848
|
-
lb_policy = CreateChildPolicyLocked(child_policy_name, update_args.args);
|
1849
|
-
policy_to_update = lb_policy.get();
|
1850
|
-
} else {
|
1851
|
-
// Cases 2a and 3a: update an existing policy.
|
1852
|
-
// If we have a pending child policy, send the update to the pending
|
1853
|
-
// policy (case 3a), else send it to the current policy (case 2a).
|
1854
|
-
policy_to_update = pending_child_policy_ != nullptr
|
1855
|
-
? pending_child_policy_.get()
|
1856
|
-
: child_policy_.get();
|
1650
|
+
// Create child policy if needed.
|
1651
|
+
if (child_policy_ == nullptr) {
|
1652
|
+
child_policy_ = CreateChildPolicyLocked(update_args.args);
|
1857
1653
|
}
|
1858
|
-
GPR_ASSERT(policy_to_update != nullptr);
|
1859
1654
|
// Update the policy.
|
1860
1655
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
1861
|
-
gpr_log(GPR_INFO, "[grpclb %p] Updating
|
1862
|
-
|
1863
|
-
policy_to_update);
|
1656
|
+
gpr_log(GPR_INFO, "[grpclb %p] Updating child policy handler %p", this,
|
1657
|
+
child_policy_.get());
|
1864
1658
|
}
|
1865
|
-
|
1659
|
+
child_policy_->UpdateLocked(std::move(update_args));
|
1866
1660
|
}
|
1867
1661
|
|
1868
1662
|
//
|
@@ -1879,33 +1673,35 @@ class GrpcLbFactory : public LoadBalancingPolicyFactory {
|
|
1879
1673
|
const char* name() const override { return kGrpclb; }
|
1880
1674
|
|
1881
1675
|
RefCountedPtr<LoadBalancingPolicy::Config> ParseLoadBalancingConfig(
|
1882
|
-
const
|
1676
|
+
const Json& json, grpc_error** error) const override {
|
1883
1677
|
GPR_DEBUG_ASSERT(error != nullptr && *error == GRPC_ERROR_NONE);
|
1884
|
-
if (json ==
|
1885
|
-
return
|
1886
|
-
new ParsedGrpcLbConfig(nullptr));
|
1678
|
+
if (json.type() == Json::Type::JSON_NULL) {
|
1679
|
+
return MakeRefCounted<GrpcLbConfig>(nullptr);
|
1887
1680
|
}
|
1888
|
-
|
1889
|
-
|
1890
|
-
|
1891
|
-
|
1892
|
-
|
1893
|
-
|
1894
|
-
|
1895
|
-
|
1896
|
-
|
1897
|
-
|
1898
|
-
|
1899
|
-
|
1900
|
-
|
1901
|
-
|
1902
|
-
|
1903
|
-
|
1904
|
-
|
1681
|
+
std::vector<grpc_error*> error_list;
|
1682
|
+
Json child_policy_config_json_tmp;
|
1683
|
+
const Json* child_policy_config_json;
|
1684
|
+
auto it = json.object_value().find("childPolicy");
|
1685
|
+
if (it == json.object_value().end()) {
|
1686
|
+
child_policy_config_json_tmp = Json::Array{Json::Object{
|
1687
|
+
{"round_robin", Json::Object()},
|
1688
|
+
}};
|
1689
|
+
child_policy_config_json = &child_policy_config_json_tmp;
|
1690
|
+
} else {
|
1691
|
+
child_policy_config_json = &it->second;
|
1692
|
+
}
|
1693
|
+
grpc_error* parse_error = GRPC_ERROR_NONE;
|
1694
|
+
RefCountedPtr<LoadBalancingPolicy::Config> child_policy_config =
|
1695
|
+
LoadBalancingPolicyRegistry::ParseLoadBalancingConfig(
|
1696
|
+
*child_policy_config_json, &parse_error);
|
1697
|
+
if (parse_error != GRPC_ERROR_NONE) {
|
1698
|
+
std::vector<grpc_error*> child_errors;
|
1699
|
+
child_errors.push_back(parse_error);
|
1700
|
+
error_list.push_back(
|
1701
|
+
GRPC_ERROR_CREATE_FROM_VECTOR("field:childPolicy", &child_errors));
|
1905
1702
|
}
|
1906
1703
|
if (error_list.empty()) {
|
1907
|
-
return
|
1908
|
-
new ParsedGrpcLbConfig(std::move(child_policy)));
|
1704
|
+
return MakeRefCounted<GrpcLbConfig>(std::move(child_policy_config));
|
1909
1705
|
} else {
|
1910
1706
|
*error = GRPC_ERROR_CREATE_FROM_VECTOR("GrpcLb Parser", &error_list);
|
1911
1707
|
return nullptr;
|
@@ -1948,7 +1744,7 @@ bool maybe_add_client_load_reporting_filter(grpc_channel_stack_builder* builder,
|
|
1948
1744
|
void grpc_lb_policy_grpclb_init() {
|
1949
1745
|
grpc_core::LoadBalancingPolicyRegistry::Builder::
|
1950
1746
|
RegisterLoadBalancingPolicyFactory(
|
1951
|
-
|
1747
|
+
absl::make_unique<grpc_core::GrpcLbFactory>());
|
1952
1748
|
grpc_channel_init_register_stage(GRPC_CLIENT_SUBCHANNEL,
|
1953
1749
|
GRPC_CHANNEL_INIT_BUILTIN_PRIORITY,
|
1954
1750
|
maybe_add_client_load_reporting_filter,
|