grpc 1.27.0 → 1.30.2
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 +8023 -11435
- data/include/grpc/grpc.h +2 -2
- data/include/grpc/grpc_security.h +30 -9
- data/include/grpc/grpc_security_constants.h +1 -0
- data/include/grpc/impl/codegen/grpc_types.h +24 -21
- data/include/grpc/impl/codegen/port_platform.h +13 -2
- 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 +282 -269
- 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 +21 -11
- data/src/core/ext/filters/client_channel/lb_policy.cc +19 -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 +286 -495
- 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/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 +148 -98
- 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 +1381 -301
- data/src/core/ext/filters/client_channel/xds/xds_api.h +211 -152
- data/src/core/ext/filters/client_channel/xds/xds_bootstrap.cc +214 -359
- data/src/core/ext/filters/client_channel/xds/xds_bootstrap.h +28 -44
- 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 +16 -11
- data/src/core/ext/filters/client_channel/xds/xds_client.cc +1118 -472
- data/src/core/ext/filters/client_channel/xds/xds_client.h +116 -45
- data/src/core/ext/filters/client_channel/xds/xds_client_stats.cc +59 -135
- data/src/core/ext/filters/client_channel/xds/xds_client_stats.h +122 -137
- 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 +26 -27
- 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/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 +15 -17
- 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/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/iomgr_posix_cfstream.cc +84 -20
- data/src/core/lib/iomgr/load_file.cc +1 -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 +7 -26
- data/src/core/lib/iomgr/socket_utils_posix.h +3 -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_posix.cc +2 -1
- data/src/core/lib/iomgr/tcp_server_custom.cc +5 -9
- data/src/core/lib/iomgr/tcp_server_posix.cc +5 -4
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +5 -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 +210 -79
- data/src/core/lib/json/json_reader.cc +469 -455
- data/src/core/lib/json/json_writer.cc +174 -169
- data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +1 -1
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +12 -0
- data/src/core/lib/security/credentials/composite/composite_credentials.h +6 -3
- data/src/core/lib/security/credentials/credentials.cc +0 -84
- data/src/core/lib/security/credentials/credentials.h +8 -59
- data/src/core/lib/security/credentials/fake/fake_credentials.h +4 -0
- 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 +91 -60
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +10 -4
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +13 -0
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +2 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +23 -13
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +40 -12
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +21 -6
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +7 -7
- data/src/core/lib/security/security_connector/load_system_roots_linux.cc +3 -2
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +6 -8
- 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 +62 -13
- data/src/core/lib/security/security_connector/ssl_utils.h +12 -11
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +101 -52
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +32 -6
- data/src/core/lib/security/transport/auth_filters.h +0 -5
- data/src/core/lib/security/transport/client_auth_filter.cc +1 -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 +33 -33
- 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 +33 -3
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +9 -1
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.h +2 -3
- data/src/core/tsi/fake_transport_security.cc +10 -15
- 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 +54 -40
- data/src/core/tsi/ssl_transport_security.h +8 -8
- data/src/core/tsi/ssl_types.h +0 -2
- data/src/core/tsi/transport_security.h +6 -9
- data/src/core/tsi/transport_security_grpc.h +2 -3
- data/src/core/tsi/transport_security_interface.h +3 -3
- data/src/ruby/ext/grpc/rb_call.c +9 -1
- data/src/ruby/ext/grpc/rb_call_credentials.c +3 -2
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +4 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +6 -0
- data/src/ruby/lib/grpc/errors.rb +103 -42
- data/src/ruby/lib/grpc/generic/active_call.rb +2 -3
- data/src/ruby/lib/grpc/generic/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/src/proto/grpc/testing/messages_pb.rb +11 -0
- 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_import2.proto +23 -0
- data/src/ruby/spec/pb/codegen/grpc/testing/package_options_ruby_style.proto +7 -0
- data/src/ruby/spec/pb/codegen/package_option_spec.rb +7 -1
- data/src/ruby/spec/support/services.rb +10 -4
- data/src/ruby/spec/testdata/ca.pem +18 -13
- data/src/ruby/spec/testdata/client.key +26 -14
- data/src/ruby/spec/testdata/client.pem +18 -12
- data/src/ruby/spec/testdata/server1.key +26 -14
- data/src/ruby/spec/testdata/server1.pem +20 -14
- data/third_party/abseil-cpp/absl/base/attributes.h +1 -1
- data/third_party/abseil-cpp/absl/base/config.h +10 -4
- data/third_party/abseil-cpp/absl/base/internal/atomic_hook.h +30 -9
- data/third_party/abseil-cpp/absl/base/internal/errno_saver.h +43 -0
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +7 -5
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +2 -1
- data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +2 -2
- data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +2 -3
- data/third_party/abseil-cpp/absl/base/internal/spinlock_posix.inc +3 -3
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +37 -0
- data/third_party/abseil-cpp/absl/base/options.h +2 -10
- data/third_party/abseil-cpp/absl/strings/charconv.cc +0 -1
- 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/str_format.h +537 -0
- data/third_party/abseil-cpp/absl/strings/string_view.h +19 -11
- 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/{src/boringssl → third_party/boringssl-with-bazel}/err_data.c +329 -297
- 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 → boringssl-with-bazel/src}/crypto/asn1/a_time.c +3 -4
- 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 → boringssl-with-bazel/src}/crypto/bio/connect.c +3 -4
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/fd.c +0 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/file.c +5 -6
- 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 → boringssl-with-bazel/src}/crypto/bio/pair.c +0 -1
- 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 → boringssl-with-bazel/src}/crypto/buf/buf.c +10 -69
- 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 → boringssl-with-bazel/src}/crypto/bytestring/cbb.c +41 -2
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bytestring/cbs.c +60 -3
- 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 → boringssl-with-bazel/src}/crypto/cipher_extra/derive_key.c +1 -1
- 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 → boringssl-with-bazel/src}/crypto/cipher_extra/e_aesgcmsiv.c +8 -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 → boringssl-with-bazel/src}/crypto/cpu-arm-linux.c +7 -6
- 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 → boringssl-with-bazel/src}/crypto/cpu-intel.c +13 -4
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-ppc64le.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/crypto.c +11 -0
- data/third_party/{boringssl/third_party/fiat → boringssl-with-bazel/src/crypto/curve25519}/curve25519.c +18 -26
- data/third_party/{boringssl/third_party/fiat → boringssl-with-bazel/src/crypto/curve25519}/curve25519_tables.h +13 -21
- data/third_party/{boringssl/third_party/fiat → boringssl-with-bazel/src/crypto/curve25519}/internal.h +14 -22
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/curve25519/spake25519.c +1 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/dh/check.c +3 -3
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/dh/dh.c +16 -2
- 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 → boringssl-with-bazel/src}/crypto/dsa/dsa.c +10 -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 → boringssl-with-bazel/src}/crypto/ec_extra/ec_derive.c +2 -3
- 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 → boringssl-with-bazel/src}/crypto/ecdh_extra/ecdh_extra.c +2 -2
- 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 → boringssl-with-bazel/src}/crypto/err/err.c +39 -38
- 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 → boringssl-with-bazel/src}/crypto/evp/p_ec.c +0 -1
- 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 → boringssl-with-bazel/src}/crypto/evp/p_rsa.c +14 -2
- 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 → boringssl-with-bazel/src}/crypto/evp/p_x25519_asn1.c +1 -2
- 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 → boringssl-with-bazel/src}/crypto/fipsmodule/aes/internal.h +5 -7
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/aes/key_wrap.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/aes/mode_wrappers.c +0 -2
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bcm.c +4 -1
- 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 → boringssl-with-bazel/src}/crypto/fipsmodule/bn/exponentiation.c +3 -3
- 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 → boringssl-with-bazel/src}/crypto/fipsmodule/bn/internal.h +14 -11
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/jacobi.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/montgomery.c +8 -8
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/montgomery_inv.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/mul.c +30 -154
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/prime.c +11 -12
- 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 → boringssl-with-bazel/src}/crypto/fipsmodule/cipher/e_aes.c +3 -5
- 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 → boringssl-with-bazel/src}/crypto/fipsmodule/digest/digests.c +16 -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 → boringssl-with-bazel/src}/crypto/fipsmodule/ec/ec.c +289 -117
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/ec_key.c +14 -28
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/ec_montgomery.c +96 -55
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/felem.c +25 -7
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/internal.h +432 -160
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/oct.c +63 -71
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/p224-64.c +5 -14
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-x86_64-table.h +9497 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/p256-x86_64.c +80 -99
- 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 → boringssl-with-bazel/src}/crypto/fipsmodule/ec/simple.c +125 -148
- 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 → boringssl-with-bazel/src}/crypto/fipsmodule/ec/wnaf.c +61 -18
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ecdh/ecdh.c +2 -2
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ecdsa/ecdsa.c +20 -5
- 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 → boringssl-with-bazel/src}/crypto/fipsmodule/modes/gcm.c +45 -193
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm_nohw.c +304 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/modes/internal.h +8 -18
- 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 → boringssl-with-bazel/src}/crypto/fipsmodule/rand/internal.h +41 -5
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rand/rand.c +32 -17
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rand/urandom.c +24 -114
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rsa/blinding.c +4 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rsa/internal.h +1 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rsa/padding.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rsa/rsa.c +58 -39
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rsa/rsa_impl.c +72 -49
- 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 → boringssl-with-bazel/src}/crypto/fipsmodule/sha/sha512.c +44 -35
- 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 → boringssl-with-bazel/src}/crypto/hrss/hrss.c +210 -311
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/hrss/internal.h +0 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/internal.h +21 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/lhash/lhash.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/mem.c +99 -12
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/obj/obj.c +16 -21
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/obj/obj_dat.h +41 -6
- 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 → boringssl-with-bazel/src}/crypto/pem/pem_info.c +0 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_lib.c +7 -7
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_oth.c +0 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_pk8.c +0 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_pkey.c +0 -1
- 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 → boringssl-with-bazel/src}/crypto/pkcs7/pkcs7_x509.c +1 -1
- 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 → boringssl-with-bazel/src}/crypto/poly1305/poly1305.c +2 -2
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/poly1305/poly1305_arm.c +21 -20
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/poly1305/poly1305_vec.c +34 -17
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pool/internal.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pool/pool.c +1 -2
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rand_extra/deterministic.c +6 -10
- 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 → boringssl-with-bazel/src}/crypto/rand_extra/windows.c +16 -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 → boringssl-with-bazel/src}/crypto/siphash/siphash.c +3 -1
- 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 → boringssl-with-bazel/src}/crypto/thread_pthread.c +4 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/thread_win.c +4 -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 → boringssl-with-bazel/src}/crypto/x509/a_verify.c +0 -1
- 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 → boringssl-with-bazel/src}/crypto/x509/by_dir.c +1 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/by_file.c +0 -1
- 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 → boringssl-with-bazel/src}/crypto/x509/x509_cmp.c +0 -1
- 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 → boringssl-with-bazel/src}/crypto/x509/x509_obj.c +1 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_r2x.c +0 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_req.c +0 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_set.c +16 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_trs.c +1 -2
- 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 → boringssl-with-bazel/src}/crypto/x509/x509_vfy.c +5 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_vpm.c +3 -4
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509cset.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509name.c +4 -3
- 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 → boringssl-with-bazel/src}/crypto/x509/x_all.c +0 -1
- 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 → boringssl-with-bazel/src}/crypto/x509v3/v3_alt.c +3 -3
- 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 → boringssl-with-bazel/src}/crypto/x509v3/v3_enum.c +2 -2
- 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 → boringssl-with-bazel/src}/crypto/x509v3/v3_info.c +4 -5
- 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 → boringssl-with-bazel/src}/crypto/x509v3/v3_purp.c +2 -3
- 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 → boringssl-with-bazel/src}/crypto/x509v3/v3_utl.c +11 -12
- 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 → boringssl-with-bazel/src}/include/openssl/base.h +5 -1
- 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 → boringssl-with-bazel/src}/include/openssl/bn.h +32 -20
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/buf.h +9 -9
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/buffer.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/bytestring.h +34 -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 → boringssl-with-bazel/src}/include/openssl/crypto.h +9 -4
- 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 → boringssl-with-bazel/src}/include/openssl/dh.h +20 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/digest.h +1 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/dsa.h +16 -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 → boringssl-with-bazel/src}/include/openssl/ec.h +11 -4
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ec_key.h +4 -2
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ecdh.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ecdsa.h +6 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/engine.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/err.h +13 -9
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/evp.h +20 -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 → boringssl-with-bazel/src}/include/openssl/mem.h +17 -2
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/nid.h +14 -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 → boringssl-with-bazel/src}/include/openssl/poly1305.h +5 -7
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/pool.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/rand.h +3 -17
- 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 → boringssl-with-bazel/src}/include/openssl/rsa.h +31 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/safestack.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/sha.h +26 -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 → boringssl-with-bazel/src}/include/openssl/ssl.h +182 -97
- 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 → boringssl-with-bazel/src}/include/openssl/tls1.h +1 -3
- 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 → boringssl-with-bazel/src}/include/openssl/x509.h +5 -3
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/x509_vfy.h +1 -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 → boringssl-with-bazel/src}/ssl/d1_both.cc +0 -5
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/d1_lib.cc +3 -3
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/d1_pkt.cc +0 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/d1_srtp.cc +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/dtls_method.cc +13 -5
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/dtls_record.cc +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/handoff.cc +237 -51
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/handshake.cc +19 -7
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/handshake_client.cc +51 -32
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/handshake_server.cc +12 -8
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/internal.h +94 -71
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/s3_both.cc +10 -10
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/s3_lib.cc +4 -5
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/s3_pkt.cc +21 -22
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_aead_ctx.cc +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_asn1.cc +30 -2
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_buffer.cc +34 -15
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_cert.cc +4 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_cipher.cc +0 -1
- 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 → boringssl-with-bazel/src}/ssl/ssl_lib.cc +19 -15
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_privkey.cc +13 -2
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_session.cc +66 -6
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_stat.cc +6 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_transcript.cc +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_versions.cc +1 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_x509.cc +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/t1_enc.cc +6 -2
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/t1_lib.cc +53 -219
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/tls13_both.cc +1 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/tls13_client.cc +101 -31
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/tls13_enc.cc +28 -76
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/tls13_server.cc +111 -104
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/tls_method.cc +64 -26
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/tls_record.cc +7 -2
- data/third_party/{boringssl → boringssl-with-bazel/src}/third_party/fiat/curve25519_32.h +245 -175
- data/third_party/{boringssl → boringssl-with-bazel/src}/third_party/fiat/curve25519_64.h +135 -75
- data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_32.h +3147 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/third_party/fiat/p256_64.h +512 -503
- metadata +648 -499
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.cc +0 -1917
- data/src/core/lib/gprpp/inlined_vector.h +0 -246
- data/src/core/lib/gprpp/optional.h +0 -74
- data/src/core/lib/gprpp/string_view.h +0 -169
- 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/tsi/grpc_shadow_boringssl.h +0 -3297
- data/third_party/boringssl/crypto/fipsmodule/aes/aes.c +0 -860
- data/third_party/boringssl/crypto/fipsmodule/ec/p256-x86_64-table.h +0 -9501
- data/third_party/boringssl/crypto/fipsmodule/ec/scalar.c +0 -96
- data/third_party/boringssl/crypto/fipsmodule/ec/simple_mul.c +0 -84
- data/third_party/boringssl/third_party/fiat/p256.c +0 -1063
- data/third_party/boringssl/third_party/fiat/p256_32.h +0 -3226
@@ -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
|
|
@@ -178,11 +182,11 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
178
182
|
static void OnBalancerMessageReceived(void* arg, grpc_error* error);
|
179
183
|
static void OnBalancerStatusReceived(void* arg, grpc_error* error);
|
180
184
|
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
185
|
+
void MaybeSendClientLoadReportLocked(grpc_error* error);
|
186
|
+
void ClientLoadReportDoneLocked(grpc_error* error);
|
187
|
+
void OnInitialRequestSentLocked();
|
188
|
+
void OnBalancerMessageReceivedLocked();
|
189
|
+
void OnBalancerStatusReceivedLocked(grpc_error* error);
|
186
190
|
|
187
191
|
// The owning LB policy.
|
188
192
|
RefCountedPtr<LoadBalancingPolicy> grpclb_policy_;
|
@@ -233,7 +237,7 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
233
237
|
const std::vector<GrpcLbServer>& serverlist() const { return serverlist_; }
|
234
238
|
|
235
239
|
// Returns a text representation suitable for logging.
|
236
|
-
|
240
|
+
std::string AsText() const;
|
237
241
|
|
238
242
|
// Extracts all non-drop entries into a ServerAddressList.
|
239
243
|
ServerAddressList GetServerAddressList(
|
@@ -247,16 +251,16 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
247
251
|
// should not be dropped.
|
248
252
|
//
|
249
253
|
// Note: This is called from the picker, so it will be invoked in
|
250
|
-
// the channel's data plane
|
251
|
-
//
|
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
|
252
256
|
// policy.
|
253
257
|
const char* ShouldDrop();
|
254
258
|
|
255
259
|
private:
|
256
260
|
std::vector<GrpcLbServer> serverlist_;
|
257
261
|
|
258
|
-
// Guarded by the channel's data plane
|
259
|
-
// 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
|
260
264
|
// picker via the ShouldDrop() method.
|
261
265
|
size_t drop_index_ = 0;
|
262
266
|
};
|
@@ -295,16 +299,42 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
295
299
|
void UpdateState(grpc_connectivity_state state,
|
296
300
|
std::unique_ptr<SubchannelPicker> picker) override;
|
297
301
|
void RequestReresolution() override;
|
298
|
-
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)) {}
|
299
314
|
|
300
|
-
|
315
|
+
~StateWatcher() { parent_.reset(DEBUG_LOCATION, "StateWatcher"); }
|
301
316
|
|
302
317
|
private:
|
303
|
-
|
304
|
-
|
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
|
+
}
|
305
336
|
|
306
337
|
RefCountedPtr<GrpcLb> parent_;
|
307
|
-
LoadBalancingPolicy* child_ = nullptr;
|
308
338
|
};
|
309
339
|
|
310
340
|
~GrpcLb();
|
@@ -314,28 +344,25 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
314
344
|
// Helper functions used in UpdateLocked().
|
315
345
|
void ProcessAddressesAndChannelArgsLocked(const ServerAddressList& addresses,
|
316
346
|
const grpc_channel_args& args);
|
317
|
-
|
318
|
-
grpc_error* error);
|
319
|
-
static void OnBalancerChannelConnectivityChangedLocked(void* arg,
|
320
|
-
grpc_error* error);
|
347
|
+
|
321
348
|
void CancelBalancerChannelConnectivityWatchLocked();
|
322
349
|
|
323
350
|
// Methods for dealing with fallback state.
|
324
351
|
void MaybeEnterFallbackModeAfterStartup();
|
325
352
|
static void OnFallbackTimer(void* arg, grpc_error* error);
|
326
|
-
|
353
|
+
void OnFallbackTimerLocked(grpc_error* error);
|
327
354
|
|
328
355
|
// Methods for dealing with the balancer call.
|
329
356
|
void StartBalancerCallLocked();
|
330
357
|
void StartBalancerCallRetryTimerLocked();
|
331
358
|
static void OnBalancerCallRetryTimer(void* arg, grpc_error* error);
|
332
|
-
|
359
|
+
void OnBalancerCallRetryTimerLocked(grpc_error* error);
|
333
360
|
|
334
361
|
// Methods for dealing with the child policy.
|
335
362
|
grpc_channel_args* CreateChildPolicyArgsLocked(
|
336
363
|
bool is_backend_from_grpclb_load_balancer);
|
337
364
|
OrphanablePtr<LoadBalancingPolicy> CreateChildPolicyLocked(
|
338
|
-
const
|
365
|
+
const grpc_channel_args* args);
|
339
366
|
void CreateOrUpdateChildPolicyLocked();
|
340
367
|
|
341
368
|
// Who the client is trying to communicate with.
|
@@ -349,6 +376,7 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
349
376
|
|
350
377
|
// The channel for communicating with the LB server.
|
351
378
|
grpc_channel* lb_channel_ = nullptr;
|
379
|
+
StateWatcher* watcher_ = nullptr;
|
352
380
|
// Response generator to inject address updates into lb_channel_.
|
353
381
|
RefCountedPtr<FakeResolverResponseGenerator> response_generator_;
|
354
382
|
|
@@ -381,14 +409,9 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
381
409
|
bool fallback_at_startup_checks_pending_ = false;
|
382
410
|
grpc_timer lb_fallback_timer_;
|
383
411
|
grpc_closure lb_on_fallback_;
|
384
|
-
grpc_connectivity_state lb_channel_connectivity_ = GRPC_CHANNEL_IDLE;
|
385
|
-
grpc_closure lb_channel_on_connectivity_changed_;
|
386
412
|
|
387
413
|
// The child policy to use for the backends.
|
388
414
|
OrphanablePtr<LoadBalancingPolicy> child_policy_;
|
389
|
-
// When switching child policies, the new policy will be stored here
|
390
|
-
// until it reports READY, at which point it will be moved to child_policy_.
|
391
|
-
OrphanablePtr<LoadBalancingPolicy> pending_child_policy_;
|
392
415
|
// The child policy config.
|
393
416
|
RefCountedPtr<LoadBalancingPolicy::Config> child_policy_config_;
|
394
417
|
// Child policy in state READY.
|
@@ -424,28 +447,22 @@ void ParseServer(const GrpcLbServer& server, grpc_resolved_address* addr) {
|
|
424
447
|
}
|
425
448
|
}
|
426
449
|
|
427
|
-
|
428
|
-
|
429
|
-
gpr_strvec_init(&entries);
|
450
|
+
std::string GrpcLb::Serverlist::AsText() const {
|
451
|
+
std::vector<std::string> entries;
|
430
452
|
for (size_t i = 0; i < serverlist_.size(); ++i) {
|
431
453
|
const GrpcLbServer& server = serverlist_[i];
|
432
|
-
|
454
|
+
std::string ipport;
|
433
455
|
if (server.drop) {
|
434
|
-
ipport =
|
456
|
+
ipport = "(drop)";
|
435
457
|
} else {
|
436
458
|
grpc_resolved_address addr;
|
437
459
|
ParseServer(server, &addr);
|
438
|
-
grpc_sockaddr_to_string(&
|
460
|
+
ipport = grpc_sockaddr_to_string(&addr, false);
|
439
461
|
}
|
440
|
-
|
441
|
-
|
442
|
-
server.load_balance_token);
|
443
|
-
gpr_free(ipport);
|
444
|
-
gpr_strvec_add(&entries, entry);
|
462
|
+
entries.push_back(absl::StrFormat(" %" PRIuPTR ": %s token=%s\n", i,
|
463
|
+
ipport, server.load_balance_token));
|
445
464
|
}
|
446
|
-
|
447
|
-
gpr_strvec_destroy(&entries);
|
448
|
-
return result;
|
465
|
+
return absl::StrJoin(entries, "");
|
449
466
|
}
|
450
467
|
|
451
468
|
// vtables for channel args for LB token and client stats.
|
@@ -537,7 +554,7 @@ ServerAddressList GrpcLb::Serverlist::GetServerAddressList(
|
|
537
554
|
lb_token[0] = '\0';
|
538
555
|
}
|
539
556
|
// Add address.
|
540
|
-
InlinedVector<grpc_arg, 2> args_to_add;
|
557
|
+
absl::InlinedVector<grpc_arg, 2> args_to_add;
|
541
558
|
args_to_add.emplace_back(grpc_channel_arg_pointer_create(
|
542
559
|
const_cast<char*>(GRPC_ARG_GRPCLB_ADDRESS_LB_TOKEN), lb_token,
|
543
560
|
&lb_token_arg_vtable));
|
@@ -608,7 +625,7 @@ GrpcLb::PickResult GrpcLb::Picker::Pick(PickArgs args) {
|
|
608
625
|
// how to interpret it.
|
609
626
|
args.initial_metadata->Add(
|
610
627
|
kGrpcLbClientStatsMetadataKey,
|
611
|
-
|
628
|
+
absl::string_view(reinterpret_cast<const char*>(client_stats), 0));
|
612
629
|
// Update calls-started.
|
613
630
|
client_stats->AddCallStarted();
|
614
631
|
}
|
@@ -630,46 +647,15 @@ GrpcLb::PickResult GrpcLb::Picker::Pick(PickArgs args) {
|
|
630
647
|
// GrpcLb::Helper
|
631
648
|
//
|
632
649
|
|
633
|
-
bool GrpcLb::Helper::CalledByPendingChild() const {
|
634
|
-
GPR_ASSERT(child_ != nullptr);
|
635
|
-
return child_ == parent_->pending_child_policy_.get();
|
636
|
-
}
|
637
|
-
|
638
|
-
bool GrpcLb::Helper::CalledByCurrentChild() const {
|
639
|
-
GPR_ASSERT(child_ != nullptr);
|
640
|
-
return child_ == parent_->child_policy_.get();
|
641
|
-
}
|
642
|
-
|
643
650
|
RefCountedPtr<SubchannelInterface> GrpcLb::Helper::CreateSubchannel(
|
644
651
|
const grpc_channel_args& args) {
|
645
|
-
if (parent_->shutting_down_
|
646
|
-
(!CalledByPendingChild() && !CalledByCurrentChild())) {
|
647
|
-
return nullptr;
|
648
|
-
}
|
652
|
+
if (parent_->shutting_down_) return nullptr;
|
649
653
|
return parent_->channel_control_helper()->CreateSubchannel(args);
|
650
654
|
}
|
651
655
|
|
652
656
|
void GrpcLb::Helper::UpdateState(grpc_connectivity_state state,
|
653
657
|
std::unique_ptr<SubchannelPicker> picker) {
|
654
658
|
if (parent_->shutting_down_) return;
|
655
|
-
// If this request is from the pending child policy, ignore it until
|
656
|
-
// it reports READY, at which point we swap it into place.
|
657
|
-
if (CalledByPendingChild()) {
|
658
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
659
|
-
gpr_log(GPR_INFO,
|
660
|
-
"[grpclb %p helper %p] pending child policy %p reports state=%s",
|
661
|
-
parent_.get(), this, parent_->pending_child_policy_.get(),
|
662
|
-
ConnectivityStateName(state));
|
663
|
-
}
|
664
|
-
if (state != GRPC_CHANNEL_READY) return;
|
665
|
-
grpc_pollset_set_del_pollset_set(
|
666
|
-
parent_->child_policy_->interested_parties(),
|
667
|
-
parent_->interested_parties());
|
668
|
-
parent_->child_policy_ = std::move(parent_->pending_child_policy_);
|
669
|
-
} else if (!CalledByCurrentChild()) {
|
670
|
-
// This request is from an outdated child, so ignore it.
|
671
|
-
return;
|
672
|
-
}
|
673
659
|
// Record whether child policy reports READY.
|
674
660
|
parent_->child_policy_ready_ = state == GRPC_CHANNEL_READY;
|
675
661
|
// Enter fallback mode if needed.
|
@@ -715,22 +701,13 @@ void GrpcLb::Helper::UpdateState(grpc_connectivity_state state,
|
|
715
701
|
client_stats = parent_->lb_calld_->client_stats()->Ref();
|
716
702
|
}
|
717
703
|
parent_->channel_control_helper()->UpdateState(
|
718
|
-
state,
|
704
|
+
state,
|
705
|
+
absl::make_unique<Picker>(parent_.get(), parent_->serverlist_,
|
719
706
|
std::move(picker), std::move(client_stats)));
|
720
707
|
}
|
721
708
|
|
722
709
|
void GrpcLb::Helper::RequestReresolution() {
|
723
710
|
if (parent_->shutting_down_) return;
|
724
|
-
const LoadBalancingPolicy* latest_child_policy =
|
725
|
-
parent_->pending_child_policy_ != nullptr
|
726
|
-
? parent_->pending_child_policy_.get()
|
727
|
-
: parent_->child_policy_.get();
|
728
|
-
if (child_ != latest_child_policy) return;
|
729
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
730
|
-
gpr_log(GPR_INFO,
|
731
|
-
"[grpclb %p] Re-resolution requested from %schild policy (%p).",
|
732
|
-
parent_.get(), CalledByPendingChild() ? "pending " : "", child_);
|
733
|
-
}
|
734
711
|
// If we are talking to a balancer, we expect to get updated addresses
|
735
712
|
// from the balancer, so we can ignore the re-resolution request from
|
736
713
|
// the child policy. Otherwise, pass the re-resolution request up to the
|
@@ -741,11 +718,9 @@ void GrpcLb::Helper::RequestReresolution() {
|
|
741
718
|
}
|
742
719
|
}
|
743
720
|
|
744
|
-
void GrpcLb::Helper::AddTraceEvent(TraceSeverity severity,
|
745
|
-
|
746
|
-
|
747
|
-
return;
|
748
|
-
}
|
721
|
+
void GrpcLb::Helper::AddTraceEvent(TraceSeverity severity,
|
722
|
+
absl::string_view message) {
|
723
|
+
if (parent_->shutting_down_) return;
|
749
724
|
parent_->channel_control_helper()->AddTraceEvent(severity, message);
|
750
725
|
}
|
751
726
|
|
@@ -764,6 +739,15 @@ GrpcLb::BalancerCallState::BalancerCallState(
|
|
764
739
|
// the polling entities from client_channel.
|
765
740
|
GPR_ASSERT(grpclb_policy()->server_name_ != nullptr);
|
766
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);
|
767
751
|
const grpc_millis deadline =
|
768
752
|
grpclb_policy()->lb_call_timeout_ms_ == 0
|
769
753
|
? GRPC_MILLIS_INF_FUTURE
|
@@ -840,8 +824,6 @@ void GrpcLb::BalancerCallState::StartQuery() {
|
|
840
824
|
// with the callback.
|
841
825
|
auto self = Ref(DEBUG_LOCATION, "on_initial_request_sent");
|
842
826
|
self.release();
|
843
|
-
GRPC_CLOSURE_INIT(&lb_on_initial_request_sent_, OnInitialRequestSent, this,
|
844
|
-
grpc_schedule_on_exec_ctx);
|
845
827
|
call_error = grpc_call_start_batch_and_execute(
|
846
828
|
lb_call_, ops, (size_t)(op - ops), &lb_on_initial_request_sent_);
|
847
829
|
GPR_ASSERT(GRPC_CALL_OK == call_error);
|
@@ -864,8 +846,6 @@ void GrpcLb::BalancerCallState::StartQuery() {
|
|
864
846
|
// with the callback.
|
865
847
|
self = Ref(DEBUG_LOCATION, "on_message_received");
|
866
848
|
self.release();
|
867
|
-
GRPC_CLOSURE_INIT(&lb_on_balancer_message_received_,
|
868
|
-
OnBalancerMessageReceived, this, grpc_schedule_on_exec_ctx);
|
869
849
|
call_error = grpc_call_start_batch_and_execute(
|
870
850
|
lb_call_, ops, (size_t)(op - ops), &lb_on_balancer_message_received_);
|
871
851
|
GPR_ASSERT(GRPC_CALL_OK == call_error);
|
@@ -882,8 +862,6 @@ void GrpcLb::BalancerCallState::StartQuery() {
|
|
882
862
|
// This callback signals the end of the LB call, so it relies on the initial
|
883
863
|
// ref instead of a new ref. When it's invoked, it's the initial ref that is
|
884
864
|
// unreffed.
|
885
|
-
GRPC_CLOSURE_INIT(&lb_on_balancer_status_received_, OnBalancerStatusReceived,
|
886
|
-
this, grpc_schedule_on_exec_ctx);
|
887
865
|
call_error = grpc_call_start_batch_and_execute(
|
888
866
|
lb_call_, ops, (size_t)(op - ops), &lb_on_balancer_status_received_);
|
889
867
|
GPR_ASSERT(GRPC_CALL_OK == call_error);
|
@@ -902,28 +880,27 @@ void GrpcLb::BalancerCallState::ScheduleNextClientLoadReportLocked() {
|
|
902
880
|
void GrpcLb::BalancerCallState::MaybeSendClientLoadReport(void* arg,
|
903
881
|
grpc_error* error) {
|
904
882
|
BalancerCallState* lb_calld = static_cast<BalancerCallState*>(arg);
|
905
|
-
|
906
|
-
|
907
|
-
|
908
|
-
|
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);
|
909
887
|
}
|
910
888
|
|
911
889
|
void GrpcLb::BalancerCallState::MaybeSendClientLoadReportLocked(
|
912
|
-
|
913
|
-
|
914
|
-
|
915
|
-
|
916
|
-
|
917
|
-
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);
|
918
895
|
return;
|
919
896
|
}
|
920
897
|
// If we've already sent the initial request, then we can go ahead and send
|
921
898
|
// the load report. Otherwise, we need to wait until the initial request has
|
922
899
|
// been sent to send this (see OnInitialRequestSentLocked()).
|
923
|
-
if (
|
924
|
-
|
900
|
+
if (send_message_payload_ == nullptr) {
|
901
|
+
SendClientLoadReportLocked();
|
925
902
|
} else {
|
926
|
-
|
903
|
+
client_load_report_is_due_ = true;
|
927
904
|
}
|
928
905
|
}
|
929
906
|
|
@@ -982,140 +959,125 @@ void GrpcLb::BalancerCallState::SendClientLoadReportLocked() {
|
|
982
959
|
void GrpcLb::BalancerCallState::ClientLoadReportDone(void* arg,
|
983
960
|
grpc_error* error) {
|
984
961
|
BalancerCallState* lb_calld = static_cast<BalancerCallState*>(arg);
|
985
|
-
|
986
|
-
|
987
|
-
|
988
|
-
|
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);
|
989
966
|
}
|
990
967
|
|
991
|
-
void GrpcLb::BalancerCallState::ClientLoadReportDoneLocked(
|
992
|
-
|
993
|
-
|
994
|
-
|
995
|
-
|
996
|
-
|
997
|
-
if (error != GRPC_ERROR_NONE || lb_calld != grpclb_policy->lb_calld_.get()) {
|
998
|
-
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);
|
999
974
|
return;
|
1000
975
|
}
|
1001
|
-
|
976
|
+
ScheduleNextClientLoadReportLocked();
|
1002
977
|
}
|
1003
978
|
|
1004
979
|
void GrpcLb::BalancerCallState::OnInitialRequestSent(void* arg,
|
1005
|
-
grpc_error* error) {
|
980
|
+
grpc_error* /*error*/) {
|
1006
981
|
BalancerCallState* lb_calld = static_cast<BalancerCallState*>(arg);
|
1007
|
-
lb_calld->grpclb_policy()->
|
1008
|
-
|
1009
|
-
OnInitialRequestSentLocked, lb_calld, nullptr),
|
1010
|
-
GRPC_ERROR_REF(error));
|
982
|
+
lb_calld->grpclb_policy()->work_serializer()->Run(
|
983
|
+
[lb_calld]() { lb_calld->OnInitialRequestSentLocked(); }, DEBUG_LOCATION);
|
1011
984
|
}
|
1012
985
|
|
1013
|
-
void GrpcLb::BalancerCallState::OnInitialRequestSentLocked(
|
1014
|
-
|
1015
|
-
|
1016
|
-
grpc_byte_buffer_destroy(lb_calld->send_message_payload_);
|
1017
|
-
lb_calld->send_message_payload_ = nullptr;
|
986
|
+
void GrpcLb::BalancerCallState::OnInitialRequestSentLocked() {
|
987
|
+
grpc_byte_buffer_destroy(send_message_payload_);
|
988
|
+
send_message_payload_ = nullptr;
|
1018
989
|
// If we attempted to send a client load report before the initial request was
|
1019
990
|
// sent (and this lb_calld is still in use), send the load report now.
|
1020
|
-
if (
|
1021
|
-
|
1022
|
-
|
1023
|
-
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;
|
1024
994
|
}
|
1025
|
-
|
995
|
+
Unref(DEBUG_LOCATION, "on_initial_request_sent");
|
1026
996
|
}
|
1027
997
|
|
1028
|
-
void GrpcLb::BalancerCallState::OnBalancerMessageReceived(
|
1029
|
-
|
998
|
+
void GrpcLb::BalancerCallState::OnBalancerMessageReceived(
|
999
|
+
void* arg, grpc_error* /*error*/) {
|
1030
1000
|
BalancerCallState* lb_calld = static_cast<BalancerCallState*>(arg);
|
1031
|
-
lb_calld->grpclb_policy()->
|
1032
|
-
|
1033
|
-
|
1034
|
-
GRPC_ERROR_REF(error));
|
1001
|
+
lb_calld->grpclb_policy()->work_serializer()->Run(
|
1002
|
+
[lb_calld]() { lb_calld->OnBalancerMessageReceivedLocked(); },
|
1003
|
+
DEBUG_LOCATION);
|
1035
1004
|
}
|
1036
1005
|
|
1037
|
-
void GrpcLb::BalancerCallState::OnBalancerMessageReceivedLocked(
|
1038
|
-
void* arg, grpc_error* /*error*/) {
|
1039
|
-
BalancerCallState* lb_calld = static_cast<BalancerCallState*>(arg);
|
1040
|
-
GrpcLb* grpclb_policy = lb_calld->grpclb_policy();
|
1006
|
+
void GrpcLb::BalancerCallState::OnBalancerMessageReceivedLocked() {
|
1041
1007
|
// Null payload means the LB call was cancelled.
|
1042
|
-
if (
|
1043
|
-
|
1044
|
-
|
1008
|
+
if (this != grpclb_policy()->lb_calld_.get() ||
|
1009
|
+
recv_message_payload_ == nullptr) {
|
1010
|
+
Unref(DEBUG_LOCATION, "on_message_received");
|
1045
1011
|
return;
|
1046
1012
|
}
|
1047
1013
|
grpc_byte_buffer_reader bbr;
|
1048
|
-
grpc_byte_buffer_reader_init(&bbr,
|
1014
|
+
grpc_byte_buffer_reader_init(&bbr, recv_message_payload_);
|
1049
1015
|
grpc_slice response_slice = grpc_byte_buffer_reader_readall(&bbr);
|
1050
1016
|
grpc_byte_buffer_reader_destroy(&bbr);
|
1051
|
-
grpc_byte_buffer_destroy(
|
1052
|
-
|
1017
|
+
grpc_byte_buffer_destroy(recv_message_payload_);
|
1018
|
+
recv_message_payload_ = nullptr;
|
1053
1019
|
GrpcLbResponse response;
|
1054
1020
|
upb::Arena arena;
|
1055
1021
|
if (!GrpcLbResponseParse(response_slice, arena.ptr(), &response) ||
|
1056
|
-
(response.type == response.INITIAL &&
|
1022
|
+
(response.type == response.INITIAL && seen_initial_response_)) {
|
1057
1023
|
char* response_slice_str =
|
1058
1024
|
grpc_dump_slice(response_slice, GPR_DUMP_ASCII | GPR_DUMP_HEX);
|
1059
1025
|
gpr_log(GPR_ERROR,
|
1060
1026
|
"[grpclb %p] lb_calld=%p: Invalid LB response received: '%s'. "
|
1061
1027
|
"Ignoring.",
|
1062
|
-
grpclb_policy,
|
1028
|
+
grpclb_policy(), this, response_slice_str);
|
1063
1029
|
gpr_free(response_slice_str);
|
1064
1030
|
} else {
|
1065
1031
|
switch (response.type) {
|
1066
1032
|
case response.INITIAL: {
|
1067
1033
|
if (response.client_stats_report_interval != 0) {
|
1068
|
-
|
1034
|
+
client_stats_report_interval_ =
|
1069
1035
|
GPR_MAX(GPR_MS_PER_SEC, response.client_stats_report_interval);
|
1070
1036
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
1071
1037
|
gpr_log(GPR_INFO,
|
1072
1038
|
"[grpclb %p] lb_calld=%p: Received initial LB response "
|
1073
1039
|
"message; client load reporting interval = %" PRId64
|
1074
1040
|
" milliseconds",
|
1075
|
-
grpclb_policy,
|
1076
|
-
lb_calld->client_stats_report_interval_);
|
1041
|
+
grpclb_policy(), this, client_stats_report_interval_);
|
1077
1042
|
}
|
1078
1043
|
} else if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
1079
1044
|
gpr_log(GPR_INFO,
|
1080
1045
|
"[grpclb %p] lb_calld=%p: Received initial LB response "
|
1081
1046
|
"message; client load reporting NOT enabled",
|
1082
|
-
grpclb_policy,
|
1047
|
+
grpclb_policy(), this);
|
1083
1048
|
}
|
1084
|
-
|
1049
|
+
seen_initial_response_ = true;
|
1085
1050
|
break;
|
1086
1051
|
}
|
1087
1052
|
case response.SERVERLIST: {
|
1088
|
-
GPR_ASSERT(
|
1053
|
+
GPR_ASSERT(lb_call_ != nullptr);
|
1089
1054
|
auto serverlist_wrapper =
|
1090
1055
|
MakeRefCounted<Serverlist>(std::move(response.serverlist));
|
1091
1056
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
1092
|
-
grpc_core::UniquePtr<char> serverlist_text =
|
1093
|
-
serverlist_wrapper->AsText();
|
1094
1057
|
gpr_log(GPR_INFO,
|
1095
1058
|
"[grpclb %p] lb_calld=%p: Serverlist with %" PRIuPTR
|
1096
1059
|
" servers received:\n%s",
|
1097
|
-
grpclb_policy,
|
1060
|
+
grpclb_policy(), this,
|
1098
1061
|
serverlist_wrapper->serverlist().size(),
|
1099
|
-
|
1062
|
+
serverlist_wrapper->AsText().c_str());
|
1100
1063
|
}
|
1101
|
-
|
1064
|
+
seen_serverlist_ = true;
|
1102
1065
|
// Start sending client load report only after we start using the
|
1103
1066
|
// serverlist returned from the current LB call.
|
1104
|
-
if (
|
1105
|
-
|
1106
|
-
lb_calld->client_stats_ = MakeRefCounted<GrpcLbClientStats>();
|
1067
|
+
if (client_stats_report_interval_ > 0 && client_stats_ == nullptr) {
|
1068
|
+
client_stats_ = MakeRefCounted<GrpcLbClientStats>();
|
1107
1069
|
// Ref held by callback.
|
1108
|
-
|
1109
|
-
|
1070
|
+
Ref(DEBUG_LOCATION, "client_load_report").release();
|
1071
|
+
ScheduleNextClientLoadReportLocked();
|
1110
1072
|
}
|
1111
1073
|
// Check if the serverlist differs from the previous one.
|
1112
|
-
if (grpclb_policy->serverlist_ != nullptr &&
|
1113
|
-
*grpclb_policy->serverlist_ == *serverlist_wrapper) {
|
1074
|
+
if (grpclb_policy()->serverlist_ != nullptr &&
|
1075
|
+
*grpclb_policy()->serverlist_ == *serverlist_wrapper) {
|
1114
1076
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
1115
1077
|
gpr_log(GPR_INFO,
|
1116
1078
|
"[grpclb %p] lb_calld=%p: Incoming server list identical "
|
1117
1079
|
"to current, ignoring.",
|
1118
|
-
grpclb_policy,
|
1080
|
+
grpclb_policy(), this);
|
1119
1081
|
}
|
1120
1082
|
} else { // New serverlist.
|
1121
1083
|
// Dispose of the fallback.
|
@@ -1137,155 +1099,135 @@ void GrpcLb::BalancerCallState::OnBalancerMessageReceivedLocked(
|
|
1137
1099
|
// the grpclb implementation at this point, since we're deprecating
|
1138
1100
|
// it in favor of the xds policy. We will implement this the
|
1139
1101
|
// right way in the xds policy instead.
|
1140
|
-
if (grpclb_policy->fallback_mode_) {
|
1102
|
+
if (grpclb_policy()->fallback_mode_) {
|
1141
1103
|
gpr_log(GPR_INFO,
|
1142
1104
|
"[grpclb %p] Received response from balancer; exiting "
|
1143
1105
|
"fallback mode",
|
1144
|
-
grpclb_policy);
|
1145
|
-
grpclb_policy->fallback_mode_ = false;
|
1106
|
+
grpclb_policy());
|
1107
|
+
grpclb_policy()->fallback_mode_ = false;
|
1146
1108
|
}
|
1147
|
-
if (grpclb_policy->fallback_at_startup_checks_pending_) {
|
1148
|
-
grpclb_policy->fallback_at_startup_checks_pending_ = false;
|
1149
|
-
grpc_timer_cancel(&grpclb_policy->lb_fallback_timer_);
|
1150
|
-
grpclb_policy->CancelBalancerChannelConnectivityWatchLocked();
|
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();
|
1151
1113
|
}
|
1152
1114
|
// Update the serverlist in the GrpcLb instance. This serverlist
|
1153
1115
|
// instance will be destroyed either upon the next update or when the
|
1154
1116
|
// GrpcLb instance is destroyed.
|
1155
|
-
grpclb_policy->serverlist_ = std::move(serverlist_wrapper);
|
1156
|
-
grpclb_policy->CreateOrUpdateChildPolicyLocked();
|
1117
|
+
grpclb_policy()->serverlist_ = std::move(serverlist_wrapper);
|
1118
|
+
grpclb_policy()->CreateOrUpdateChildPolicyLocked();
|
1157
1119
|
}
|
1158
1120
|
break;
|
1159
1121
|
}
|
1160
1122
|
case response.FALLBACK: {
|
1161
|
-
if (!grpclb_policy->fallback_mode_) {
|
1123
|
+
if (!grpclb_policy()->fallback_mode_) {
|
1162
1124
|
gpr_log(GPR_INFO,
|
1163
1125
|
"[grpclb %p] Entering fallback mode as requested by balancer",
|
1164
|
-
grpclb_policy);
|
1165
|
-
if (grpclb_policy->fallback_at_startup_checks_pending_) {
|
1166
|
-
grpclb_policy->fallback_at_startup_checks_pending_ = false;
|
1167
|
-
grpc_timer_cancel(&grpclb_policy->lb_fallback_timer_);
|
1168
|
-
grpclb_policy->CancelBalancerChannelConnectivityWatchLocked();
|
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();
|
1169
1131
|
}
|
1170
|
-
grpclb_policy->fallback_mode_ = true;
|
1171
|
-
grpclb_policy->CreateOrUpdateChildPolicyLocked();
|
1132
|
+
grpclb_policy()->fallback_mode_ = true;
|
1133
|
+
grpclb_policy()->CreateOrUpdateChildPolicyLocked();
|
1172
1134
|
// Reset serverlist, so that if the balancer exits fallback
|
1173
1135
|
// mode by sending the same serverlist we were previously
|
1174
1136
|
// using, we don't incorrectly ignore it as a duplicate.
|
1175
|
-
grpclb_policy->serverlist_.reset();
|
1137
|
+
grpclb_policy()->serverlist_.reset();
|
1176
1138
|
}
|
1177
1139
|
break;
|
1178
1140
|
}
|
1179
1141
|
}
|
1180
1142
|
}
|
1181
1143
|
grpc_slice_unref_internal(response_slice);
|
1182
|
-
if (!grpclb_policy->shutting_down_) {
|
1144
|
+
if (!grpclb_policy()->shutting_down_) {
|
1183
1145
|
// Keep listening for serverlist updates.
|
1184
1146
|
grpc_op op;
|
1185
1147
|
memset(&op, 0, sizeof(op));
|
1186
1148
|
op.op = GRPC_OP_RECV_MESSAGE;
|
1187
|
-
op.data.recv_message.recv_message = &
|
1149
|
+
op.data.recv_message.recv_message = &recv_message_payload_;
|
1188
1150
|
op.flags = 0;
|
1189
1151
|
op.reserved = nullptr;
|
1190
1152
|
// Reuse the "OnBalancerMessageReceivedLocked" ref taken in StartQuery().
|
1191
|
-
GRPC_CLOSURE_INIT(&lb_calld->lb_on_balancer_message_received_,
|
1192
|
-
GrpcLb::BalancerCallState::OnBalancerMessageReceived,
|
1193
|
-
lb_calld, grpc_schedule_on_exec_ctx);
|
1194
1153
|
const grpc_call_error call_error = grpc_call_start_batch_and_execute(
|
1195
|
-
|
1196
|
-
&lb_calld->lb_on_balancer_message_received_);
|
1154
|
+
lb_call_, &op, 1, &lb_on_balancer_message_received_);
|
1197
1155
|
GPR_ASSERT(GRPC_CALL_OK == call_error);
|
1198
1156
|
} else {
|
1199
|
-
|
1157
|
+
Unref(DEBUG_LOCATION, "on_message_received+grpclb_shutdown");
|
1200
1158
|
}
|
1201
1159
|
}
|
1202
1160
|
|
1203
1161
|
void GrpcLb::BalancerCallState::OnBalancerStatusReceived(void* arg,
|
1204
1162
|
grpc_error* error) {
|
1205
1163
|
BalancerCallState* lb_calld = static_cast<BalancerCallState*>(arg);
|
1206
|
-
|
1207
|
-
|
1208
|
-
|
1209
|
-
|
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);
|
1210
1168
|
}
|
1211
1169
|
|
1212
1170
|
void GrpcLb::BalancerCallState::OnBalancerStatusReceivedLocked(
|
1213
|
-
|
1214
|
-
|
1215
|
-
GrpcLb* grpclb_policy = lb_calld->grpclb_policy();
|
1216
|
-
GPR_ASSERT(lb_calld->lb_call_ != nullptr);
|
1171
|
+
grpc_error* error) {
|
1172
|
+
GPR_ASSERT(lb_call_ != nullptr);
|
1217
1173
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
1218
|
-
char* status_details =
|
1219
|
-
grpc_slice_to_c_string(lb_calld->lb_call_status_details_);
|
1174
|
+
char* status_details = grpc_slice_to_c_string(lb_call_status_details_);
|
1220
1175
|
gpr_log(GPR_INFO,
|
1221
1176
|
"[grpclb %p] lb_calld=%p: Status from LB server received. "
|
1222
1177
|
"Status = %d, details = '%s', (lb_call: %p), error '%s'",
|
1223
|
-
grpclb_policy,
|
1224
|
-
|
1178
|
+
grpclb_policy(), this, lb_call_status_, status_details, lb_call_,
|
1179
|
+
grpc_error_string(error));
|
1225
1180
|
gpr_free(status_details);
|
1226
1181
|
}
|
1182
|
+
GRPC_ERROR_UNREF(error);
|
1227
1183
|
// If this lb_calld is still in use, this call ended because of a failure so
|
1228
1184
|
// we want to retry connecting. Otherwise, we have deliberately ended this
|
1229
1185
|
// call and no further action is required.
|
1230
|
-
if (
|
1186
|
+
if (this == grpclb_policy()->lb_calld_.get()) {
|
1231
1187
|
// If the fallback-at-startup checks are pending, go into fallback mode
|
1232
1188
|
// immediately. This short-circuits the timeout for the fallback-at-startup
|
1233
1189
|
// case.
|
1234
|
-
if (grpclb_policy->fallback_at_startup_checks_pending_) {
|
1235
|
-
GPR_ASSERT(!
|
1190
|
+
if (grpclb_policy()->fallback_at_startup_checks_pending_) {
|
1191
|
+
GPR_ASSERT(!seen_serverlist_);
|
1236
1192
|
gpr_log(GPR_INFO,
|
1237
1193
|
"[grpclb %p] Balancer call finished without receiving "
|
1238
1194
|
"serverlist; entering fallback mode",
|
1239
|
-
grpclb_policy);
|
1240
|
-
grpclb_policy->fallback_at_startup_checks_pending_ = false;
|
1241
|
-
grpc_timer_cancel(&grpclb_policy->lb_fallback_timer_);
|
1242
|
-
grpclb_policy->CancelBalancerChannelConnectivityWatchLocked();
|
1243
|
-
grpclb_policy->fallback_mode_ = true;
|
1244
|
-
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();
|
1245
1201
|
} else {
|
1246
1202
|
// This handles the fallback-after-startup case.
|
1247
|
-
grpclb_policy->MaybeEnterFallbackModeAfterStartup();
|
1203
|
+
grpclb_policy()->MaybeEnterFallbackModeAfterStartup();
|
1248
1204
|
}
|
1249
|
-
grpclb_policy->lb_calld_.reset();
|
1250
|
-
GPR_ASSERT(!grpclb_policy->shutting_down_);
|
1251
|
-
grpclb_policy->channel_control_helper()->RequestReresolution();
|
1252
|
-
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_) {
|
1253
1209
|
// If we lose connection to the LB server, reset the backoff and restart
|
1254
1210
|
// the LB call immediately.
|
1255
|
-
grpclb_policy->lb_call_backoff_.Reset();
|
1256
|
-
grpclb_policy->StartBalancerCallLocked();
|
1211
|
+
grpclb_policy()->lb_call_backoff_.Reset();
|
1212
|
+
grpclb_policy()->StartBalancerCallLocked();
|
1257
1213
|
} else {
|
1258
1214
|
// If this LB call fails establishing any connection to the LB server,
|
1259
1215
|
// retry later.
|
1260
|
-
grpclb_policy->StartBalancerCallRetryTimerLocked();
|
1216
|
+
grpclb_policy()->StartBalancerCallRetryTimerLocked();
|
1261
1217
|
}
|
1262
1218
|
}
|
1263
|
-
|
1219
|
+
Unref(DEBUG_LOCATION, "lb_call_ended");
|
1264
1220
|
}
|
1265
1221
|
|
1266
1222
|
//
|
1267
1223
|
// helper code for creating balancer channel
|
1268
1224
|
//
|
1269
1225
|
|
1270
|
-
ServerAddressList ExtractBalancerAddresses(const
|
1271
|
-
ServerAddressList
|
1272
|
-
|
1273
|
-
|
1274
|
-
|
1275
|
-
// recursively use the grpclb policy in the channel used to talk to
|
1276
|
-
// the balancers. Note that we do NOT strip out the balancer_name
|
1277
|
-
// channel arg, since we need that to set the authority correctly
|
1278
|
-
// to talk to the balancers.
|
1279
|
-
static const char* args_to_remove[] = {
|
1280
|
-
GRPC_ARG_ADDRESS_IS_BALANCER,
|
1281
|
-
};
|
1282
|
-
balancer_addresses.emplace_back(
|
1283
|
-
addresses[i].address(),
|
1284
|
-
grpc_channel_args_copy_and_remove(addresses[i].args(), args_to_remove,
|
1285
|
-
GPR_ARRAY_SIZE(args_to_remove)));
|
1286
|
-
}
|
1287
|
-
}
|
1288
|
-
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();
|
1289
1231
|
}
|
1290
1232
|
|
1291
1233
|
/* Returns the channel args for the LB channel, used to create a bidirectional
|
@@ -1329,7 +1271,7 @@ grpc_channel_args* BuildBalancerChannelArgs(
|
|
1329
1271
|
GRPC_ARG_CHANNELZ_CHANNEL_NODE,
|
1330
1272
|
};
|
1331
1273
|
// Channel args to add.
|
1332
|
-
InlinedVector<grpc_arg, 3> args_to_add;
|
1274
|
+
absl::InlinedVector<grpc_arg, 3> args_to_add;
|
1333
1275
|
// The fake resolver response generator, which we use to inject
|
1334
1276
|
// address updates into the LB channel.
|
1335
1277
|
args_to_add.emplace_back(
|
@@ -1371,6 +1313,11 @@ GrpcLb::GrpcLb(Args args)
|
|
1371
1313
|
.set_jitter(GRPC_GRPCLB_RECONNECT_JITTER)
|
1372
1314
|
.set_max_backoff(GRPC_GRPCLB_RECONNECT_MAX_BACKOFF_SECONDS *
|
1373
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);
|
1374
1321
|
// Record server name.
|
1375
1322
|
const grpc_arg* arg = grpc_channel_args_find(args.args, GRPC_ARG_SERVER_URI);
|
1376
1323
|
const char* server_uri = grpc_channel_arg_get_string(arg);
|
@@ -1405,19 +1352,15 @@ void GrpcLb::ShutdownLocked() {
|
|
1405
1352
|
grpc_timer_cancel(&lb_call_retry_timer_);
|
1406
1353
|
}
|
1407
1354
|
if (fallback_at_startup_checks_pending_) {
|
1355
|
+
fallback_at_startup_checks_pending_ = false;
|
1408
1356
|
grpc_timer_cancel(&lb_fallback_timer_);
|
1409
1357
|
CancelBalancerChannelConnectivityWatchLocked();
|
1410
1358
|
}
|
1411
1359
|
if (child_policy_ != nullptr) {
|
1412
1360
|
grpc_pollset_set_del_pollset_set(child_policy_->interested_parties(),
|
1413
1361
|
interested_parties());
|
1362
|
+
child_policy_.reset();
|
1414
1363
|
}
|
1415
|
-
if (pending_child_policy_ != nullptr) {
|
1416
|
-
grpc_pollset_set_del_pollset_set(
|
1417
|
-
pending_child_policy_->interested_parties(), interested_parties());
|
1418
|
-
}
|
1419
|
-
child_policy_.reset();
|
1420
|
-
pending_child_policy_.reset();
|
1421
1364
|
// We destroy the LB channel here instead of in our destructor because
|
1422
1365
|
// destroying the channel triggers a last callback to
|
1423
1366
|
// OnBalancerChannelConnectivityChangedLocked(), and we need to be
|
@@ -1439,15 +1382,11 @@ void GrpcLb::ResetBackoffLocked() {
|
|
1439
1382
|
if (child_policy_ != nullptr) {
|
1440
1383
|
child_policy_->ResetBackoffLocked();
|
1441
1384
|
}
|
1442
|
-
if (pending_child_policy_ != nullptr) {
|
1443
|
-
pending_child_policy_->ResetBackoffLocked();
|
1444
|
-
}
|
1445
1385
|
}
|
1446
1386
|
|
1447
1387
|
void GrpcLb::UpdateLocked(UpdateArgs args) {
|
1448
1388
|
const bool is_initial_update = lb_channel_ == nullptr;
|
1449
|
-
auto* grpclb_config =
|
1450
|
-
static_cast<const ParsedGrpcLbConfig*>(args.config.get());
|
1389
|
+
auto* grpclb_config = static_cast<const GrpcLbConfig*>(args.config.get());
|
1451
1390
|
if (grpclb_config != nullptr) {
|
1452
1391
|
child_policy_config_ = grpclb_config->child_policy();
|
1453
1392
|
} else {
|
@@ -1463,8 +1402,6 @@ void GrpcLb::UpdateLocked(UpdateArgs args) {
|
|
1463
1402
|
// Start timer.
|
1464
1403
|
grpc_millis deadline = ExecCtx::Get()->Now() + fallback_at_startup_timeout_;
|
1465
1404
|
Ref(DEBUG_LOCATION, "on_fallback_timer").release(); // Ref for callback
|
1466
|
-
GRPC_CLOSURE_INIT(&lb_on_fallback_, &GrpcLb::OnFallbackTimer, this,
|
1467
|
-
grpc_schedule_on_exec_ctx);
|
1468
1405
|
grpc_timer_init(&lb_fallback_timer_, deadline, &lb_on_fallback_);
|
1469
1406
|
// Start watching the channel's connectivity state. If the channel
|
1470
1407
|
// goes into state TRANSIENT_FAILURE before the timer fires, we go into
|
@@ -1473,15 +1410,10 @@ void GrpcLb::UpdateLocked(UpdateArgs args) {
|
|
1473
1410
|
grpc_channel_get_channel_stack(lb_channel_));
|
1474
1411
|
GPR_ASSERT(client_channel_elem->filter == &grpc_client_channel_filter);
|
1475
1412
|
// Ref held by callback.
|
1476
|
-
Ref(DEBUG_LOCATION, "
|
1477
|
-
|
1478
|
-
|
1479
|
-
|
1480
|
-
grpc_client_channel_watch_connectivity_state(
|
1481
|
-
client_channel_elem,
|
1482
|
-
grpc_polling_entity_create_from_pollset_set(interested_parties()),
|
1483
|
-
&lb_channel_connectivity_, &lb_channel_on_connectivity_changed_,
|
1484
|
-
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_));
|
1485
1417
|
// Start balancer call.
|
1486
1418
|
StartBalancerCallLocked();
|
1487
1419
|
}
|
@@ -1491,27 +1423,25 @@ void GrpcLb::UpdateLocked(UpdateArgs args) {
|
|
1491
1423
|
// helpers for UpdateLocked()
|
1492
1424
|
//
|
1493
1425
|
|
1494
|
-
|
1495
|
-
|
1426
|
+
ServerAddressList AddNullLbTokenToAddresses(
|
1427
|
+
const ServerAddressList& addresses) {
|
1496
1428
|
static const char* lb_token = "";
|
1497
1429
|
grpc_arg arg = grpc_channel_arg_pointer_create(
|
1498
1430
|
const_cast<char*>(GRPC_ARG_GRPCLB_ADDRESS_LB_TOKEN),
|
1499
1431
|
const_cast<char*>(lb_token), &lb_token_arg_vtable);
|
1500
|
-
ServerAddressList
|
1432
|
+
ServerAddressList addresses_out;
|
1501
1433
|
for (size_t i = 0; i < addresses.size(); ++i) {
|
1502
|
-
|
1503
|
-
|
1504
|
-
|
1505
|
-
grpc_channel_args_copy_and_add(addresses[i].args(), &arg, 1));
|
1506
|
-
}
|
1434
|
+
addresses_out.emplace_back(
|
1435
|
+
addresses[i].address(),
|
1436
|
+
grpc_channel_args_copy_and_add(addresses[i].args(), &arg, 1));
|
1507
1437
|
}
|
1508
|
-
return
|
1438
|
+
return addresses_out;
|
1509
1439
|
}
|
1510
1440
|
|
1511
1441
|
void GrpcLb::ProcessAddressesAndChannelArgsLocked(
|
1512
1442
|
const ServerAddressList& addresses, const grpc_channel_args& args) {
|
1513
1443
|
// Update fallback address list.
|
1514
|
-
fallback_backend_addresses_ =
|
1444
|
+
fallback_backend_addresses_ = AddNullLbTokenToAddresses(addresses);
|
1515
1445
|
// Make sure that GRPC_ARG_LB_POLICY_NAME is set in channel args,
|
1516
1446
|
// since we use this to trigger the client_load_reporting filter.
|
1517
1447
|
static const char* args_to_remove[] = {GRPC_ARG_LB_POLICY_NAME};
|
@@ -1521,7 +1451,7 @@ void GrpcLb::ProcessAddressesAndChannelArgsLocked(
|
|
1521
1451
|
args_ = grpc_channel_args_copy_and_add_and_remove(
|
1522
1452
|
&args, args_to_remove, GPR_ARRAY_SIZE(args_to_remove), &new_arg, 1);
|
1523
1453
|
// Construct args for balancer channel.
|
1524
|
-
ServerAddressList balancer_addresses = ExtractBalancerAddresses(
|
1454
|
+
ServerAddressList balancer_addresses = ExtractBalancerAddresses(args);
|
1525
1455
|
grpc_channel_args* lb_channel_args = BuildBalancerChannelArgs(
|
1526
1456
|
balancer_addresses, response_generator_.get(), &args);
|
1527
1457
|
// Create balancer channel if needed.
|
@@ -1540,60 +1470,11 @@ void GrpcLb::ProcessAddressesAndChannelArgsLocked(
|
|
1540
1470
|
response_generator_->SetResponse(std::move(result));
|
1541
1471
|
}
|
1542
1472
|
|
1543
|
-
void GrpcLb::OnBalancerChannelConnectivityChanged(void* arg,
|
1544
|
-
grpc_error* error) {
|
1545
|
-
GrpcLb* self = static_cast<GrpcLb*>(arg);
|
1546
|
-
self->combiner()->Run(
|
1547
|
-
GRPC_CLOSURE_INIT(&self->lb_channel_on_connectivity_changed_,
|
1548
|
-
&GrpcLb::OnBalancerChannelConnectivityChangedLocked,
|
1549
|
-
self, nullptr),
|
1550
|
-
GRPC_ERROR_REF(error));
|
1551
|
-
}
|
1552
|
-
|
1553
|
-
void GrpcLb::OnBalancerChannelConnectivityChangedLocked(void* arg,
|
1554
|
-
grpc_error* /*error*/) {
|
1555
|
-
GrpcLb* self = static_cast<GrpcLb*>(arg);
|
1556
|
-
if (!self->shutting_down_ && self->fallback_at_startup_checks_pending_) {
|
1557
|
-
if (self->lb_channel_connectivity_ != GRPC_CHANNEL_TRANSIENT_FAILURE) {
|
1558
|
-
// Not in TRANSIENT_FAILURE. Renew connectivity watch.
|
1559
|
-
grpc_channel_element* client_channel_elem =
|
1560
|
-
grpc_channel_stack_last_element(
|
1561
|
-
grpc_channel_get_channel_stack(self->lb_channel_));
|
1562
|
-
GPR_ASSERT(client_channel_elem->filter == &grpc_client_channel_filter);
|
1563
|
-
GRPC_CLOSURE_INIT(&self->lb_channel_on_connectivity_changed_,
|
1564
|
-
&GrpcLb::OnBalancerChannelConnectivityChanged, self,
|
1565
|
-
grpc_schedule_on_exec_ctx);
|
1566
|
-
grpc_client_channel_watch_connectivity_state(
|
1567
|
-
client_channel_elem,
|
1568
|
-
grpc_polling_entity_create_from_pollset_set(
|
1569
|
-
self->interested_parties()),
|
1570
|
-
&self->lb_channel_connectivity_,
|
1571
|
-
&self->lb_channel_on_connectivity_changed_, nullptr);
|
1572
|
-
return; // Early out so we don't drop the ref below.
|
1573
|
-
}
|
1574
|
-
// In TRANSIENT_FAILURE. Cancel the fallback timer and go into
|
1575
|
-
// fallback mode immediately.
|
1576
|
-
gpr_log(GPR_INFO,
|
1577
|
-
"[grpclb %p] balancer channel in state TRANSIENT_FAILURE; "
|
1578
|
-
"entering fallback mode",
|
1579
|
-
self);
|
1580
|
-
self->fallback_at_startup_checks_pending_ = false;
|
1581
|
-
grpc_timer_cancel(&self->lb_fallback_timer_);
|
1582
|
-
self->fallback_mode_ = true;
|
1583
|
-
self->CreateOrUpdateChildPolicyLocked();
|
1584
|
-
}
|
1585
|
-
// Done watching connectivity state, so drop ref.
|
1586
|
-
self->Unref(DEBUG_LOCATION, "watch_lb_channel_connectivity");
|
1587
|
-
}
|
1588
|
-
|
1589
1473
|
void GrpcLb::CancelBalancerChannelConnectivityWatchLocked() {
|
1590
1474
|
grpc_channel_element* client_channel_elem = grpc_channel_stack_last_element(
|
1591
1475
|
grpc_channel_get_channel_stack(lb_channel_));
|
1592
1476
|
GPR_ASSERT(client_channel_elem->filter == &grpc_client_channel_filter);
|
1593
|
-
|
1594
|
-
client_channel_elem,
|
1595
|
-
grpc_polling_entity_create_from_pollset_set(interested_parties()),
|
1596
|
-
nullptr, &lb_channel_on_connectivity_changed_, nullptr);
|
1477
|
+
grpc_client_channel_stop_connectivity_watch(client_channel_elem, watcher_);
|
1597
1478
|
}
|
1598
1479
|
|
1599
1480
|
//
|
@@ -1632,33 +1513,30 @@ void GrpcLb::StartBalancerCallRetryTimerLocked() {
|
|
1632
1513
|
// with the callback.
|
1633
1514
|
auto self = Ref(DEBUG_LOCATION, "on_balancer_call_retry_timer");
|
1634
1515
|
self.release();
|
1635
|
-
GRPC_CLOSURE_INIT(&lb_on_call_retry_, &GrpcLb::OnBalancerCallRetryTimer, this,
|
1636
|
-
grpc_schedule_on_exec_ctx);
|
1637
1516
|
retry_timer_callback_pending_ = true;
|
1638
1517
|
grpc_timer_init(&lb_call_retry_timer_, next_try, &lb_on_call_retry_);
|
1639
1518
|
}
|
1640
1519
|
|
1641
1520
|
void GrpcLb::OnBalancerCallRetryTimer(void* arg, grpc_error* error) {
|
1642
1521
|
GrpcLb* grpclb_policy = static_cast<GrpcLb*>(arg);
|
1643
|
-
|
1644
|
-
|
1645
|
-
|
1646
|
-
|
1647
|
-
|
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);
|
1648
1528
|
}
|
1649
1529
|
|
1650
|
-
void GrpcLb::OnBalancerCallRetryTimerLocked(
|
1651
|
-
|
1652
|
-
|
1653
|
-
if (!grpclb_policy->shutting_down_ && error == GRPC_ERROR_NONE &&
|
1654
|
-
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) {
|
1655
1533
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
1656
|
-
gpr_log(GPR_INFO, "[grpclb %p] Restarting call to LB server",
|
1657
|
-
grpclb_policy);
|
1534
|
+
gpr_log(GPR_INFO, "[grpclb %p] Restarting call to LB server", this);
|
1658
1535
|
}
|
1659
|
-
|
1536
|
+
StartBalancerCallLocked();
|
1660
1537
|
}
|
1661
|
-
|
1538
|
+
Unref(DEBUG_LOCATION, "on_balancer_call_retry_timer");
|
1539
|
+
GRPC_ERROR_UNREF(error);
|
1662
1540
|
}
|
1663
1541
|
|
1664
1542
|
//
|
@@ -1685,28 +1563,28 @@ void GrpcLb::MaybeEnterFallbackModeAfterStartup() {
|
|
1685
1563
|
|
1686
1564
|
void GrpcLb::OnFallbackTimer(void* arg, grpc_error* error) {
|
1687
1565
|
GrpcLb* grpclb_policy = static_cast<GrpcLb*>(arg);
|
1688
|
-
|
1689
|
-
|
1690
|
-
|
1691
|
-
|
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);
|
1692
1570
|
}
|
1693
1571
|
|
1694
|
-
void GrpcLb::OnFallbackTimerLocked(
|
1695
|
-
GrpcLb* grpclb_policy = static_cast<GrpcLb*>(arg);
|
1572
|
+
void GrpcLb::OnFallbackTimerLocked(grpc_error* error) {
|
1696
1573
|
// If we receive a serverlist after the timer fires but before this callback
|
1697
1574
|
// actually runs, don't fall back.
|
1698
|
-
if (
|
1699
|
-
|
1575
|
+
if (fallback_at_startup_checks_pending_ && !shutting_down_ &&
|
1576
|
+
error == GRPC_ERROR_NONE) {
|
1700
1577
|
gpr_log(GPR_INFO,
|
1701
1578
|
"[grpclb %p] No response from balancer after fallback timeout; "
|
1702
1579
|
"entering fallback mode",
|
1703
|
-
|
1704
|
-
|
1705
|
-
|
1706
|
-
|
1707
|
-
|
1580
|
+
this);
|
1581
|
+
fallback_at_startup_checks_pending_ = false;
|
1582
|
+
CancelBalancerChannelConnectivityWatchLocked();
|
1583
|
+
fallback_mode_ = true;
|
1584
|
+
CreateOrUpdateChildPolicyLocked();
|
1708
1585
|
}
|
1709
|
-
|
1586
|
+
Unref(DEBUG_LOCATION, "on_fallback_timer");
|
1587
|
+
GRPC_ERROR_UNREF(error);
|
1710
1588
|
}
|
1711
1589
|
|
1712
1590
|
//
|
@@ -1715,7 +1593,7 @@ void GrpcLb::OnFallbackTimerLocked(void* arg, grpc_error* error) {
|
|
1715
1593
|
|
1716
1594
|
grpc_channel_args* GrpcLb::CreateChildPolicyArgsLocked(
|
1717
1595
|
bool is_backend_from_grpclb_load_balancer) {
|
1718
|
-
InlinedVector<grpc_arg, 2> args_to_add;
|
1596
|
+
absl::InlinedVector<grpc_arg, 2> args_to_add;
|
1719
1597
|
args_to_add.emplace_back(grpc_channel_arg_integer_create(
|
1720
1598
|
const_cast<char*>(GRPC_ARG_ADDRESS_IS_BACKEND_FROM_GRPCLB_LOAD_BALANCER),
|
1721
1599
|
is_backend_from_grpclb_load_balancer));
|
@@ -1728,25 +1606,17 @@ grpc_channel_args* GrpcLb::CreateChildPolicyArgsLocked(
|
|
1728
1606
|
}
|
1729
1607
|
|
1730
1608
|
OrphanablePtr<LoadBalancingPolicy> GrpcLb::CreateChildPolicyLocked(
|
1731
|
-
const
|
1732
|
-
Helper* helper = new Helper(Ref());
|
1609
|
+
const grpc_channel_args* args) {
|
1733
1610
|
LoadBalancingPolicy::Args lb_policy_args;
|
1734
|
-
lb_policy_args.
|
1611
|
+
lb_policy_args.work_serializer = work_serializer();
|
1735
1612
|
lb_policy_args.args = args;
|
1736
|
-
lb_policy_args.channel_control_helper =
|
1737
|
-
std::unique_ptr<ChannelControlHelper>(helper);
|
1613
|
+
lb_policy_args.channel_control_helper = absl::make_unique<Helper>(Ref());
|
1738
1614
|
OrphanablePtr<LoadBalancingPolicy> lb_policy =
|
1739
|
-
|
1740
|
-
|
1741
|
-
if (GPR_UNLIKELY(lb_policy == nullptr)) {
|
1742
|
-
gpr_log(GPR_ERROR, "[grpclb %p] Failure creating child policy %s", this,
|
1743
|
-
name);
|
1744
|
-
return nullptr;
|
1745
|
-
}
|
1746
|
-
helper->set_child(lb_policy.get());
|
1615
|
+
MakeOrphanable<ChildPolicyHandler>(std::move(lb_policy_args),
|
1616
|
+
&grpc_lb_glb_trace);
|
1747
1617
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
1748
|
-
gpr_log(GPR_INFO, "[grpclb %p] Created new child policy
|
1749
|
-
|
1618
|
+
gpr_log(GPR_INFO, "[grpclb %p] Created new child policy handler (%p)", this,
|
1619
|
+
lb_policy.get());
|
1750
1620
|
}
|
1751
1621
|
// Add the gRPC LB's interested_parties pollset_set to that of the newly
|
1752
1622
|
// created child policy. This will make the child policy progress upon
|
@@ -1777,97 +1647,16 @@ void GrpcLb::CreateOrUpdateChildPolicyLocked() {
|
|
1777
1647
|
CreateChildPolicyArgsLocked(is_backend_from_grpclb_load_balancer);
|
1778
1648
|
GPR_ASSERT(update_args.args != nullptr);
|
1779
1649
|
update_args.config = child_policy_config_;
|
1780
|
-
//
|
1781
|
-
|
1782
|
-
|
1783
|
-
// policy transitions into state READY, we swap it into child_policy_,
|
1784
|
-
// replacing the original child policy. So pending_child_policy_ is
|
1785
|
-
// non-null only between when we apply an update that changes the child
|
1786
|
-
// policy name and when the new child reports state READY.
|
1787
|
-
//
|
1788
|
-
// Updates can arrive at any point during this transition. We always
|
1789
|
-
// apply updates relative to the most recently created child policy,
|
1790
|
-
// even if the most recent one is still in pending_child_policy_. This
|
1791
|
-
// is true both when applying the updates to an existing child policy
|
1792
|
-
// and when determining whether we need to create a new policy.
|
1793
|
-
//
|
1794
|
-
// As a result of this, there are several cases to consider here:
|
1795
|
-
//
|
1796
|
-
// 1. We have no existing child policy (i.e., we have started up but
|
1797
|
-
// have not yet received a serverlist from the balancer or gone
|
1798
|
-
// into fallback mode; in this case, both child_policy_ and
|
1799
|
-
// pending_child_policy_ are null). In this case, we create a
|
1800
|
-
// new child policy and store it in child_policy_.
|
1801
|
-
//
|
1802
|
-
// 2. We have an existing child policy and have no pending child policy
|
1803
|
-
// from a previous update (i.e., either there has not been a
|
1804
|
-
// previous update that changed the policy name, or we have already
|
1805
|
-
// finished swapping in the new policy; in this case, child_policy_
|
1806
|
-
// is non-null but pending_child_policy_ is null). In this case:
|
1807
|
-
// a. If child_policy_->name() equals child_policy_name, then we
|
1808
|
-
// update the existing child policy.
|
1809
|
-
// b. If child_policy_->name() does not equal child_policy_name,
|
1810
|
-
// we create a new policy. The policy will be stored in
|
1811
|
-
// pending_child_policy_ and will later be swapped into
|
1812
|
-
// child_policy_ by the helper when the new child transitions
|
1813
|
-
// into state READY.
|
1814
|
-
//
|
1815
|
-
// 3. We have an existing child policy and have a pending child policy
|
1816
|
-
// from a previous update (i.e., a previous update set
|
1817
|
-
// pending_child_policy_ as per case 2b above and that policy has
|
1818
|
-
// not yet transitioned into state READY and been swapped into
|
1819
|
-
// child_policy_; in this case, both child_policy_ and
|
1820
|
-
// pending_child_policy_ are non-null). In this case:
|
1821
|
-
// a. If pending_child_policy_->name() equals child_policy_name,
|
1822
|
-
// then we update the existing pending child policy.
|
1823
|
-
// b. If pending_child_policy->name() does not equal
|
1824
|
-
// child_policy_name, then we create a new policy. The new
|
1825
|
-
// policy is stored in pending_child_policy_ (replacing the one
|
1826
|
-
// that was there before, which will be immediately shut down)
|
1827
|
-
// and will later be swapped into child_policy_ by the helper
|
1828
|
-
// when the new child transitions into state READY.
|
1829
|
-
const char* child_policy_name = child_policy_config_ == nullptr
|
1830
|
-
? "round_robin"
|
1831
|
-
: child_policy_config_->name();
|
1832
|
-
const bool create_policy =
|
1833
|
-
// case 1
|
1834
|
-
child_policy_ == nullptr ||
|
1835
|
-
// case 2b
|
1836
|
-
(pending_child_policy_ == nullptr &&
|
1837
|
-
strcmp(child_policy_->name(), child_policy_name) != 0) ||
|
1838
|
-
// case 3b
|
1839
|
-
(pending_child_policy_ != nullptr &&
|
1840
|
-
strcmp(pending_child_policy_->name(), child_policy_name) != 0);
|
1841
|
-
LoadBalancingPolicy* policy_to_update = nullptr;
|
1842
|
-
if (create_policy) {
|
1843
|
-
// Cases 1, 2b, and 3b: create a new child policy.
|
1844
|
-
// If child_policy_ is null, we set it (case 1), else we set
|
1845
|
-
// pending_child_policy_ (cases 2b and 3b).
|
1846
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
1847
|
-
gpr_log(GPR_INFO, "[grpclb %p] Creating new %schild policy %s", this,
|
1848
|
-
child_policy_ == nullptr ? "" : "pending ", child_policy_name);
|
1849
|
-
}
|
1850
|
-
// Swap the policy into place.
|
1851
|
-
auto& lb_policy =
|
1852
|
-
child_policy_ == nullptr ? child_policy_ : pending_child_policy_;
|
1853
|
-
lb_policy = CreateChildPolicyLocked(child_policy_name, update_args.args);
|
1854
|
-
policy_to_update = lb_policy.get();
|
1855
|
-
} else {
|
1856
|
-
// Cases 2a and 3a: update an existing policy.
|
1857
|
-
// If we have a pending child policy, send the update to the pending
|
1858
|
-
// policy (case 3a), else send it to the current policy (case 2a).
|
1859
|
-
policy_to_update = pending_child_policy_ != nullptr
|
1860
|
-
? pending_child_policy_.get()
|
1861
|
-
: child_policy_.get();
|
1650
|
+
// Create child policy if needed.
|
1651
|
+
if (child_policy_ == nullptr) {
|
1652
|
+
child_policy_ = CreateChildPolicyLocked(update_args.args);
|
1862
1653
|
}
|
1863
|
-
GPR_ASSERT(policy_to_update != nullptr);
|
1864
1654
|
// Update the policy.
|
1865
1655
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
1866
|
-
gpr_log(GPR_INFO, "[grpclb %p] Updating
|
1867
|
-
|
1868
|
-
policy_to_update);
|
1656
|
+
gpr_log(GPR_INFO, "[grpclb %p] Updating child policy handler %p", this,
|
1657
|
+
child_policy_.get());
|
1869
1658
|
}
|
1870
|
-
|
1659
|
+
child_policy_->UpdateLocked(std::move(update_args));
|
1871
1660
|
}
|
1872
1661
|
|
1873
1662
|
//
|
@@ -1884,33 +1673,35 @@ class GrpcLbFactory : public LoadBalancingPolicyFactory {
|
|
1884
1673
|
const char* name() const override { return kGrpclb; }
|
1885
1674
|
|
1886
1675
|
RefCountedPtr<LoadBalancingPolicy::Config> ParseLoadBalancingConfig(
|
1887
|
-
const
|
1676
|
+
const Json& json, grpc_error** error) const override {
|
1888
1677
|
GPR_DEBUG_ASSERT(error != nullptr && *error == GRPC_ERROR_NONE);
|
1889
|
-
if (json ==
|
1890
|
-
return
|
1891
|
-
new ParsedGrpcLbConfig(nullptr));
|
1678
|
+
if (json.type() == Json::Type::JSON_NULL) {
|
1679
|
+
return MakeRefCounted<GrpcLbConfig>(nullptr);
|
1892
1680
|
}
|
1893
|
-
|
1894
|
-
|
1895
|
-
|
1896
|
-
|
1897
|
-
|
1898
|
-
|
1899
|
-
|
1900
|
-
|
1901
|
-
|
1902
|
-
|
1903
|
-
|
1904
|
-
|
1905
|
-
|
1906
|
-
|
1907
|
-
|
1908
|
-
|
1909
|
-
|
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));
|
1910
1702
|
}
|
1911
1703
|
if (error_list.empty()) {
|
1912
|
-
return
|
1913
|
-
new ParsedGrpcLbConfig(std::move(child_policy)));
|
1704
|
+
return MakeRefCounted<GrpcLbConfig>(std::move(child_policy_config));
|
1914
1705
|
} else {
|
1915
1706
|
*error = GRPC_ERROR_CREATE_FROM_VECTOR("GrpcLb Parser", &error_list);
|
1916
1707
|
return nullptr;
|
@@ -1953,7 +1744,7 @@ bool maybe_add_client_load_reporting_filter(grpc_channel_stack_builder* builder,
|
|
1953
1744
|
void grpc_lb_policy_grpclb_init() {
|
1954
1745
|
grpc_core::LoadBalancingPolicyRegistry::Builder::
|
1955
1746
|
RegisterLoadBalancingPolicyFactory(
|
1956
|
-
|
1747
|
+
absl::make_unique<grpc_core::GrpcLbFactory>());
|
1957
1748
|
grpc_channel_init_register_stage(GRPC_CLIENT_SUBCHANNEL,
|
1958
1749
|
GRPC_CHANNEL_INIT_BUILTIN_PRIORITY,
|
1959
1750
|
maybe_add_client_load_reporting_filter,
|