grpc 1.27.0.pre1 → 1.30.1
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 -11437
- 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 -249
- 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 +271 -465
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +8 -7
- 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 -4
- 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 +120 -132
- 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 +167 -121
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +3 -2
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc +3 -2
- 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.h +3 -2
- 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_ruby_style.proto +5 -0
- data/src/ruby/spec/pb/codegen/package_option_spec.rb +2 -0
- data/src/ruby/spec/support/services.rb +10 -4
- data/src/ruby/spec/testdata/ca.pem +18 -13
- data/src/ruby/spec/testdata/client.key +26 -14
- data/src/ruby/spec/testdata/client.pem +18 -12
- data/src/ruby/spec/testdata/server1.key +26 -14
- data/src/ruby/spec/testdata/server1.pem +20 -14
- data/third_party/abseil-cpp/absl/base/attributes.h +13 -1
- data/third_party/abseil-cpp/absl/base/config.h +55 -6
- 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 +9 -6
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +5 -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/sysinfo.cc +15 -13
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +12 -0
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +9 -0
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +37 -0
- data/third_party/abseil-cpp/absl/base/options.h +9 -12
- data/third_party/abseil-cpp/absl/numeric/int128.cc +2 -2
- data/third_party/abseil-cpp/absl/numeric/int128.h +1 -1
- data/third_party/abseil-cpp/absl/strings/ascii.cc +3 -3
- data/third_party/abseil-cpp/absl/strings/ascii.h +4 -3
- data/third_party/abseil-cpp/absl/strings/charconv.cc +0 -1
- data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.cc +2 -2
- data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.h +4 -2
- 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/numbers.cc +54 -5
- data/third_party/abseil-cpp/absl/strings/numbers.h +6 -3
- data/third_party/abseil-cpp/absl/strings/str_format.h +537 -0
- data/third_party/abseil-cpp/absl/strings/string_view.h +31 -24
- 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 -503
- 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,6 +75,7 @@
|
|
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"
|
76
81
|
#include "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h"
|
@@ -90,7 +95,6 @@
|
|
90
95
|
#include "src/core/lib/gprpp/memory.h"
|
91
96
|
#include "src/core/lib/gprpp/orphanable.h"
|
92
97
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
93
|
-
#include "src/core/lib/iomgr/combiner.h"
|
94
98
|
#include "src/core/lib/iomgr/sockaddr.h"
|
95
99
|
#include "src/core/lib/iomgr/sockaddr_utils.h"
|
96
100
|
#include "src/core/lib/iomgr/timer.h"
|
@@ -122,10 +126,9 @@ namespace {
|
|
122
126
|
|
123
127
|
constexpr char kGrpclb[] = "grpclb";
|
124
128
|
|
125
|
-
class
|
129
|
+
class GrpcLbConfig : public LoadBalancingPolicy::Config {
|
126
130
|
public:
|
127
|
-
explicit
|
128
|
-
RefCountedPtr<LoadBalancingPolicy::Config> child_policy)
|
131
|
+
explicit GrpcLbConfig(RefCountedPtr<LoadBalancingPolicy::Config> child_policy)
|
129
132
|
: child_policy_(std::move(child_policy)) {}
|
130
133
|
const char* name() const override { return kGrpclb; }
|
131
134
|
|
@@ -179,11 +182,11 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
179
182
|
static void OnBalancerMessageReceived(void* arg, grpc_error* error);
|
180
183
|
static void OnBalancerStatusReceived(void* arg, grpc_error* error);
|
181
184
|
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
185
|
+
void MaybeSendClientLoadReportLocked(grpc_error* error);
|
186
|
+
void ClientLoadReportDoneLocked(grpc_error* error);
|
187
|
+
void OnInitialRequestSentLocked();
|
188
|
+
void OnBalancerMessageReceivedLocked();
|
189
|
+
void OnBalancerStatusReceivedLocked(grpc_error* error);
|
187
190
|
|
188
191
|
// The owning LB policy.
|
189
192
|
RefCountedPtr<LoadBalancingPolicy> grpclb_policy_;
|
@@ -234,7 +237,7 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
234
237
|
const std::vector<GrpcLbServer>& serverlist() const { return serverlist_; }
|
235
238
|
|
236
239
|
// Returns a text representation suitable for logging.
|
237
|
-
|
240
|
+
std::string AsText() const;
|
238
241
|
|
239
242
|
// Extracts all non-drop entries into a ServerAddressList.
|
240
243
|
ServerAddressList GetServerAddressList(
|
@@ -248,16 +251,16 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
248
251
|
// should not be dropped.
|
249
252
|
//
|
250
253
|
// Note: This is called from the picker, so it will be invoked in
|
251
|
-
// the channel's data plane
|
252
|
-
//
|
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
|
253
256
|
// policy.
|
254
257
|
const char* ShouldDrop();
|
255
258
|
|
256
259
|
private:
|
257
260
|
std::vector<GrpcLbServer> serverlist_;
|
258
261
|
|
259
|
-
// Guarded by the channel's data plane
|
260
|
-
// 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
|
261
264
|
// picker via the ShouldDrop() method.
|
262
265
|
size_t drop_index_ = 0;
|
263
266
|
};
|
@@ -296,16 +299,42 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
296
299
|
void UpdateState(grpc_connectivity_state state,
|
297
300
|
std::unique_ptr<SubchannelPicker> picker) override;
|
298
301
|
void RequestReresolution() override;
|
299
|
-
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)) {}
|
300
314
|
|
301
|
-
|
315
|
+
~StateWatcher() { parent_.reset(DEBUG_LOCATION, "StateWatcher"); }
|
302
316
|
|
303
317
|
private:
|
304
|
-
|
305
|
-
|
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
|
+
}
|
306
336
|
|
307
337
|
RefCountedPtr<GrpcLb> parent_;
|
308
|
-
LoadBalancingPolicy* child_ = nullptr;
|
309
338
|
};
|
310
339
|
|
311
340
|
~GrpcLb();
|
@@ -315,28 +344,25 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
315
344
|
// Helper functions used in UpdateLocked().
|
316
345
|
void ProcessAddressesAndChannelArgsLocked(const ServerAddressList& addresses,
|
317
346
|
const grpc_channel_args& args);
|
318
|
-
|
319
|
-
grpc_error* error);
|
320
|
-
static void OnBalancerChannelConnectivityChangedLocked(void* arg,
|
321
|
-
grpc_error* error);
|
347
|
+
|
322
348
|
void CancelBalancerChannelConnectivityWatchLocked();
|
323
349
|
|
324
350
|
// Methods for dealing with fallback state.
|
325
351
|
void MaybeEnterFallbackModeAfterStartup();
|
326
352
|
static void OnFallbackTimer(void* arg, grpc_error* error);
|
327
|
-
|
353
|
+
void OnFallbackTimerLocked(grpc_error* error);
|
328
354
|
|
329
355
|
// Methods for dealing with the balancer call.
|
330
356
|
void StartBalancerCallLocked();
|
331
357
|
void StartBalancerCallRetryTimerLocked();
|
332
358
|
static void OnBalancerCallRetryTimer(void* arg, grpc_error* error);
|
333
|
-
|
359
|
+
void OnBalancerCallRetryTimerLocked(grpc_error* error);
|
334
360
|
|
335
361
|
// Methods for dealing with the child policy.
|
336
362
|
grpc_channel_args* CreateChildPolicyArgsLocked(
|
337
363
|
bool is_backend_from_grpclb_load_balancer);
|
338
364
|
OrphanablePtr<LoadBalancingPolicy> CreateChildPolicyLocked(
|
339
|
-
const
|
365
|
+
const grpc_channel_args* args);
|
340
366
|
void CreateOrUpdateChildPolicyLocked();
|
341
367
|
|
342
368
|
// Who the client is trying to communicate with.
|
@@ -350,6 +376,7 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
350
376
|
|
351
377
|
// The channel for communicating with the LB server.
|
352
378
|
grpc_channel* lb_channel_ = nullptr;
|
379
|
+
StateWatcher* watcher_ = nullptr;
|
353
380
|
// Response generator to inject address updates into lb_channel_.
|
354
381
|
RefCountedPtr<FakeResolverResponseGenerator> response_generator_;
|
355
382
|
|
@@ -382,14 +409,9 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
382
409
|
bool fallback_at_startup_checks_pending_ = false;
|
383
410
|
grpc_timer lb_fallback_timer_;
|
384
411
|
grpc_closure lb_on_fallback_;
|
385
|
-
grpc_connectivity_state lb_channel_connectivity_ = GRPC_CHANNEL_IDLE;
|
386
|
-
grpc_closure lb_channel_on_connectivity_changed_;
|
387
412
|
|
388
413
|
// The child policy to use for the backends.
|
389
414
|
OrphanablePtr<LoadBalancingPolicy> child_policy_;
|
390
|
-
// When switching child policies, the new policy will be stored here
|
391
|
-
// until it reports READY, at which point it will be moved to child_policy_.
|
392
|
-
OrphanablePtr<LoadBalancingPolicy> pending_child_policy_;
|
393
415
|
// The child policy config.
|
394
416
|
RefCountedPtr<LoadBalancingPolicy::Config> child_policy_config_;
|
395
417
|
// Child policy in state READY.
|
@@ -425,28 +447,22 @@ void ParseServer(const GrpcLbServer& server, grpc_resolved_address* addr) {
|
|
425
447
|
}
|
426
448
|
}
|
427
449
|
|
428
|
-
|
429
|
-
|
430
|
-
gpr_strvec_init(&entries);
|
450
|
+
std::string GrpcLb::Serverlist::AsText() const {
|
451
|
+
std::vector<std::string> entries;
|
431
452
|
for (size_t i = 0; i < serverlist_.size(); ++i) {
|
432
453
|
const GrpcLbServer& server = serverlist_[i];
|
433
|
-
|
454
|
+
std::string ipport;
|
434
455
|
if (server.drop) {
|
435
|
-
ipport =
|
456
|
+
ipport = "(drop)";
|
436
457
|
} else {
|
437
458
|
grpc_resolved_address addr;
|
438
459
|
ParseServer(server, &addr);
|
439
|
-
grpc_sockaddr_to_string(&
|
460
|
+
ipport = grpc_sockaddr_to_string(&addr, false);
|
440
461
|
}
|
441
|
-
|
442
|
-
|
443
|
-
server.load_balance_token);
|
444
|
-
gpr_free(ipport);
|
445
|
-
gpr_strvec_add(&entries, entry);
|
462
|
+
entries.push_back(absl::StrFormat(" %" PRIuPTR ": %s token=%s\n", i,
|
463
|
+
ipport, server.load_balance_token));
|
446
464
|
}
|
447
|
-
|
448
|
-
gpr_strvec_destroy(&entries);
|
449
|
-
return result;
|
465
|
+
return absl::StrJoin(entries, "");
|
450
466
|
}
|
451
467
|
|
452
468
|
// vtables for channel args for LB token and client stats.
|
@@ -538,7 +554,7 @@ ServerAddressList GrpcLb::Serverlist::GetServerAddressList(
|
|
538
554
|
lb_token[0] = '\0';
|
539
555
|
}
|
540
556
|
// Add address.
|
541
|
-
InlinedVector<grpc_arg, 2> args_to_add;
|
557
|
+
absl::InlinedVector<grpc_arg, 2> args_to_add;
|
542
558
|
args_to_add.emplace_back(grpc_channel_arg_pointer_create(
|
543
559
|
const_cast<char*>(GRPC_ARG_GRPCLB_ADDRESS_LB_TOKEN), lb_token,
|
544
560
|
&lb_token_arg_vtable));
|
@@ -609,7 +625,7 @@ GrpcLb::PickResult GrpcLb::Picker::Pick(PickArgs args) {
|
|
609
625
|
// how to interpret it.
|
610
626
|
args.initial_metadata->Add(
|
611
627
|
kGrpcLbClientStatsMetadataKey,
|
612
|
-
|
628
|
+
absl::string_view(reinterpret_cast<const char*>(client_stats), 0));
|
613
629
|
// Update calls-started.
|
614
630
|
client_stats->AddCallStarted();
|
615
631
|
}
|
@@ -631,46 +647,15 @@ GrpcLb::PickResult GrpcLb::Picker::Pick(PickArgs args) {
|
|
631
647
|
// GrpcLb::Helper
|
632
648
|
//
|
633
649
|
|
634
|
-
bool GrpcLb::Helper::CalledByPendingChild() const {
|
635
|
-
GPR_ASSERT(child_ != nullptr);
|
636
|
-
return child_ == parent_->pending_child_policy_.get();
|
637
|
-
}
|
638
|
-
|
639
|
-
bool GrpcLb::Helper::CalledByCurrentChild() const {
|
640
|
-
GPR_ASSERT(child_ != nullptr);
|
641
|
-
return child_ == parent_->child_policy_.get();
|
642
|
-
}
|
643
|
-
|
644
650
|
RefCountedPtr<SubchannelInterface> GrpcLb::Helper::CreateSubchannel(
|
645
651
|
const grpc_channel_args& args) {
|
646
|
-
if (parent_->shutting_down_
|
647
|
-
(!CalledByPendingChild() && !CalledByCurrentChild())) {
|
648
|
-
return nullptr;
|
649
|
-
}
|
652
|
+
if (parent_->shutting_down_) return nullptr;
|
650
653
|
return parent_->channel_control_helper()->CreateSubchannel(args);
|
651
654
|
}
|
652
655
|
|
653
656
|
void GrpcLb::Helper::UpdateState(grpc_connectivity_state state,
|
654
657
|
std::unique_ptr<SubchannelPicker> picker) {
|
655
658
|
if (parent_->shutting_down_) return;
|
656
|
-
// If this request is from the pending child policy, ignore it until
|
657
|
-
// it reports READY, at which point we swap it into place.
|
658
|
-
if (CalledByPendingChild()) {
|
659
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
660
|
-
gpr_log(GPR_INFO,
|
661
|
-
"[grpclb %p helper %p] pending child policy %p reports state=%s",
|
662
|
-
parent_.get(), this, parent_->pending_child_policy_.get(),
|
663
|
-
ConnectivityStateName(state));
|
664
|
-
}
|
665
|
-
if (state != GRPC_CHANNEL_READY) return;
|
666
|
-
grpc_pollset_set_del_pollset_set(
|
667
|
-
parent_->child_policy_->interested_parties(),
|
668
|
-
parent_->interested_parties());
|
669
|
-
parent_->child_policy_ = std::move(parent_->pending_child_policy_);
|
670
|
-
} else if (!CalledByCurrentChild()) {
|
671
|
-
// This request is from an outdated child, so ignore it.
|
672
|
-
return;
|
673
|
-
}
|
674
659
|
// Record whether child policy reports READY.
|
675
660
|
parent_->child_policy_ready_ = state == GRPC_CHANNEL_READY;
|
676
661
|
// Enter fallback mode if needed.
|
@@ -716,22 +701,13 @@ void GrpcLb::Helper::UpdateState(grpc_connectivity_state state,
|
|
716
701
|
client_stats = parent_->lb_calld_->client_stats()->Ref();
|
717
702
|
}
|
718
703
|
parent_->channel_control_helper()->UpdateState(
|
719
|
-
state,
|
704
|
+
state,
|
705
|
+
absl::make_unique<Picker>(parent_.get(), parent_->serverlist_,
|
720
706
|
std::move(picker), std::move(client_stats)));
|
721
707
|
}
|
722
708
|
|
723
709
|
void GrpcLb::Helper::RequestReresolution() {
|
724
710
|
if (parent_->shutting_down_) return;
|
725
|
-
const LoadBalancingPolicy* latest_child_policy =
|
726
|
-
parent_->pending_child_policy_ != nullptr
|
727
|
-
? parent_->pending_child_policy_.get()
|
728
|
-
: parent_->child_policy_.get();
|
729
|
-
if (child_ != latest_child_policy) return;
|
730
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
731
|
-
gpr_log(GPR_INFO,
|
732
|
-
"[grpclb %p] Re-resolution requested from %schild policy (%p).",
|
733
|
-
parent_.get(), CalledByPendingChild() ? "pending " : "", child_);
|
734
|
-
}
|
735
711
|
// If we are talking to a balancer, we expect to get updated addresses
|
736
712
|
// from the balancer, so we can ignore the re-resolution request from
|
737
713
|
// the child policy. Otherwise, pass the re-resolution request up to the
|
@@ -742,11 +718,9 @@ void GrpcLb::Helper::RequestReresolution() {
|
|
742
718
|
}
|
743
719
|
}
|
744
720
|
|
745
|
-
void GrpcLb::Helper::AddTraceEvent(TraceSeverity severity,
|
746
|
-
|
747
|
-
|
748
|
-
return;
|
749
|
-
}
|
721
|
+
void GrpcLb::Helper::AddTraceEvent(TraceSeverity severity,
|
722
|
+
absl::string_view message) {
|
723
|
+
if (parent_->shutting_down_) return;
|
750
724
|
parent_->channel_control_helper()->AddTraceEvent(severity, message);
|
751
725
|
}
|
752
726
|
|
@@ -765,6 +739,15 @@ GrpcLb::BalancerCallState::BalancerCallState(
|
|
765
739
|
// the polling entities from client_channel.
|
766
740
|
GPR_ASSERT(grpclb_policy()->server_name_ != nullptr);
|
767
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);
|
768
751
|
const grpc_millis deadline =
|
769
752
|
grpclb_policy()->lb_call_timeout_ms_ == 0
|
770
753
|
? GRPC_MILLIS_INF_FUTURE
|
@@ -841,8 +824,6 @@ void GrpcLb::BalancerCallState::StartQuery() {
|
|
841
824
|
// with the callback.
|
842
825
|
auto self = Ref(DEBUG_LOCATION, "on_initial_request_sent");
|
843
826
|
self.release();
|
844
|
-
GRPC_CLOSURE_INIT(&lb_on_initial_request_sent_, OnInitialRequestSent, this,
|
845
|
-
grpc_schedule_on_exec_ctx);
|
846
827
|
call_error = grpc_call_start_batch_and_execute(
|
847
828
|
lb_call_, ops, (size_t)(op - ops), &lb_on_initial_request_sent_);
|
848
829
|
GPR_ASSERT(GRPC_CALL_OK == call_error);
|
@@ -865,8 +846,6 @@ void GrpcLb::BalancerCallState::StartQuery() {
|
|
865
846
|
// with the callback.
|
866
847
|
self = Ref(DEBUG_LOCATION, "on_message_received");
|
867
848
|
self.release();
|
868
|
-
GRPC_CLOSURE_INIT(&lb_on_balancer_message_received_,
|
869
|
-
OnBalancerMessageReceived, this, grpc_schedule_on_exec_ctx);
|
870
849
|
call_error = grpc_call_start_batch_and_execute(
|
871
850
|
lb_call_, ops, (size_t)(op - ops), &lb_on_balancer_message_received_);
|
872
851
|
GPR_ASSERT(GRPC_CALL_OK == call_error);
|
@@ -883,8 +862,6 @@ void GrpcLb::BalancerCallState::StartQuery() {
|
|
883
862
|
// This callback signals the end of the LB call, so it relies on the initial
|
884
863
|
// ref instead of a new ref. When it's invoked, it's the initial ref that is
|
885
864
|
// unreffed.
|
886
|
-
GRPC_CLOSURE_INIT(&lb_on_balancer_status_received_, OnBalancerStatusReceived,
|
887
|
-
this, grpc_schedule_on_exec_ctx);
|
888
865
|
call_error = grpc_call_start_batch_and_execute(
|
889
866
|
lb_call_, ops, (size_t)(op - ops), &lb_on_balancer_status_received_);
|
890
867
|
GPR_ASSERT(GRPC_CALL_OK == call_error);
|
@@ -903,28 +880,27 @@ void GrpcLb::BalancerCallState::ScheduleNextClientLoadReportLocked() {
|
|
903
880
|
void GrpcLb::BalancerCallState::MaybeSendClientLoadReport(void* arg,
|
904
881
|
grpc_error* error) {
|
905
882
|
BalancerCallState* lb_calld = static_cast<BalancerCallState*>(arg);
|
906
|
-
|
907
|
-
|
908
|
-
|
909
|
-
|
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);
|
910
887
|
}
|
911
888
|
|
912
889
|
void GrpcLb::BalancerCallState::MaybeSendClientLoadReportLocked(
|
913
|
-
|
914
|
-
|
915
|
-
|
916
|
-
|
917
|
-
|
918
|
-
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);
|
919
895
|
return;
|
920
896
|
}
|
921
897
|
// If we've already sent the initial request, then we can go ahead and send
|
922
898
|
// the load report. Otherwise, we need to wait until the initial request has
|
923
899
|
// been sent to send this (see OnInitialRequestSentLocked()).
|
924
|
-
if (
|
925
|
-
|
900
|
+
if (send_message_payload_ == nullptr) {
|
901
|
+
SendClientLoadReportLocked();
|
926
902
|
} else {
|
927
|
-
|
903
|
+
client_load_report_is_due_ = true;
|
928
904
|
}
|
929
905
|
}
|
930
906
|
|
@@ -983,140 +959,125 @@ void GrpcLb::BalancerCallState::SendClientLoadReportLocked() {
|
|
983
959
|
void GrpcLb::BalancerCallState::ClientLoadReportDone(void* arg,
|
984
960
|
grpc_error* error) {
|
985
961
|
BalancerCallState* lb_calld = static_cast<BalancerCallState*>(arg);
|
986
|
-
|
987
|
-
|
988
|
-
|
989
|
-
|
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);
|
990
966
|
}
|
991
967
|
|
992
|
-
void GrpcLb::BalancerCallState::ClientLoadReportDoneLocked(
|
993
|
-
|
994
|
-
|
995
|
-
|
996
|
-
|
997
|
-
|
998
|
-
if (error != GRPC_ERROR_NONE || lb_calld != grpclb_policy->lb_calld_.get()) {
|
999
|
-
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);
|
1000
974
|
return;
|
1001
975
|
}
|
1002
|
-
|
976
|
+
ScheduleNextClientLoadReportLocked();
|
1003
977
|
}
|
1004
978
|
|
1005
979
|
void GrpcLb::BalancerCallState::OnInitialRequestSent(void* arg,
|
1006
|
-
grpc_error* error) {
|
980
|
+
grpc_error* /*error*/) {
|
1007
981
|
BalancerCallState* lb_calld = static_cast<BalancerCallState*>(arg);
|
1008
|
-
lb_calld->grpclb_policy()->
|
1009
|
-
|
1010
|
-
OnInitialRequestSentLocked, lb_calld, nullptr),
|
1011
|
-
GRPC_ERROR_REF(error));
|
982
|
+
lb_calld->grpclb_policy()->work_serializer()->Run(
|
983
|
+
[lb_calld]() { lb_calld->OnInitialRequestSentLocked(); }, DEBUG_LOCATION);
|
1012
984
|
}
|
1013
985
|
|
1014
|
-
void GrpcLb::BalancerCallState::OnInitialRequestSentLocked(
|
1015
|
-
|
1016
|
-
|
1017
|
-
grpc_byte_buffer_destroy(lb_calld->send_message_payload_);
|
1018
|
-
lb_calld->send_message_payload_ = nullptr;
|
986
|
+
void GrpcLb::BalancerCallState::OnInitialRequestSentLocked() {
|
987
|
+
grpc_byte_buffer_destroy(send_message_payload_);
|
988
|
+
send_message_payload_ = nullptr;
|
1019
989
|
// If we attempted to send a client load report before the initial request was
|
1020
990
|
// sent (and this lb_calld is still in use), send the load report now.
|
1021
|
-
if (
|
1022
|
-
|
1023
|
-
|
1024
|
-
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;
|
1025
994
|
}
|
1026
|
-
|
995
|
+
Unref(DEBUG_LOCATION, "on_initial_request_sent");
|
1027
996
|
}
|
1028
997
|
|
1029
|
-
void GrpcLb::BalancerCallState::OnBalancerMessageReceived(
|
1030
|
-
|
998
|
+
void GrpcLb::BalancerCallState::OnBalancerMessageReceived(
|
999
|
+
void* arg, grpc_error* /*error*/) {
|
1031
1000
|
BalancerCallState* lb_calld = static_cast<BalancerCallState*>(arg);
|
1032
|
-
lb_calld->grpclb_policy()->
|
1033
|
-
|
1034
|
-
|
1035
|
-
GRPC_ERROR_REF(error));
|
1001
|
+
lb_calld->grpclb_policy()->work_serializer()->Run(
|
1002
|
+
[lb_calld]() { lb_calld->OnBalancerMessageReceivedLocked(); },
|
1003
|
+
DEBUG_LOCATION);
|
1036
1004
|
}
|
1037
1005
|
|
1038
|
-
void GrpcLb::BalancerCallState::OnBalancerMessageReceivedLocked(
|
1039
|
-
void* arg, grpc_error* /*error*/) {
|
1040
|
-
BalancerCallState* lb_calld = static_cast<BalancerCallState*>(arg);
|
1041
|
-
GrpcLb* grpclb_policy = lb_calld->grpclb_policy();
|
1006
|
+
void GrpcLb::BalancerCallState::OnBalancerMessageReceivedLocked() {
|
1042
1007
|
// Null payload means the LB call was cancelled.
|
1043
|
-
if (
|
1044
|
-
|
1045
|
-
|
1008
|
+
if (this != grpclb_policy()->lb_calld_.get() ||
|
1009
|
+
recv_message_payload_ == nullptr) {
|
1010
|
+
Unref(DEBUG_LOCATION, "on_message_received");
|
1046
1011
|
return;
|
1047
1012
|
}
|
1048
1013
|
grpc_byte_buffer_reader bbr;
|
1049
|
-
grpc_byte_buffer_reader_init(&bbr,
|
1014
|
+
grpc_byte_buffer_reader_init(&bbr, recv_message_payload_);
|
1050
1015
|
grpc_slice response_slice = grpc_byte_buffer_reader_readall(&bbr);
|
1051
1016
|
grpc_byte_buffer_reader_destroy(&bbr);
|
1052
|
-
grpc_byte_buffer_destroy(
|
1053
|
-
|
1017
|
+
grpc_byte_buffer_destroy(recv_message_payload_);
|
1018
|
+
recv_message_payload_ = nullptr;
|
1054
1019
|
GrpcLbResponse response;
|
1055
1020
|
upb::Arena arena;
|
1056
1021
|
if (!GrpcLbResponseParse(response_slice, arena.ptr(), &response) ||
|
1057
|
-
(response.type == response.INITIAL &&
|
1022
|
+
(response.type == response.INITIAL && seen_initial_response_)) {
|
1058
1023
|
char* response_slice_str =
|
1059
1024
|
grpc_dump_slice(response_slice, GPR_DUMP_ASCII | GPR_DUMP_HEX);
|
1060
1025
|
gpr_log(GPR_ERROR,
|
1061
1026
|
"[grpclb %p] lb_calld=%p: Invalid LB response received: '%s'. "
|
1062
1027
|
"Ignoring.",
|
1063
|
-
grpclb_policy,
|
1028
|
+
grpclb_policy(), this, response_slice_str);
|
1064
1029
|
gpr_free(response_slice_str);
|
1065
1030
|
} else {
|
1066
1031
|
switch (response.type) {
|
1067
1032
|
case response.INITIAL: {
|
1068
1033
|
if (response.client_stats_report_interval != 0) {
|
1069
|
-
|
1034
|
+
client_stats_report_interval_ =
|
1070
1035
|
GPR_MAX(GPR_MS_PER_SEC, response.client_stats_report_interval);
|
1071
1036
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
1072
1037
|
gpr_log(GPR_INFO,
|
1073
1038
|
"[grpclb %p] lb_calld=%p: Received initial LB response "
|
1074
1039
|
"message; client load reporting interval = %" PRId64
|
1075
1040
|
" milliseconds",
|
1076
|
-
grpclb_policy,
|
1077
|
-
lb_calld->client_stats_report_interval_);
|
1041
|
+
grpclb_policy(), this, client_stats_report_interval_);
|
1078
1042
|
}
|
1079
1043
|
} else if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
1080
1044
|
gpr_log(GPR_INFO,
|
1081
1045
|
"[grpclb %p] lb_calld=%p: Received initial LB response "
|
1082
1046
|
"message; client load reporting NOT enabled",
|
1083
|
-
grpclb_policy,
|
1047
|
+
grpclb_policy(), this);
|
1084
1048
|
}
|
1085
|
-
|
1049
|
+
seen_initial_response_ = true;
|
1086
1050
|
break;
|
1087
1051
|
}
|
1088
1052
|
case response.SERVERLIST: {
|
1089
|
-
GPR_ASSERT(
|
1053
|
+
GPR_ASSERT(lb_call_ != nullptr);
|
1090
1054
|
auto serverlist_wrapper =
|
1091
1055
|
MakeRefCounted<Serverlist>(std::move(response.serverlist));
|
1092
1056
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
1093
|
-
grpc_core::UniquePtr<char> serverlist_text =
|
1094
|
-
serverlist_wrapper->AsText();
|
1095
1057
|
gpr_log(GPR_INFO,
|
1096
1058
|
"[grpclb %p] lb_calld=%p: Serverlist with %" PRIuPTR
|
1097
1059
|
" servers received:\n%s",
|
1098
|
-
grpclb_policy,
|
1060
|
+
grpclb_policy(), this,
|
1099
1061
|
serverlist_wrapper->serverlist().size(),
|
1100
|
-
|
1062
|
+
serverlist_wrapper->AsText().c_str());
|
1101
1063
|
}
|
1102
|
-
|
1064
|
+
seen_serverlist_ = true;
|
1103
1065
|
// Start sending client load report only after we start using the
|
1104
1066
|
// serverlist returned from the current LB call.
|
1105
|
-
if (
|
1106
|
-
|
1107
|
-
lb_calld->client_stats_ = MakeRefCounted<GrpcLbClientStats>();
|
1067
|
+
if (client_stats_report_interval_ > 0 && client_stats_ == nullptr) {
|
1068
|
+
client_stats_ = MakeRefCounted<GrpcLbClientStats>();
|
1108
1069
|
// Ref held by callback.
|
1109
|
-
|
1110
|
-
|
1070
|
+
Ref(DEBUG_LOCATION, "client_load_report").release();
|
1071
|
+
ScheduleNextClientLoadReportLocked();
|
1111
1072
|
}
|
1112
1073
|
// Check if the serverlist differs from the previous one.
|
1113
|
-
if (grpclb_policy->serverlist_ != nullptr &&
|
1114
|
-
*grpclb_policy->serverlist_ == *serverlist_wrapper) {
|
1074
|
+
if (grpclb_policy()->serverlist_ != nullptr &&
|
1075
|
+
*grpclb_policy()->serverlist_ == *serverlist_wrapper) {
|
1115
1076
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
1116
1077
|
gpr_log(GPR_INFO,
|
1117
1078
|
"[grpclb %p] lb_calld=%p: Incoming server list identical "
|
1118
1079
|
"to current, ignoring.",
|
1119
|
-
grpclb_policy,
|
1080
|
+
grpclb_policy(), this);
|
1120
1081
|
}
|
1121
1082
|
} else { // New serverlist.
|
1122
1083
|
// Dispose of the fallback.
|
@@ -1138,130 +1099,124 @@ void GrpcLb::BalancerCallState::OnBalancerMessageReceivedLocked(
|
|
1138
1099
|
// the grpclb implementation at this point, since we're deprecating
|
1139
1100
|
// it in favor of the xds policy. We will implement this the
|
1140
1101
|
// right way in the xds policy instead.
|
1141
|
-
if (grpclb_policy->fallback_mode_) {
|
1102
|
+
if (grpclb_policy()->fallback_mode_) {
|
1142
1103
|
gpr_log(GPR_INFO,
|
1143
1104
|
"[grpclb %p] Received response from balancer; exiting "
|
1144
1105
|
"fallback mode",
|
1145
|
-
grpclb_policy);
|
1146
|
-
grpclb_policy->fallback_mode_ = false;
|
1106
|
+
grpclb_policy());
|
1107
|
+
grpclb_policy()->fallback_mode_ = false;
|
1147
1108
|
}
|
1148
|
-
if (grpclb_policy->fallback_at_startup_checks_pending_) {
|
1149
|
-
grpclb_policy->fallback_at_startup_checks_pending_ = false;
|
1150
|
-
grpc_timer_cancel(&grpclb_policy->lb_fallback_timer_);
|
1151
|
-
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();
|
1152
1113
|
}
|
1153
1114
|
// Update the serverlist in the GrpcLb instance. This serverlist
|
1154
1115
|
// instance will be destroyed either upon the next update or when the
|
1155
1116
|
// GrpcLb instance is destroyed.
|
1156
|
-
grpclb_policy->serverlist_ = std::move(serverlist_wrapper);
|
1157
|
-
grpclb_policy->CreateOrUpdateChildPolicyLocked();
|
1117
|
+
grpclb_policy()->serverlist_ = std::move(serverlist_wrapper);
|
1118
|
+
grpclb_policy()->CreateOrUpdateChildPolicyLocked();
|
1158
1119
|
}
|
1159
1120
|
break;
|
1160
1121
|
}
|
1161
1122
|
case response.FALLBACK: {
|
1162
|
-
if (!grpclb_policy->fallback_mode_) {
|
1123
|
+
if (!grpclb_policy()->fallback_mode_) {
|
1163
1124
|
gpr_log(GPR_INFO,
|
1164
1125
|
"[grpclb %p] Entering fallback mode as requested by balancer",
|
1165
|
-
grpclb_policy);
|
1166
|
-
if (grpclb_policy->fallback_at_startup_checks_pending_) {
|
1167
|
-
grpclb_policy->fallback_at_startup_checks_pending_ = false;
|
1168
|
-
grpc_timer_cancel(&grpclb_policy->lb_fallback_timer_);
|
1169
|
-
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();
|
1170
1131
|
}
|
1171
|
-
grpclb_policy->fallback_mode_ = true;
|
1172
|
-
grpclb_policy->CreateOrUpdateChildPolicyLocked();
|
1132
|
+
grpclb_policy()->fallback_mode_ = true;
|
1133
|
+
grpclb_policy()->CreateOrUpdateChildPolicyLocked();
|
1173
1134
|
// Reset serverlist, so that if the balancer exits fallback
|
1174
1135
|
// mode by sending the same serverlist we were previously
|
1175
1136
|
// using, we don't incorrectly ignore it as a duplicate.
|
1176
|
-
grpclb_policy->serverlist_.reset();
|
1137
|
+
grpclb_policy()->serverlist_.reset();
|
1177
1138
|
}
|
1178
1139
|
break;
|
1179
1140
|
}
|
1180
1141
|
}
|
1181
1142
|
}
|
1182
1143
|
grpc_slice_unref_internal(response_slice);
|
1183
|
-
if (!grpclb_policy->shutting_down_) {
|
1144
|
+
if (!grpclb_policy()->shutting_down_) {
|
1184
1145
|
// Keep listening for serverlist updates.
|
1185
1146
|
grpc_op op;
|
1186
1147
|
memset(&op, 0, sizeof(op));
|
1187
1148
|
op.op = GRPC_OP_RECV_MESSAGE;
|
1188
|
-
op.data.recv_message.recv_message = &
|
1149
|
+
op.data.recv_message.recv_message = &recv_message_payload_;
|
1189
1150
|
op.flags = 0;
|
1190
1151
|
op.reserved = nullptr;
|
1191
1152
|
// Reuse the "OnBalancerMessageReceivedLocked" ref taken in StartQuery().
|
1192
|
-
GRPC_CLOSURE_INIT(&lb_calld->lb_on_balancer_message_received_,
|
1193
|
-
GrpcLb::BalancerCallState::OnBalancerMessageReceived,
|
1194
|
-
lb_calld, grpc_schedule_on_exec_ctx);
|
1195
1153
|
const grpc_call_error call_error = grpc_call_start_batch_and_execute(
|
1196
|
-
|
1197
|
-
&lb_calld->lb_on_balancer_message_received_);
|
1154
|
+
lb_call_, &op, 1, &lb_on_balancer_message_received_);
|
1198
1155
|
GPR_ASSERT(GRPC_CALL_OK == call_error);
|
1199
1156
|
} else {
|
1200
|
-
|
1157
|
+
Unref(DEBUG_LOCATION, "on_message_received+grpclb_shutdown");
|
1201
1158
|
}
|
1202
1159
|
}
|
1203
1160
|
|
1204
1161
|
void GrpcLb::BalancerCallState::OnBalancerStatusReceived(void* arg,
|
1205
1162
|
grpc_error* error) {
|
1206
1163
|
BalancerCallState* lb_calld = static_cast<BalancerCallState*>(arg);
|
1207
|
-
|
1208
|
-
|
1209
|
-
|
1210
|
-
|
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);
|
1211
1168
|
}
|
1212
1169
|
|
1213
1170
|
void GrpcLb::BalancerCallState::OnBalancerStatusReceivedLocked(
|
1214
|
-
|
1215
|
-
|
1216
|
-
GrpcLb* grpclb_policy = lb_calld->grpclb_policy();
|
1217
|
-
GPR_ASSERT(lb_calld->lb_call_ != nullptr);
|
1171
|
+
grpc_error* error) {
|
1172
|
+
GPR_ASSERT(lb_call_ != nullptr);
|
1218
1173
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
1219
|
-
char* status_details =
|
1220
|
-
grpc_slice_to_c_string(lb_calld->lb_call_status_details_);
|
1174
|
+
char* status_details = grpc_slice_to_c_string(lb_call_status_details_);
|
1221
1175
|
gpr_log(GPR_INFO,
|
1222
1176
|
"[grpclb %p] lb_calld=%p: Status from LB server received. "
|
1223
1177
|
"Status = %d, details = '%s', (lb_call: %p), error '%s'",
|
1224
|
-
grpclb_policy,
|
1225
|
-
|
1178
|
+
grpclb_policy(), this, lb_call_status_, status_details, lb_call_,
|
1179
|
+
grpc_error_string(error));
|
1226
1180
|
gpr_free(status_details);
|
1227
1181
|
}
|
1182
|
+
GRPC_ERROR_UNREF(error);
|
1228
1183
|
// If this lb_calld is still in use, this call ended because of a failure so
|
1229
1184
|
// we want to retry connecting. Otherwise, we have deliberately ended this
|
1230
1185
|
// call and no further action is required.
|
1231
|
-
if (
|
1186
|
+
if (this == grpclb_policy()->lb_calld_.get()) {
|
1232
1187
|
// If the fallback-at-startup checks are pending, go into fallback mode
|
1233
1188
|
// immediately. This short-circuits the timeout for the fallback-at-startup
|
1234
1189
|
// case.
|
1235
|
-
if (grpclb_policy->fallback_at_startup_checks_pending_) {
|
1236
|
-
GPR_ASSERT(!
|
1190
|
+
if (grpclb_policy()->fallback_at_startup_checks_pending_) {
|
1191
|
+
GPR_ASSERT(!seen_serverlist_);
|
1237
1192
|
gpr_log(GPR_INFO,
|
1238
1193
|
"[grpclb %p] Balancer call finished without receiving "
|
1239
1194
|
"serverlist; entering fallback mode",
|
1240
|
-
grpclb_policy);
|
1241
|
-
grpclb_policy->fallback_at_startup_checks_pending_ = false;
|
1242
|
-
grpc_timer_cancel(&grpclb_policy->lb_fallback_timer_);
|
1243
|
-
grpclb_policy->CancelBalancerChannelConnectivityWatchLocked();
|
1244
|
-
grpclb_policy->fallback_mode_ = true;
|
1245
|
-
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();
|
1246
1201
|
} else {
|
1247
1202
|
// This handles the fallback-after-startup case.
|
1248
|
-
grpclb_policy->MaybeEnterFallbackModeAfterStartup();
|
1203
|
+
grpclb_policy()->MaybeEnterFallbackModeAfterStartup();
|
1249
1204
|
}
|
1250
|
-
grpclb_policy->lb_calld_.reset();
|
1251
|
-
GPR_ASSERT(!grpclb_policy->shutting_down_);
|
1252
|
-
grpclb_policy->channel_control_helper()->RequestReresolution();
|
1253
|
-
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_) {
|
1254
1209
|
// If we lose connection to the LB server, reset the backoff and restart
|
1255
1210
|
// the LB call immediately.
|
1256
|
-
grpclb_policy->lb_call_backoff_.Reset();
|
1257
|
-
grpclb_policy->StartBalancerCallLocked();
|
1211
|
+
grpclb_policy()->lb_call_backoff_.Reset();
|
1212
|
+
grpclb_policy()->StartBalancerCallLocked();
|
1258
1213
|
} else {
|
1259
1214
|
// If this LB call fails establishing any connection to the LB server,
|
1260
1215
|
// retry later.
|
1261
|
-
grpclb_policy->StartBalancerCallRetryTimerLocked();
|
1216
|
+
grpclb_policy()->StartBalancerCallRetryTimerLocked();
|
1262
1217
|
}
|
1263
1218
|
}
|
1264
|
-
|
1219
|
+
Unref(DEBUG_LOCATION, "lb_call_ended");
|
1265
1220
|
}
|
1266
1221
|
|
1267
1222
|
//
|
@@ -1316,7 +1271,7 @@ grpc_channel_args* BuildBalancerChannelArgs(
|
|
1316
1271
|
GRPC_ARG_CHANNELZ_CHANNEL_NODE,
|
1317
1272
|
};
|
1318
1273
|
// Channel args to add.
|
1319
|
-
InlinedVector<grpc_arg, 3> args_to_add;
|
1274
|
+
absl::InlinedVector<grpc_arg, 3> args_to_add;
|
1320
1275
|
// The fake resolver response generator, which we use to inject
|
1321
1276
|
// address updates into the LB channel.
|
1322
1277
|
args_to_add.emplace_back(
|
@@ -1358,6 +1313,11 @@ GrpcLb::GrpcLb(Args args)
|
|
1358
1313
|
.set_jitter(GRPC_GRPCLB_RECONNECT_JITTER)
|
1359
1314
|
.set_max_backoff(GRPC_GRPCLB_RECONNECT_MAX_BACKOFF_SECONDS *
|
1360
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);
|
1361
1321
|
// Record server name.
|
1362
1322
|
const grpc_arg* arg = grpc_channel_args_find(args.args, GRPC_ARG_SERVER_URI);
|
1363
1323
|
const char* server_uri = grpc_channel_arg_get_string(arg);
|
@@ -1392,19 +1352,15 @@ void GrpcLb::ShutdownLocked() {
|
|
1392
1352
|
grpc_timer_cancel(&lb_call_retry_timer_);
|
1393
1353
|
}
|
1394
1354
|
if (fallback_at_startup_checks_pending_) {
|
1355
|
+
fallback_at_startup_checks_pending_ = false;
|
1395
1356
|
grpc_timer_cancel(&lb_fallback_timer_);
|
1396
1357
|
CancelBalancerChannelConnectivityWatchLocked();
|
1397
1358
|
}
|
1398
1359
|
if (child_policy_ != nullptr) {
|
1399
1360
|
grpc_pollset_set_del_pollset_set(child_policy_->interested_parties(),
|
1400
1361
|
interested_parties());
|
1362
|
+
child_policy_.reset();
|
1401
1363
|
}
|
1402
|
-
if (pending_child_policy_ != nullptr) {
|
1403
|
-
grpc_pollset_set_del_pollset_set(
|
1404
|
-
pending_child_policy_->interested_parties(), interested_parties());
|
1405
|
-
}
|
1406
|
-
child_policy_.reset();
|
1407
|
-
pending_child_policy_.reset();
|
1408
1364
|
// We destroy the LB channel here instead of in our destructor because
|
1409
1365
|
// destroying the channel triggers a last callback to
|
1410
1366
|
// OnBalancerChannelConnectivityChangedLocked(), and we need to be
|
@@ -1426,15 +1382,11 @@ void GrpcLb::ResetBackoffLocked() {
|
|
1426
1382
|
if (child_policy_ != nullptr) {
|
1427
1383
|
child_policy_->ResetBackoffLocked();
|
1428
1384
|
}
|
1429
|
-
if (pending_child_policy_ != nullptr) {
|
1430
|
-
pending_child_policy_->ResetBackoffLocked();
|
1431
|
-
}
|
1432
1385
|
}
|
1433
1386
|
|
1434
1387
|
void GrpcLb::UpdateLocked(UpdateArgs args) {
|
1435
1388
|
const bool is_initial_update = lb_channel_ == nullptr;
|
1436
|
-
auto* grpclb_config =
|
1437
|
-
static_cast<const ParsedGrpcLbConfig*>(args.config.get());
|
1389
|
+
auto* grpclb_config = static_cast<const GrpcLbConfig*>(args.config.get());
|
1438
1390
|
if (grpclb_config != nullptr) {
|
1439
1391
|
child_policy_config_ = grpclb_config->child_policy();
|
1440
1392
|
} else {
|
@@ -1450,8 +1402,6 @@ void GrpcLb::UpdateLocked(UpdateArgs args) {
|
|
1450
1402
|
// Start timer.
|
1451
1403
|
grpc_millis deadline = ExecCtx::Get()->Now() + fallback_at_startup_timeout_;
|
1452
1404
|
Ref(DEBUG_LOCATION, "on_fallback_timer").release(); // Ref for callback
|
1453
|
-
GRPC_CLOSURE_INIT(&lb_on_fallback_, &GrpcLb::OnFallbackTimer, this,
|
1454
|
-
grpc_schedule_on_exec_ctx);
|
1455
1405
|
grpc_timer_init(&lb_fallback_timer_, deadline, &lb_on_fallback_);
|
1456
1406
|
// Start watching the channel's connectivity state. If the channel
|
1457
1407
|
// goes into state TRANSIENT_FAILURE before the timer fires, we go into
|
@@ -1460,15 +1410,10 @@ void GrpcLb::UpdateLocked(UpdateArgs args) {
|
|
1460
1410
|
grpc_channel_get_channel_stack(lb_channel_));
|
1461
1411
|
GPR_ASSERT(client_channel_elem->filter == &grpc_client_channel_filter);
|
1462
1412
|
// Ref held by callback.
|
1463
|
-
Ref(DEBUG_LOCATION, "
|
1464
|
-
|
1465
|
-
|
1466
|
-
|
1467
|
-
grpc_client_channel_watch_connectivity_state(
|
1468
|
-
client_channel_elem,
|
1469
|
-
grpc_polling_entity_create_from_pollset_set(interested_parties()),
|
1470
|
-
&lb_channel_connectivity_, &lb_channel_on_connectivity_changed_,
|
1471
|
-
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_));
|
1472
1417
|
// Start balancer call.
|
1473
1418
|
StartBalancerCallLocked();
|
1474
1419
|
}
|
@@ -1525,60 +1470,11 @@ void GrpcLb::ProcessAddressesAndChannelArgsLocked(
|
|
1525
1470
|
response_generator_->SetResponse(std::move(result));
|
1526
1471
|
}
|
1527
1472
|
|
1528
|
-
void GrpcLb::OnBalancerChannelConnectivityChanged(void* arg,
|
1529
|
-
grpc_error* error) {
|
1530
|
-
GrpcLb* self = static_cast<GrpcLb*>(arg);
|
1531
|
-
self->combiner()->Run(
|
1532
|
-
GRPC_CLOSURE_INIT(&self->lb_channel_on_connectivity_changed_,
|
1533
|
-
&GrpcLb::OnBalancerChannelConnectivityChangedLocked,
|
1534
|
-
self, nullptr),
|
1535
|
-
GRPC_ERROR_REF(error));
|
1536
|
-
}
|
1537
|
-
|
1538
|
-
void GrpcLb::OnBalancerChannelConnectivityChangedLocked(void* arg,
|
1539
|
-
grpc_error* /*error*/) {
|
1540
|
-
GrpcLb* self = static_cast<GrpcLb*>(arg);
|
1541
|
-
if (!self->shutting_down_ && self->fallback_at_startup_checks_pending_) {
|
1542
|
-
if (self->lb_channel_connectivity_ != GRPC_CHANNEL_TRANSIENT_FAILURE) {
|
1543
|
-
// Not in TRANSIENT_FAILURE. Renew connectivity watch.
|
1544
|
-
grpc_channel_element* client_channel_elem =
|
1545
|
-
grpc_channel_stack_last_element(
|
1546
|
-
grpc_channel_get_channel_stack(self->lb_channel_));
|
1547
|
-
GPR_ASSERT(client_channel_elem->filter == &grpc_client_channel_filter);
|
1548
|
-
GRPC_CLOSURE_INIT(&self->lb_channel_on_connectivity_changed_,
|
1549
|
-
&GrpcLb::OnBalancerChannelConnectivityChanged, self,
|
1550
|
-
grpc_schedule_on_exec_ctx);
|
1551
|
-
grpc_client_channel_watch_connectivity_state(
|
1552
|
-
client_channel_elem,
|
1553
|
-
grpc_polling_entity_create_from_pollset_set(
|
1554
|
-
self->interested_parties()),
|
1555
|
-
&self->lb_channel_connectivity_,
|
1556
|
-
&self->lb_channel_on_connectivity_changed_, nullptr);
|
1557
|
-
return; // Early out so we don't drop the ref below.
|
1558
|
-
}
|
1559
|
-
// In TRANSIENT_FAILURE. Cancel the fallback timer and go into
|
1560
|
-
// fallback mode immediately.
|
1561
|
-
gpr_log(GPR_INFO,
|
1562
|
-
"[grpclb %p] balancer channel in state TRANSIENT_FAILURE; "
|
1563
|
-
"entering fallback mode",
|
1564
|
-
self);
|
1565
|
-
self->fallback_at_startup_checks_pending_ = false;
|
1566
|
-
grpc_timer_cancel(&self->lb_fallback_timer_);
|
1567
|
-
self->fallback_mode_ = true;
|
1568
|
-
self->CreateOrUpdateChildPolicyLocked();
|
1569
|
-
}
|
1570
|
-
// Done watching connectivity state, so drop ref.
|
1571
|
-
self->Unref(DEBUG_LOCATION, "watch_lb_channel_connectivity");
|
1572
|
-
}
|
1573
|
-
|
1574
1473
|
void GrpcLb::CancelBalancerChannelConnectivityWatchLocked() {
|
1575
1474
|
grpc_channel_element* client_channel_elem = grpc_channel_stack_last_element(
|
1576
1475
|
grpc_channel_get_channel_stack(lb_channel_));
|
1577
1476
|
GPR_ASSERT(client_channel_elem->filter == &grpc_client_channel_filter);
|
1578
|
-
|
1579
|
-
client_channel_elem,
|
1580
|
-
grpc_polling_entity_create_from_pollset_set(interested_parties()),
|
1581
|
-
nullptr, &lb_channel_on_connectivity_changed_, nullptr);
|
1477
|
+
grpc_client_channel_stop_connectivity_watch(client_channel_elem, watcher_);
|
1582
1478
|
}
|
1583
1479
|
|
1584
1480
|
//
|
@@ -1617,33 +1513,30 @@ void GrpcLb::StartBalancerCallRetryTimerLocked() {
|
|
1617
1513
|
// with the callback.
|
1618
1514
|
auto self = Ref(DEBUG_LOCATION, "on_balancer_call_retry_timer");
|
1619
1515
|
self.release();
|
1620
|
-
GRPC_CLOSURE_INIT(&lb_on_call_retry_, &GrpcLb::OnBalancerCallRetryTimer, this,
|
1621
|
-
grpc_schedule_on_exec_ctx);
|
1622
1516
|
retry_timer_callback_pending_ = true;
|
1623
1517
|
grpc_timer_init(&lb_call_retry_timer_, next_try, &lb_on_call_retry_);
|
1624
1518
|
}
|
1625
1519
|
|
1626
1520
|
void GrpcLb::OnBalancerCallRetryTimer(void* arg, grpc_error* error) {
|
1627
1521
|
GrpcLb* grpclb_policy = static_cast<GrpcLb*>(arg);
|
1628
|
-
|
1629
|
-
|
1630
|
-
|
1631
|
-
|
1632
|
-
|
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);
|
1633
1528
|
}
|
1634
1529
|
|
1635
|
-
void GrpcLb::OnBalancerCallRetryTimerLocked(
|
1636
|
-
|
1637
|
-
|
1638
|
-
if (!grpclb_policy->shutting_down_ && error == GRPC_ERROR_NONE &&
|
1639
|
-
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) {
|
1640
1533
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
1641
|
-
gpr_log(GPR_INFO, "[grpclb %p] Restarting call to LB server",
|
1642
|
-
grpclb_policy);
|
1534
|
+
gpr_log(GPR_INFO, "[grpclb %p] Restarting call to LB server", this);
|
1643
1535
|
}
|
1644
|
-
|
1536
|
+
StartBalancerCallLocked();
|
1645
1537
|
}
|
1646
|
-
|
1538
|
+
Unref(DEBUG_LOCATION, "on_balancer_call_retry_timer");
|
1539
|
+
GRPC_ERROR_UNREF(error);
|
1647
1540
|
}
|
1648
1541
|
|
1649
1542
|
//
|
@@ -1670,28 +1563,28 @@ void GrpcLb::MaybeEnterFallbackModeAfterStartup() {
|
|
1670
1563
|
|
1671
1564
|
void GrpcLb::OnFallbackTimer(void* arg, grpc_error* error) {
|
1672
1565
|
GrpcLb* grpclb_policy = static_cast<GrpcLb*>(arg);
|
1673
|
-
|
1674
|
-
|
1675
|
-
|
1676
|
-
|
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);
|
1677
1570
|
}
|
1678
1571
|
|
1679
|
-
void GrpcLb::OnFallbackTimerLocked(
|
1680
|
-
GrpcLb* grpclb_policy = static_cast<GrpcLb*>(arg);
|
1572
|
+
void GrpcLb::OnFallbackTimerLocked(grpc_error* error) {
|
1681
1573
|
// If we receive a serverlist after the timer fires but before this callback
|
1682
1574
|
// actually runs, don't fall back.
|
1683
|
-
if (
|
1684
|
-
|
1575
|
+
if (fallback_at_startup_checks_pending_ && !shutting_down_ &&
|
1576
|
+
error == GRPC_ERROR_NONE) {
|
1685
1577
|
gpr_log(GPR_INFO,
|
1686
1578
|
"[grpclb %p] No response from balancer after fallback timeout; "
|
1687
1579
|
"entering fallback mode",
|
1688
|
-
|
1689
|
-
|
1690
|
-
|
1691
|
-
|
1692
|
-
|
1580
|
+
this);
|
1581
|
+
fallback_at_startup_checks_pending_ = false;
|
1582
|
+
CancelBalancerChannelConnectivityWatchLocked();
|
1583
|
+
fallback_mode_ = true;
|
1584
|
+
CreateOrUpdateChildPolicyLocked();
|
1693
1585
|
}
|
1694
|
-
|
1586
|
+
Unref(DEBUG_LOCATION, "on_fallback_timer");
|
1587
|
+
GRPC_ERROR_UNREF(error);
|
1695
1588
|
}
|
1696
1589
|
|
1697
1590
|
//
|
@@ -1700,7 +1593,7 @@ void GrpcLb::OnFallbackTimerLocked(void* arg, grpc_error* error) {
|
|
1700
1593
|
|
1701
1594
|
grpc_channel_args* GrpcLb::CreateChildPolicyArgsLocked(
|
1702
1595
|
bool is_backend_from_grpclb_load_balancer) {
|
1703
|
-
InlinedVector<grpc_arg, 2> args_to_add;
|
1596
|
+
absl::InlinedVector<grpc_arg, 2> args_to_add;
|
1704
1597
|
args_to_add.emplace_back(grpc_channel_arg_integer_create(
|
1705
1598
|
const_cast<char*>(GRPC_ARG_ADDRESS_IS_BACKEND_FROM_GRPCLB_LOAD_BALANCER),
|
1706
1599
|
is_backend_from_grpclb_load_balancer));
|
@@ -1713,25 +1606,17 @@ grpc_channel_args* GrpcLb::CreateChildPolicyArgsLocked(
|
|
1713
1606
|
}
|
1714
1607
|
|
1715
1608
|
OrphanablePtr<LoadBalancingPolicy> GrpcLb::CreateChildPolicyLocked(
|
1716
|
-
const
|
1717
|
-
Helper* helper = new Helper(Ref());
|
1609
|
+
const grpc_channel_args* args) {
|
1718
1610
|
LoadBalancingPolicy::Args lb_policy_args;
|
1719
|
-
lb_policy_args.
|
1611
|
+
lb_policy_args.work_serializer = work_serializer();
|
1720
1612
|
lb_policy_args.args = args;
|
1721
|
-
lb_policy_args.channel_control_helper =
|
1722
|
-
std::unique_ptr<ChannelControlHelper>(helper);
|
1613
|
+
lb_policy_args.channel_control_helper = absl::make_unique<Helper>(Ref());
|
1723
1614
|
OrphanablePtr<LoadBalancingPolicy> lb_policy =
|
1724
|
-
|
1725
|
-
|
1726
|
-
if (GPR_UNLIKELY(lb_policy == nullptr)) {
|
1727
|
-
gpr_log(GPR_ERROR, "[grpclb %p] Failure creating child policy %s", this,
|
1728
|
-
name);
|
1729
|
-
return nullptr;
|
1730
|
-
}
|
1731
|
-
helper->set_child(lb_policy.get());
|
1615
|
+
MakeOrphanable<ChildPolicyHandler>(std::move(lb_policy_args),
|
1616
|
+
&grpc_lb_glb_trace);
|
1732
1617
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
1733
|
-
gpr_log(GPR_INFO, "[grpclb %p] Created new child policy
|
1734
|
-
|
1618
|
+
gpr_log(GPR_INFO, "[grpclb %p] Created new child policy handler (%p)", this,
|
1619
|
+
lb_policy.get());
|
1735
1620
|
}
|
1736
1621
|
// Add the gRPC LB's interested_parties pollset_set to that of the newly
|
1737
1622
|
// created child policy. This will make the child policy progress upon
|
@@ -1762,97 +1647,16 @@ void GrpcLb::CreateOrUpdateChildPolicyLocked() {
|
|
1762
1647
|
CreateChildPolicyArgsLocked(is_backend_from_grpclb_load_balancer);
|
1763
1648
|
GPR_ASSERT(update_args.args != nullptr);
|
1764
1649
|
update_args.config = child_policy_config_;
|
1765
|
-
//
|
1766
|
-
|
1767
|
-
|
1768
|
-
// policy transitions into state READY, we swap it into child_policy_,
|
1769
|
-
// replacing the original child policy. So pending_child_policy_ is
|
1770
|
-
// non-null only between when we apply an update that changes the child
|
1771
|
-
// policy name and when the new child reports state READY.
|
1772
|
-
//
|
1773
|
-
// Updates can arrive at any point during this transition. We always
|
1774
|
-
// apply updates relative to the most recently created child policy,
|
1775
|
-
// even if the most recent one is still in pending_child_policy_. This
|
1776
|
-
// is true both when applying the updates to an existing child policy
|
1777
|
-
// and when determining whether we need to create a new policy.
|
1778
|
-
//
|
1779
|
-
// As a result of this, there are several cases to consider here:
|
1780
|
-
//
|
1781
|
-
// 1. We have no existing child policy (i.e., we have started up but
|
1782
|
-
// have not yet received a serverlist from the balancer or gone
|
1783
|
-
// into fallback mode; in this case, both child_policy_ and
|
1784
|
-
// pending_child_policy_ are null). In this case, we create a
|
1785
|
-
// new child policy and store it in child_policy_.
|
1786
|
-
//
|
1787
|
-
// 2. We have an existing child policy and have no pending child policy
|
1788
|
-
// from a previous update (i.e., either there has not been a
|
1789
|
-
// previous update that changed the policy name, or we have already
|
1790
|
-
// finished swapping in the new policy; in this case, child_policy_
|
1791
|
-
// is non-null but pending_child_policy_ is null). In this case:
|
1792
|
-
// a. If child_policy_->name() equals child_policy_name, then we
|
1793
|
-
// update the existing child policy.
|
1794
|
-
// b. If child_policy_->name() does not equal child_policy_name,
|
1795
|
-
// we create a new policy. The policy will be stored in
|
1796
|
-
// pending_child_policy_ and will later be swapped into
|
1797
|
-
// child_policy_ by the helper when the new child transitions
|
1798
|
-
// into state READY.
|
1799
|
-
//
|
1800
|
-
// 3. We have an existing child policy and have a pending child policy
|
1801
|
-
// from a previous update (i.e., a previous update set
|
1802
|
-
// pending_child_policy_ as per case 2b above and that policy has
|
1803
|
-
// not yet transitioned into state READY and been swapped into
|
1804
|
-
// child_policy_; in this case, both child_policy_ and
|
1805
|
-
// pending_child_policy_ are non-null). In this case:
|
1806
|
-
// a. If pending_child_policy_->name() equals child_policy_name,
|
1807
|
-
// then we update the existing pending child policy.
|
1808
|
-
// b. If pending_child_policy->name() does not equal
|
1809
|
-
// child_policy_name, then we create a new policy. The new
|
1810
|
-
// policy is stored in pending_child_policy_ (replacing the one
|
1811
|
-
// that was there before, which will be immediately shut down)
|
1812
|
-
// and will later be swapped into child_policy_ by the helper
|
1813
|
-
// when the new child transitions into state READY.
|
1814
|
-
const char* child_policy_name = child_policy_config_ == nullptr
|
1815
|
-
? "round_robin"
|
1816
|
-
: child_policy_config_->name();
|
1817
|
-
const bool create_policy =
|
1818
|
-
// case 1
|
1819
|
-
child_policy_ == nullptr ||
|
1820
|
-
// case 2b
|
1821
|
-
(pending_child_policy_ == nullptr &&
|
1822
|
-
strcmp(child_policy_->name(), child_policy_name) != 0) ||
|
1823
|
-
// case 3b
|
1824
|
-
(pending_child_policy_ != nullptr &&
|
1825
|
-
strcmp(pending_child_policy_->name(), child_policy_name) != 0);
|
1826
|
-
LoadBalancingPolicy* policy_to_update = nullptr;
|
1827
|
-
if (create_policy) {
|
1828
|
-
// Cases 1, 2b, and 3b: create a new child policy.
|
1829
|
-
// If child_policy_ is null, we set it (case 1), else we set
|
1830
|
-
// pending_child_policy_ (cases 2b and 3b).
|
1831
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
1832
|
-
gpr_log(GPR_INFO, "[grpclb %p] Creating new %schild policy %s", this,
|
1833
|
-
child_policy_ == nullptr ? "" : "pending ", child_policy_name);
|
1834
|
-
}
|
1835
|
-
// Swap the policy into place.
|
1836
|
-
auto& lb_policy =
|
1837
|
-
child_policy_ == nullptr ? child_policy_ : pending_child_policy_;
|
1838
|
-
lb_policy = CreateChildPolicyLocked(child_policy_name, update_args.args);
|
1839
|
-
policy_to_update = lb_policy.get();
|
1840
|
-
} else {
|
1841
|
-
// Cases 2a and 3a: update an existing policy.
|
1842
|
-
// If we have a pending child policy, send the update to the pending
|
1843
|
-
// policy (case 3a), else send it to the current policy (case 2a).
|
1844
|
-
policy_to_update = pending_child_policy_ != nullptr
|
1845
|
-
? pending_child_policy_.get()
|
1846
|
-
: child_policy_.get();
|
1650
|
+
// Create child policy if needed.
|
1651
|
+
if (child_policy_ == nullptr) {
|
1652
|
+
child_policy_ = CreateChildPolicyLocked(update_args.args);
|
1847
1653
|
}
|
1848
|
-
GPR_ASSERT(policy_to_update != nullptr);
|
1849
1654
|
// Update the policy.
|
1850
1655
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
1851
|
-
gpr_log(GPR_INFO, "[grpclb %p] Updating
|
1852
|
-
|
1853
|
-
policy_to_update);
|
1656
|
+
gpr_log(GPR_INFO, "[grpclb %p] Updating child policy handler %p", this,
|
1657
|
+
child_policy_.get());
|
1854
1658
|
}
|
1855
|
-
|
1659
|
+
child_policy_->UpdateLocked(std::move(update_args));
|
1856
1660
|
}
|
1857
1661
|
|
1858
1662
|
//
|
@@ -1869,33 +1673,35 @@ class GrpcLbFactory : public LoadBalancingPolicyFactory {
|
|
1869
1673
|
const char* name() const override { return kGrpclb; }
|
1870
1674
|
|
1871
1675
|
RefCountedPtr<LoadBalancingPolicy::Config> ParseLoadBalancingConfig(
|
1872
|
-
const
|
1676
|
+
const Json& json, grpc_error** error) const override {
|
1873
1677
|
GPR_DEBUG_ASSERT(error != nullptr && *error == GRPC_ERROR_NONE);
|
1874
|
-
if (json ==
|
1875
|
-
return
|
1876
|
-
new ParsedGrpcLbConfig(nullptr));
|
1678
|
+
if (json.type() == Json::Type::JSON_NULL) {
|
1679
|
+
return MakeRefCounted<GrpcLbConfig>(nullptr);
|
1877
1680
|
}
|
1878
|
-
|
1879
|
-
|
1880
|
-
|
1881
|
-
|
1882
|
-
|
1883
|
-
|
1884
|
-
|
1885
|
-
|
1886
|
-
|
1887
|
-
|
1888
|
-
|
1889
|
-
|
1890
|
-
|
1891
|
-
|
1892
|
-
|
1893
|
-
|
1894
|
-
|
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));
|
1895
1702
|
}
|
1896
1703
|
if (error_list.empty()) {
|
1897
|
-
return
|
1898
|
-
new ParsedGrpcLbConfig(std::move(child_policy)));
|
1704
|
+
return MakeRefCounted<GrpcLbConfig>(std::move(child_policy_config));
|
1899
1705
|
} else {
|
1900
1706
|
*error = GRPC_ERROR_CREATE_FROM_VECTOR("GrpcLb Parser", &error_list);
|
1901
1707
|
return nullptr;
|
@@ -1938,7 +1744,7 @@ bool maybe_add_client_load_reporting_filter(grpc_channel_stack_builder* builder,
|
|
1938
1744
|
void grpc_lb_policy_grpclb_init() {
|
1939
1745
|
grpc_core::LoadBalancingPolicyRegistry::Builder::
|
1940
1746
|
RegisterLoadBalancingPolicyFactory(
|
1941
|
-
|
1747
|
+
absl::make_unique<grpc_core::GrpcLbFactory>());
|
1942
1748
|
grpc_channel_init_register_stage(GRPC_CLIENT_SUBCHANNEL,
|
1943
1749
|
GRPC_CHANNEL_INIT_BUILTIN_PRIORITY,
|
1944
1750
|
maybe_add_client_load_reporting_filter,
|