grpc 1.21.0 → 1.32.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +2516 -19950
- data/etc/roots.pem +44 -100
- data/include/grpc/grpc.h +3 -1
- data/include/grpc/grpc_security.h +238 -55
- data/include/grpc/grpc_security_constants.h +32 -1
- data/include/grpc/impl/codegen/README.md +22 -0
- data/include/grpc/impl/codegen/gpr_types.h +1 -1
- data/include/grpc/impl/codegen/grpc_types.h +61 -13
- data/include/grpc/impl/codegen/port_platform.h +74 -30
- data/include/grpc/impl/codegen/sync.h +5 -3
- data/include/grpc/impl/codegen/sync_abseil.h +36 -0
- data/include/grpc/impl/codegen/sync_generic.h +1 -1
- data/include/grpc/module.modulemap +25 -37
- data/include/grpc/slice.h +2 -2
- data/include/grpc/support/alloc.h +0 -16
- data/include/grpc/support/sync_abseil.h +26 -0
- data/src/core/ext/filters/client_channel/backend_metric.cc +84 -0
- data/src/core/ext/filters/client_channel/backend_metric.h +36 -0
- data/src/core/ext/filters/client_channel/backup_poller.cc +10 -8
- data/src/core/ext/filters/client_channel/backup_poller.h +5 -2
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +18 -4
- data/src/core/ext/filters/client_channel/client_channel.cc +1516 -742
- data/src/core/ext/filters/client_channel/client_channel.h +25 -9
- data/src/core/ext/filters/client_channel/client_channel_channelz.cc +50 -139
- data/src/core/ext/filters/client_channel/client_channel_channelz.h +15 -39
- data/src/core/ext/filters/client_channel/client_channel_factory.cc +1 -1
- data/src/core/ext/filters/client_channel/client_channel_factory.h +1 -9
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +8 -13
- data/src/core/ext/filters/client_channel/config_selector.cc +62 -0
- data/src/core/ext/filters/client_channel/config_selector.h +93 -0
- data/src/core/ext/filters/client_channel/connector.h +42 -39
- data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +34 -12
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +75 -115
- data/src/core/ext/filters/client_channel/health/health_check_client.h +8 -16
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +75 -46
- data/src/core/ext/filters/client_channel/http_proxy.cc +126 -120
- data/src/core/ext/filters/client_channel/http_proxy.h +5 -1
- data/src/core/ext/filters/client_channel/lb_policy.cc +35 -35
- data/src/core/ext/filters/client_channel/lb_policy.h +225 -152
- 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 +299 -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/client_load_reporting_filter.cc +41 -25
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +635 -734
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +7 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +76 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +37 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +9 -2
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +33 -49
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +4 -3
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +7 -6
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +157 -271
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +42 -58
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +113 -166
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +890 -0
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +61 -101
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +116 -260
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +744 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +423 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/eds.cc +946 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/lrs.cc +537 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +3 -7
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_routing.cc +1141 -0
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +6 -9
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +53 -77
- data/src/core/ext/filters/client_channel/lb_policy_registry.h +3 -3
- data/src/core/ext/filters/client_channel/local_subchannel_pool.cc +8 -8
- data/src/core/ext/filters/client_channel/local_subchannel_pool.h +2 -1
- data/src/core/ext/filters/client_channel/proxy_mapper.h +14 -34
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +46 -79
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.h +23 -17
- data/src/core/ext/filters/client_channel/resolver.cc +6 -9
- data/src/core/ext/filters/client_channel/resolver.h +19 -37
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +156 -130
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.cc +74 -39
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +15 -21
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +33 -33
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +16 -13
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +476 -129
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +231 -193
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +6 -4
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc +9 -6
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_libuv.cc +1 -2
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +1 -2
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +73 -48
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +165 -116
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +8 -7
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +45 -29
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +536 -0
- data/src/core/ext/filters/client_channel/resolver_factory.h +11 -11
- data/src/core/ext/filters/client_channel/resolver_registry.cc +39 -24
- data/src/core/ext/filters/client_channel/resolver_registry.h +17 -12
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +251 -313
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +28 -26
- data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +100 -325
- data/src/core/ext/filters/client_channel/resolving_lb_policy.h +48 -53
- data/src/core/ext/filters/client_channel/retry_throttle.cc +5 -5
- data/src/core/ext/filters/client_channel/retry_throttle.h +2 -6
- data/src/core/ext/filters/client_channel/server_address.cc +40 -14
- data/src/core/ext/filters/client_channel/server_address.h +45 -15
- data/src/core/ext/filters/client_channel/service_config.cc +143 -253
- data/src/core/ext/filters/client_channel/service_config.h +47 -131
- data/src/core/ext/filters/client_channel/service_config_call_data.h +68 -0
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +142 -0
- data/src/core/ext/filters/client_channel/service_config_parser.cc +87 -0
- data/src/core/ext/filters/client_channel/service_config_parser.h +89 -0
- data/src/core/ext/filters/client_channel/subchannel.cc +436 -288
- data/src/core/ext/filters/client_channel/subchannel.h +181 -53
- data/src/core/ext/filters/client_channel/subchannel_interface.h +94 -0
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +3 -6
- data/src/core/ext/filters/client_idle/client_idle_filter.cc +440 -0
- data/src/core/ext/filters/deadline/deadline_filter.cc +30 -28
- data/src/core/ext/filters/http/client/http_client_filter.cc +66 -70
- data/src/core/ext/filters/http/client_authority_filter.cc +21 -21
- data/src/core/ext/filters/http/http_filters_plugin.cc +28 -12
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +335 -301
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +399 -0
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.h +31 -0
- data/src/core/ext/filters/http/server/http_server_filter.cc +66 -39
- data/src/core/ext/filters/max_age/max_age_filter.cc +72 -60
- data/src/core/ext/filters/message_size/message_size_filter.cc +116 -144
- data/src/core/ext/filters/message_size/message_size_filter.h +12 -6
- data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +19 -17
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +193 -171
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +48 -1
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +29 -25
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +44 -64
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +384 -305
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +7 -2
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +3 -3
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +10 -16
- data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +9 -9
- data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +4 -6
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +640 -560
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +2 -0
- data/src/core/ext/transport/chttp2/transport/context_list.cc +5 -3
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +26 -31
- data/src/core/ext/transport/chttp2/transport/flow_control.h +28 -38
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +45 -54
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +7 -9
- data/src/core/ext/transport/chttp2/transport/frame_goaway.h +2 -3
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +7 -7
- data/src/core/ext/transport/chttp2/transport/frame_ping.h +2 -3
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +21 -13
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +9 -3
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +13 -12
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +2 -3
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +9 -12
- data/src/core/ext/transport/chttp2/transport/frame_window_update.h +2 -3
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +531 -348
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +26 -15
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +213 -143
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +11 -4
- data/src/core/ext/transport/chttp2/transport/hpack_table.cc +41 -196
- data/src/core/ext/transport/chttp2/transport/hpack_table.h +62 -18
- 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/incoming_metadata.cc +2 -1
- data/src/core/ext/transport/chttp2/transport/internal.h +64 -47
- data/src/core/ext/transport/chttp2/transport/parsing.cc +148 -162
- data/src/core/ext/transport/chttp2/transport/stream_map.cc +28 -18
- data/src/core/ext/transport/chttp2/transport/stream_map.h +2 -3
- data/src/core/ext/transport/chttp2/transport/writing.cc +38 -30
- data/src/core/ext/transport/inproc/inproc_transport.cc +164 -114
- data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c +17 -0
- data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +29 -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 +53 -0
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +224 -0
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +700 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +74 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +226 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +380 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +1378 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +35 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +69 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +55 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +323 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +112 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +334 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +35 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +79 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +309 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +869 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +96 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +328 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +34 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +71 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +195 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +634 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +170 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +684 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +36 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +80 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +152 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +536 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +28 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +58 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c +34 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +88 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +91 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +220 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +91 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +273 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +112 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +332 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +33 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +65 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +108 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +401 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +138 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +490 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +41 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +94 -0
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +174 -0
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +599 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +63 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +204 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +773 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +2855 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +59 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +135 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +50 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +108 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +312 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +1125 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +20 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +34 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +111 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +401 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +72 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +198 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +105 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +388 -0
- data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.c +27 -0
- data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.h +49 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +25 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +49 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +129 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +386 -0
- data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.c +30 -0
- data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.h +49 -0
- data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.c +30 -0
- data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.h +49 -0
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +55 -0
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +136 -0
- data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.c +29 -0
- data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.h +49 -0
- data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.c +27 -0
- data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.h +49 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +47 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +114 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +35 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +77 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +34 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +71 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +64 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +145 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +53 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +127 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +63 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +188 -0
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +88 -0
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +258 -0
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +90 -0
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +250 -0
- data/src/core/ext/upb-generated/envoy/type/v3/http.upb.c +17 -0
- data/src/core/ext/upb-generated/envoy/type/v3/http.upb.h +35 -0
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c +40 -0
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +86 -0
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +51 -0
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +111 -0
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +30 -0
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +61 -0
- data/src/core/ext/upb-generated/gogoproto/gogo.upb.c +17 -0
- data/src/core/ext/upb-generated/gogoproto/gogo.upb.h +29 -0
- data/src/core/ext/upb-generated/google/api/annotations.upb.c +18 -0
- data/src/core/ext/upb-generated/google/api/annotations.upb.h +29 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +234 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +759 -0
- data/src/core/ext/upb-generated/google/api/http.upb.c +66 -0
- data/src/core/ext/upb-generated/google/api/http.upb.h +191 -0
- data/src/core/ext/upb-generated/google/protobuf/any.upb.c +27 -0
- data/src/core/ext/upb-generated/google/protobuf/any.upb.h +57 -0
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +486 -0
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +1722 -0
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +27 -0
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +57 -0
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +22 -0
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +49 -0
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +79 -0
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +194 -0
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +27 -0
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +57 -0
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +106 -0
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +237 -0
- data/src/core/ext/upb-generated/google/rpc/status.upb.c +33 -0
- data/src/core/ext/upb-generated/google/rpc/status.upb.h +74 -0
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +49 -0
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +113 -0
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +212 -0
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +672 -0
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +42 -0
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +110 -0
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +36 -0
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +83 -0
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +141 -0
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +396 -0
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +48 -0
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +103 -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 +29 -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 +64 -0
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +27 -0
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +53 -0
- data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c +58 -0
- data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h +117 -0
- data/src/core/ext/upb-generated/validate/validate.upb.c +448 -0
- data/src/core/ext/upb-generated/validate/validate.upb.h +2074 -0
- data/src/core/ext/xds/xds_api.cc +2388 -0
- data/src/core/ext/xds/xds_api.h +360 -0
- data/src/core/ext/xds/xds_bootstrap.cc +373 -0
- data/src/core/ext/xds/xds_bootstrap.h +93 -0
- data/src/core/ext/xds/xds_channel.h +46 -0
- data/src/core/ext/xds/xds_channel_args.h +26 -0
- data/src/core/ext/xds/xds_channel_secure.cc +103 -0
- data/src/core/ext/xds/xds_client.cc +2114 -0
- data/src/core/ext/xds/xds_client.h +276 -0
- data/src/core/ext/xds/xds_client_stats.cc +115 -0
- data/src/core/ext/xds/xds_client_stats.h +211 -0
- data/src/core/lib/avl/avl.cc +1 -1
- data/src/core/lib/channel/channel_args.cc +52 -14
- data/src/core/lib/channel/channel_args.h +41 -3
- data/src/core/lib/channel/channel_stack.cc +1 -1
- data/src/core/lib/channel/channel_stack.h +38 -18
- data/src/core/lib/channel/channel_trace.cc +32 -45
- data/src/core/lib/channel/channel_trace.h +3 -3
- data/src/core/lib/channel/channelz.cc +377 -318
- data/src/core/lib/channel/channelz.h +128 -90
- data/src/core/lib/channel/channelz_registry.cc +123 -178
- data/src/core/lib/channel/channelz_registry.h +14 -32
- data/src/core/lib/channel/connected_channel.cc +28 -25
- data/src/core/lib/channel/context.h +2 -2
- data/src/core/lib/channel/handshaker.cc +18 -14
- data/src/core/lib/channel/handshaker.h +7 -6
- data/src/core/lib/channel/handshaker_factory.h +1 -3
- data/src/core/lib/channel/handshaker_registry.cc +9 -21
- data/src/core/lib/channel/handshaker_registry.h +3 -3
- data/src/core/lib/channel/status_util.cc +2 -3
- data/src/core/lib/compression/compression.cc +16 -11
- data/src/core/lib/compression/compression_args.cc +13 -6
- data/src/core/lib/compression/compression_args.h +3 -2
- data/src/core/lib/compression/compression_internal.cc +15 -11
- data/src/core/lib/compression/compression_internal.h +9 -1
- data/src/core/lib/compression/message_compress.cc +8 -3
- data/src/core/lib/compression/stream_compression.cc +3 -2
- data/src/core/lib/compression/stream_compression.h +2 -2
- data/src/core/lib/compression/stream_compression_gzip.cc +9 -9
- data/src/core/lib/compression/stream_compression_identity.cc +5 -7
- data/src/core/lib/debug/stats.cc +21 -27
- data/src/core/lib/debug/stats.h +3 -1
- data/src/core/lib/debug/trace.h +3 -2
- data/src/core/lib/gpr/alloc.cc +4 -29
- data/src/core/lib/gpr/cpu_linux.cc +1 -1
- data/src/core/lib/gpr/env.h +1 -1
- data/src/core/lib/gpr/env_linux.cc +10 -21
- data/src/core/lib/gpr/env_posix.cc +0 -5
- data/src/core/lib/gpr/log_linux.cc +8 -10
- data/src/core/lib/gpr/log_posix.cc +7 -9
- data/src/core/lib/gpr/spinlock.h +2 -3
- data/src/core/lib/gpr/string.cc +25 -36
- data/src/core/lib/gpr/string.h +11 -19
- data/src/core/lib/gpr/sync_abseil.cc +116 -0
- data/src/core/lib/gpr/sync_posix.cc +10 -142
- data/src/core/lib/gpr/sync_windows.cc +4 -2
- data/src/core/lib/gpr/time.cc +4 -0
- data/src/core/lib/gpr/time_posix.cc +1 -1
- data/src/core/lib/gpr/time_precise.cc +123 -36
- data/src/core/lib/gpr/time_precise.h +37 -0
- data/src/core/lib/gprpp/arena.cc +3 -3
- data/src/core/lib/gprpp/arena.h +2 -3
- data/src/core/lib/gprpp/atomic.h +10 -6
- data/src/core/lib/gprpp/debug_location.h +3 -2
- data/src/core/lib/gprpp/fork.cc +19 -26
- data/src/core/lib/gprpp/fork.h +18 -3
- data/src/core/lib/gprpp/global_config.h +9 -0
- data/src/core/lib/gprpp/global_config_custom.h +1 -1
- data/src/core/lib/gprpp/global_config_env.cc +15 -13
- data/src/core/lib/gprpp/global_config_env.h +2 -2
- data/src/core/lib/gprpp/host_port.cc +112 -0
- data/src/core/lib/gprpp/host_port.h +56 -0
- data/src/core/lib/gprpp/map.h +16 -382
- data/src/core/lib/gprpp/memory.h +12 -75
- data/src/core/lib/gprpp/mpscq.cc +108 -0
- data/src/core/lib/gprpp/mpscq.h +98 -0
- data/src/core/lib/gprpp/orphanable.h +9 -14
- data/src/core/lib/gprpp/ref_counted.h +97 -44
- data/src/core/lib/gprpp/ref_counted_ptr.h +8 -1
- data/src/core/lib/gprpp/sync.h +9 -0
- data/src/core/lib/gprpp/thd.h +13 -6
- data/src/core/lib/gprpp/thd_posix.cc +29 -3
- data/src/core/lib/gprpp/thd_windows.cc +12 -4
- data/src/core/lib/http/format_request.cc +46 -65
- data/src/core/lib/http/httpcli.cc +18 -16
- data/src/core/lib/http/httpcli.h +2 -3
- data/src/core/lib/http/httpcli_security_connector.cc +27 -21
- data/src/core/lib/http/parser.cc +1 -1
- data/src/core/lib/http/parser.h +2 -3
- data/src/core/lib/iomgr/buffer_list.cc +45 -40
- data/src/core/lib/iomgr/buffer_list.h +27 -27
- data/src/core/lib/iomgr/call_combiner.cc +12 -12
- data/src/core/lib/iomgr/call_combiner.h +10 -8
- data/src/core/lib/iomgr/cfstream_handle.cc +11 -3
- data/src/core/lib/iomgr/cfstream_handle.h +11 -3
- data/src/core/lib/iomgr/closure.h +43 -141
- data/src/core/lib/iomgr/combiner.cc +46 -90
- data/src/core/lib/iomgr/combiner.h +30 -8
- data/src/core/lib/iomgr/dualstack_socket_posix.cc +47 -0
- data/src/core/lib/iomgr/endpoint.cc +5 -1
- data/src/core/lib/iomgr/endpoint.h +7 -3
- data/src/core/lib/iomgr/endpoint_cfstream.cc +41 -19
- data/src/core/lib/iomgr/endpoint_pair.h +2 -3
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +11 -11
- data/src/core/lib/iomgr/error.cc +26 -19
- data/src/core/lib/iomgr/error.h +15 -8
- data/src/core/lib/iomgr/error_cfstream.cc +9 -8
- data/src/core/lib/iomgr/error_internal.h +1 -1
- data/src/core/lib/iomgr/ev_apple.cc +356 -0
- data/src/core/lib/iomgr/ev_apple.h +43 -0
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +48 -47
- data/src/core/lib/iomgr/ev_epollex_linux.cc +80 -94
- data/src/core/lib/iomgr/ev_poll_posix.cc +42 -26
- data/src/core/lib/iomgr/ev_posix.cc +9 -8
- data/src/core/lib/iomgr/ev_posix.h +3 -2
- data/src/core/lib/iomgr/ev_windows.cc +2 -2
- data/src/core/lib/iomgr/exec_ctx.cc +78 -21
- data/src/core/lib/iomgr/exec_ctx.h +27 -7
- data/src/core/lib/iomgr/executor.cc +25 -41
- data/src/core/lib/iomgr/executor.h +7 -7
- data/src/core/lib/iomgr/executor/mpmcqueue.cc +183 -0
- data/src/core/lib/iomgr/executor/mpmcqueue.h +175 -0
- data/src/core/lib/iomgr/executor/threadpool.cc +137 -0
- data/src/core/lib/iomgr/executor/threadpool.h +149 -0
- data/src/core/lib/iomgr/fork_posix.cc +8 -2
- data/src/core/lib/iomgr/iocp_windows.cc +2 -2
- data/src/core/lib/iomgr/iomgr.cc +4 -4
- data/src/core/lib/iomgr/iomgr_custom.cc +1 -1
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +87 -9
- data/src/core/lib/iomgr/iomgr_uv.cc +3 -0
- data/src/core/lib/iomgr/is_epollexclusive_available.cc +14 -0
- data/src/core/lib/iomgr/load_file.cc +1 -0
- data/src/core/lib/iomgr/lockfree_event.cc +13 -12
- data/src/core/lib/iomgr/parse_address.cc +238 -0
- data/src/core/lib/iomgr/parse_address.h +53 -0
- data/src/core/lib/iomgr/poller/eventmanager_libuv.cc +87 -0
- data/src/core/lib/iomgr/poller/eventmanager_libuv.h +88 -0
- data/src/core/lib/iomgr/pollset_custom.cc +5 -5
- 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/pollset_windows.cc +16 -2
- data/src/core/lib/iomgr/port.h +10 -22
- 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 +49 -68
- data/src/core/lib/iomgr/resolve_address_custom.h +4 -2
- data/src/core/lib/iomgr/resolve_address_posix.cc +20 -24
- data/src/core/lib/iomgr/resolve_address_windows.cc +22 -35
- data/src/core/lib/iomgr/resource_quota.cc +120 -110
- data/src/core/lib/iomgr/resource_quota.h +13 -9
- data/src/core/lib/iomgr/sockaddr_utils.cc +33 -36
- data/src/core/lib/iomgr/sockaddr_utils.h +12 -16
- 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 +140 -82
- data/src/core/lib/iomgr/socket_utils_posix.h +19 -0
- data/src/core/lib/iomgr/socket_windows.cc +6 -7
- data/src/core/lib/iomgr/socket_windows.h +1 -1
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +18 -21
- data/src/core/lib/iomgr/tcp_client_custom.cc +9 -11
- data/src/core/lib/iomgr/tcp_client_posix.cc +47 -59
- data/src/core/lib/iomgr/tcp_client_posix.h +6 -6
- data/src/core/lib/iomgr/tcp_client_windows.cc +12 -13
- data/src/core/lib/iomgr/tcp_custom.cc +58 -36
- data/src/core/lib/iomgr/tcp_custom.h +4 -1
- data/src/core/lib/iomgr/tcp_posix.cc +697 -124
- data/src/core/lib/iomgr/tcp_server.cc +8 -4
- data/src/core/lib/iomgr/tcp_server.h +28 -5
- data/src/core/lib/iomgr/tcp_server_custom.cc +46 -41
- data/src/core/lib/iomgr/tcp_server_posix.cc +102 -46
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +6 -4
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +17 -19
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +10 -18
- data/src/core/lib/iomgr/tcp_server_windows.cc +33 -29
- data/src/core/lib/iomgr/tcp_uv.cc +8 -8
- data/src/core/lib/iomgr/tcp_windows.cc +49 -30
- data/src/core/lib/iomgr/time_averaged_stats.h +2 -3
- data/src/core/lib/iomgr/timer.h +2 -1
- data/src/core/lib/iomgr/timer_custom.cc +7 -5
- data/src/core/lib/iomgr/timer_generic.cc +26 -24
- 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/timer_manager.cc +8 -30
- data/src/core/lib/iomgr/timer_manager.h +2 -0
- data/src/core/lib/iomgr/udp_server.cc +53 -53
- data/src/core/lib/iomgr/udp_server.h +11 -14
- data/src/core/lib/iomgr/unix_sockets_posix.cc +9 -14
- data/src/core/lib/iomgr/unix_sockets_posix.h +3 -1
- data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +5 -2
- data/src/core/lib/iomgr/work_serializer.cc +155 -0
- data/src/core/lib/iomgr/work_serializer.h +65 -0
- data/src/core/lib/json/json.h +209 -68
- data/src/core/lib/json/json_reader.cc +508 -317
- data/src/core/lib/json/json_writer.cc +202 -110
- data/src/core/lib/profiling/basic_timers.cc +2 -2
- data/src/core/lib/security/authorization/authorization_engine.cc +177 -0
- data/src/core/lib/security/authorization/authorization_engine.h +84 -0
- data/src/core/lib/security/authorization/evaluate_args.cc +153 -0
- data/src/core/lib/security/authorization/evaluate_args.h +59 -0
- data/src/core/lib/security/authorization/mock_cel/activation.h +57 -0
- data/src/core/lib/security/authorization/mock_cel/cel_expr_builder_factory.h +42 -0
- data/src/core/lib/security/authorization/mock_cel/cel_expression.h +68 -0
- data/src/core/lib/security/authorization/mock_cel/cel_value.h +93 -0
- data/src/core/lib/security/authorization/mock_cel/evaluator_core.h +67 -0
- data/src/core/lib/security/authorization/mock_cel/flat_expr_builder.h +56 -0
- data/src/core/lib/security/authorization/mock_cel/statusor.h +50 -0
- data/src/core/lib/security/credentials/alts/alts_credentials.cc +10 -7
- data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +1 -1
- data/src/core/lib/security/credentials/alts/check_gcp_environment_windows.cc +45 -57
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc +1 -1
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +26 -6
- data/src/core/lib/security/credentials/composite/composite_credentials.h +11 -4
- data/src/core/lib/security/credentials/credentials.h +31 -25
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +9 -9
- data/src/core/lib/security/credentials/fake/fake_credentials.h +6 -1
- data/src/core/lib/security/credentials/google_default/credentials_generic.cc +8 -6
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +74 -56
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +12 -10
- data/src/core/lib/security/credentials/iam/iam_credentials.h +4 -0
- data/src/core/lib/security/credentials/jwt/json_token.cc +32 -58
- data/src/core/lib/security/credentials/jwt/json_token.h +5 -7
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +19 -26
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +12 -0
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +153 -170
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +4 -6
- data/src/core/lib/security/credentials/local/local_credentials.cc +3 -3
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +332 -87
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +27 -7
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +31 -15
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +4 -1
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +43 -5
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +12 -2
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +70 -17
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +118 -5
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +128 -0
- data/src/core/lib/security/credentials/tls/tls_credentials.h +62 -0
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +67 -32
- data/src/core/lib/security/security_connector/alts/alts_security_connector.h +5 -0
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +64 -47
- data/src/core/lib/security/security_connector/load_system_roots_fallback.cc +2 -2
- data/src/core/lib/security/security_connector/load_system_roots_linux.cc +9 -5
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +42 -16
- data/src/core/lib/security/security_connector/security_connector.cc +4 -1
- data/src/core/lib/security/security_connector/security_connector.h +22 -20
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +55 -62
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +8 -5
- data/src/core/lib/security/security_connector/ssl_utils.cc +150 -53
- data/src/core/lib/security/security_connector/ssl_utils.h +41 -17
- data/src/core/lib/security/security_connector/ssl_utils_config.cc +32 -0
- data/src/core/lib/security/security_connector/ssl_utils_config.h +30 -0
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +606 -0
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +183 -0
- data/src/core/lib/security/transport/auth_filters.h +0 -2
- data/src/core/lib/security/transport/client_auth_filter.cc +74 -28
- data/src/core/lib/security/transport/secure_endpoint.cc +16 -9
- data/src/core/lib/security/transport/security_handshaker.cc +103 -43
- data/src/core/lib/security/transport/security_handshaker.h +4 -2
- data/src/core/lib/security/transport/server_auth_filter.cc +18 -17
- data/src/core/lib/security/util/json_util.cc +35 -15
- data/src/core/lib/security/util/json_util.h +5 -3
- data/src/core/lib/slice/b64.cc +3 -4
- data/src/core/lib/slice/b64.h +3 -4
- data/src/core/lib/slice/slice.cc +188 -73
- data/src/core/lib/slice/slice_buffer.cc +55 -26
- data/src/core/lib/slice/slice_intern.cc +164 -64
- data/src/core/lib/slice/slice_internal.h +110 -8
- data/src/core/lib/slice/slice_string_helpers.cc +10 -1
- data/src/core/lib/slice/slice_string_helpers.h +3 -1
- data/src/core/lib/slice/slice_utils.h +200 -0
- data/src/core/lib/surface/byte_buffer_reader.cc +2 -47
- data/src/core/lib/surface/call.cc +166 -117
- data/src/core/lib/surface/call.h +8 -8
- data/src/core/lib/surface/call_log_batch.cc +51 -60
- data/src/core/lib/surface/channel.cc +188 -137
- data/src/core/lib/surface/channel.h +91 -11
- data/src/core/lib/surface/channel_ping.cc +3 -4
- data/src/core/lib/surface/completion_queue.cc +144 -111
- data/src/core/lib/surface/completion_queue.h +6 -3
- data/src/core/lib/surface/completion_queue_factory.cc +1 -1
- data/src/core/lib/surface/event_string.cc +18 -25
- data/src/core/lib/surface/event_string.h +3 -1
- data/src/core/lib/surface/init.cc +6 -2
- data/src/core/lib/surface/init_secure.cc +2 -2
- data/src/core/lib/surface/lame_client.cc +43 -30
- data/src/core/lib/surface/server.cc +1275 -1316
- data/src/core/lib/surface/server.h +373 -52
- data/src/core/lib/surface/validate_metadata.cc +18 -8
- data/src/core/lib/surface/validate_metadata.h +13 -2
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/authority_override.cc +38 -0
- data/src/core/lib/transport/authority_override.h +32 -0
- data/src/core/lib/transport/byte_stream.cc +5 -7
- data/src/core/lib/transport/byte_stream.h +13 -12
- data/src/core/lib/transport/connectivity_state.cc +118 -98
- data/src/core/lib/transport/connectivity_state.h +114 -50
- data/src/core/lib/transport/error_utils.cc +23 -1
- data/src/core/lib/transport/error_utils.h +6 -0
- data/src/core/lib/transport/metadata.cc +252 -57
- data/src/core/lib/transport/metadata.h +168 -80
- data/src/core/lib/transport/metadata_batch.cc +78 -16
- data/src/core/lib/transport/metadata_batch.h +40 -3
- data/src/core/lib/transport/static_metadata.cc +1169 -495
- data/src/core/lib/transport/static_metadata.h +279 -282
- data/src/core/lib/transport/status_conversion.cc +7 -15
- data/src/core/lib/transport/status_metadata.cc +8 -1
- data/src/core/lib/transport/status_metadata.h +18 -0
- data/src/core/lib/transport/timeout_encoding.cc +7 -0
- data/src/core/lib/transport/timeout_encoding.h +3 -2
- data/src/core/lib/transport/transport.cc +14 -13
- data/src/core/lib/transport/transport.h +48 -8
- data/src/core/lib/transport/transport_op_string.cc +67 -105
- data/src/core/lib/uri/uri_parser.cc +30 -35
- data/src/core/lib/uri/uri_parser.h +5 -4
- data/src/core/plugin_registry/grpc_plugin_registry.cc +36 -4
- data/src/core/tsi/alts/crypt/aes_gcm.cc +0 -2
- data/src/core/tsi/alts/frame_protector/alts_unseal_privacy_integrity_crypter.cc +1 -1
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +414 -120
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +8 -4
- data/src/core/tsi/alts/handshaker/alts_shared_resource.cc +1 -1
- data/src/core/tsi/alts/handshaker/alts_shared_resource.h +1 -1
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +293 -61
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +15 -5
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +5 -0
- data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +10 -6
- data/src/core/tsi/alts/handshaker/alts_tsi_utils.h +4 -3
- data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +76 -48
- data/src/core/tsi/alts/handshaker/transport_security_common_api.h +34 -26
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.h +2 -3
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +12 -2
- data/src/core/tsi/fake_transport_security.cc +22 -21
- data/src/core/tsi/fake_transport_security.h +2 -0
- data/src/core/tsi/local_transport_security.cc +8 -6
- data/src/core/tsi/ssl/session_cache/ssl_session.h +2 -6
- data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +2 -3
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +11 -9
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +4 -13
- data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +2 -3
- data/src/core/tsi/ssl_transport_security.cc +345 -103
- data/src/core/tsi/ssl_transport_security.h +42 -11
- data/src/core/tsi/ssl_types.h +0 -2
- data/src/core/tsi/transport_security.cc +13 -0
- data/src/core/tsi/transport_security.h +6 -9
- data/src/core/tsi/transport_security_grpc.cc +7 -0
- data/src/core/tsi/transport_security_grpc.h +8 -3
- data/src/core/tsi/transport_security_interface.h +20 -3
- data/src/ruby/bin/math_pb.rb +5 -5
- data/src/ruby/bin/math_services_pb.rb +4 -4
- data/src/ruby/ext/grpc/ext-export.clang +1 -0
- data/src/ruby/ext/grpc/ext-export.gcc +6 -0
- data/src/ruby/ext/grpc/extconf.rb +11 -2
- data/src/ruby/ext/grpc/rb_call.c +13 -4
- data/src/ruby/ext/grpc/rb_call.h +4 -0
- data/src/ruby/ext/grpc/rb_call_credentials.c +61 -13
- data/src/ruby/ext/grpc/rb_channel.c +1 -1
- data/src/ruby/ext/grpc/rb_channel_credentials.c +9 -0
- data/src/ruby/ext/grpc/rb_enable_cpp.cc +22 -0
- data/src/ruby/ext/grpc/rb_grpc.c +1 -42
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +16 -6
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +28 -13
- data/src/ruby/lib/grpc.rb +2 -0
- data/src/ruby/lib/grpc/core/status_codes.rb +135 -0
- data/src/ruby/lib/grpc/errors.rb +107 -49
- data/src/ruby/lib/grpc/generic/active_call.rb +2 -3
- data/src/ruby/lib/grpc/generic/bidi_call.rb +1 -1
- data/src/ruby/lib/grpc/generic/client_stub.rb +1 -1
- data/src/ruby/lib/grpc/generic/interceptors.rb +5 -5
- data/src/ruby/lib/grpc/generic/rpc_server.rb +11 -12
- data/src/ruby/lib/grpc/generic/service.rb +5 -4
- data/src/ruby/lib/grpc/google_rpc_status_utils.rb +9 -4
- data/src/ruby/lib/grpc/grpc.rb +1 -1
- data/src/ruby/lib/grpc/structs.rb +15 -0
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/generate_proto_ruby.sh +5 -3
- data/src/ruby/pb/grpc/health/v1/health_pb.rb +3 -3
- data/src/ruby/pb/grpc/health/v1/health_services_pb.rb +2 -2
- data/src/ruby/pb/src/proto/grpc/testing/empty_pb.rb +1 -1
- data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +39 -13
- data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +43 -11
- data/src/ruby/spec/channel_credentials_spec.rb +10 -0
- data/src/ruby/spec/debug_message_spec.rb +134 -0
- data/src/ruby/spec/errors_spec.rb +1 -0
- data/src/ruby/spec/generic/active_call_spec.rb +19 -8
- data/src/ruby/spec/generic/service_spec.rb +2 -0
- data/src/ruby/spec/google_rpc_status_utils_spec.rb +2 -2
- data/src/ruby/spec/pb/codegen/grpc/testing/package_options_import.proto +22 -0
- data/src/ruby/spec/pb/codegen/grpc/testing/package_options_import2.proto +23 -0
- data/src/ruby/spec/pb/codegen/grpc/testing/package_options_ruby_style.proto +41 -0
- data/src/ruby/spec/pb/codegen/grpc/testing/same_package_service_name.proto +27 -0
- data/src/ruby/spec/pb/codegen/grpc/testing/same_ruby_package_service_name.proto +29 -0
- data/src/ruby/spec/pb/codegen/package_option_spec.rb +79 -29
- data/src/ruby/spec/support/services.rb +10 -4
- data/src/ruby/spec/testdata/ca.pem +18 -13
- data/src/ruby/spec/testdata/client.key +26 -14
- data/src/ruby/spec/testdata/client.pem +18 -12
- data/src/ruby/spec/testdata/server1.key +26 -14
- data/src/ruby/spec/testdata/server1.pem +20 -14
- data/src/ruby/spec/user_agent_spec.rb +74 -0
- data/third_party/abseil-cpp/absl/algorithm/algorithm.h +159 -0
- data/third_party/abseil-cpp/absl/algorithm/container.h +1727 -0
- data/third_party/abseil-cpp/absl/base/attributes.h +621 -0
- data/third_party/abseil-cpp/absl/base/call_once.h +226 -0
- data/third_party/abseil-cpp/absl/base/casts.h +184 -0
- data/third_party/abseil-cpp/absl/base/config.h +671 -0
- data/third_party/abseil-cpp/absl/base/const_init.h +76 -0
- data/third_party/abseil-cpp/absl/base/dynamic_annotations.cc +129 -0
- data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +389 -0
- data/third_party/abseil-cpp/absl/base/internal/atomic_hook.h +200 -0
- data/third_party/abseil-cpp/absl/base/internal/bits.h +218 -0
- data/third_party/abseil-cpp/absl/base/internal/cycleclock.cc +107 -0
- data/third_party/abseil-cpp/absl/base/internal/cycleclock.h +94 -0
- data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +161 -0
- data/third_party/abseil-cpp/absl/base/internal/endian.h +266 -0
- data/third_party/abseil-cpp/absl/base/internal/errno_saver.h +43 -0
- data/third_party/abseil-cpp/absl/base/internal/exponential_biased.cc +93 -0
- data/third_party/abseil-cpp/absl/base/internal/exponential_biased.h +130 -0
- data/third_party/abseil-cpp/absl/base/internal/hide_ptr.h +51 -0
- data/third_party/abseil-cpp/absl/base/internal/identity.h +37 -0
- data/third_party/abseil-cpp/absl/base/internal/inline_variable.h +107 -0
- data/third_party/abseil-cpp/absl/base/internal/invoke.h +187 -0
- data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +620 -0
- data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.h +126 -0
- data/third_party/abseil-cpp/absl/base/internal/low_level_scheduling.h +107 -0
- data/third_party/abseil-cpp/absl/base/internal/per_thread_tls.h +52 -0
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +240 -0
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +183 -0
- data/third_party/abseil-cpp/absl/base/internal/scheduling_mode.h +58 -0
- data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +233 -0
- data/third_party/abseil-cpp/absl/base/internal/spinlock.h +243 -0
- data/third_party/abseil-cpp/absl/base/internal/spinlock_akaros.inc +35 -0
- data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +66 -0
- data/third_party/abseil-cpp/absl/base/internal/spinlock_posix.inc +46 -0
- data/third_party/abseil-cpp/absl/base/internal/spinlock_wait.cc +81 -0
- data/third_party/abseil-cpp/absl/base/internal/spinlock_wait.h +93 -0
- data/third_party/abseil-cpp/absl/base/internal/spinlock_win32.inc +37 -0
- data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +416 -0
- data/third_party/abseil-cpp/absl/base/internal/sysinfo.h +66 -0
- data/third_party/abseil-cpp/absl/base/internal/thread_annotations.h +271 -0
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +152 -0
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +259 -0
- data/third_party/abseil-cpp/absl/base/internal/throw_delegate.cc +108 -0
- data/third_party/abseil-cpp/absl/base/internal/throw_delegate.h +75 -0
- data/third_party/abseil-cpp/absl/base/internal/tsan_mutex_interface.h +66 -0
- data/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +158 -0
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +140 -0
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +124 -0
- data/third_party/abseil-cpp/absl/base/log_severity.cc +27 -0
- data/third_party/abseil-cpp/absl/base/log_severity.h +121 -0
- data/third_party/abseil-cpp/absl/base/macros.h +220 -0
- data/third_party/abseil-cpp/absl/base/optimization.h +181 -0
- data/third_party/abseil-cpp/absl/base/options.h +211 -0
- data/third_party/abseil-cpp/absl/base/policy_checks.h +111 -0
- data/third_party/abseil-cpp/absl/base/port.h +26 -0
- data/third_party/abseil-cpp/absl/base/thread_annotations.h +280 -0
- data/third_party/abseil-cpp/absl/container/fixed_array.h +515 -0
- data/third_party/abseil-cpp/absl/container/flat_hash_set.h +503 -0
- data/third_party/abseil-cpp/absl/container/inlined_vector.h +848 -0
- data/third_party/abseil-cpp/absl/container/internal/common.h +202 -0
- data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +265 -0
- data/third_party/abseil-cpp/absl/container/internal/container_memory.h +440 -0
- data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +146 -0
- data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +191 -0
- data/third_party/abseil-cpp/absl/container/internal/hashtable_debug_hooks.h +85 -0
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +269 -0
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +297 -0
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler_force_weak_definition.cc +30 -0
- data/third_party/abseil-cpp/absl/container/internal/have_sse.h +49 -0
- data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +892 -0
- data/third_party/abseil-cpp/absl/container/internal/layout.h +741 -0
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +48 -0
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +1882 -0
- data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc +138 -0
- data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.h +32 -0
- data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +1895 -0
- data/third_party/abseil-cpp/absl/debugging/internal/demangle.h +71 -0
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +382 -0
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +134 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +192 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +125 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +70 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +99 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +248 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_unimplemented-inl.inc +24 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_win32-inl.inc +85 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +346 -0
- data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +128 -0
- data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +194 -0
- data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.h +158 -0
- data/third_party/abseil-cpp/absl/debugging/stacktrace.cc +140 -0
- data/third_party/abseil-cpp/absl/debugging/stacktrace.h +231 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize.cc +25 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize.h +99 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +1480 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize_unimplemented.inc +40 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize_win32.inc +81 -0
- data/third_party/abseil-cpp/absl/functional/function_ref.h +139 -0
- data/third_party/abseil-cpp/absl/functional/internal/function_ref.h +106 -0
- data/third_party/abseil-cpp/absl/hash/hash.h +324 -0
- data/third_party/abseil-cpp/absl/hash/internal/city.cc +346 -0
- data/third_party/abseil-cpp/absl/hash/internal/city.h +96 -0
- data/third_party/abseil-cpp/absl/hash/internal/hash.cc +55 -0
- data/third_party/abseil-cpp/absl/hash/internal/hash.h +988 -0
- data/third_party/abseil-cpp/absl/memory/memory.h +695 -0
- data/third_party/abseil-cpp/absl/meta/type_traits.h +759 -0
- data/third_party/abseil-cpp/absl/numeric/int128.cc +404 -0
- data/third_party/abseil-cpp/absl/numeric/int128.h +1091 -0
- data/third_party/abseil-cpp/absl/numeric/int128_have_intrinsic.inc +302 -0
- data/third_party/abseil-cpp/absl/numeric/int128_no_intrinsic.inc +308 -0
- data/third_party/abseil-cpp/absl/status/status.cc +447 -0
- data/third_party/abseil-cpp/absl/status/status.h +428 -0
- data/third_party/abseil-cpp/absl/status/status_payload_printer.cc +43 -0
- data/third_party/abseil-cpp/absl/status/status_payload_printer.h +51 -0
- data/third_party/abseil-cpp/absl/strings/ascii.cc +200 -0
- data/third_party/abseil-cpp/absl/strings/ascii.h +242 -0
- data/third_party/abseil-cpp/absl/strings/charconv.cc +984 -0
- data/third_party/abseil-cpp/absl/strings/charconv.h +119 -0
- data/third_party/abseil-cpp/absl/strings/cord.cc +2019 -0
- data/third_party/abseil-cpp/absl/strings/cord.h +1121 -0
- data/third_party/abseil-cpp/absl/strings/escaping.cc +949 -0
- data/third_party/abseil-cpp/absl/strings/escaping.h +164 -0
- data/third_party/abseil-cpp/absl/strings/internal/char_map.h +156 -0
- data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.cc +359 -0
- data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.h +423 -0
- data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +504 -0
- data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.h +99 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +151 -0
- data/third_party/abseil-cpp/absl/strings/internal/escaping.cc +180 -0
- data/third_party/abseil-cpp/absl/strings/internal/escaping.h +58 -0
- data/third_party/abseil-cpp/absl/strings/internal/memutil.cc +112 -0
- data/third_party/abseil-cpp/absl/strings/internal/memutil.h +148 -0
- data/third_party/abseil-cpp/absl/strings/internal/ostringstream.cc +36 -0
- data/third_party/abseil-cpp/absl/strings/internal/ostringstream.h +89 -0
- data/third_party/abseil-cpp/absl/strings/internal/resize_uninitialized.h +73 -0
- data/third_party/abseil-cpp/absl/strings/internal/stl_type_traits.h +248 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +388 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +432 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +245 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +209 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +326 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +51 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +415 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +493 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.h +23 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/output.cc +72 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/output.h +104 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +334 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +333 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_join_internal.h +314 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +455 -0
- data/third_party/abseil-cpp/absl/strings/internal/utf8.cc +53 -0
- data/third_party/abseil-cpp/absl/strings/internal/utf8.h +50 -0
- data/third_party/abseil-cpp/absl/strings/match.cc +40 -0
- data/third_party/abseil-cpp/absl/strings/match.h +90 -0
- data/third_party/abseil-cpp/absl/strings/numbers.cc +965 -0
- data/third_party/abseil-cpp/absl/strings/numbers.h +266 -0
- data/third_party/abseil-cpp/absl/strings/str_cat.cc +246 -0
- data/third_party/abseil-cpp/absl/strings/str_cat.h +408 -0
- data/third_party/abseil-cpp/absl/strings/str_format.h +537 -0
- data/third_party/abseil-cpp/absl/strings/str_join.h +293 -0
- data/third_party/abseil-cpp/absl/strings/str_replace.cc +82 -0
- data/third_party/abseil-cpp/absl/strings/str_replace.h +219 -0
- data/third_party/abseil-cpp/absl/strings/str_split.cc +139 -0
- data/third_party/abseil-cpp/absl/strings/str_split.h +513 -0
- data/third_party/abseil-cpp/absl/strings/string_view.cc +235 -0
- data/third_party/abseil-cpp/absl/strings/string_view.h +622 -0
- data/third_party/abseil-cpp/absl/strings/strip.h +91 -0
- data/third_party/abseil-cpp/absl/strings/substitute.cc +171 -0
- data/third_party/abseil-cpp/absl/strings/substitute.h +693 -0
- data/third_party/abseil-cpp/absl/synchronization/barrier.cc +52 -0
- data/third_party/abseil-cpp/absl/synchronization/barrier.h +79 -0
- data/third_party/abseil-cpp/absl/synchronization/blocking_counter.cc +57 -0
- data/third_party/abseil-cpp/absl/synchronization/blocking_counter.h +99 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +140 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.h +60 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +697 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.h +141 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +155 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/mutex_nonprod.inc +261 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +106 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +115 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +484 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +159 -0
- data/third_party/abseil-cpp/absl/synchronization/mutex.cc +2728 -0
- data/third_party/abseil-cpp/absl/synchronization/mutex.h +1056 -0
- data/third_party/abseil-cpp/absl/synchronization/notification.cc +78 -0
- data/third_party/abseil-cpp/absl/synchronization/notification.h +123 -0
- data/third_party/abseil-cpp/absl/time/civil_time.cc +175 -0
- data/third_party/abseil-cpp/absl/time/civil_time.h +538 -0
- data/third_party/abseil-cpp/absl/time/clock.cc +569 -0
- data/third_party/abseil-cpp/absl/time/clock.h +74 -0
- data/third_party/abseil-cpp/absl/time/duration.cc +922 -0
- data/third_party/abseil-cpp/absl/time/format.cc +153 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time.h +332 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +622 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +384 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/zone_info_source.h +102 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/civil_time_detail.cc +94 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.cc +140 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.h +52 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +922 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.cc +45 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.h +76 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.cc +121 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.h +93 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +958 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.h +138 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +308 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.h +55 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +187 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.cc +159 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.h +132 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +122 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +115 -0
- data/third_party/abseil-cpp/absl/time/internal/get_current_time_chrono.inc +31 -0
- data/third_party/abseil-cpp/absl/time/internal/get_current_time_posix.inc +24 -0
- data/third_party/abseil-cpp/absl/time/time.cc +499 -0
- data/third_party/abseil-cpp/absl/time/time.h +1584 -0
- data/third_party/abseil-cpp/absl/types/bad_optional_access.cc +48 -0
- data/third_party/abseil-cpp/absl/types/bad_optional_access.h +78 -0
- data/third_party/abseil-cpp/absl/types/bad_variant_access.cc +64 -0
- data/third_party/abseil-cpp/absl/types/bad_variant_access.h +82 -0
- data/third_party/abseil-cpp/absl/types/internal/optional.h +396 -0
- data/third_party/abseil-cpp/absl/types/internal/span.h +128 -0
- data/third_party/abseil-cpp/absl/types/internal/variant.h +1646 -0
- data/third_party/abseil-cpp/absl/types/optional.h +776 -0
- data/third_party/abseil-cpp/absl/types/span.h +713 -0
- data/third_party/abseil-cpp/absl/types/variant.h +861 -0
- data/third_party/abseil-cpp/absl/utility/utility.h +350 -0
- data/third_party/boringssl-with-bazel/err_data.c +1451 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +271 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +123 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_d2i_fp.c +93 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_dup.c +87 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_enum.c +195 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_gentm.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_i2d_fp.c +88 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.c +420 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.c +305 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +286 -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-with-bazel/src/crypto/asn1/a_strnid.c +313 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +212 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +151 -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-with-bazel/src/crypto/asn1/asn1_lib.c +446 -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-with-bazel/src/crypto/asn1/asn_pack.c +105 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_enum.c +93 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.c +97 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_string.c +91 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_dec.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +664 -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-with-bazel/src/crypto/base64/base64.c +466 -0
- data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +700 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/bio_mem.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/bio/connect.c +545 -0
- data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +279 -0
- data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +317 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/hexdump.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/internal.h +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/bio/pair.c +488 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/printf.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/bio/socket.c +206 -0
- data/third_party/boringssl-with-bazel/src/crypto/bio/socket_helper.c +118 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bn_extra/bn_asn1.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/bn_extra/convert.c +470 -0
- data/third_party/boringssl-with-bazel/src/crypto/buf/buf.c +172 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bytestring/asn1_compat.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.c +265 -0
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbb.c +719 -0
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +688 -0
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/internal.h +96 -0
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/unicode.c +155 -0
- data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.c +184 -0
- data/third_party/boringssl-with-bazel/src/crypto/chacha/internal.h +45 -0
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/cipher_extra.c +143 -0
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/derive_key.c +152 -0
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_aesccm.c +447 -0
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_aesctrhmac.c +283 -0
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_aesgcmsiv.c +891 -0
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_chacha20poly1305.c +418 -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-with-bazel/src/crypto/cipher_extra/e_tls.c +688 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/internal.h +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +492 -0
- data/third_party/boringssl-with-bazel/src/crypto/cmac/cmac.c +278 -0
- data/third_party/boringssl-with-bazel/src/crypto/conf/conf.c +810 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/conf/conf_def.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/conf/internal.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-aarch64-fuchsia.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-aarch64-linux.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/cpu-arm-linux.c +220 -0
- data/third_party/boringssl-with-bazel/src/crypto/cpu-arm-linux.h +201 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-arm.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/cpu-intel.c +291 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-ppc64le.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/crypto.c +226 -0
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +2159 -0
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519_tables.h +7872 -0
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/internal.h +146 -0
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/spake25519.c +539 -0
- data/third_party/boringssl-with-bazel/src/crypto/dh/check.c +217 -0
- data/third_party/boringssl-with-bazel/src/crypto/dh/dh.c +533 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/dh/dh_asn1.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/dh/params.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/digest_extra/digest_extra.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +980 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/dsa/dsa_asn1.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_asn1.c +574 -0
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_derive.c +95 -0
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +385 -0
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +56 -0
- data/third_party/boringssl-with-bazel/src/crypto/ecdh_extra/ecdh_extra.c +124 -0
- data/third_party/boringssl-with-bazel/src/crypto/ecdsa_extra/ecdsa_asn1.c +267 -0
- data/third_party/boringssl-with-bazel/src/crypto/engine/engine.c +99 -0
- data/third_party/boringssl-with-bazel/src/crypto/err/err.c +850 -0
- data/third_party/boringssl-with-bazel/src/crypto/err/internal.h +58 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/digestsign.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp.c +443 -0
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +547 -0
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp_ctx.c +484 -0
- data/third_party/boringssl-with-bazel/src/crypto/evp/internal.h +269 -0
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_dsa_asn1.c +273 -0
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec.c +286 -0
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec_asn1.c +255 -0
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519.c +104 -0
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519_asn1.c +221 -0
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa.c +648 -0
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa_asn1.c +194 -0
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519.c +110 -0
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519_asn1.c +248 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/pbkdf.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/print.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/evp/scrypt.c +213 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/sign.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/ex_data.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes.c +108 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes_nohw.c +1282 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/internal.h +238 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/key_wrap.c +236 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/mode_wrappers.c +122 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +263 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/add.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/asm/x86_64-gcc.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bn.c +445 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/bytes.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/cmp.c +200 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/ctx.c +236 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +886 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div_extra.c +87 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/exponentiation.c +1288 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd.c +378 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd_extra.c +325 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/generic.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +704 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/jacobi.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery.c +502 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery_inv.c +186 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/mul.c +749 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/prime.c +1068 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/random.c +341 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/rsaz_exp.c +226 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/rsaz_exp.h +104 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/shift.c +364 -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-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +620 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +1302 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_des.c +237 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/internal.h +128 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/delocate.h +89 -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-with-bazel/src/crypto/fipsmodule/digest/digest.c +271 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digests.c +296 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/digest/internal.h +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/md32_common.h +268 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +1252 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +465 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_montgomery.c +524 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/felem.c +100 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +776 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/oct.c +328 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +1180 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-x86_64-table.h +9497 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-x86_64.c +633 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-x86_64.h +153 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +740 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256_table.h +297 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/scalar.c +175 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple.c +357 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +270 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/util.c +255 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/wnaf.c +270 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdh/ecdh.c +122 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +328 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/fips_shared_support.c +32 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/hmac/hmac.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/is_fips.c +29 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md4/md4.c +256 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/internal.h +37 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/md5.c +301 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c +167 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cfb.c +202 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c +200 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +729 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm_nohw.c +304 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +441 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c +96 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/modes/polyval.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/ctrdrbg.c +202 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.c +137 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.h +49 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/getrandom_fillin.h +64 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +163 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +378 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +391 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/blinding.c +243 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +127 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/padding.c +695 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +898 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +1358 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +716 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/internal.h +53 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/sha/sha1-altivec.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +371 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +343 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +544 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/tls/internal.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/tls/kdf.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/hkdf/hkdf.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +456 -0
- data/third_party/boringssl-with-bazel/src/crypto/hpke/internal.h +192 -0
- data/third_party/boringssl-with-bazel/src/crypto/hrss/hrss.c +2100 -0
- data/third_party/boringssl-with-bazel/src/crypto/hrss/internal.h +61 -0
- data/third_party/boringssl-with-bazel/src/crypto/internal.h +834 -0
- data/third_party/boringssl-with-bazel/src/crypto/lhash/lhash.c +348 -0
- data/third_party/boringssl-with-bazel/src/crypto/mem.c +373 -0
- data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +549 -0
- data/third_party/boringssl-with-bazel/src/crypto/obj/obj_dat.h +11585 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/obj/obj_xref.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_all.c +261 -0
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_info.c +360 -0
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +777 -0
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_oth.c +87 -0
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pk8.c +257 -0
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pkey.c +218 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_x509.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_xaux.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs7/internal.h +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7.c +159 -0
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +385 -0
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h +138 -0
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/p5_pbev2.c +316 -0
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8.c +530 -0
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +1336 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/poly1305/internal.h +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305.c +318 -0
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_arm.c +305 -0
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_vec.c +856 -0
- data/third_party/boringssl-with-bazel/src/crypto/pool/internal.h +45 -0
- data/third_party/boringssl-with-bazel/src/crypto/pool/pool.c +220 -0
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/deterministic.c +52 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rand_extra/forkunsafe.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/fuchsia.c +30 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rand_extra/rand_extra.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/windows.c +69 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rc4/rc4.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/refcount_c11.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/refcount_lock.c +53 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rsa_extra/rsa_asn1.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_print.c +22 -0
- data/third_party/boringssl-with-bazel/src/crypto/siphash/siphash.c +82 -0
- data/third_party/boringssl-with-bazel/src/crypto/stack/stack.c +431 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/thread.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/thread_none.c +59 -0
- data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +210 -0
- data/third_party/boringssl-with-bazel/src/crypto/thread_win.c +260 -0
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +249 -0
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +1227 -0
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +682 -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-with-bazel/src/crypto/x509/a_strex.c +653 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/a_verify.c +114 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +161 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +842 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/by_dir.c +458 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/by_file.c +275 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/charmap.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/i2d_pr.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/internal.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/rsa_pss.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_crl.c +125 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_req.c +244 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +544 -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-with-bazel/src/crypto/x509/x509.c +90 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_att.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +483 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_d2.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_def.c +103 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_ext.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +834 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_obj.c +198 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_r2x.c +116 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +351 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +226 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +329 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_txt.c +204 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_v3.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +2506 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.c +671 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +235 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +389 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509rset.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509spki.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_algor.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +399 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_attrib.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +563 -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-with-bazel/src/crypto/x509/x_pubkey.c +214 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_req.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_sig.c +89 -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-with-bazel/src/crypto/x509/x_x509.c +356 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_x509a.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/ext_dat.h +141 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +61 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_cache.c +286 -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-with-bazel/src/crypto/x509v3/pcy_node.c +189 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_tree.c +842 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akey.c +207 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_akeya.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +629 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_bcons.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_bitst.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +463 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +503 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_crld.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c +100 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_extku.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_genn.c +246 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_ia5.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_info.c +218 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_int.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +371 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_ncons.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ocsp.c +68 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pci.c +288 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_pcia.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_pcons.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_pku.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_pmaps.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_prn.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +882 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +155 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_sxnet.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +1395 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +459 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/aes.h +207 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +173 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +911 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/asn1_mac.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/asn1t.h +0 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +575 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/base64.h +190 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +933 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/blowfish.h +93 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/bn.h +1057 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/buf.h +137 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/buffer.h +0 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +561 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/cast.h +96 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/chacha.h +0 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +638 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/cmac.h +91 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/conf.h +180 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/cpu.h +212 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +149 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/curve25519.h +201 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/des.h +0 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +319 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +331 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +457 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/dtls1.h +0 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/e_os2.h +18 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +424 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/ec_key.h +372 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/ecdh.h +118 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +205 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/engine.h +109 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/err.h +465 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +1119 -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-with-bazel/src/include/openssl/hmac.h +186 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/hrss.h +100 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/is_boringssl.h +0 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/lhash.h +282 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/md4.h +108 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/md5.h +109 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/mem.h +175 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/nid.h +4259 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/obj.h +236 -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-with-bazel/src/include/openssl/pem.h +435 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/pkcs12.h +0 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +215 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +269 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/poly1305.h +49 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/pool.h +102 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +111 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/rc4.h +0 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/ripemd.h +108 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +818 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/safestack.h +0 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/sha.h +294 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/siphash.h +37 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/span.h +199 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/srtp.h +0 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +5247 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl3.h +333 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/stack.h +542 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/thread.h +191 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +631 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +282 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/type_check.h +90 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +1292 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +681 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +831 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/bio_ssl.cc +0 -0
- data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +837 -0
- data/third_party/boringssl-with-bazel/src/ssl/d1_lib.cc +268 -0
- data/third_party/boringssl-with-bazel/src/ssl/d1_pkt.cc +273 -0
- data/third_party/boringssl-with-bazel/src/ssl/d1_srtp.cc +232 -0
- data/third_party/boringssl-with-bazel/src/ssl/dtls_method.cc +200 -0
- data/third_party/boringssl-with-bazel/src/ssl/dtls_record.cc +353 -0
- data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +675 -0
- data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +710 -0
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +1890 -0
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +1814 -0
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +3579 -0
- data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +724 -0
- data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +221 -0
- data/third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc +458 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_aead_ctx.cc +432 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +856 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_buffer.cc +306 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +1016 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +1718 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_file.cc +585 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +397 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +3053 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +835 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +1313 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_stat.cc +230 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_transcript.cc +277 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +394 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_x509.cc +1358 -0
- data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +386 -0
- data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +3895 -0
- data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +689 -0
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +1027 -0
- data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +513 -0
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +1104 -0
- data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +317 -0
- data/third_party/boringssl-with-bazel/src/ssl/tls_record.cc +705 -0
- data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_32.h +981 -0
- data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64.h +619 -0
- data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_32.h +3147 -0
- data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_64.h +1226 -0
- data/third_party/re2/re2/bitmap256.h +117 -0
- data/third_party/re2/re2/bitstate.cc +385 -0
- data/third_party/re2/re2/compile.cc +1279 -0
- data/third_party/re2/re2/dfa.cc +2130 -0
- data/third_party/re2/re2/filtered_re2.cc +121 -0
- data/third_party/re2/re2/filtered_re2.h +109 -0
- data/third_party/re2/re2/mimics_pcre.cc +197 -0
- data/third_party/re2/re2/nfa.cc +713 -0
- data/third_party/re2/re2/onepass.cc +623 -0
- data/third_party/re2/re2/parse.cc +2464 -0
- data/third_party/re2/re2/perl_groups.cc +119 -0
- data/third_party/re2/re2/pod_array.h +55 -0
- data/third_party/re2/re2/prefilter.cc +710 -0
- data/third_party/re2/re2/prefilter.h +108 -0
- data/third_party/re2/re2/prefilter_tree.cc +407 -0
- data/third_party/re2/re2/prefilter_tree.h +139 -0
- data/third_party/re2/re2/prog.cc +988 -0
- data/third_party/re2/re2/prog.h +436 -0
- data/third_party/re2/re2/re2.cc +1362 -0
- data/third_party/re2/re2/re2.h +1002 -0
- data/third_party/re2/re2/regexp.cc +980 -0
- data/third_party/re2/re2/regexp.h +659 -0
- data/third_party/re2/re2/set.cc +154 -0
- data/third_party/re2/re2/set.h +80 -0
- data/third_party/re2/re2/simplify.cc +657 -0
- data/third_party/re2/re2/sparse_array.h +392 -0
- data/third_party/re2/re2/sparse_set.h +264 -0
- data/third_party/re2/re2/stringpiece.cc +65 -0
- data/third_party/re2/re2/stringpiece.h +210 -0
- data/third_party/re2/re2/tostring.cc +351 -0
- data/third_party/re2/re2/unicode_casefold.cc +582 -0
- data/third_party/re2/re2/unicode_casefold.h +78 -0
- data/third_party/re2/re2/unicode_groups.cc +6269 -0
- data/third_party/re2/re2/unicode_groups.h +67 -0
- data/third_party/re2/re2/walker-inl.h +246 -0
- data/third_party/re2/util/benchmark.h +156 -0
- data/third_party/re2/util/flags.h +26 -0
- data/third_party/re2/util/logging.h +109 -0
- data/third_party/re2/util/malloc_counter.h +19 -0
- data/third_party/re2/util/mix.h +41 -0
- data/third_party/re2/util/mutex.h +148 -0
- data/third_party/re2/util/pcre.cc +1025 -0
- data/third_party/re2/util/pcre.h +681 -0
- data/third_party/re2/util/rune.cc +260 -0
- data/third_party/re2/util/strutil.cc +149 -0
- data/third_party/re2/util/strutil.h +21 -0
- data/third_party/re2/util/test.h +50 -0
- data/third_party/re2/util/utf.h +44 -0
- data/third_party/re2/util/util.h +42 -0
- data/third_party/upb/upb/decode.c +621 -0
- data/third_party/upb/upb/decode.h +21 -0
- data/third_party/upb/upb/encode.c +420 -0
- data/third_party/upb/upb/encode.h +21 -0
- data/third_party/upb/upb/msg.c +177 -0
- data/third_party/upb/upb/msg.h +473 -0
- data/third_party/upb/upb/port.c +26 -0
- data/third_party/upb/upb/port_def.inc +179 -0
- data/third_party/upb/upb/port_undef.inc +28 -0
- data/third_party/upb/upb/table.c +880 -0
- data/third_party/upb/upb/table.int.h +466 -0
- data/third_party/upb/upb/upb.c +287 -0
- data/third_party/upb/upb/upb.h +308 -0
- data/third_party/upb/upb/upb.hpp +88 -0
- metadata +1054 -526
- data/src/boringssl/err_data.c +0 -1362
- data/src/core/ext/filters/client_channel/connector.cc +0 -41
- data/src/core/ext/filters/client_channel/health/health.pb.c +0 -23
- data/src/core/ext/filters/client_channel/health/health.pb.h +0 -73
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/google/protobuf/duration.pb.c +0 -19
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/google/protobuf/duration.pb.h +0 -54
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/google/protobuf/timestamp.pb.c +0 -19
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/google/protobuf/timestamp.pb.h +0 -54
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c +0 -89
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.h +0 -164
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.cc +0 -2249
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel.h +0 -36
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_secure.cc +0 -61
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_client_stats.cc +0 -85
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_client_stats.h +0 -72
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_load_balancer_api.cc +0 -307
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_load_balancer_api.h +0 -89
- data/src/core/ext/filters/client_channel/parse_address.cc +0 -234
- data/src/core/ext/filters/client_channel/parse_address.h +0 -53
- data/src/core/ext/filters/client_channel/proxy_mapper.cc +0 -48
- data/src/core/lib/gpr/host_port.cc +0 -98
- data/src/core/lib/gpr/host_port.h +0 -43
- data/src/core/lib/gpr/mpscq.cc +0 -117
- data/src/core/lib/gpr/mpscq.h +0 -88
- data/src/core/lib/gprpp/abstract.h +0 -37
- data/src/core/lib/gprpp/inlined_vector.h +0 -200
- data/src/core/lib/gprpp/optional.h +0 -48
- data/src/core/lib/gprpp/pair.h +0 -38
- data/src/core/lib/json/json.cc +0 -94
- data/src/core/lib/json/json_common.h +0 -34
- data/src/core/lib/json/json_reader.h +0 -146
- data/src/core/lib/json/json_string.cc +0 -367
- data/src/core/lib/json/json_writer.h +0 -84
- data/src/core/lib/security/credentials/tls/spiffe_credentials.cc +0 -129
- data/src/core/lib/security/credentials/tls/spiffe_credentials.h +0 -62
- data/src/core/lib/security/security_connector/tls/spiffe_security_connector.cc +0 -426
- data/src/core/lib/security/security_connector/tls/spiffe_security_connector.h +0 -122
- data/src/core/lib/security/transport/target_authority_table.cc +0 -75
- data/src/core/lib/security/transport/target_authority_table.h +0 -40
- data/src/core/lib/slice/slice_hash_table.h +0 -205
- data/src/core/lib/slice/slice_weak_hash_table.h +0 -109
- data/src/core/tsi/alts/handshaker/alts_handshaker_service_api.cc +0 -520
- data/src/core/tsi/alts/handshaker/alts_handshaker_service_api.h +0 -323
- data/src/core/tsi/alts/handshaker/alts_handshaker_service_api_util.cc +0 -145
- data/src/core/tsi/alts/handshaker/alts_handshaker_service_api_util.h +0 -149
- data/src/core/tsi/alts/handshaker/altscontext.pb.c +0 -47
- data/src/core/tsi/alts/handshaker/altscontext.pb.h +0 -63
- data/src/core/tsi/alts/handshaker/handshaker.pb.c +0 -122
- data/src/core/tsi/alts/handshaker/handshaker.pb.h +0 -254
- data/src/core/tsi/alts/handshaker/transport_security_common.pb.c +0 -49
- data/src/core/tsi/alts/handshaker/transport_security_common.pb.h +0 -78
- data/src/core/tsi/grpc_shadow_boringssl.h +0 -3006
- data/third_party/boringssl/crypto/asn1/a_bitstr.c +0 -271
- data/third_party/boringssl/crypto/asn1/a_bool.c +0 -110
- data/third_party/boringssl/crypto/asn1/a_d2i_fp.c +0 -297
- data/third_party/boringssl/crypto/asn1/a_dup.c +0 -111
- data/third_party/boringssl/crypto/asn1/a_enum.c +0 -195
- data/third_party/boringssl/crypto/asn1/a_i2d_fp.c +0 -150
- data/third_party/boringssl/crypto/asn1/a_int.c +0 -479
- data/third_party/boringssl/crypto/asn1/a_mbstr.c +0 -411
- data/third_party/boringssl/crypto/asn1/a_object.c +0 -275
- data/third_party/boringssl/crypto/asn1/a_strnid.c +0 -312
- data/third_party/boringssl/crypto/asn1/a_time.c +0 -213
- data/third_party/boringssl/crypto/asn1/a_type.c +0 -151
- data/third_party/boringssl/crypto/asn1/asn1_lib.c +0 -442
- data/third_party/boringssl/crypto/asn1/asn_pack.c +0 -105
- data/third_party/boringssl/crypto/asn1/f_enum.c +0 -93
- data/third_party/boringssl/crypto/asn1/f_int.c +0 -97
- data/third_party/boringssl/crypto/asn1/f_string.c +0 -91
- data/third_party/boringssl/crypto/asn1/tasn_enc.c +0 -662
- data/third_party/boringssl/crypto/base64/base64.c +0 -466
- data/third_party/boringssl/crypto/bio/bio.c +0 -636
- data/third_party/boringssl/crypto/bio/connect.c +0 -542
- data/third_party/boringssl/crypto/bio/fd.c +0 -276
- data/third_party/boringssl/crypto/bio/file.c +0 -315
- data/third_party/boringssl/crypto/bio/pair.c +0 -489
- data/third_party/boringssl/crypto/bio/socket.c +0 -202
- data/third_party/boringssl/crypto/bio/socket_helper.c +0 -114
- data/third_party/boringssl/crypto/bn_extra/convert.c +0 -466
- data/third_party/boringssl/crypto/buf/buf.c +0 -231
- data/third_party/boringssl/crypto/bytestring/ber.c +0 -261
- data/third_party/boringssl/crypto/bytestring/cbb.c +0 -668
- data/third_party/boringssl/crypto/bytestring/cbs.c +0 -618
- data/third_party/boringssl/crypto/bytestring/internal.h +0 -75
- data/third_party/boringssl/crypto/chacha/chacha.c +0 -167
- data/third_party/boringssl/crypto/cipher_extra/cipher_extra.c +0 -114
- data/third_party/boringssl/crypto/cipher_extra/derive_key.c +0 -152
- data/third_party/boringssl/crypto/cipher_extra/e_aesccm.c +0 -203
- data/third_party/boringssl/crypto/cipher_extra/e_aesctrhmac.c +0 -281
- data/third_party/boringssl/crypto/cipher_extra/e_aesgcmsiv.c +0 -867
- data/third_party/boringssl/crypto/cipher_extra/e_chacha20poly1305.c +0 -326
- data/third_party/boringssl/crypto/cipher_extra/e_ssl3.c +0 -460
- data/third_party/boringssl/crypto/cipher_extra/e_tls.c +0 -680
- data/third_party/boringssl/crypto/cipher_extra/tls_cbc.c +0 -482
- data/third_party/boringssl/crypto/cmac/cmac.c +0 -241
- data/third_party/boringssl/crypto/conf/conf.c +0 -803
- data/third_party/boringssl/crypto/cpu-arm-linux.c +0 -363
- data/third_party/boringssl/crypto/cpu-intel.c +0 -288
- data/third_party/boringssl/crypto/crypto.c +0 -198
- data/third_party/boringssl/crypto/curve25519/spake25519.c +0 -539
- data/third_party/boringssl/crypto/dh/check.c +0 -217
- data/third_party/boringssl/crypto/dh/dh.c +0 -519
- data/third_party/boringssl/crypto/dsa/dsa.c +0 -946
- data/third_party/boringssl/crypto/ec_extra/ec_asn1.c +0 -562
- data/third_party/boringssl/crypto/ecdh/ecdh.c +0 -162
- data/third_party/boringssl/crypto/ecdsa_extra/ecdsa_asn1.c +0 -275
- data/third_party/boringssl/crypto/engine/engine.c +0 -98
- data/third_party/boringssl/crypto/err/err.c +0 -847
- data/third_party/boringssl/crypto/err/internal.h +0 -58
- data/third_party/boringssl/crypto/evp/evp.c +0 -362
- data/third_party/boringssl/crypto/evp/evp_asn1.c +0 -337
- data/third_party/boringssl/crypto/evp/evp_ctx.c +0 -446
- data/third_party/boringssl/crypto/evp/internal.h +0 -252
- data/third_party/boringssl/crypto/evp/p_dsa_asn1.c +0 -268
- data/third_party/boringssl/crypto/evp/p_ec.c +0 -239
- data/third_party/boringssl/crypto/evp/p_ec_asn1.c +0 -256
- data/third_party/boringssl/crypto/evp/p_ed25519.c +0 -71
- data/third_party/boringssl/crypto/evp/p_ed25519_asn1.c +0 -190
- data/third_party/boringssl/crypto/evp/p_rsa.c +0 -634
- data/third_party/boringssl/crypto/evp/p_rsa_asn1.c +0 -189
- data/third_party/boringssl/crypto/evp/scrypt.c +0 -209
- data/third_party/boringssl/crypto/fipsmodule/aes/aes.c +0 -1100
- data/third_party/boringssl/crypto/fipsmodule/aes/internal.h +0 -100
- data/third_party/boringssl/crypto/fipsmodule/aes/key_wrap.c +0 -138
- data/third_party/boringssl/crypto/fipsmodule/aes/mode_wrappers.c +0 -112
- data/third_party/boringssl/crypto/fipsmodule/bcm.c +0 -148
- data/third_party/boringssl/crypto/fipsmodule/bn/bn.c +0 -428
- data/third_party/boringssl/crypto/fipsmodule/bn/cmp.c +0 -200
- data/third_party/boringssl/crypto/fipsmodule/bn/ctx.c +0 -303
- data/third_party/boringssl/crypto/fipsmodule/bn/div.c +0 -895
- data/third_party/boringssl/crypto/fipsmodule/bn/exponentiation.c +0 -1356
- data/third_party/boringssl/crypto/fipsmodule/bn/gcd.c +0 -683
- data/third_party/boringssl/crypto/fipsmodule/bn/internal.h +0 -573
- data/third_party/boringssl/crypto/fipsmodule/bn/montgomery.c +0 -526
- data/third_party/boringssl/crypto/fipsmodule/bn/montgomery_inv.c +0 -185
- data/third_party/boringssl/crypto/fipsmodule/bn/mul.c +0 -876
- data/third_party/boringssl/crypto/fipsmodule/bn/prime.c +0 -1154
- data/third_party/boringssl/crypto/fipsmodule/bn/random.c +0 -351
- data/third_party/boringssl/crypto/fipsmodule/bn/rsaz_exp.c +0 -231
- data/third_party/boringssl/crypto/fipsmodule/bn/rsaz_exp.h +0 -33
- data/third_party/boringssl/crypto/fipsmodule/bn/shift.c +0 -364
- data/third_party/boringssl/crypto/fipsmodule/cipher/cipher.c +0 -615
- data/third_party/boringssl/crypto/fipsmodule/cipher/e_aes.c +0 -1437
- data/third_party/boringssl/crypto/fipsmodule/cipher/e_des.c +0 -233
- data/third_party/boringssl/crypto/fipsmodule/cipher/internal.h +0 -129
- data/third_party/boringssl/crypto/fipsmodule/delocate.h +0 -88
- data/third_party/boringssl/crypto/fipsmodule/digest/digest.c +0 -256
- data/third_party/boringssl/crypto/fipsmodule/digest/digests.c +0 -280
- data/third_party/boringssl/crypto/fipsmodule/digest/md32_common.h +0 -268
- data/third_party/boringssl/crypto/fipsmodule/ec/ec.c +0 -974
- data/third_party/boringssl/crypto/fipsmodule/ec/ec_key.c +0 -453
- data/third_party/boringssl/crypto/fipsmodule/ec/ec_montgomery.c +0 -270
- data/third_party/boringssl/crypto/fipsmodule/ec/internal.h +0 -337
- data/third_party/boringssl/crypto/fipsmodule/ec/oct.c +0 -373
- data/third_party/boringssl/crypto/fipsmodule/ec/p224-64.c +0 -1104
- data/third_party/boringssl/crypto/fipsmodule/ec/p256-x86_64-table.h +0 -9503
- data/third_party/boringssl/crypto/fipsmodule/ec/p256-x86_64.c +0 -447
- data/third_party/boringssl/crypto/fipsmodule/ec/p256-x86_64.h +0 -117
- data/third_party/boringssl/crypto/fipsmodule/ec/simple.c +0 -1046
- data/third_party/boringssl/crypto/fipsmodule/ec/util.c +0 -104
- data/third_party/boringssl/crypto/fipsmodule/ec/wnaf.c +0 -354
- data/third_party/boringssl/crypto/fipsmodule/ecdsa/ecdsa.c +0 -458
- data/third_party/boringssl/crypto/fipsmodule/is_fips.c +0 -27
- data/third_party/boringssl/crypto/fipsmodule/md4/md4.c +0 -254
- data/third_party/boringssl/crypto/fipsmodule/md5/md5.c +0 -298
- data/third_party/boringssl/crypto/fipsmodule/modes/cbc.c +0 -211
- data/third_party/boringssl/crypto/fipsmodule/modes/ccm.c +0 -256
- data/third_party/boringssl/crypto/fipsmodule/modes/cfb.c +0 -234
- data/third_party/boringssl/crypto/fipsmodule/modes/ctr.c +0 -220
- data/third_party/boringssl/crypto/fipsmodule/modes/gcm.c +0 -1063
- data/third_party/boringssl/crypto/fipsmodule/modes/internal.h +0 -388
- data/third_party/boringssl/crypto/fipsmodule/modes/ofb.c +0 -95
- data/third_party/boringssl/crypto/fipsmodule/rand/ctrdrbg.c +0 -202
- data/third_party/boringssl/crypto/fipsmodule/rand/internal.h +0 -92
- data/third_party/boringssl/crypto/fipsmodule/rand/rand.c +0 -358
- data/third_party/boringssl/crypto/fipsmodule/rand/urandom.c +0 -302
- data/third_party/boringssl/crypto/fipsmodule/rsa/blinding.c +0 -239
- data/third_party/boringssl/crypto/fipsmodule/rsa/internal.h +0 -126
- data/third_party/boringssl/crypto/fipsmodule/rsa/padding.c +0 -692
- data/third_party/boringssl/crypto/fipsmodule/rsa/rsa.c +0 -875
- data/third_party/boringssl/crypto/fipsmodule/rsa/rsa_impl.c +0 -1218
- data/third_party/boringssl/crypto/fipsmodule/self_check/self_check.c +0 -581
- data/third_party/boringssl/crypto/fipsmodule/sha/sha1.c +0 -375
- data/third_party/boringssl/crypto/fipsmodule/sha/sha256.c +0 -337
- data/third_party/boringssl/crypto/fipsmodule/sha/sha512.c +0 -608
- data/third_party/boringssl/crypto/internal.h +0 -739
- data/third_party/boringssl/crypto/lhash/lhash.c +0 -336
- data/third_party/boringssl/crypto/mem.c +0 -235
- data/third_party/boringssl/crypto/obj/obj.c +0 -554
- data/third_party/boringssl/crypto/obj/obj_dat.h +0 -6244
- data/third_party/boringssl/crypto/pem/pem_all.c +0 -262
- data/third_party/boringssl/crypto/pem/pem_info.c +0 -379
- data/third_party/boringssl/crypto/pem/pem_lib.c +0 -776
- data/third_party/boringssl/crypto/pem/pem_oth.c +0 -88
- data/third_party/boringssl/crypto/pem/pem_pk8.c +0 -258
- data/third_party/boringssl/crypto/pem/pem_pkey.c +0 -227
- data/third_party/boringssl/crypto/pkcs7/pkcs7.c +0 -166
- data/third_party/boringssl/crypto/pkcs7/pkcs7_x509.c +0 -233
- data/third_party/boringssl/crypto/pkcs8/internal.h +0 -120
- data/third_party/boringssl/crypto/pkcs8/p5_pbev2.c +0 -307
- data/third_party/boringssl/crypto/pkcs8/pkcs8.c +0 -513
- data/third_party/boringssl/crypto/pkcs8/pkcs8_x509.c +0 -789
- data/third_party/boringssl/crypto/poly1305/poly1305.c +0 -318
- data/third_party/boringssl/crypto/poly1305/poly1305_arm.c +0 -304
- data/third_party/boringssl/crypto/poly1305/poly1305_vec.c +0 -839
- data/third_party/boringssl/crypto/pool/internal.h +0 -45
- data/third_party/boringssl/crypto/pool/pool.c +0 -200
- data/third_party/boringssl/crypto/rand_extra/deterministic.c +0 -48
- data/third_party/boringssl/crypto/rand_extra/fuchsia.c +0 -43
- data/third_party/boringssl/crypto/rand_extra/windows.c +0 -53
- data/third_party/boringssl/crypto/refcount_lock.c +0 -53
- data/third_party/boringssl/crypto/stack/stack.c +0 -380
- data/third_party/boringssl/crypto/thread_none.c +0 -59
- data/third_party/boringssl/crypto/thread_pthread.c +0 -206
- data/third_party/boringssl/crypto/thread_win.c +0 -237
- data/third_party/boringssl/crypto/x509/a_strex.c +0 -633
- data/third_party/boringssl/crypto/x509/a_verify.c +0 -115
- data/third_party/boringssl/crypto/x509/algorithm.c +0 -153
- data/third_party/boringssl/crypto/x509/asn1_gen.c +0 -841
- data/third_party/boringssl/crypto/x509/by_dir.c +0 -451
- data/third_party/boringssl/crypto/x509/by_file.c +0 -274
- data/third_party/boringssl/crypto/x509/t_crl.c +0 -128
- data/third_party/boringssl/crypto/x509/t_req.c +0 -246
- data/third_party/boringssl/crypto/x509/t_x509.c +0 -547
- data/third_party/boringssl/crypto/x509/x509.c +0 -157
- data/third_party/boringssl/crypto/x509/x509_cmp.c +0 -477
- data/third_party/boringssl/crypto/x509/x509_def.c +0 -103
- data/third_party/boringssl/crypto/x509/x509_lu.c +0 -725
- data/third_party/boringssl/crypto/x509/x509_obj.c +0 -198
- data/third_party/boringssl/crypto/x509/x509_r2x.c +0 -117
- data/third_party/boringssl/crypto/x509/x509_req.c +0 -322
- data/third_party/boringssl/crypto/x509/x509_set.c +0 -164
- data/third_party/boringssl/crypto/x509/x509_trs.c +0 -326
- data/third_party/boringssl/crypto/x509/x509_txt.c +0 -205
- data/third_party/boringssl/crypto/x509/x509_vfy.c +0 -2476
- data/third_party/boringssl/crypto/x509/x509_vpm.c +0 -670
- data/third_party/boringssl/crypto/x509/x509cset.c +0 -170
- data/third_party/boringssl/crypto/x509/x509name.c +0 -389
- data/third_party/boringssl/crypto/x509/x_all.c +0 -501
- data/third_party/boringssl/crypto/x509/x_crl.c +0 -541
- data/third_party/boringssl/crypto/x509/x_pubkey.c +0 -368
- data/third_party/boringssl/crypto/x509/x_sig.c +0 -69
- data/third_party/boringssl/crypto/x509/x_x509.c +0 -328
- data/third_party/boringssl/crypto/x509v3/ext_dat.h +0 -143
- data/third_party/boringssl/crypto/x509v3/pcy_cache.c +0 -284
- data/third_party/boringssl/crypto/x509v3/pcy_node.c +0 -188
- data/third_party/boringssl/crypto/x509v3/pcy_tree.c +0 -840
- data/third_party/boringssl/crypto/x509v3/v3_akey.c +0 -204
- data/third_party/boringssl/crypto/x509v3/v3_alt.c +0 -623
- data/third_party/boringssl/crypto/x509v3/v3_conf.c +0 -462
- data/third_party/boringssl/crypto/x509v3/v3_cpols.c +0 -502
- data/third_party/boringssl/crypto/x509v3/v3_enum.c +0 -100
- data/third_party/boringssl/crypto/x509v3/v3_genn.c +0 -251
- data/third_party/boringssl/crypto/x509v3/v3_info.c +0 -219
- data/third_party/boringssl/crypto/x509v3/v3_lib.c +0 -370
- data/third_party/boringssl/crypto/x509v3/v3_pci.c +0 -287
- data/third_party/boringssl/crypto/x509v3/v3_purp.c +0 -866
- data/third_party/boringssl/crypto/x509v3/v3_skey.c +0 -152
- data/third_party/boringssl/crypto/x509v3/v3_utl.c +0 -1352
- data/third_party/boringssl/include/openssl/aead.h +0 -433
- data/third_party/boringssl/include/openssl/aes.h +0 -170
- data/third_party/boringssl/include/openssl/arm_arch.h +0 -121
- data/third_party/boringssl/include/openssl/asn1.h +0 -981
- data/third_party/boringssl/include/openssl/base.h +0 -457
- data/third_party/boringssl/include/openssl/base64.h +0 -187
- data/third_party/boringssl/include/openssl/bio.h +0 -902
- data/third_party/boringssl/include/openssl/blowfish.h +0 -93
- data/third_party/boringssl/include/openssl/bn.h +0 -1019
- data/third_party/boringssl/include/openssl/buf.h +0 -137
- data/third_party/boringssl/include/openssl/bytestring.h +0 -505
- data/third_party/boringssl/include/openssl/cast.h +0 -96
- data/third_party/boringssl/include/openssl/cipher.h +0 -608
- data/third_party/boringssl/include/openssl/cmac.h +0 -87
- data/third_party/boringssl/include/openssl/conf.h +0 -183
- data/third_party/boringssl/include/openssl/cpu.h +0 -196
- data/third_party/boringssl/include/openssl/crypto.h +0 -122
- data/third_party/boringssl/include/openssl/curve25519.h +0 -201
- data/third_party/boringssl/include/openssl/dh.h +0 -298
- data/third_party/boringssl/include/openssl/digest.h +0 -316
- data/third_party/boringssl/include/openssl/dsa.h +0 -435
- data/third_party/boringssl/include/openssl/ec.h +0 -413
- data/third_party/boringssl/include/openssl/ec_key.h +0 -342
- data/third_party/boringssl/include/openssl/ecdh.h +0 -101
- data/third_party/boringssl/include/openssl/ecdsa.h +0 -199
- data/third_party/boringssl/include/openssl/engine.h +0 -109
- data/third_party/boringssl/include/openssl/err.h +0 -458
- data/third_party/boringssl/include/openssl/evp.h +0 -873
- data/third_party/boringssl/include/openssl/hmac.h +0 -186
- data/third_party/boringssl/include/openssl/lhash.h +0 -174
- data/third_party/boringssl/include/openssl/lhash_macros.h +0 -174
- data/third_party/boringssl/include/openssl/md4.h +0 -106
- data/third_party/boringssl/include/openssl/md5.h +0 -107
- data/third_party/boringssl/include/openssl/mem.h +0 -156
- data/third_party/boringssl/include/openssl/nid.h +0 -4242
- data/third_party/boringssl/include/openssl/obj.h +0 -233
- data/third_party/boringssl/include/openssl/pem.h +0 -397
- data/third_party/boringssl/include/openssl/pkcs7.h +0 -82
- data/third_party/boringssl/include/openssl/pkcs8.h +0 -230
- data/third_party/boringssl/include/openssl/poly1305.h +0 -51
- data/third_party/boringssl/include/openssl/pool.h +0 -91
- data/third_party/boringssl/include/openssl/rand.h +0 -125
- data/third_party/boringssl/include/openssl/ripemd.h +0 -107
- data/third_party/boringssl/include/openssl/rsa.h +0 -756
- data/third_party/boringssl/include/openssl/sha.h +0 -256
- data/third_party/boringssl/include/openssl/span.h +0 -191
- data/third_party/boringssl/include/openssl/ssl.h +0 -4740
- data/third_party/boringssl/include/openssl/ssl3.h +0 -332
- data/third_party/boringssl/include/openssl/stack.h +0 -485
- data/third_party/boringssl/include/openssl/thread.h +0 -191
- data/third_party/boringssl/include/openssl/tls1.h +0 -618
- data/third_party/boringssl/include/openssl/type_check.h +0 -91
- data/third_party/boringssl/include/openssl/x509.h +0 -1180
- data/third_party/boringssl/include/openssl/x509_vfy.h +0 -614
- data/third_party/boringssl/include/openssl/x509v3.h +0 -827
- data/third_party/boringssl/ssl/custom_extensions.cc +0 -265
- data/third_party/boringssl/ssl/d1_both.cc +0 -851
- data/third_party/boringssl/ssl/d1_lib.cc +0 -267
- data/third_party/boringssl/ssl/d1_pkt.cc +0 -274
- data/third_party/boringssl/ssl/d1_srtp.cc +0 -232
- data/third_party/boringssl/ssl/dtls_method.cc +0 -193
- data/third_party/boringssl/ssl/dtls_record.cc +0 -353
- data/third_party/boringssl/ssl/handoff.cc +0 -285
- data/third_party/boringssl/ssl/handshake.cc +0 -630
- data/third_party/boringssl/ssl/handshake_client.cc +0 -1842
- data/third_party/boringssl/ssl/handshake_server.cc +0 -1674
- data/third_party/boringssl/ssl/internal.h +0 -3064
- data/third_party/boringssl/ssl/s3_both.cc +0 -585
- data/third_party/boringssl/ssl/s3_lib.cc +0 -226
- data/third_party/boringssl/ssl/s3_pkt.cc +0 -425
- data/third_party/boringssl/ssl/ssl_aead_ctx.cc +0 -412
- data/third_party/boringssl/ssl/ssl_asn1.cc +0 -844
- data/third_party/boringssl/ssl/ssl_buffer.cc +0 -286
- data/third_party/boringssl/ssl/ssl_cert.cc +0 -913
- data/third_party/boringssl/ssl/ssl_cipher.cc +0 -1781
- data/third_party/boringssl/ssl/ssl_file.cc +0 -583
- data/third_party/boringssl/ssl/ssl_key_share.cc +0 -252
- data/third_party/boringssl/ssl/ssl_lib.cc +0 -2719
- data/third_party/boringssl/ssl/ssl_privkey.cc +0 -494
- data/third_party/boringssl/ssl/ssl_session.cc +0 -1221
- data/third_party/boringssl/ssl/ssl_stat.cc +0 -224
- data/third_party/boringssl/ssl/ssl_transcript.cc +0 -398
- data/third_party/boringssl/ssl/ssl_versions.cc +0 -399
- data/third_party/boringssl/ssl/ssl_x509.cc +0 -1297
- data/third_party/boringssl/ssl/t1_enc.cc +0 -452
- data/third_party/boringssl/ssl/t1_lib.cc +0 -3783
- data/third_party/boringssl/ssl/tls13_both.cc +0 -559
- data/third_party/boringssl/ssl/tls13_client.cc +0 -891
- data/third_party/boringssl/ssl/tls13_enc.cc +0 -493
- data/third_party/boringssl/ssl/tls13_server.cc +0 -1022
- data/third_party/boringssl/ssl/tls_method.cc +0 -274
- data/third_party/boringssl/ssl/tls_record.cc +0 -703
- data/third_party/boringssl/third_party/fiat/curve25519.c +0 -3230
- data/third_party/boringssl/third_party/fiat/curve25519_tables.h +0 -7880
- data/third_party/boringssl/third_party/fiat/internal.h +0 -154
- data/third_party/boringssl/third_party/fiat/p256.c +0 -1824
- data/third_party/nanopb/pb.h +0 -579
- data/third_party/nanopb/pb_common.c +0 -97
- data/third_party/nanopb/pb_common.h +0 -42
- data/third_party/nanopb/pb_decode.c +0 -1347
- data/third_party/nanopb/pb_decode.h +0 -149
- data/third_party/nanopb/pb_encode.c +0 -696
- data/third_party/nanopb/pb_encode.h +0 -154
@@ -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
|
+
*/
|
@@ -20,19 +20,22 @@
|
|
20
20
|
|
21
21
|
#include "src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h"
|
22
22
|
|
23
|
+
#include <string.h>
|
24
|
+
|
23
25
|
#include <grpc/support/atm.h>
|
24
26
|
#include <grpc/support/log.h>
|
25
27
|
|
28
|
+
#include "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h"
|
26
29
|
#include "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h"
|
27
30
|
#include "src/core/lib/iomgr/error.h"
|
28
31
|
#include "src/core/lib/profiling/timers.h"
|
29
32
|
|
30
|
-
static grpc_error*
|
31
|
-
|
33
|
+
static grpc_error* clr_init_channel_elem(grpc_channel_element* /*elem*/,
|
34
|
+
grpc_channel_element_args* /*args*/) {
|
32
35
|
return GRPC_ERROR_NONE;
|
33
36
|
}
|
34
37
|
|
35
|
-
static void
|
38
|
+
static void clr_destroy_channel_elem(grpc_channel_element* /*elem*/) {}
|
36
39
|
|
37
40
|
namespace {
|
38
41
|
|
@@ -56,7 +59,8 @@ static void on_complete_for_send(void* arg, grpc_error* error) {
|
|
56
59
|
if (error == GRPC_ERROR_NONE) {
|
57
60
|
calld->send_initial_metadata_succeeded = true;
|
58
61
|
}
|
59
|
-
|
62
|
+
grpc_core::Closure::Run(DEBUG_LOCATION, calld->original_on_complete_for_send,
|
63
|
+
GRPC_ERROR_REF(error));
|
60
64
|
}
|
61
65
|
|
62
66
|
static void recv_initial_metadata_ready(void* arg, grpc_error* error) {
|
@@ -64,20 +68,21 @@ static void recv_initial_metadata_ready(void* arg, grpc_error* error) {
|
|
64
68
|
if (error == GRPC_ERROR_NONE) {
|
65
69
|
calld->recv_initial_metadata_succeeded = true;
|
66
70
|
}
|
67
|
-
|
68
|
-
|
71
|
+
grpc_core::Closure::Run(DEBUG_LOCATION,
|
72
|
+
calld->original_recv_initial_metadata_ready,
|
73
|
+
GRPC_ERROR_REF(error));
|
69
74
|
}
|
70
75
|
|
71
|
-
static grpc_error*
|
72
|
-
|
76
|
+
static grpc_error* clr_init_call_elem(grpc_call_element* elem,
|
77
|
+
const grpc_call_element_args* args) {
|
73
78
|
GPR_ASSERT(args->context != nullptr);
|
74
79
|
new (elem->call_data) call_data();
|
75
80
|
return GRPC_ERROR_NONE;
|
76
81
|
}
|
77
82
|
|
78
|
-
static void
|
79
|
-
|
80
|
-
|
83
|
+
static void clr_destroy_call_elem(grpc_call_element* elem,
|
84
|
+
const grpc_call_final_info* /*final_info*/,
|
85
|
+
grpc_closure* /*ignored*/) {
|
81
86
|
call_data* calld = static_cast<call_data*>(elem->call_data);
|
82
87
|
if (calld->client_stats != nullptr) {
|
83
88
|
// Record call finished, optionally setting client_failed_to_send and
|
@@ -89,28 +94,39 @@ static void destroy_call_elem(grpc_call_element* elem,
|
|
89
94
|
calld->~call_data();
|
90
95
|
}
|
91
96
|
|
92
|
-
static void
|
97
|
+
static void clr_start_transport_stream_op_batch(
|
93
98
|
grpc_call_element* elem, grpc_transport_stream_op_batch* batch) {
|
94
99
|
call_data* calld = static_cast<call_data*>(elem->call_data);
|
95
100
|
GPR_TIMER_SCOPE("clr_start_transport_stream_op_batch", 0);
|
96
101
|
// Handle send_initial_metadata.
|
97
102
|
if (batch->send_initial_metadata) {
|
98
|
-
// Grab client stats object from
|
99
|
-
grpc_linked_mdelem*
|
100
|
-
batch->payload->send_initial_metadata.send_initial_metadata->
|
101
|
-
|
102
|
-
|
103
|
+
// Grab client stats object from metadata.
|
104
|
+
grpc_linked_mdelem* client_stats_md =
|
105
|
+
batch->payload->send_initial_metadata.send_initial_metadata->list.head;
|
106
|
+
for (; client_stats_md != nullptr;
|
107
|
+
client_stats_md = client_stats_md->next) {
|
108
|
+
if (GRPC_SLICE_START_PTR(GRPC_MDKEY(client_stats_md->md)) ==
|
109
|
+
static_cast<const void*>(grpc_core::kGrpcLbClientStatsMetadataKey)) {
|
110
|
+
break;
|
111
|
+
}
|
112
|
+
}
|
113
|
+
if (client_stats_md != nullptr) {
|
103
114
|
grpc_core::GrpcLbClientStats* client_stats =
|
104
|
-
|
105
|
-
|
115
|
+
const_cast<grpc_core::GrpcLbClientStats*>(
|
116
|
+
reinterpret_cast<const grpc_core::GrpcLbClientStats*>(
|
117
|
+
GRPC_SLICE_START_PTR(GRPC_MDVALUE(client_stats_md->md))));
|
106
118
|
if (client_stats != nullptr) {
|
107
|
-
calld->client_stats
|
119
|
+
calld->client_stats.reset(client_stats);
|
108
120
|
// Intercept completion.
|
109
121
|
calld->original_on_complete_for_send = batch->on_complete;
|
110
122
|
GRPC_CLOSURE_INIT(&calld->on_complete_for_send, on_complete_for_send,
|
111
123
|
calld, grpc_schedule_on_exec_ctx);
|
112
124
|
batch->on_complete = &calld->on_complete_for_send;
|
113
125
|
}
|
126
|
+
// Remove metadata so it doesn't go out on the wire.
|
127
|
+
grpc_metadata_batch_remove(
|
128
|
+
batch->payload->send_initial_metadata.send_initial_metadata,
|
129
|
+
client_stats_md);
|
114
130
|
}
|
115
131
|
}
|
116
132
|
// Intercept completion of recv_initial_metadata.
|
@@ -128,14 +144,14 @@ static void start_transport_stream_op_batch(
|
|
128
144
|
}
|
129
145
|
|
130
146
|
const grpc_channel_filter grpc_client_load_reporting_filter = {
|
131
|
-
|
147
|
+
clr_start_transport_stream_op_batch,
|
132
148
|
grpc_channel_next_op,
|
133
149
|
sizeof(call_data),
|
134
|
-
|
150
|
+
clr_init_call_elem,
|
135
151
|
grpc_call_stack_ignore_set_pollset_or_pollset_set,
|
136
|
-
|
152
|
+
clr_destroy_call_elem,
|
137
153
|
0, // sizeof(channel_data)
|
138
|
-
|
139
|
-
|
154
|
+
clr_init_channel_elem,
|
155
|
+
clr_destroy_channel_elem,
|
140
156
|
grpc_channel_next_get_info,
|
141
157
|
"client_load_reporting"};
|
@@ -64,6 +64,13 @@
|
|
64
64
|
#include <limits.h>
|
65
65
|
#include <string.h>
|
66
66
|
|
67
|
+
#include "absl/container/inlined_vector.h"
|
68
|
+
#include "absl/strings/str_cat.h"
|
69
|
+
#include "absl/strings/str_format.h"
|
70
|
+
#include "absl/strings/str_join.h"
|
71
|
+
|
72
|
+
#include "upb/upb.hpp"
|
73
|
+
|
67
74
|
#include <grpc/byte_buffer_reader.h>
|
68
75
|
#include <grpc/grpc.h>
|
69
76
|
#include <grpc/support/alloc.h>
|
@@ -71,30 +78,29 @@
|
|
71
78
|
#include <grpc/support/time.h>
|
72
79
|
|
73
80
|
#include "src/core/ext/filters/client_channel/client_channel.h"
|
81
|
+
#include "src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h"
|
74
82
|
#include "src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h"
|
75
83
|
#include "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h"
|
84
|
+
#include "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h"
|
76
85
|
#include "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h"
|
77
86
|
#include "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h"
|
78
87
|
#include "src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h"
|
79
88
|
#include "src/core/ext/filters/client_channel/lb_policy_factory.h"
|
80
89
|
#include "src/core/ext/filters/client_channel/lb_policy_registry.h"
|
81
|
-
#include "src/core/ext/filters/client_channel/parse_address.h"
|
82
90
|
#include "src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h"
|
83
91
|
#include "src/core/ext/filters/client_channel/server_address.h"
|
84
92
|
#include "src/core/lib/backoff/backoff.h"
|
85
93
|
#include "src/core/lib/channel/channel_args.h"
|
86
94
|
#include "src/core/lib/channel/channel_stack.h"
|
87
|
-
#include "src/core/lib/gpr/host_port.h"
|
88
95
|
#include "src/core/lib/gpr/string.h"
|
89
96
|
#include "src/core/lib/gprpp/manual_constructor.h"
|
90
97
|
#include "src/core/lib/gprpp/memory.h"
|
91
98
|
#include "src/core/lib/gprpp/orphanable.h"
|
92
99
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
93
|
-
#include "src/core/lib/iomgr/
|
100
|
+
#include "src/core/lib/iomgr/parse_address.h"
|
94
101
|
#include "src/core/lib/iomgr/sockaddr.h"
|
95
102
|
#include "src/core/lib/iomgr/sockaddr_utils.h"
|
96
103
|
#include "src/core/lib/iomgr/timer.h"
|
97
|
-
#include "src/core/lib/slice/slice_hash_table.h"
|
98
104
|
#include "src/core/lib/slice/slice_internal.h"
|
99
105
|
#include "src/core/lib/slice/slice_string_helpers.h"
|
100
106
|
#include "src/core/lib/surface/call.h"
|
@@ -109,28 +115,36 @@
|
|
109
115
|
#define GRPC_GRPCLB_DEFAULT_FALLBACK_TIMEOUT_MS 10000
|
110
116
|
|
111
117
|
#define GRPC_ARG_GRPCLB_ADDRESS_LB_TOKEN "grpc.grpclb_address_lb_token"
|
118
|
+
#define GRPC_ARG_GRPCLB_ADDRESS_CLIENT_STATS "grpc.grpclb_address_client_stats"
|
112
119
|
|
113
120
|
namespace grpc_core {
|
114
121
|
|
115
122
|
TraceFlag grpc_lb_glb_trace(false, "glb");
|
116
123
|
|
124
|
+
const char kGrpcLbClientStatsMetadataKey[] = "grpclb_client_stats";
|
125
|
+
const char kGrpcLbLbTokenMetadataKey[] = "lb-token";
|
126
|
+
|
117
127
|
namespace {
|
118
128
|
|
119
129
|
constexpr char kGrpclb[] = "grpclb";
|
120
130
|
|
121
|
-
class
|
131
|
+
class GrpcLbConfig : public LoadBalancingPolicy::Config {
|
122
132
|
public:
|
123
|
-
|
124
|
-
|
125
|
-
: child_policy_(std::move(child_policy))
|
133
|
+
GrpcLbConfig(RefCountedPtr<LoadBalancingPolicy::Config> child_policy,
|
134
|
+
std::string service_name)
|
135
|
+
: child_policy_(std::move(child_policy)),
|
136
|
+
service_name_(std::move(service_name)) {}
|
126
137
|
const char* name() const override { return kGrpclb; }
|
127
138
|
|
128
|
-
RefCountedPtr<
|
139
|
+
RefCountedPtr<LoadBalancingPolicy::Config> child_policy() const {
|
129
140
|
return child_policy_;
|
130
141
|
}
|
131
142
|
|
143
|
+
const std::string& service_name() const { return service_name_; }
|
144
|
+
|
132
145
|
private:
|
133
|
-
RefCountedPtr<
|
146
|
+
RefCountedPtr<LoadBalancingPolicy::Config> child_policy_;
|
147
|
+
std::string service_name_;
|
134
148
|
};
|
135
149
|
|
136
150
|
class GrpcLb : public LoadBalancingPolicy {
|
@@ -141,9 +155,6 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
141
155
|
|
142
156
|
void UpdateLocked(UpdateArgs args) override;
|
143
157
|
void ResetBackoffLocked() override;
|
144
|
-
void FillChildRefsForChannelz(
|
145
|
-
channelz::ChildRefsList* child_subchannels,
|
146
|
-
channelz::ChildRefsList* child_channels) override;
|
147
158
|
|
148
159
|
private:
|
149
160
|
/// Contains a call to the LB server and all the data related to the call.
|
@@ -151,6 +162,7 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
151
162
|
public:
|
152
163
|
explicit BalancerCallState(
|
153
164
|
RefCountedPtr<LoadBalancingPolicy> parent_grpclb_policy);
|
165
|
+
~BalancerCallState();
|
154
166
|
|
155
167
|
// It's the caller's responsibility to ensure that Orphan() is called from
|
156
168
|
// inside the combiner.
|
@@ -164,12 +176,6 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
164
176
|
bool seen_serverlist() const { return seen_serverlist_; }
|
165
177
|
|
166
178
|
private:
|
167
|
-
// So Delete() can access our private dtor.
|
168
|
-
template <typename T>
|
169
|
-
friend void grpc_core::Delete(T*);
|
170
|
-
|
171
|
-
~BalancerCallState();
|
172
|
-
|
173
179
|
GrpcLb* grpclb_policy() const {
|
174
180
|
return static_cast<GrpcLb*>(grpclb_policy_.get());
|
175
181
|
}
|
@@ -177,13 +183,17 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
177
183
|
void ScheduleNextClientLoadReportLocked();
|
178
184
|
void SendClientLoadReportLocked();
|
179
185
|
|
180
|
-
static
|
186
|
+
static void MaybeSendClientLoadReport(void* arg, grpc_error* error);
|
187
|
+
static void ClientLoadReportDone(void* arg, grpc_error* error);
|
188
|
+
static void OnInitialRequestSent(void* arg, grpc_error* error);
|
189
|
+
static void OnBalancerMessageReceived(void* arg, grpc_error* error);
|
190
|
+
static void OnBalancerStatusReceived(void* arg, grpc_error* error);
|
181
191
|
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
192
|
+
void MaybeSendClientLoadReportLocked(grpc_error* error);
|
193
|
+
void ClientLoadReportDoneLocked(grpc_error* error);
|
194
|
+
void OnInitialRequestSentLocked();
|
195
|
+
void OnBalancerMessageReceivedLocked();
|
196
|
+
void OnBalancerStatusReceivedLocked(grpc_error* error);
|
187
197
|
|
188
198
|
// The owning LB policy.
|
189
199
|
RefCountedPtr<LoadBalancingPolicy> grpclb_policy_;
|
@@ -226,17 +236,15 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
226
236
|
class Serverlist : public RefCounted<Serverlist> {
|
227
237
|
public:
|
228
238
|
// Takes ownership of serverlist.
|
229
|
-
explicit Serverlist(
|
230
|
-
: serverlist_(serverlist) {}
|
231
|
-
|
232
|
-
~Serverlist() { grpc_grpclb_destroy_serverlist(serverlist_); }
|
239
|
+
explicit Serverlist(std::vector<GrpcLbServer> serverlist)
|
240
|
+
: serverlist_(std::move(serverlist)) {}
|
233
241
|
|
234
242
|
bool operator==(const Serverlist& other) const;
|
235
243
|
|
236
|
-
const
|
244
|
+
const std::vector<GrpcLbServer>& serverlist() const { return serverlist_; }
|
237
245
|
|
238
246
|
// Returns a text representation suitable for logging.
|
239
|
-
|
247
|
+
std::string AsText() const;
|
240
248
|
|
241
249
|
// Extracts all non-drop entries into a ServerAddressList.
|
242
250
|
ServerAddressList GetServerAddressList(
|
@@ -250,16 +258,16 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
250
258
|
// should not be dropped.
|
251
259
|
//
|
252
260
|
// Note: This is called from the picker, so it will be invoked in
|
253
|
-
// the channel's data plane
|
254
|
-
//
|
261
|
+
// the channel's data plane mutex, NOT the control plane
|
262
|
+
// work_serializer. It should not be accessed by any other part of the LB
|
255
263
|
// policy.
|
256
264
|
const char* ShouldDrop();
|
257
265
|
|
258
266
|
private:
|
259
|
-
|
267
|
+
std::vector<GrpcLbServer> serverlist_;
|
260
268
|
|
261
|
-
// Guarded by the channel's data plane
|
262
|
-
// plane
|
269
|
+
// Guarded by the channel's data plane mutex, NOT the control
|
270
|
+
// plane work_serializer. It should not be accessed by anything but the
|
263
271
|
// picker via the ShouldDrop() method.
|
264
272
|
size_t drop_index_ = 0;
|
265
273
|
};
|
@@ -267,14 +275,14 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
267
275
|
class Picker : public SubchannelPicker {
|
268
276
|
public:
|
269
277
|
Picker(GrpcLb* parent, RefCountedPtr<Serverlist> serverlist,
|
270
|
-
|
278
|
+
std::unique_ptr<SubchannelPicker> child_picker,
|
271
279
|
RefCountedPtr<GrpcLbClientStats> client_stats)
|
272
280
|
: parent_(parent),
|
273
281
|
serverlist_(std::move(serverlist)),
|
274
282
|
child_picker_(std::move(child_picker)),
|
275
283
|
client_stats_(std::move(client_stats)) {}
|
276
284
|
|
277
|
-
PickResult Pick(PickArgs
|
285
|
+
PickResult Pick(PickArgs args) override;
|
278
286
|
|
279
287
|
private:
|
280
288
|
// Storing the address for logging, but not holding a ref.
|
@@ -284,7 +292,7 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
284
292
|
// Serverlist to be used for determining drops.
|
285
293
|
RefCountedPtr<Serverlist> serverlist_;
|
286
294
|
|
287
|
-
|
295
|
+
std::unique_ptr<SubchannelPicker> child_picker_;
|
288
296
|
RefCountedPtr<GrpcLbClientStats> client_stats_;
|
289
297
|
};
|
290
298
|
|
@@ -293,21 +301,48 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
293
301
|
explicit Helper(RefCountedPtr<GrpcLb> parent)
|
294
302
|
: parent_(std::move(parent)) {}
|
295
303
|
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
UniquePtr<SubchannelPicker> picker) override;
|
304
|
+
RefCountedPtr<SubchannelInterface> CreateSubchannel(
|
305
|
+
const grpc_channel_args& args) override;
|
306
|
+
void UpdateState(grpc_connectivity_state state, const absl::Status& status,
|
307
|
+
std::unique_ptr<SubchannelPicker> picker) override;
|
301
308
|
void RequestReresolution() override;
|
309
|
+
void AddTraceEvent(TraceSeverity severity,
|
310
|
+
absl::string_view message) override;
|
302
311
|
|
303
|
-
|
312
|
+
private:
|
313
|
+
RefCountedPtr<GrpcLb> parent_;
|
314
|
+
};
|
315
|
+
|
316
|
+
class StateWatcher : public AsyncConnectivityStateWatcherInterface {
|
317
|
+
public:
|
318
|
+
explicit StateWatcher(RefCountedPtr<GrpcLb> parent)
|
319
|
+
: AsyncConnectivityStateWatcherInterface(parent->work_serializer()),
|
320
|
+
parent_(std::move(parent)) {}
|
321
|
+
|
322
|
+
~StateWatcher() { parent_.reset(DEBUG_LOCATION, "StateWatcher"); }
|
304
323
|
|
305
324
|
private:
|
306
|
-
|
307
|
-
|
325
|
+
void OnConnectivityStateChange(grpc_connectivity_state new_state,
|
326
|
+
const absl::Status& status) override {
|
327
|
+
if (parent_->fallback_at_startup_checks_pending_ &&
|
328
|
+
new_state == GRPC_CHANNEL_TRANSIENT_FAILURE) {
|
329
|
+
// In TRANSIENT_FAILURE. Cancel the fallback timer and go into
|
330
|
+
// fallback mode immediately.
|
331
|
+
gpr_log(GPR_INFO,
|
332
|
+
"[grpclb %p] balancer channel in state:TRANSIENT_FAILURE (%s); "
|
333
|
+
"entering fallback mode",
|
334
|
+
parent_.get(), status.ToString().c_str());
|
335
|
+
parent_->fallback_at_startup_checks_pending_ = false;
|
336
|
+
grpc_timer_cancel(&parent_->lb_fallback_timer_);
|
337
|
+
parent_->fallback_mode_ = true;
|
338
|
+
parent_->CreateOrUpdateChildPolicyLocked();
|
339
|
+
// Cancel the watch, since we don't care about the channel state once we
|
340
|
+
// go into fallback mode.
|
341
|
+
parent_->CancelBalancerChannelConnectivityWatchLocked();
|
342
|
+
}
|
343
|
+
}
|
308
344
|
|
309
345
|
RefCountedPtr<GrpcLb> parent_;
|
310
|
-
LoadBalancingPolicy* child_ = nullptr;
|
311
346
|
};
|
312
347
|
|
313
348
|
~GrpcLb();
|
@@ -317,28 +352,31 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
317
352
|
// Helper functions used in UpdateLocked().
|
318
353
|
void ProcessAddressesAndChannelArgsLocked(const ServerAddressList& addresses,
|
319
354
|
const grpc_channel_args& args);
|
320
|
-
|
321
|
-
grpc_error* error);
|
355
|
+
|
322
356
|
void CancelBalancerChannelConnectivityWatchLocked();
|
323
357
|
|
324
358
|
// Methods for dealing with fallback state.
|
325
359
|
void MaybeEnterFallbackModeAfterStartup();
|
326
|
-
static void
|
360
|
+
static void OnFallbackTimer(void* arg, grpc_error* error);
|
361
|
+
void OnFallbackTimerLocked(grpc_error* error);
|
327
362
|
|
328
363
|
// Methods for dealing with the balancer call.
|
329
364
|
void StartBalancerCallLocked();
|
330
365
|
void StartBalancerCallRetryTimerLocked();
|
331
|
-
static void
|
366
|
+
static void OnBalancerCallRetryTimer(void* arg, grpc_error* error);
|
367
|
+
void OnBalancerCallRetryTimerLocked(grpc_error* error);
|
332
368
|
|
333
369
|
// Methods for dealing with the child policy.
|
334
370
|
grpc_channel_args* CreateChildPolicyArgsLocked(
|
335
371
|
bool is_backend_from_grpclb_load_balancer);
|
336
372
|
OrphanablePtr<LoadBalancingPolicy> CreateChildPolicyLocked(
|
337
|
-
const
|
373
|
+
const grpc_channel_args* args);
|
338
374
|
void CreateOrUpdateChildPolicyLocked();
|
339
375
|
|
340
376
|
// Who the client is trying to communicate with.
|
341
377
|
const char* server_name_ = nullptr;
|
378
|
+
// Configurations for the policy.
|
379
|
+
RefCountedPtr<GrpcLbConfig> config_;
|
342
380
|
|
343
381
|
// Current channel args from the resolver.
|
344
382
|
grpc_channel_args* args_ = nullptr;
|
@@ -348,8 +386,7 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
348
386
|
|
349
387
|
// The channel for communicating with the LB server.
|
350
388
|
grpc_channel* lb_channel_ = nullptr;
|
351
|
-
|
352
|
-
gpr_atm lb_channel_uuid_ = 0;
|
389
|
+
StateWatcher* watcher_ = nullptr;
|
353
390
|
// Response generator to inject address updates into lb_channel_.
|
354
391
|
RefCountedPtr<FakeResolverResponseGenerator> response_generator_;
|
355
392
|
|
@@ -382,19 +419,9 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
382
419
|
bool fallback_at_startup_checks_pending_ = false;
|
383
420
|
grpc_timer lb_fallback_timer_;
|
384
421
|
grpc_closure lb_on_fallback_;
|
385
|
-
grpc_connectivity_state lb_channel_connectivity_ = GRPC_CHANNEL_IDLE;
|
386
|
-
grpc_closure lb_channel_on_connectivity_changed_;
|
387
422
|
|
388
|
-
// Lock held when modifying the value of child_policy_ or
|
389
|
-
// pending_child_policy_.
|
390
|
-
gpr_mu child_policy_mu_;
|
391
423
|
// The child policy to use for the backends.
|
392
424
|
OrphanablePtr<LoadBalancingPolicy> child_policy_;
|
393
|
-
// When switching child policies, the new policy will be stored here
|
394
|
-
// until it reports READY, at which point it will be moved to child_policy_.
|
395
|
-
OrphanablePtr<LoadBalancingPolicy> pending_child_policy_;
|
396
|
-
// The child policy config.
|
397
|
-
RefCountedPtr<ParsedLoadBalancingConfig> child_policy_config_;
|
398
425
|
// Child policy in state READY.
|
399
426
|
bool child_policy_ready_ = false;
|
400
427
|
};
|
@@ -404,92 +431,102 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
404
431
|
//
|
405
432
|
|
406
433
|
bool GrpcLb::Serverlist::operator==(const Serverlist& other) const {
|
407
|
-
return
|
434
|
+
return serverlist_ == other.serverlist_;
|
408
435
|
}
|
409
436
|
|
410
|
-
void ParseServer(const
|
411
|
-
grpc_resolved_address* addr) {
|
437
|
+
void ParseServer(const GrpcLbServer& server, grpc_resolved_address* addr) {
|
412
438
|
memset(addr, 0, sizeof(*addr));
|
413
|
-
if (server
|
414
|
-
const uint16_t netorder_port = grpc_htons((uint16_t)server
|
439
|
+
if (server.drop) return;
|
440
|
+
const uint16_t netorder_port = grpc_htons((uint16_t)server.port);
|
415
441
|
/* the addresses are given in binary format (a in(6)_addr struct) in
|
416
442
|
* server->ip_address.bytes. */
|
417
|
-
|
418
|
-
if (ip->size == 4) {
|
443
|
+
if (server.ip_size == 4) {
|
419
444
|
addr->len = static_cast<socklen_t>(sizeof(grpc_sockaddr_in));
|
420
445
|
grpc_sockaddr_in* addr4 = reinterpret_cast<grpc_sockaddr_in*>(&addr->addr);
|
421
446
|
addr4->sin_family = GRPC_AF_INET;
|
422
|
-
memcpy(&addr4->sin_addr,
|
447
|
+
memcpy(&addr4->sin_addr, server.ip_addr, server.ip_size);
|
423
448
|
addr4->sin_port = netorder_port;
|
424
|
-
} else if (
|
449
|
+
} else if (server.ip_size == 16) {
|
425
450
|
addr->len = static_cast<socklen_t>(sizeof(grpc_sockaddr_in6));
|
426
451
|
grpc_sockaddr_in6* addr6 = (grpc_sockaddr_in6*)&addr->addr;
|
427
452
|
addr6->sin6_family = GRPC_AF_INET6;
|
428
|
-
memcpy(&addr6->sin6_addr,
|
453
|
+
memcpy(&addr6->sin6_addr, server.ip_addr, server.ip_size);
|
429
454
|
addr6->sin6_port = netorder_port;
|
430
455
|
}
|
431
456
|
}
|
432
457
|
|
433
|
-
|
434
|
-
|
435
|
-
|
436
|
-
|
437
|
-
|
438
|
-
|
439
|
-
|
440
|
-
ipport = gpr_strdup("(drop)");
|
458
|
+
std::string GrpcLb::Serverlist::AsText() const {
|
459
|
+
std::vector<std::string> entries;
|
460
|
+
for (size_t i = 0; i < serverlist_.size(); ++i) {
|
461
|
+
const GrpcLbServer& server = serverlist_[i];
|
462
|
+
std::string ipport;
|
463
|
+
if (server.drop) {
|
464
|
+
ipport = "(drop)";
|
441
465
|
} else {
|
442
466
|
grpc_resolved_address addr;
|
443
467
|
ParseServer(server, &addr);
|
444
|
-
grpc_sockaddr_to_string(&
|
468
|
+
ipport = grpc_sockaddr_to_string(&addr, false);
|
445
469
|
}
|
446
|
-
|
447
|
-
|
448
|
-
server->load_balance_token);
|
449
|
-
gpr_free(ipport);
|
450
|
-
gpr_strvec_add(&entries, entry);
|
470
|
+
entries.push_back(absl::StrFormat(" %" PRIuPTR ": %s token=%s\n", i,
|
471
|
+
ipport, server.load_balance_token));
|
451
472
|
}
|
452
|
-
|
453
|
-
gpr_strvec_destroy(&entries);
|
454
|
-
return result;
|
473
|
+
return absl::StrJoin(entries, "");
|
455
474
|
}
|
456
475
|
|
457
|
-
//
|
476
|
+
// vtables for channel args for LB token and client stats.
|
458
477
|
void* lb_token_copy(void* token) {
|
459
|
-
return token
|
460
|
-
? nullptr
|
461
|
-
: (void*)GRPC_MDELEM_REF(grpc_mdelem{(uintptr_t)token}).payload;
|
478
|
+
return gpr_strdup(static_cast<char*>(token));
|
462
479
|
}
|
463
|
-
void lb_token_destroy(void* token) {
|
464
|
-
|
465
|
-
|
466
|
-
|
480
|
+
void lb_token_destroy(void* token) { gpr_free(token); }
|
481
|
+
void* client_stats_copy(void* p) {
|
482
|
+
GrpcLbClientStats* client_stats = static_cast<GrpcLbClientStats*>(p);
|
483
|
+
client_stats->Ref().release();
|
484
|
+
return p;
|
485
|
+
}
|
486
|
+
void client_stats_destroy(void* p) {
|
487
|
+
GrpcLbClientStats* client_stats = static_cast<GrpcLbClientStats*>(p);
|
488
|
+
client_stats->Unref();
|
467
489
|
}
|
468
|
-
int
|
490
|
+
int equal_cmp(void* /*p1*/, void* /*p2*/) {
|
469
491
|
// Always indicate a match, since we don't want this channel arg to
|
470
492
|
// affect the subchannel's key in the index.
|
493
|
+
// TODO(roth): Is this right? This does prevent us from needlessly
|
494
|
+
// recreating the subchannel whenever the LB token or client stats
|
495
|
+
// changes (i.e., when the balancer call is terminated and reestablished).
|
496
|
+
// However, it means that we don't actually recreate the subchannel,
|
497
|
+
// which means that we won't ever switch over to using the new LB
|
498
|
+
// token or client stats. A better approach might be to find somewhere
|
499
|
+
// other than the subchannel args to store the LB token and client
|
500
|
+
// stats. They could be stored in a map and then looked up for each
|
501
|
+
// call. Or we could do something more complicated whereby
|
502
|
+
// we create our own subchannel wrapper to store them, although that would
|
503
|
+
// involve a lot of refcounting overhead.
|
504
|
+
// Given that we're trying to move from grpclb to xds at this point,
|
505
|
+
// and that no one has actually reported any problems with this, we
|
506
|
+
// probably won't bother fixing this at this point.
|
471
507
|
return 0;
|
472
508
|
}
|
473
509
|
const grpc_arg_pointer_vtable lb_token_arg_vtable = {
|
474
|
-
lb_token_copy, lb_token_destroy,
|
510
|
+
lb_token_copy, lb_token_destroy, equal_cmp};
|
511
|
+
const grpc_arg_pointer_vtable client_stats_arg_vtable = {
|
512
|
+
client_stats_copy, client_stats_destroy, equal_cmp};
|
475
513
|
|
476
|
-
bool IsServerValid(const
|
477
|
-
if (server
|
478
|
-
|
479
|
-
if (GPR_UNLIKELY(server->port >> 16 != 0)) {
|
514
|
+
bool IsServerValid(const GrpcLbServer& server, size_t idx, bool log) {
|
515
|
+
if (server.drop) return false;
|
516
|
+
if (GPR_UNLIKELY(server.port >> 16 != 0)) {
|
480
517
|
if (log) {
|
481
518
|
gpr_log(GPR_ERROR,
|
482
519
|
"Invalid port '%d' at index %lu of serverlist. Ignoring.",
|
483
|
-
server
|
520
|
+
server.port, (unsigned long)idx);
|
484
521
|
}
|
485
522
|
return false;
|
486
523
|
}
|
487
|
-
if (GPR_UNLIKELY(
|
524
|
+
if (GPR_UNLIKELY(server.ip_size != 4 && server.ip_size != 16)) {
|
488
525
|
if (log) {
|
489
526
|
gpr_log(GPR_ERROR,
|
490
527
|
"Expected IP to be 4 or 16 bytes, got %d at index %lu of "
|
491
528
|
"serverlist. Ignoring",
|
492
|
-
|
529
|
+
server.ip_size, (unsigned long)idx);
|
493
530
|
}
|
494
531
|
return false;
|
495
532
|
}
|
@@ -500,68 +537,66 @@ bool IsServerValid(const grpc_grpclb_server* server, size_t idx, bool log) {
|
|
500
537
|
ServerAddressList GrpcLb::Serverlist::GetServerAddressList(
|
501
538
|
GrpcLbClientStats* client_stats) const {
|
502
539
|
ServerAddressList addresses;
|
503
|
-
for (size_t i = 0; i < serverlist_
|
504
|
-
const
|
505
|
-
if (!IsServerValid(
|
540
|
+
for (size_t i = 0; i < serverlist_.size(); ++i) {
|
541
|
+
const GrpcLbServer& server = serverlist_[i];
|
542
|
+
if (!IsServerValid(server, i, false)) continue;
|
506
543
|
// Address processing.
|
507
544
|
grpc_resolved_address addr;
|
508
545
|
ParseServer(server, &addr);
|
509
546
|
// LB token processing.
|
510
|
-
|
511
|
-
if (server
|
547
|
+
char lb_token[GPR_ARRAY_SIZE(server.load_balance_token) + 1];
|
548
|
+
if (server.load_balance_token[0] != 0) {
|
512
549
|
const size_t lb_token_max_length =
|
513
|
-
GPR_ARRAY_SIZE(server
|
550
|
+
GPR_ARRAY_SIZE(server.load_balance_token);
|
514
551
|
const size_t lb_token_length =
|
515
|
-
strnlen(server
|
516
|
-
|
517
|
-
|
518
|
-
lb_token = grpc_mdelem_from_slices(GRPC_MDSTR_LB_TOKEN, lb_token_mdstr);
|
519
|
-
if (client_stats != nullptr) {
|
520
|
-
GPR_ASSERT(grpc_mdelem_set_user_data(
|
521
|
-
lb_token, GrpcLbClientStats::Destroy,
|
522
|
-
client_stats->Ref().release()) == client_stats);
|
523
|
-
}
|
552
|
+
strnlen(server.load_balance_token, lb_token_max_length);
|
553
|
+
memcpy(lb_token, server.load_balance_token, lb_token_length);
|
554
|
+
lb_token[lb_token_length] = '\0';
|
524
555
|
} else {
|
525
|
-
char* uri = grpc_sockaddr_to_uri(&addr);
|
526
556
|
gpr_log(GPR_INFO,
|
527
557
|
"Missing LB token for backend address '%s'. The empty token will "
|
528
558
|
"be used instead",
|
529
|
-
|
530
|
-
|
531
|
-
lb_token = GRPC_MDELEM_LB_TOKEN_EMPTY;
|
559
|
+
grpc_sockaddr_to_uri(&addr).c_str());
|
560
|
+
lb_token[0] = '\0';
|
532
561
|
}
|
533
562
|
// Add address.
|
534
|
-
grpc_arg
|
535
|
-
|
536
|
-
(
|
537
|
-
|
563
|
+
absl::InlinedVector<grpc_arg, 2> args_to_add;
|
564
|
+
args_to_add.emplace_back(grpc_channel_arg_pointer_create(
|
565
|
+
const_cast<char*>(GRPC_ARG_GRPCLB_ADDRESS_LB_TOKEN), lb_token,
|
566
|
+
&lb_token_arg_vtable));
|
567
|
+
if (client_stats != nullptr) {
|
568
|
+
args_to_add.emplace_back(grpc_channel_arg_pointer_create(
|
569
|
+
const_cast<char*>(GRPC_ARG_GRPCLB_ADDRESS_CLIENT_STATS), client_stats,
|
570
|
+
&client_stats_arg_vtable));
|
571
|
+
}
|
572
|
+
grpc_channel_args* args = grpc_channel_args_copy_and_add(
|
573
|
+
nullptr, args_to_add.data(), args_to_add.size());
|
538
574
|
addresses.emplace_back(addr, args);
|
539
|
-
// Clean up.
|
540
|
-
GRPC_MDELEM_UNREF(lb_token);
|
541
575
|
}
|
542
576
|
return addresses;
|
543
577
|
}
|
544
578
|
|
545
579
|
bool GrpcLb::Serverlist::ContainsAllDropEntries() const {
|
546
|
-
if (serverlist_
|
547
|
-
for (
|
548
|
-
if (!
|
580
|
+
if (serverlist_.empty()) return false;
|
581
|
+
for (const GrpcLbServer& server : serverlist_) {
|
582
|
+
if (!server.drop) return false;
|
549
583
|
}
|
550
584
|
return true;
|
551
585
|
}
|
552
586
|
|
553
587
|
const char* GrpcLb::Serverlist::ShouldDrop() {
|
554
|
-
if (serverlist_
|
555
|
-
|
556
|
-
drop_index_ = (drop_index_ + 1) % serverlist_
|
557
|
-
return server
|
588
|
+
if (serverlist_.empty()) return nullptr;
|
589
|
+
GrpcLbServer& server = serverlist_[drop_index_];
|
590
|
+
drop_index_ = (drop_index_ + 1) % serverlist_.size();
|
591
|
+
return server.drop ? server.load_balance_token : nullptr;
|
558
592
|
}
|
559
593
|
|
560
594
|
//
|
561
595
|
// GrpcLb::Picker
|
562
596
|
//
|
563
597
|
|
564
|
-
GrpcLb::PickResult GrpcLb::Picker::Pick(PickArgs
|
598
|
+
GrpcLb::PickResult GrpcLb::Picker::Pick(PickArgs args) {
|
599
|
+
PickResult result;
|
565
600
|
// Check if we should drop the call.
|
566
601
|
const char* drop_token = serverlist_->ShouldDrop();
|
567
602
|
if (drop_token != nullptr) {
|
@@ -573,32 +608,43 @@ GrpcLb::PickResult GrpcLb::Picker::Pick(PickArgs* pick, grpc_error** error) {
|
|
573
608
|
if (client_stats_ != nullptr) {
|
574
609
|
client_stats_->AddCallDropped(drop_token);
|
575
610
|
}
|
576
|
-
|
611
|
+
result.type = PickResult::PICK_COMPLETE;
|
612
|
+
return result;
|
577
613
|
}
|
578
614
|
// Forward pick to child policy.
|
579
|
-
|
615
|
+
result = child_picker_->Pick(args);
|
580
616
|
// If pick succeeded, add LB token to initial metadata.
|
581
|
-
if (result == PickResult::PICK_COMPLETE &&
|
582
|
-
|
583
|
-
|
584
|
-
|
617
|
+
if (result.type == PickResult::PICK_COMPLETE &&
|
618
|
+
result.subchannel != nullptr) {
|
619
|
+
// Encode client stats object into metadata for use by
|
620
|
+
// client_load_reporting filter.
|
621
|
+
const grpc_arg* arg =
|
622
|
+
grpc_channel_args_find(result.subchannel->channel_args(),
|
623
|
+
GRPC_ARG_GRPCLB_ADDRESS_CLIENT_STATS);
|
624
|
+
if (arg != nullptr && arg->type == GRPC_ARG_POINTER &&
|
625
|
+
arg->value.pointer.p != nullptr) {
|
626
|
+
GrpcLbClientStats* client_stats =
|
627
|
+
static_cast<GrpcLbClientStats*>(arg->value.pointer.p);
|
628
|
+
client_stats->Ref().release(); // Ref passed via metadata.
|
629
|
+
// The metadata value is a hack: we pretend the pointer points to
|
630
|
+
// a string and rely on the client_load_reporting filter to know
|
631
|
+
// how to interpret it.
|
632
|
+
args.initial_metadata->Add(
|
633
|
+
kGrpcLbClientStatsMetadataKey,
|
634
|
+
absl::string_view(reinterpret_cast<const char*>(client_stats), 0));
|
635
|
+
// Update calls-started.
|
636
|
+
client_stats->AddCallStarted();
|
637
|
+
}
|
638
|
+
// Encode the LB token in metadata.
|
639
|
+
arg = grpc_channel_args_find(result.subchannel->channel_args(),
|
640
|
+
GRPC_ARG_GRPCLB_ADDRESS_LB_TOKEN);
|
585
641
|
if (arg == nullptr) {
|
586
|
-
gpr_log(GPR_ERROR,
|
587
|
-
|
588
|
-
"pick %p",
|
589
|
-
parent_, this, pick);
|
642
|
+
gpr_log(GPR_ERROR, "[grpclb %p picker %p] No LB token for subchannel %p",
|
643
|
+
parent_, this, result.subchannel.get());
|
590
644
|
abort();
|
591
645
|
}
|
592
|
-
|
593
|
-
|
594
|
-
GPR_ASSERT(grpc_metadata_batch_add_tail(
|
595
|
-
pick->initial_metadata, &pick->lb_token_mdelem_storage,
|
596
|
-
GRPC_MDELEM_REF(lb_token)) == GRPC_ERROR_NONE);
|
597
|
-
GrpcLbClientStats* client_stats = static_cast<GrpcLbClientStats*>(
|
598
|
-
grpc_mdelem_get_user_data(lb_token, GrpcLbClientStats::Destroy));
|
599
|
-
if (client_stats != nullptr) {
|
600
|
-
client_stats->AddCallStarted();
|
601
|
-
}
|
646
|
+
args.initial_metadata->Add(kGrpcLbLbTokenMetadataKey,
|
647
|
+
static_cast<char*>(arg->value.pointer.p));
|
602
648
|
}
|
603
649
|
return result;
|
604
650
|
}
|
@@ -607,55 +653,16 @@ GrpcLb::PickResult GrpcLb::Picker::Pick(PickArgs* pick, grpc_error** error) {
|
|
607
653
|
// GrpcLb::Helper
|
608
654
|
//
|
609
655
|
|
610
|
-
|
611
|
-
|
612
|
-
|
613
|
-
}
|
614
|
-
|
615
|
-
bool GrpcLb::Helper::CalledByCurrentChild() const {
|
616
|
-
GPR_ASSERT(child_ != nullptr);
|
617
|
-
return child_ == parent_->child_policy_.get();
|
618
|
-
}
|
619
|
-
|
620
|
-
Subchannel* GrpcLb::Helper::CreateSubchannel(const grpc_channel_args& args) {
|
621
|
-
if (parent_->shutting_down_ ||
|
622
|
-
(!CalledByPendingChild() && !CalledByCurrentChild())) {
|
623
|
-
return nullptr;
|
624
|
-
}
|
656
|
+
RefCountedPtr<SubchannelInterface> GrpcLb::Helper::CreateSubchannel(
|
657
|
+
const grpc_channel_args& args) {
|
658
|
+
if (parent_->shutting_down_) return nullptr;
|
625
659
|
return parent_->channel_control_helper()->CreateSubchannel(args);
|
626
660
|
}
|
627
661
|
|
628
|
-
grpc_channel* GrpcLb::Helper::CreateChannel(const char* target,
|
629
|
-
const grpc_channel_args& args) {
|
630
|
-
if (parent_->shutting_down_ ||
|
631
|
-
(!CalledByPendingChild() && !CalledByCurrentChild())) {
|
632
|
-
return nullptr;
|
633
|
-
}
|
634
|
-
return parent_->channel_control_helper()->CreateChannel(target, args);
|
635
|
-
}
|
636
|
-
|
637
662
|
void GrpcLb::Helper::UpdateState(grpc_connectivity_state state,
|
638
|
-
|
663
|
+
const absl::Status& status,
|
664
|
+
std::unique_ptr<SubchannelPicker> picker) {
|
639
665
|
if (parent_->shutting_down_) return;
|
640
|
-
// If this request is from the pending child policy, ignore it until
|
641
|
-
// it reports READY, at which point we swap it into place.
|
642
|
-
if (CalledByPendingChild()) {
|
643
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
644
|
-
gpr_log(GPR_INFO,
|
645
|
-
"[grpclb %p helper %p] pending child policy %p reports state=%s",
|
646
|
-
parent_.get(), this, parent_->pending_child_policy_.get(),
|
647
|
-
grpc_connectivity_state_name(state));
|
648
|
-
}
|
649
|
-
if (state != GRPC_CHANNEL_READY) return;
|
650
|
-
grpc_pollset_set_del_pollset_set(
|
651
|
-
parent_->child_policy_->interested_parties(),
|
652
|
-
parent_->interested_parties());
|
653
|
-
MutexLock lock(&parent_->child_policy_mu_);
|
654
|
-
parent_->child_policy_ = std::move(parent_->pending_child_policy_);
|
655
|
-
} else if (!CalledByCurrentChild()) {
|
656
|
-
// This request is from an outdated child, so ignore it.
|
657
|
-
return;
|
658
|
-
}
|
659
666
|
// Record whether child policy reports READY.
|
660
667
|
parent_->child_policy_ready_ = state == GRPC_CHANNEL_READY;
|
661
668
|
// Enter fallback mode if needed.
|
@@ -684,18 +691,22 @@ void GrpcLb::Helper::UpdateState(grpc_connectivity_state state,
|
|
684
691
|
state != GRPC_CHANNEL_READY)) {
|
685
692
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
686
693
|
gpr_log(GPR_INFO,
|
687
|
-
"[grpclb %p helper %p] state=%s passing
|
688
|
-
|
689
|
-
|
694
|
+
"[grpclb %p helper %p] state=%s (%s) passing "
|
695
|
+
"child picker %p as-is",
|
696
|
+
parent_.get(), this, ConnectivityStateName(state),
|
697
|
+
status.ToString().c_str(), picker.get());
|
690
698
|
}
|
691
|
-
parent_->channel_control_helper()->UpdateState(state,
|
699
|
+
parent_->channel_control_helper()->UpdateState(state, status,
|
700
|
+
std::move(picker));
|
692
701
|
return;
|
693
702
|
}
|
694
703
|
// Cases 2 and 3a: wrap picker from the child in our own picker.
|
695
704
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
696
|
-
gpr_log(GPR_INFO,
|
697
|
-
|
698
|
-
picker
|
705
|
+
gpr_log(GPR_INFO,
|
706
|
+
"[grpclb %p helper %p] state=%s (%s) wrapping child "
|
707
|
+
"picker %p",
|
708
|
+
parent_.get(), this, ConnectivityStateName(state),
|
709
|
+
status.ToString().c_str(), picker.get());
|
699
710
|
}
|
700
711
|
RefCountedPtr<GrpcLbClientStats> client_stats;
|
701
712
|
if (parent_->lb_calld_ != nullptr &&
|
@@ -703,23 +714,13 @@ void GrpcLb::Helper::UpdateState(grpc_connectivity_state state,
|
|
703
714
|
client_stats = parent_->lb_calld_->client_stats()->Ref();
|
704
715
|
}
|
705
716
|
parent_->channel_control_helper()->UpdateState(
|
706
|
-
state,
|
707
|
-
|
708
|
-
|
717
|
+
state, status,
|
718
|
+
absl::make_unique<Picker>(parent_.get(), parent_->serverlist_,
|
719
|
+
std::move(picker), std::move(client_stats)));
|
709
720
|
}
|
710
721
|
|
711
722
|
void GrpcLb::Helper::RequestReresolution() {
|
712
723
|
if (parent_->shutting_down_) return;
|
713
|
-
const LoadBalancingPolicy* latest_child_policy =
|
714
|
-
parent_->pending_child_policy_ != nullptr
|
715
|
-
? parent_->pending_child_policy_.get()
|
716
|
-
: parent_->child_policy_.get();
|
717
|
-
if (child_ != latest_child_policy) return;
|
718
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
719
|
-
gpr_log(GPR_INFO,
|
720
|
-
"[grpclb %p] Re-resolution requested from %schild policy (%p).",
|
721
|
-
parent_.get(), CalledByPendingChild() ? "pending " : "", child_);
|
722
|
-
}
|
723
724
|
// If we are talking to a balancer, we expect to get updated addresses
|
724
725
|
// from the balancer, so we can ignore the re-resolution request from
|
725
726
|
// the child policy. Otherwise, pass the re-resolution request up to the
|
@@ -730,6 +731,12 @@ void GrpcLb::Helper::RequestReresolution() {
|
|
730
731
|
}
|
731
732
|
}
|
732
733
|
|
734
|
+
void GrpcLb::Helper::AddTraceEvent(TraceSeverity severity,
|
735
|
+
absl::string_view message) {
|
736
|
+
if (parent_->shutting_down_) return;
|
737
|
+
parent_->channel_control_helper()->AddTraceEvent(severity, message);
|
738
|
+
}
|
739
|
+
|
733
740
|
//
|
734
741
|
// GrpcLb::BalancerCallState
|
735
742
|
//
|
@@ -745,6 +752,15 @@ GrpcLb::BalancerCallState::BalancerCallState(
|
|
745
752
|
// the polling entities from client_channel.
|
746
753
|
GPR_ASSERT(grpclb_policy()->server_name_ != nullptr);
|
747
754
|
GPR_ASSERT(grpclb_policy()->server_name_[0] != '\0');
|
755
|
+
// Closure Initialization
|
756
|
+
GRPC_CLOSURE_INIT(&lb_on_initial_request_sent_, OnInitialRequestSent, this,
|
757
|
+
grpc_schedule_on_exec_ctx);
|
758
|
+
GRPC_CLOSURE_INIT(&lb_on_balancer_message_received_,
|
759
|
+
OnBalancerMessageReceived, this, grpc_schedule_on_exec_ctx);
|
760
|
+
GRPC_CLOSURE_INIT(&lb_on_balancer_status_received_, OnBalancerStatusReceived,
|
761
|
+
this, grpc_schedule_on_exec_ctx);
|
762
|
+
GRPC_CLOSURE_INIT(&client_load_report_closure_, MaybeSendClientLoadReport,
|
763
|
+
this, grpc_schedule_on_exec_ctx);
|
748
764
|
const grpc_millis deadline =
|
749
765
|
grpclb_policy()->lb_call_timeout_ms_ == 0
|
750
766
|
? GRPC_MILLIS_INF_FUTURE
|
@@ -755,24 +771,18 @@ GrpcLb::BalancerCallState::BalancerCallState(
|
|
755
771
|
GRPC_MDSTR_SLASH_GRPC_DOT_LB_DOT_V1_DOT_LOADBALANCER_SLASH_BALANCELOAD,
|
756
772
|
nullptr, deadline, nullptr);
|
757
773
|
// Init the LB call request payload.
|
758
|
-
|
759
|
-
|
760
|
-
|
774
|
+
upb::Arena arena;
|
775
|
+
grpc_slice request_payload_slice = GrpcLbRequestCreate(
|
776
|
+
grpclb_policy()->config_->service_name().empty()
|
777
|
+
? grpclb_policy()->server_name_
|
778
|
+
: grpclb_policy()->config_->service_name().c_str(),
|
779
|
+
arena.ptr());
|
761
780
|
send_message_payload_ =
|
762
781
|
grpc_raw_byte_buffer_create(&request_payload_slice, 1);
|
763
782
|
grpc_slice_unref_internal(request_payload_slice);
|
764
|
-
grpc_grpclb_request_destroy(request);
|
765
783
|
// Init other data associated with the LB call.
|
766
784
|
grpc_metadata_array_init(&lb_initial_metadata_recv_);
|
767
785
|
grpc_metadata_array_init(&lb_trailing_metadata_recv_);
|
768
|
-
GRPC_CLOSURE_INIT(&lb_on_initial_request_sent_, OnInitialRequestSentLocked,
|
769
|
-
this, grpc_combiner_scheduler(grpclb_policy()->combiner()));
|
770
|
-
GRPC_CLOSURE_INIT(&lb_on_balancer_message_received_,
|
771
|
-
OnBalancerMessageReceivedLocked, this,
|
772
|
-
grpc_combiner_scheduler(grpclb_policy()->combiner()));
|
773
|
-
GRPC_CLOSURE_INIT(&lb_on_balancer_status_received_,
|
774
|
-
OnBalancerStatusReceivedLocked, this,
|
775
|
-
grpc_combiner_scheduler(grpclb_policy()->combiner()));
|
776
786
|
}
|
777
787
|
|
778
788
|
GrpcLb::BalancerCallState::~BalancerCallState() {
|
@@ -791,7 +801,7 @@ void GrpcLb::BalancerCallState::Orphan() {
|
|
791
801
|
// lb_on_balancer_status_received_ will complete the cancellation and clean
|
792
802
|
// up. Otherwise, we are here because grpclb_policy has to orphan a failed
|
793
803
|
// call, then the following cancellation will be a no-op.
|
794
|
-
|
804
|
+
grpc_call_cancel_internal(lb_call_);
|
795
805
|
if (client_load_report_timer_callback_pending_) {
|
796
806
|
grpc_timer_cancel(&client_load_report_timer_);
|
797
807
|
}
|
@@ -876,56 +886,59 @@ void GrpcLb::BalancerCallState::StartQuery() {
|
|
876
886
|
void GrpcLb::BalancerCallState::ScheduleNextClientLoadReportLocked() {
|
877
887
|
const grpc_millis next_client_load_report_time =
|
878
888
|
ExecCtx::Get()->Now() + client_stats_report_interval_;
|
879
|
-
GRPC_CLOSURE_INIT(&client_load_report_closure_,
|
880
|
-
|
881
|
-
grpc_combiner_scheduler(grpclb_policy()->combiner()));
|
889
|
+
GRPC_CLOSURE_INIT(&client_load_report_closure_, MaybeSendClientLoadReport,
|
890
|
+
this, grpc_schedule_on_exec_ctx);
|
882
891
|
grpc_timer_init(&client_load_report_timer_, next_client_load_report_time,
|
883
892
|
&client_load_report_closure_);
|
884
893
|
client_load_report_timer_callback_pending_ = true;
|
885
894
|
}
|
886
895
|
|
887
|
-
void GrpcLb::BalancerCallState::
|
888
|
-
|
896
|
+
void GrpcLb::BalancerCallState::MaybeSendClientLoadReport(void* arg,
|
897
|
+
grpc_error* error) {
|
889
898
|
BalancerCallState* lb_calld = static_cast<BalancerCallState*>(arg);
|
890
|
-
|
891
|
-
lb_calld->
|
892
|
-
|
893
|
-
|
899
|
+
GRPC_ERROR_REF(error); // ref owned by lambda
|
900
|
+
lb_calld->grpclb_policy()->work_serializer()->Run(
|
901
|
+
[lb_calld, error]() { lb_calld->MaybeSendClientLoadReportLocked(error); },
|
902
|
+
DEBUG_LOCATION);
|
903
|
+
}
|
904
|
+
|
905
|
+
void GrpcLb::BalancerCallState::MaybeSendClientLoadReportLocked(
|
906
|
+
grpc_error* error) {
|
907
|
+
client_load_report_timer_callback_pending_ = false;
|
908
|
+
if (error != GRPC_ERROR_NONE || this != grpclb_policy()->lb_calld_.get()) {
|
909
|
+
Unref(DEBUG_LOCATION, "client_load_report");
|
910
|
+
GRPC_ERROR_UNREF(error);
|
894
911
|
return;
|
895
912
|
}
|
896
913
|
// If we've already sent the initial request, then we can go ahead and send
|
897
914
|
// the load report. Otherwise, we need to wait until the initial request has
|
898
915
|
// been sent to send this (see OnInitialRequestSentLocked()).
|
899
|
-
if (
|
900
|
-
|
916
|
+
if (send_message_payload_ == nullptr) {
|
917
|
+
SendClientLoadReportLocked();
|
901
918
|
} else {
|
902
|
-
|
919
|
+
client_load_report_is_due_ = true;
|
903
920
|
}
|
904
921
|
}
|
905
922
|
|
906
|
-
bool GrpcLb::BalancerCallState::LoadReportCountersAreZero(
|
907
|
-
grpc_grpclb_request* request) {
|
908
|
-
GrpcLbClientStats::DroppedCallCounts* drop_entries =
|
909
|
-
static_cast<GrpcLbClientStats::DroppedCallCounts*>(
|
910
|
-
request->client_stats.calls_finished_with_drop.arg);
|
911
|
-
return request->client_stats.num_calls_started == 0 &&
|
912
|
-
request->client_stats.num_calls_finished == 0 &&
|
913
|
-
request->client_stats.num_calls_finished_with_client_failed_to_send ==
|
914
|
-
0 &&
|
915
|
-
request->client_stats.num_calls_finished_known_received == 0 &&
|
916
|
-
(drop_entries == nullptr || drop_entries->size() == 0);
|
917
|
-
}
|
918
|
-
|
919
923
|
void GrpcLb::BalancerCallState::SendClientLoadReportLocked() {
|
920
924
|
// Construct message payload.
|
921
925
|
GPR_ASSERT(send_message_payload_ == nullptr);
|
922
|
-
|
923
|
-
|
926
|
+
// Get snapshot of stats.
|
927
|
+
int64_t num_calls_started;
|
928
|
+
int64_t num_calls_finished;
|
929
|
+
int64_t num_calls_finished_with_client_failed_to_send;
|
930
|
+
int64_t num_calls_finished_known_received;
|
931
|
+
std::unique_ptr<GrpcLbClientStats::DroppedCallCounts> drop_token_counts;
|
932
|
+
client_stats_->Get(&num_calls_started, &num_calls_finished,
|
933
|
+
&num_calls_finished_with_client_failed_to_send,
|
934
|
+
&num_calls_finished_known_received, &drop_token_counts);
|
924
935
|
// Skip client load report if the counters were all zero in the last
|
925
936
|
// report and they are still zero in this one.
|
926
|
-
if (
|
937
|
+
if (num_calls_started == 0 && num_calls_finished == 0 &&
|
938
|
+
num_calls_finished_with_client_failed_to_send == 0 &&
|
939
|
+
num_calls_finished_known_received == 0 &&
|
940
|
+
(drop_token_counts == nullptr || drop_token_counts->size() == 0)) {
|
927
941
|
if (last_client_load_report_counters_were_zero_) {
|
928
|
-
grpc_grpclb_request_destroy(request);
|
929
942
|
ScheduleNextClientLoadReportLocked();
|
930
943
|
return;
|
931
944
|
}
|
@@ -933,18 +946,22 @@ void GrpcLb::BalancerCallState::SendClientLoadReportLocked() {
|
|
933
946
|
} else {
|
934
947
|
last_client_load_report_counters_were_zero_ = false;
|
935
948
|
}
|
936
|
-
|
949
|
+
// Populate load report.
|
950
|
+
upb::Arena arena;
|
951
|
+
grpc_slice request_payload_slice = GrpcLbLoadReportRequestCreate(
|
952
|
+
num_calls_started, num_calls_finished,
|
953
|
+
num_calls_finished_with_client_failed_to_send,
|
954
|
+
num_calls_finished_known_received, drop_token_counts.get(), arena.ptr());
|
937
955
|
send_message_payload_ =
|
938
956
|
grpc_raw_byte_buffer_create(&request_payload_slice, 1);
|
939
957
|
grpc_slice_unref_internal(request_payload_slice);
|
940
|
-
grpc_grpclb_request_destroy(request);
|
941
958
|
// Send the report.
|
942
959
|
grpc_op op;
|
943
960
|
memset(&op, 0, sizeof(op));
|
944
961
|
op.op = GRPC_OP_SEND_MESSAGE;
|
945
962
|
op.data.send_message.send_message = send_message_payload_;
|
946
|
-
GRPC_CLOSURE_INIT(&client_load_report_closure_,
|
947
|
-
|
963
|
+
GRPC_CLOSURE_INIT(&client_load_report_closure_, ClientLoadReportDone, this,
|
964
|
+
grpc_schedule_on_exec_ctx);
|
948
965
|
grpc_call_error call_error = grpc_call_start_batch_and_execute(
|
949
966
|
lb_call_, &op, 1, &client_load_report_closure_);
|
950
967
|
if (GPR_UNLIKELY(call_error != GRPC_CALL_OK)) {
|
@@ -955,252 +972,278 @@ void GrpcLb::BalancerCallState::SendClientLoadReportLocked() {
|
|
955
972
|
}
|
956
973
|
}
|
957
974
|
|
958
|
-
void GrpcLb::BalancerCallState::
|
959
|
-
|
975
|
+
void GrpcLb::BalancerCallState::ClientLoadReportDone(void* arg,
|
976
|
+
grpc_error* error) {
|
960
977
|
BalancerCallState* lb_calld = static_cast<BalancerCallState*>(arg);
|
961
|
-
|
962
|
-
|
963
|
-
|
964
|
-
|
965
|
-
|
978
|
+
GRPC_ERROR_REF(error); // ref owned by lambda
|
979
|
+
lb_calld->grpclb_policy()->work_serializer()->Run(
|
980
|
+
[lb_calld, error]() { lb_calld->ClientLoadReportDoneLocked(error); },
|
981
|
+
DEBUG_LOCATION);
|
982
|
+
}
|
983
|
+
|
984
|
+
void GrpcLb::BalancerCallState::ClientLoadReportDoneLocked(grpc_error* error) {
|
985
|
+
grpc_byte_buffer_destroy(send_message_payload_);
|
986
|
+
send_message_payload_ = nullptr;
|
987
|
+
if (error != GRPC_ERROR_NONE || this != grpclb_policy()->lb_calld_.get()) {
|
988
|
+
Unref(DEBUG_LOCATION, "client_load_report");
|
989
|
+
GRPC_ERROR_UNREF(error);
|
966
990
|
return;
|
967
991
|
}
|
968
|
-
|
992
|
+
ScheduleNextClientLoadReportLocked();
|
969
993
|
}
|
970
994
|
|
971
|
-
void GrpcLb::BalancerCallState::
|
972
|
-
|
995
|
+
void GrpcLb::BalancerCallState::OnInitialRequestSent(void* arg,
|
996
|
+
grpc_error* /*error*/) {
|
973
997
|
BalancerCallState* lb_calld = static_cast<BalancerCallState*>(arg);
|
974
|
-
|
975
|
-
|
998
|
+
lb_calld->grpclb_policy()->work_serializer()->Run(
|
999
|
+
[lb_calld]() { lb_calld->OnInitialRequestSentLocked(); }, DEBUG_LOCATION);
|
1000
|
+
}
|
1001
|
+
|
1002
|
+
void GrpcLb::BalancerCallState::OnInitialRequestSentLocked() {
|
1003
|
+
grpc_byte_buffer_destroy(send_message_payload_);
|
1004
|
+
send_message_payload_ = nullptr;
|
976
1005
|
// If we attempted to send a client load report before the initial request was
|
977
1006
|
// sent (and this lb_calld is still in use), send the load report now.
|
978
|
-
if (
|
979
|
-
|
980
|
-
|
981
|
-
lb_calld->client_load_report_is_due_ = false;
|
1007
|
+
if (client_load_report_is_due_ && this == grpclb_policy()->lb_calld_.get()) {
|
1008
|
+
SendClientLoadReportLocked();
|
1009
|
+
client_load_report_is_due_ = false;
|
982
1010
|
}
|
983
|
-
|
1011
|
+
Unref(DEBUG_LOCATION, "on_initial_request_sent");
|
984
1012
|
}
|
985
1013
|
|
986
|
-
void GrpcLb::BalancerCallState::
|
987
|
-
void* arg, grpc_error* error) {
|
1014
|
+
void GrpcLb::BalancerCallState::OnBalancerMessageReceived(
|
1015
|
+
void* arg, grpc_error* /*error*/) {
|
988
1016
|
BalancerCallState* lb_calld = static_cast<BalancerCallState*>(arg);
|
989
|
-
|
1017
|
+
lb_calld->grpclb_policy()->work_serializer()->Run(
|
1018
|
+
[lb_calld]() { lb_calld->OnBalancerMessageReceivedLocked(); },
|
1019
|
+
DEBUG_LOCATION);
|
1020
|
+
}
|
1021
|
+
|
1022
|
+
void GrpcLb::BalancerCallState::OnBalancerMessageReceivedLocked() {
|
990
1023
|
// Null payload means the LB call was cancelled.
|
991
|
-
if (
|
992
|
-
|
993
|
-
|
1024
|
+
if (this != grpclb_policy()->lb_calld_.get() ||
|
1025
|
+
recv_message_payload_ == nullptr) {
|
1026
|
+
Unref(DEBUG_LOCATION, "on_message_received");
|
994
1027
|
return;
|
995
1028
|
}
|
996
1029
|
grpc_byte_buffer_reader bbr;
|
997
|
-
grpc_byte_buffer_reader_init(&bbr,
|
1030
|
+
grpc_byte_buffer_reader_init(&bbr, recv_message_payload_);
|
998
1031
|
grpc_slice response_slice = grpc_byte_buffer_reader_readall(&bbr);
|
999
1032
|
grpc_byte_buffer_reader_destroy(&bbr);
|
1000
|
-
grpc_byte_buffer_destroy(
|
1001
|
-
|
1002
|
-
|
1003
|
-
|
1004
|
-
if (!
|
1005
|
-
(
|
1006
|
-
nullptr) {
|
1007
|
-
// Have NOT seen initial response, look for initial response.
|
1008
|
-
if (initial_response->has_client_stats_report_interval) {
|
1009
|
-
lb_calld->client_stats_report_interval_ = GPR_MAX(
|
1010
|
-
GPR_MS_PER_SEC, grpc_grpclb_duration_to_millis(
|
1011
|
-
&initial_response->client_stats_report_interval));
|
1012
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
1013
|
-
gpr_log(GPR_INFO,
|
1014
|
-
"[grpclb %p] lb_calld=%p: Received initial LB response "
|
1015
|
-
"message; client load reporting interval = %" PRId64
|
1016
|
-
" milliseconds",
|
1017
|
-
grpclb_policy, lb_calld,
|
1018
|
-
lb_calld->client_stats_report_interval_);
|
1019
|
-
}
|
1020
|
-
} else if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
1021
|
-
gpr_log(GPR_INFO,
|
1022
|
-
"[grpclb %p] lb_calld=%p: Received initial LB response message; "
|
1023
|
-
"client load reporting NOT enabled",
|
1024
|
-
grpclb_policy, lb_calld);
|
1025
|
-
}
|
1026
|
-
grpc_grpclb_initial_response_destroy(initial_response);
|
1027
|
-
lb_calld->seen_initial_response_ = true;
|
1028
|
-
} else if ((serverlist = grpc_grpclb_response_parse_serverlist(
|
1029
|
-
response_slice)) != nullptr) {
|
1030
|
-
// Have seen initial response, look for serverlist.
|
1031
|
-
GPR_ASSERT(lb_calld->lb_call_ != nullptr);
|
1032
|
-
auto serverlist_wrapper = MakeRefCounted<Serverlist>(serverlist);
|
1033
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
1034
|
-
UniquePtr<char> serverlist_text = serverlist_wrapper->AsText();
|
1035
|
-
gpr_log(GPR_INFO,
|
1036
|
-
"[grpclb %p] lb_calld=%p: Serverlist with %" PRIuPTR
|
1037
|
-
" servers received:\n%s",
|
1038
|
-
grpclb_policy, lb_calld, serverlist->num_servers,
|
1039
|
-
serverlist_text.get());
|
1040
|
-
}
|
1041
|
-
lb_calld->seen_serverlist_ = true;
|
1042
|
-
// Start sending client load report only after we start using the
|
1043
|
-
// serverlist returned from the current LB call.
|
1044
|
-
if (lb_calld->client_stats_report_interval_ > 0 &&
|
1045
|
-
lb_calld->client_stats_ == nullptr) {
|
1046
|
-
lb_calld->client_stats_ = MakeRefCounted<GrpcLbClientStats>();
|
1047
|
-
// Ref held by callback.
|
1048
|
-
lb_calld->Ref(DEBUG_LOCATION, "client_load_report").release();
|
1049
|
-
lb_calld->ScheduleNextClientLoadReportLocked();
|
1050
|
-
}
|
1051
|
-
// Check if the serverlist differs from the previous one.
|
1052
|
-
if (grpclb_policy->serverlist_ != nullptr &&
|
1053
|
-
*grpclb_policy->serverlist_ == *serverlist_wrapper) {
|
1054
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
1055
|
-
gpr_log(GPR_INFO,
|
1056
|
-
"[grpclb %p] lb_calld=%p: Incoming server list identical to "
|
1057
|
-
"current, ignoring.",
|
1058
|
-
grpclb_policy, lb_calld);
|
1059
|
-
}
|
1060
|
-
} else { // New serverlist.
|
1061
|
-
// Dispose of the fallback.
|
1062
|
-
// TODO(roth): Ideally, we should stay in fallback mode until we
|
1063
|
-
// know that we can reach at least one of the backends in the new
|
1064
|
-
// serverlist. Unfortunately, we can't do that, since we need to
|
1065
|
-
// send the new addresses to the child policy in order to determine
|
1066
|
-
// if they are reachable, and if we don't exit fallback mode now,
|
1067
|
-
// CreateOrUpdateChildPolicyLocked() will use the fallback
|
1068
|
-
// addresses instead of the addresses from the new serverlist.
|
1069
|
-
// However, if we can't reach any of the servers in the new
|
1070
|
-
// serverlist, then the child policy will never switch away from
|
1071
|
-
// the fallback addresses, but the grpclb policy will still think
|
1072
|
-
// that we're not in fallback mode, which means that we won't send
|
1073
|
-
// updates to the child policy when the fallback addresses are
|
1074
|
-
// updated by the resolver. This is sub-optimal, but the only way
|
1075
|
-
// to fix it is to maintain a completely separate child policy for
|
1076
|
-
// fallback mode, and that's more work than we want to put into
|
1077
|
-
// the grpclb implementation at this point, since we're deprecating
|
1078
|
-
// it in favor of the xds policy. We will implement this the
|
1079
|
-
// right way in the xds policy instead.
|
1080
|
-
if (grpclb_policy->fallback_mode_) {
|
1081
|
-
gpr_log(GPR_INFO,
|
1082
|
-
"[grpclb %p] Received response from balancer; exiting "
|
1083
|
-
"fallback mode",
|
1084
|
-
grpclb_policy);
|
1085
|
-
grpclb_policy->fallback_mode_ = false;
|
1086
|
-
}
|
1087
|
-
if (grpclb_policy->fallback_at_startup_checks_pending_) {
|
1088
|
-
grpclb_policy->fallback_at_startup_checks_pending_ = false;
|
1089
|
-
grpc_timer_cancel(&grpclb_policy->lb_fallback_timer_);
|
1090
|
-
grpclb_policy->CancelBalancerChannelConnectivityWatchLocked();
|
1091
|
-
}
|
1092
|
-
// Update the serverlist in the GrpcLb instance. This serverlist
|
1093
|
-
// instance will be destroyed either upon the next update or when the
|
1094
|
-
// GrpcLb instance is destroyed.
|
1095
|
-
grpclb_policy->serverlist_ = std::move(serverlist_wrapper);
|
1096
|
-
grpclb_policy->CreateOrUpdateChildPolicyLocked();
|
1097
|
-
}
|
1098
|
-
} else {
|
1099
|
-
// No valid initial response or serverlist found.
|
1033
|
+
grpc_byte_buffer_destroy(recv_message_payload_);
|
1034
|
+
recv_message_payload_ = nullptr;
|
1035
|
+
GrpcLbResponse response;
|
1036
|
+
upb::Arena arena;
|
1037
|
+
if (!GrpcLbResponseParse(response_slice, arena.ptr(), &response) ||
|
1038
|
+
(response.type == response.INITIAL && seen_initial_response_)) {
|
1100
1039
|
char* response_slice_str =
|
1101
1040
|
grpc_dump_slice(response_slice, GPR_DUMP_ASCII | GPR_DUMP_HEX);
|
1102
1041
|
gpr_log(GPR_ERROR,
|
1103
1042
|
"[grpclb %p] lb_calld=%p: Invalid LB response received: '%s'. "
|
1104
1043
|
"Ignoring.",
|
1105
|
-
grpclb_policy,
|
1044
|
+
grpclb_policy(), this, response_slice_str);
|
1106
1045
|
gpr_free(response_slice_str);
|
1046
|
+
} else {
|
1047
|
+
switch (response.type) {
|
1048
|
+
case response.INITIAL: {
|
1049
|
+
if (response.client_stats_report_interval != 0) {
|
1050
|
+
client_stats_report_interval_ =
|
1051
|
+
GPR_MAX(GPR_MS_PER_SEC, response.client_stats_report_interval);
|
1052
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
1053
|
+
gpr_log(GPR_INFO,
|
1054
|
+
"[grpclb %p] lb_calld=%p: Received initial LB response "
|
1055
|
+
"message; client load reporting interval = %" PRId64
|
1056
|
+
" milliseconds",
|
1057
|
+
grpclb_policy(), this, client_stats_report_interval_);
|
1058
|
+
}
|
1059
|
+
} else if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
1060
|
+
gpr_log(GPR_INFO,
|
1061
|
+
"[grpclb %p] lb_calld=%p: Received initial LB response "
|
1062
|
+
"message; client load reporting NOT enabled",
|
1063
|
+
grpclb_policy(), this);
|
1064
|
+
}
|
1065
|
+
seen_initial_response_ = true;
|
1066
|
+
break;
|
1067
|
+
}
|
1068
|
+
case response.SERVERLIST: {
|
1069
|
+
GPR_ASSERT(lb_call_ != nullptr);
|
1070
|
+
auto serverlist_wrapper =
|
1071
|
+
MakeRefCounted<Serverlist>(std::move(response.serverlist));
|
1072
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
1073
|
+
gpr_log(GPR_INFO,
|
1074
|
+
"[grpclb %p] lb_calld=%p: Serverlist with %" PRIuPTR
|
1075
|
+
" servers received:\n%s",
|
1076
|
+
grpclb_policy(), this,
|
1077
|
+
serverlist_wrapper->serverlist().size(),
|
1078
|
+
serverlist_wrapper->AsText().c_str());
|
1079
|
+
}
|
1080
|
+
seen_serverlist_ = true;
|
1081
|
+
// Start sending client load report only after we start using the
|
1082
|
+
// serverlist returned from the current LB call.
|
1083
|
+
if (client_stats_report_interval_ > 0 && client_stats_ == nullptr) {
|
1084
|
+
client_stats_ = MakeRefCounted<GrpcLbClientStats>();
|
1085
|
+
// Ref held by callback.
|
1086
|
+
Ref(DEBUG_LOCATION, "client_load_report").release();
|
1087
|
+
ScheduleNextClientLoadReportLocked();
|
1088
|
+
}
|
1089
|
+
// Check if the serverlist differs from the previous one.
|
1090
|
+
if (grpclb_policy()->serverlist_ != nullptr &&
|
1091
|
+
*grpclb_policy()->serverlist_ == *serverlist_wrapper) {
|
1092
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
1093
|
+
gpr_log(GPR_INFO,
|
1094
|
+
"[grpclb %p] lb_calld=%p: Incoming server list identical "
|
1095
|
+
"to current, ignoring.",
|
1096
|
+
grpclb_policy(), this);
|
1097
|
+
}
|
1098
|
+
} else { // New serverlist.
|
1099
|
+
// Dispose of the fallback.
|
1100
|
+
// TODO(roth): Ideally, we should stay in fallback mode until we
|
1101
|
+
// know that we can reach at least one of the backends in the new
|
1102
|
+
// serverlist. Unfortunately, we can't do that, since we need to
|
1103
|
+
// send the new addresses to the child policy in order to determine
|
1104
|
+
// if they are reachable, and if we don't exit fallback mode now,
|
1105
|
+
// CreateOrUpdateChildPolicyLocked() will use the fallback
|
1106
|
+
// addresses instead of the addresses from the new serverlist.
|
1107
|
+
// However, if we can't reach any of the servers in the new
|
1108
|
+
// serverlist, then the child policy will never switch away from
|
1109
|
+
// the fallback addresses, but the grpclb policy will still think
|
1110
|
+
// that we're not in fallback mode, which means that we won't send
|
1111
|
+
// updates to the child policy when the fallback addresses are
|
1112
|
+
// updated by the resolver. This is sub-optimal, but the only way
|
1113
|
+
// to fix it is to maintain a completely separate child policy for
|
1114
|
+
// fallback mode, and that's more work than we want to put into
|
1115
|
+
// the grpclb implementation at this point, since we're deprecating
|
1116
|
+
// it in favor of the xds policy. We will implement this the
|
1117
|
+
// right way in the xds policy instead.
|
1118
|
+
if (grpclb_policy()->fallback_mode_) {
|
1119
|
+
gpr_log(GPR_INFO,
|
1120
|
+
"[grpclb %p] Received response from balancer; exiting "
|
1121
|
+
"fallback mode",
|
1122
|
+
grpclb_policy());
|
1123
|
+
grpclb_policy()->fallback_mode_ = false;
|
1124
|
+
}
|
1125
|
+
if (grpclb_policy()->fallback_at_startup_checks_pending_) {
|
1126
|
+
grpclb_policy()->fallback_at_startup_checks_pending_ = false;
|
1127
|
+
grpc_timer_cancel(&grpclb_policy()->lb_fallback_timer_);
|
1128
|
+
grpclb_policy()->CancelBalancerChannelConnectivityWatchLocked();
|
1129
|
+
}
|
1130
|
+
// Update the serverlist in the GrpcLb instance. This serverlist
|
1131
|
+
// instance will be destroyed either upon the next update or when the
|
1132
|
+
// GrpcLb instance is destroyed.
|
1133
|
+
grpclb_policy()->serverlist_ = std::move(serverlist_wrapper);
|
1134
|
+
grpclb_policy()->CreateOrUpdateChildPolicyLocked();
|
1135
|
+
}
|
1136
|
+
break;
|
1137
|
+
}
|
1138
|
+
case response.FALLBACK: {
|
1139
|
+
if (!grpclb_policy()->fallback_mode_) {
|
1140
|
+
gpr_log(GPR_INFO,
|
1141
|
+
"[grpclb %p] Entering fallback mode as requested by balancer",
|
1142
|
+
grpclb_policy());
|
1143
|
+
if (grpclb_policy()->fallback_at_startup_checks_pending_) {
|
1144
|
+
grpclb_policy()->fallback_at_startup_checks_pending_ = false;
|
1145
|
+
grpc_timer_cancel(&grpclb_policy()->lb_fallback_timer_);
|
1146
|
+
grpclb_policy()->CancelBalancerChannelConnectivityWatchLocked();
|
1147
|
+
}
|
1148
|
+
grpclb_policy()->fallback_mode_ = true;
|
1149
|
+
grpclb_policy()->CreateOrUpdateChildPolicyLocked();
|
1150
|
+
// Reset serverlist, so that if the balancer exits fallback
|
1151
|
+
// mode by sending the same serverlist we were previously
|
1152
|
+
// using, we don't incorrectly ignore it as a duplicate.
|
1153
|
+
grpclb_policy()->serverlist_.reset();
|
1154
|
+
}
|
1155
|
+
break;
|
1156
|
+
}
|
1157
|
+
}
|
1107
1158
|
}
|
1108
1159
|
grpc_slice_unref_internal(response_slice);
|
1109
|
-
if (!grpclb_policy->shutting_down_) {
|
1160
|
+
if (!grpclb_policy()->shutting_down_) {
|
1110
1161
|
// Keep listening for serverlist updates.
|
1111
1162
|
grpc_op op;
|
1112
1163
|
memset(&op, 0, sizeof(op));
|
1113
1164
|
op.op = GRPC_OP_RECV_MESSAGE;
|
1114
|
-
op.data.recv_message.recv_message = &
|
1165
|
+
op.data.recv_message.recv_message = &recv_message_payload_;
|
1115
1166
|
op.flags = 0;
|
1116
1167
|
op.reserved = nullptr;
|
1117
1168
|
// Reuse the "OnBalancerMessageReceivedLocked" ref taken in StartQuery().
|
1118
1169
|
const grpc_call_error call_error = grpc_call_start_batch_and_execute(
|
1119
|
-
|
1120
|
-
&lb_calld->lb_on_balancer_message_received_);
|
1170
|
+
lb_call_, &op, 1, &lb_on_balancer_message_received_);
|
1121
1171
|
GPR_ASSERT(GRPC_CALL_OK == call_error);
|
1122
1172
|
} else {
|
1123
|
-
|
1173
|
+
Unref(DEBUG_LOCATION, "on_message_received+grpclb_shutdown");
|
1124
1174
|
}
|
1125
1175
|
}
|
1126
1176
|
|
1127
|
-
void GrpcLb::BalancerCallState::
|
1128
|
-
|
1177
|
+
void GrpcLb::BalancerCallState::OnBalancerStatusReceived(void* arg,
|
1178
|
+
grpc_error* error) {
|
1129
1179
|
BalancerCallState* lb_calld = static_cast<BalancerCallState*>(arg);
|
1130
|
-
|
1131
|
-
|
1180
|
+
GRPC_ERROR_REF(error); // owned by lambda
|
1181
|
+
lb_calld->grpclb_policy()->work_serializer()->Run(
|
1182
|
+
[lb_calld, error]() { lb_calld->OnBalancerStatusReceivedLocked(error); },
|
1183
|
+
DEBUG_LOCATION);
|
1184
|
+
}
|
1185
|
+
|
1186
|
+
void GrpcLb::BalancerCallState::OnBalancerStatusReceivedLocked(
|
1187
|
+
grpc_error* error) {
|
1188
|
+
GPR_ASSERT(lb_call_ != nullptr);
|
1132
1189
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
1133
|
-
char* status_details =
|
1134
|
-
grpc_slice_to_c_string(lb_calld->lb_call_status_details_);
|
1190
|
+
char* status_details = grpc_slice_to_c_string(lb_call_status_details_);
|
1135
1191
|
gpr_log(GPR_INFO,
|
1136
1192
|
"[grpclb %p] lb_calld=%p: Status from LB server received. "
|
1137
1193
|
"Status = %d, details = '%s', (lb_call: %p), error '%s'",
|
1138
|
-
grpclb_policy,
|
1139
|
-
|
1194
|
+
grpclb_policy(), this, lb_call_status_, status_details, lb_call_,
|
1195
|
+
grpc_error_string(error));
|
1140
1196
|
gpr_free(status_details);
|
1141
1197
|
}
|
1198
|
+
GRPC_ERROR_UNREF(error);
|
1142
1199
|
// If this lb_calld is still in use, this call ended because of a failure so
|
1143
1200
|
// we want to retry connecting. Otherwise, we have deliberately ended this
|
1144
1201
|
// call and no further action is required.
|
1145
|
-
if (
|
1202
|
+
if (this == grpclb_policy()->lb_calld_.get()) {
|
1146
1203
|
// If the fallback-at-startup checks are pending, go into fallback mode
|
1147
1204
|
// immediately. This short-circuits the timeout for the fallback-at-startup
|
1148
1205
|
// case.
|
1149
|
-
if (grpclb_policy->fallback_at_startup_checks_pending_) {
|
1150
|
-
GPR_ASSERT(!
|
1206
|
+
if (grpclb_policy()->fallback_at_startup_checks_pending_) {
|
1207
|
+
GPR_ASSERT(!seen_serverlist_);
|
1151
1208
|
gpr_log(GPR_INFO,
|
1152
1209
|
"[grpclb %p] Balancer call finished without receiving "
|
1153
1210
|
"serverlist; entering fallback mode",
|
1154
|
-
grpclb_policy);
|
1155
|
-
grpclb_policy->fallback_at_startup_checks_pending_ = false;
|
1156
|
-
grpc_timer_cancel(&grpclb_policy->lb_fallback_timer_);
|
1157
|
-
grpclb_policy->CancelBalancerChannelConnectivityWatchLocked();
|
1158
|
-
grpclb_policy->fallback_mode_ = true;
|
1159
|
-
grpclb_policy->CreateOrUpdateChildPolicyLocked();
|
1211
|
+
grpclb_policy());
|
1212
|
+
grpclb_policy()->fallback_at_startup_checks_pending_ = false;
|
1213
|
+
grpc_timer_cancel(&grpclb_policy()->lb_fallback_timer_);
|
1214
|
+
grpclb_policy()->CancelBalancerChannelConnectivityWatchLocked();
|
1215
|
+
grpclb_policy()->fallback_mode_ = true;
|
1216
|
+
grpclb_policy()->CreateOrUpdateChildPolicyLocked();
|
1160
1217
|
} else {
|
1161
1218
|
// This handles the fallback-after-startup case.
|
1162
|
-
grpclb_policy->MaybeEnterFallbackModeAfterStartup();
|
1219
|
+
grpclb_policy()->MaybeEnterFallbackModeAfterStartup();
|
1163
1220
|
}
|
1164
|
-
grpclb_policy->lb_calld_.reset();
|
1165
|
-
GPR_ASSERT(!grpclb_policy->shutting_down_);
|
1166
|
-
grpclb_policy->channel_control_helper()->RequestReresolution();
|
1167
|
-
if (
|
1221
|
+
grpclb_policy()->lb_calld_.reset();
|
1222
|
+
GPR_ASSERT(!grpclb_policy()->shutting_down_);
|
1223
|
+
grpclb_policy()->channel_control_helper()->RequestReresolution();
|
1224
|
+
if (seen_initial_response_) {
|
1168
1225
|
// If we lose connection to the LB server, reset the backoff and restart
|
1169
1226
|
// the LB call immediately.
|
1170
|
-
grpclb_policy->lb_call_backoff_.Reset();
|
1171
|
-
grpclb_policy->StartBalancerCallLocked();
|
1227
|
+
grpclb_policy()->lb_call_backoff_.Reset();
|
1228
|
+
grpclb_policy()->StartBalancerCallLocked();
|
1172
1229
|
} else {
|
1173
1230
|
// If this LB call fails establishing any connection to the LB server,
|
1174
1231
|
// retry later.
|
1175
|
-
grpclb_policy->StartBalancerCallRetryTimerLocked();
|
1232
|
+
grpclb_policy()->StartBalancerCallRetryTimerLocked();
|
1176
1233
|
}
|
1177
1234
|
}
|
1178
|
-
|
1235
|
+
Unref(DEBUG_LOCATION, "lb_call_ended");
|
1179
1236
|
}
|
1180
1237
|
|
1181
1238
|
//
|
1182
1239
|
// helper code for creating balancer channel
|
1183
1240
|
//
|
1184
1241
|
|
1185
|
-
ServerAddressList ExtractBalancerAddresses(const
|
1186
|
-
ServerAddressList
|
1187
|
-
|
1188
|
-
|
1189
|
-
|
1190
|
-
// recursively use the grpclb policy in the channel used to talk to
|
1191
|
-
// the balancers. Note that we do NOT strip out the balancer_name
|
1192
|
-
// channel arg, since we need that to set the authority correctly
|
1193
|
-
// to talk to the balancers.
|
1194
|
-
static const char* args_to_remove[] = {
|
1195
|
-
GRPC_ARG_ADDRESS_IS_BALANCER,
|
1196
|
-
};
|
1197
|
-
balancer_addresses.emplace_back(
|
1198
|
-
addresses[i].address(),
|
1199
|
-
grpc_channel_args_copy_and_remove(addresses[i].args(), args_to_remove,
|
1200
|
-
GPR_ARRAY_SIZE(args_to_remove)));
|
1201
|
-
}
|
1202
|
-
}
|
1203
|
-
return balancer_addresses;
|
1242
|
+
ServerAddressList ExtractBalancerAddresses(const grpc_channel_args& args) {
|
1243
|
+
const ServerAddressList* addresses =
|
1244
|
+
FindGrpclbBalancerAddressesInChannelArgs(args);
|
1245
|
+
if (addresses != nullptr) return *addresses;
|
1246
|
+
return ServerAddressList();
|
1204
1247
|
}
|
1205
1248
|
|
1206
1249
|
/* Returns the channel args for the LB channel, used to create a bidirectional
|
@@ -1232,34 +1275,43 @@ grpc_channel_args* BuildBalancerChannelArgs(
|
|
1232
1275
|
// the LB channel.
|
1233
1276
|
GRPC_ARG_FAKE_RESOLVER_RESPONSE_GENERATOR,
|
1234
1277
|
// The LB channel should use the authority indicated by the target
|
1235
|
-
// authority table (see \a
|
1278
|
+
// authority table (see \a ModifyGrpclbBalancerChannelArgs),
|
1236
1279
|
// as opposed to the authority from the parent channel.
|
1237
1280
|
GRPC_ARG_DEFAULT_AUTHORITY,
|
1238
1281
|
// Just as for \a GRPC_ARG_DEFAULT_AUTHORITY, the LB channel should be
|
1239
1282
|
// treated as a stand-alone channel and not inherit this argument from the
|
1240
1283
|
// args of the parent channel.
|
1241
1284
|
GRPC_SSL_TARGET_NAME_OVERRIDE_ARG,
|
1285
|
+
// Don't want to pass down channelz node from parent; the balancer
|
1286
|
+
// channel will get its own.
|
1287
|
+
GRPC_ARG_CHANNELZ_CHANNEL_NODE,
|
1242
1288
|
};
|
1243
1289
|
// Channel args to add.
|
1244
|
-
|
1245
|
-
|
1246
|
-
|
1290
|
+
absl::InlinedVector<grpc_arg, 3> args_to_add;
|
1291
|
+
// The fake resolver response generator, which we use to inject
|
1292
|
+
// address updates into the LB channel.
|
1293
|
+
args_to_add.emplace_back(
|
1247
1294
|
grpc_core::FakeResolverResponseGenerator::MakeChannelArg(
|
1248
|
-
response_generator)
|
1249
|
-
|
1250
|
-
|
1251
|
-
|
1252
|
-
|
1253
|
-
|
1254
|
-
|
1255
|
-
|
1256
|
-
|
1295
|
+
response_generator));
|
1296
|
+
// A channel arg indicating the target is a grpclb load balancer.
|
1297
|
+
args_to_add.emplace_back(grpc_channel_arg_integer_create(
|
1298
|
+
const_cast<char*>(GRPC_ARG_ADDRESS_IS_GRPCLB_LOAD_BALANCER), 1));
|
1299
|
+
// The parent channel's channelz uuid.
|
1300
|
+
channelz::ChannelNode* channelz_node = nullptr;
|
1301
|
+
const grpc_arg* arg =
|
1302
|
+
grpc_channel_args_find(args, GRPC_ARG_CHANNELZ_CHANNEL_NODE);
|
1303
|
+
if (arg != nullptr && arg->type == GRPC_ARG_POINTER &&
|
1304
|
+
arg->value.pointer.p != nullptr) {
|
1305
|
+
channelz_node = static_cast<channelz::ChannelNode*>(arg->value.pointer.p);
|
1306
|
+
args_to_add.emplace_back(
|
1307
|
+
channelz::MakeParentUuidArg(channelz_node->uuid()));
|
1308
|
+
}
|
1257
1309
|
// Construct channel args.
|
1258
1310
|
grpc_channel_args* new_args = grpc_channel_args_copy_and_add_and_remove(
|
1259
|
-
args, args_to_remove, GPR_ARRAY_SIZE(args_to_remove), args_to_add,
|
1260
|
-
|
1311
|
+
args, args_to_remove, GPR_ARRAY_SIZE(args_to_remove), args_to_add.data(),
|
1312
|
+
args_to_add.size());
|
1261
1313
|
// Make any necessary modifications for security.
|
1262
|
-
return
|
1314
|
+
return ModifyGrpclbBalancerChannelArgs(addresses, new_args);
|
1263
1315
|
}
|
1264
1316
|
|
1265
1317
|
//
|
@@ -1277,13 +1329,11 @@ GrpcLb::GrpcLb(Args args)
|
|
1277
1329
|
.set_jitter(GRPC_GRPCLB_RECONNECT_JITTER)
|
1278
1330
|
.set_max_backoff(GRPC_GRPCLB_RECONNECT_MAX_BACKOFF_SECONDS *
|
1279
1331
|
1000)) {
|
1280
|
-
// Initialization
|
1281
|
-
GRPC_CLOSURE_INIT(&lb_on_fallback_, &GrpcLb::
|
1282
|
-
|
1283
|
-
GRPC_CLOSURE_INIT(&
|
1284
|
-
|
1285
|
-
grpc_combiner_scheduler(args.combiner));
|
1286
|
-
gpr_mu_init(&child_policy_mu_);
|
1332
|
+
// Closure Initialization
|
1333
|
+
GRPC_CLOSURE_INIT(&lb_on_fallback_, &GrpcLb::OnFallbackTimer, this,
|
1334
|
+
grpc_schedule_on_exec_ctx);
|
1335
|
+
GRPC_CLOSURE_INIT(&lb_on_call_retry_, &GrpcLb::OnBalancerCallRetryTimer, this,
|
1336
|
+
grpc_schedule_on_exec_ctx);
|
1287
1337
|
// Record server name.
|
1288
1338
|
const grpc_arg* arg = grpc_channel_args_find(args.args, GRPC_ARG_SERVER_URI);
|
1289
1339
|
const char* server_uri = grpc_channel_arg_get_string(arg);
|
@@ -1309,7 +1359,6 @@ GrpcLb::GrpcLb(Args args)
|
|
1309
1359
|
GrpcLb::~GrpcLb() {
|
1310
1360
|
gpr_free((void*)server_name_);
|
1311
1361
|
grpc_channel_args_destroy(args_);
|
1312
|
-
gpr_mu_destroy(&child_policy_mu_);
|
1313
1362
|
}
|
1314
1363
|
|
1315
1364
|
void GrpcLb::ShutdownLocked() {
|
@@ -1319,21 +1368,14 @@ void GrpcLb::ShutdownLocked() {
|
|
1319
1368
|
grpc_timer_cancel(&lb_call_retry_timer_);
|
1320
1369
|
}
|
1321
1370
|
if (fallback_at_startup_checks_pending_) {
|
1371
|
+
fallback_at_startup_checks_pending_ = false;
|
1322
1372
|
grpc_timer_cancel(&lb_fallback_timer_);
|
1323
1373
|
CancelBalancerChannelConnectivityWatchLocked();
|
1324
1374
|
}
|
1325
1375
|
if (child_policy_ != nullptr) {
|
1326
1376
|
grpc_pollset_set_del_pollset_set(child_policy_->interested_parties(),
|
1327
1377
|
interested_parties());
|
1328
|
-
}
|
1329
|
-
if (pending_child_policy_ != nullptr) {
|
1330
|
-
grpc_pollset_set_del_pollset_set(
|
1331
|
-
pending_child_policy_->interested_parties(), interested_parties());
|
1332
|
-
}
|
1333
|
-
{
|
1334
|
-
MutexLock lock(&child_policy_mu_);
|
1335
1378
|
child_policy_.reset();
|
1336
|
-
pending_child_policy_.reset();
|
1337
1379
|
}
|
1338
1380
|
// We destroy the LB channel here instead of in our destructor because
|
1339
1381
|
// destroying the channel triggers a last callback to
|
@@ -1342,7 +1384,6 @@ void GrpcLb::ShutdownLocked() {
|
|
1342
1384
|
if (lb_channel_ != nullptr) {
|
1343
1385
|
grpc_channel_destroy(lb_channel_);
|
1344
1386
|
lb_channel_ = nullptr;
|
1345
|
-
gpr_atm_no_barrier_store(&lb_channel_uuid_, 0);
|
1346
1387
|
}
|
1347
1388
|
}
|
1348
1389
|
|
@@ -1357,43 +1398,12 @@ void GrpcLb::ResetBackoffLocked() {
|
|
1357
1398
|
if (child_policy_ != nullptr) {
|
1358
1399
|
child_policy_->ResetBackoffLocked();
|
1359
1400
|
}
|
1360
|
-
if (pending_child_policy_ != nullptr) {
|
1361
|
-
pending_child_policy_->ResetBackoffLocked();
|
1362
|
-
}
|
1363
|
-
}
|
1364
|
-
|
1365
|
-
void GrpcLb::FillChildRefsForChannelz(
|
1366
|
-
channelz::ChildRefsList* child_subchannels,
|
1367
|
-
channelz::ChildRefsList* child_channels) {
|
1368
|
-
{
|
1369
|
-
// Delegate to the child policy to fill the children subchannels.
|
1370
|
-
// This must be done holding child_policy_mu_, since this method
|
1371
|
-
// does not run in the combiner.
|
1372
|
-
MutexLock lock(&child_policy_mu_);
|
1373
|
-
if (child_policy_ != nullptr) {
|
1374
|
-
child_policy_->FillChildRefsForChannelz(child_subchannels,
|
1375
|
-
child_channels);
|
1376
|
-
}
|
1377
|
-
if (pending_child_policy_ != nullptr) {
|
1378
|
-
pending_child_policy_->FillChildRefsForChannelz(child_subchannels,
|
1379
|
-
child_channels);
|
1380
|
-
}
|
1381
|
-
}
|
1382
|
-
gpr_atm uuid = gpr_atm_no_barrier_load(&lb_channel_uuid_);
|
1383
|
-
if (uuid != 0) {
|
1384
|
-
child_channels->push_back(uuid);
|
1385
|
-
}
|
1386
1401
|
}
|
1387
1402
|
|
1388
1403
|
void GrpcLb::UpdateLocked(UpdateArgs args) {
|
1389
1404
|
const bool is_initial_update = lb_channel_ == nullptr;
|
1390
|
-
|
1391
|
-
|
1392
|
-
if (grpclb_config != nullptr) {
|
1393
|
-
child_policy_config_ = grpclb_config->child_policy();
|
1394
|
-
} else {
|
1395
|
-
child_policy_config_ = nullptr;
|
1396
|
-
}
|
1405
|
+
config_ = args.config;
|
1406
|
+
GPR_ASSERT(config_ != nullptr);
|
1397
1407
|
ProcessAddressesAndChannelArgsLocked(args.addresses, *args.args);
|
1398
1408
|
// Update the existing child policy.
|
1399
1409
|
if (child_policy_ != nullptr) CreateOrUpdateChildPolicyLocked();
|
@@ -1412,12 +1422,10 @@ void GrpcLb::UpdateLocked(UpdateArgs args) {
|
|
1412
1422
|
grpc_channel_get_channel_stack(lb_channel_));
|
1413
1423
|
GPR_ASSERT(client_channel_elem->filter == &grpc_client_channel_filter);
|
1414
1424
|
// Ref held by callback.
|
1415
|
-
Ref(DEBUG_LOCATION, "
|
1416
|
-
|
1417
|
-
client_channel_elem,
|
1418
|
-
|
1419
|
-
&lb_channel_connectivity_, &lb_channel_on_connectivity_changed_,
|
1420
|
-
nullptr);
|
1425
|
+
watcher_ = new StateWatcher(Ref(DEBUG_LOCATION, "StateWatcher"));
|
1426
|
+
grpc_client_channel_start_connectivity_watch(
|
1427
|
+
client_channel_elem, GRPC_CHANNEL_IDLE,
|
1428
|
+
OrphanablePtr<AsyncConnectivityStateWatcherInterface>(watcher_));
|
1421
1429
|
// Start balancer call.
|
1422
1430
|
StartBalancerCallLocked();
|
1423
1431
|
}
|
@@ -1427,27 +1435,25 @@ void GrpcLb::UpdateLocked(UpdateArgs args) {
|
|
1427
1435
|
// helpers for UpdateLocked()
|
1428
1436
|
//
|
1429
1437
|
|
1430
|
-
|
1431
|
-
|
1432
|
-
|
1438
|
+
ServerAddressList AddNullLbTokenToAddresses(
|
1439
|
+
const ServerAddressList& addresses) {
|
1440
|
+
static const char* lb_token = "";
|
1433
1441
|
grpc_arg arg = grpc_channel_arg_pointer_create(
|
1434
|
-
const_cast<char*>(GRPC_ARG_GRPCLB_ADDRESS_LB_TOKEN),
|
1435
|
-
&lb_token_arg_vtable);
|
1436
|
-
ServerAddressList
|
1442
|
+
const_cast<char*>(GRPC_ARG_GRPCLB_ADDRESS_LB_TOKEN),
|
1443
|
+
const_cast<char*>(lb_token), &lb_token_arg_vtable);
|
1444
|
+
ServerAddressList addresses_out;
|
1437
1445
|
for (size_t i = 0; i < addresses.size(); ++i) {
|
1438
|
-
|
1439
|
-
|
1440
|
-
|
1441
|
-
grpc_channel_args_copy_and_add(addresses[i].args(), &arg, 1));
|
1442
|
-
}
|
1446
|
+
addresses_out.emplace_back(
|
1447
|
+
addresses[i].address(),
|
1448
|
+
grpc_channel_args_copy_and_add(addresses[i].args(), &arg, 1));
|
1443
1449
|
}
|
1444
|
-
return
|
1450
|
+
return addresses_out;
|
1445
1451
|
}
|
1446
1452
|
|
1447
1453
|
void GrpcLb::ProcessAddressesAndChannelArgsLocked(
|
1448
1454
|
const ServerAddressList& addresses, const grpc_channel_args& args) {
|
1449
1455
|
// Update fallback address list.
|
1450
|
-
fallback_backend_addresses_ =
|
1456
|
+
fallback_backend_addresses_ = AddNullLbTokenToAddresses(addresses);
|
1451
1457
|
// Make sure that GRPC_ARG_LB_POLICY_NAME is set in channel args,
|
1452
1458
|
// since we use this to trigger the client_load_reporting filter.
|
1453
1459
|
static const char* args_to_remove[] = {GRPC_ARG_LB_POLICY_NAME};
|
@@ -1457,22 +1463,15 @@ void GrpcLb::ProcessAddressesAndChannelArgsLocked(
|
|
1457
1463
|
args_ = grpc_channel_args_copy_and_add_and_remove(
|
1458
1464
|
&args, args_to_remove, GPR_ARRAY_SIZE(args_to_remove), &new_arg, 1);
|
1459
1465
|
// Construct args for balancer channel.
|
1460
|
-
ServerAddressList balancer_addresses = ExtractBalancerAddresses(
|
1466
|
+
ServerAddressList balancer_addresses = ExtractBalancerAddresses(args);
|
1461
1467
|
grpc_channel_args* lb_channel_args = BuildBalancerChannelArgs(
|
1462
1468
|
balancer_addresses, response_generator_.get(), &args);
|
1463
1469
|
// Create balancer channel if needed.
|
1464
1470
|
if (lb_channel_ == nullptr) {
|
1465
|
-
|
1466
|
-
gpr_asprintf(&uri_str, "fake:///%s", server_name_);
|
1471
|
+
std::string uri_str = absl::StrCat("fake:///", server_name_);
|
1467
1472
|
lb_channel_ =
|
1468
|
-
|
1473
|
+
CreateGrpclbBalancerChannel(uri_str.c_str(), *lb_channel_args);
|
1469
1474
|
GPR_ASSERT(lb_channel_ != nullptr);
|
1470
|
-
grpc_core::channelz::ChannelNode* channel_node =
|
1471
|
-
grpc_channel_get_channelz_node(lb_channel_);
|
1472
|
-
if (channel_node != nullptr) {
|
1473
|
-
gpr_atm_no_barrier_store(&lb_channel_uuid_, channel_node->uuid());
|
1474
|
-
}
|
1475
|
-
gpr_free(uri_str);
|
1476
1475
|
}
|
1477
1476
|
// Propagate updates to the LB channel (pick_first) through the fake
|
1478
1477
|
// resolver.
|
@@ -1482,47 +1481,11 @@ void GrpcLb::ProcessAddressesAndChannelArgsLocked(
|
|
1482
1481
|
response_generator_->SetResponse(std::move(result));
|
1483
1482
|
}
|
1484
1483
|
|
1485
|
-
void GrpcLb::OnBalancerChannelConnectivityChangedLocked(void* arg,
|
1486
|
-
grpc_error* error) {
|
1487
|
-
GrpcLb* self = static_cast<GrpcLb*>(arg);
|
1488
|
-
if (!self->shutting_down_ && self->fallback_at_startup_checks_pending_) {
|
1489
|
-
if (self->lb_channel_connectivity_ != GRPC_CHANNEL_TRANSIENT_FAILURE) {
|
1490
|
-
// Not in TRANSIENT_FAILURE. Renew connectivity watch.
|
1491
|
-
grpc_channel_element* client_channel_elem =
|
1492
|
-
grpc_channel_stack_last_element(
|
1493
|
-
grpc_channel_get_channel_stack(self->lb_channel_));
|
1494
|
-
GPR_ASSERT(client_channel_elem->filter == &grpc_client_channel_filter);
|
1495
|
-
grpc_client_channel_watch_connectivity_state(
|
1496
|
-
client_channel_elem,
|
1497
|
-
grpc_polling_entity_create_from_pollset_set(
|
1498
|
-
self->interested_parties()),
|
1499
|
-
&self->lb_channel_connectivity_,
|
1500
|
-
&self->lb_channel_on_connectivity_changed_, nullptr);
|
1501
|
-
return; // Early out so we don't drop the ref below.
|
1502
|
-
}
|
1503
|
-
// In TRANSIENT_FAILURE. Cancel the fallback timer and go into
|
1504
|
-
// fallback mode immediately.
|
1505
|
-
gpr_log(GPR_INFO,
|
1506
|
-
"[grpclb %p] balancer channel in state TRANSIENT_FAILURE; "
|
1507
|
-
"entering fallback mode",
|
1508
|
-
self);
|
1509
|
-
self->fallback_at_startup_checks_pending_ = false;
|
1510
|
-
grpc_timer_cancel(&self->lb_fallback_timer_);
|
1511
|
-
self->fallback_mode_ = true;
|
1512
|
-
self->CreateOrUpdateChildPolicyLocked();
|
1513
|
-
}
|
1514
|
-
// Done watching connectivity state, so drop ref.
|
1515
|
-
self->Unref(DEBUG_LOCATION, "watch_lb_channel_connectivity");
|
1516
|
-
}
|
1517
|
-
|
1518
1484
|
void GrpcLb::CancelBalancerChannelConnectivityWatchLocked() {
|
1519
1485
|
grpc_channel_element* client_channel_elem = grpc_channel_stack_last_element(
|
1520
1486
|
grpc_channel_get_channel_stack(lb_channel_));
|
1521
1487
|
GPR_ASSERT(client_channel_elem->filter == &grpc_client_channel_filter);
|
1522
|
-
|
1523
|
-
client_channel_elem,
|
1524
|
-
grpc_polling_entity_create_from_pollset_set(interested_parties()),
|
1525
|
-
nullptr, &lb_channel_on_connectivity_changed_, nullptr);
|
1488
|
+
grpc_client_channel_stop_connectivity_watch(client_channel_elem, watcher_);
|
1526
1489
|
}
|
1527
1490
|
|
1528
1491
|
//
|
@@ -1561,24 +1524,30 @@ void GrpcLb::StartBalancerCallRetryTimerLocked() {
|
|
1561
1524
|
// with the callback.
|
1562
1525
|
auto self = Ref(DEBUG_LOCATION, "on_balancer_call_retry_timer");
|
1563
1526
|
self.release();
|
1564
|
-
GRPC_CLOSURE_INIT(&lb_on_call_retry_, &GrpcLb::OnBalancerCallRetryTimerLocked,
|
1565
|
-
this, grpc_combiner_scheduler(combiner()));
|
1566
1527
|
retry_timer_callback_pending_ = true;
|
1567
1528
|
grpc_timer_init(&lb_call_retry_timer_, next_try, &lb_on_call_retry_);
|
1568
1529
|
}
|
1569
1530
|
|
1570
|
-
void GrpcLb::
|
1531
|
+
void GrpcLb::OnBalancerCallRetryTimer(void* arg, grpc_error* error) {
|
1571
1532
|
GrpcLb* grpclb_policy = static_cast<GrpcLb*>(arg);
|
1572
|
-
|
1573
|
-
|
1574
|
-
grpclb_policy
|
1533
|
+
GRPC_ERROR_REF(error); // ref owned by lambda
|
1534
|
+
grpclb_policy->work_serializer()->Run(
|
1535
|
+
[grpclb_policy, error]() {
|
1536
|
+
grpclb_policy->OnBalancerCallRetryTimerLocked(error);
|
1537
|
+
},
|
1538
|
+
DEBUG_LOCATION);
|
1539
|
+
}
|
1540
|
+
|
1541
|
+
void GrpcLb::OnBalancerCallRetryTimerLocked(grpc_error* error) {
|
1542
|
+
retry_timer_callback_pending_ = false;
|
1543
|
+
if (!shutting_down_ && error == GRPC_ERROR_NONE && lb_calld_ == nullptr) {
|
1575
1544
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
1576
|
-
gpr_log(GPR_INFO, "[grpclb %p] Restarting call to LB server",
|
1577
|
-
grpclb_policy);
|
1545
|
+
gpr_log(GPR_INFO, "[grpclb %p] Restarting call to LB server", this);
|
1578
1546
|
}
|
1579
|
-
|
1547
|
+
StartBalancerCallLocked();
|
1580
1548
|
}
|
1581
|
-
|
1549
|
+
Unref(DEBUG_LOCATION, "on_balancer_call_retry_timer");
|
1550
|
+
GRPC_ERROR_UNREF(error);
|
1582
1551
|
}
|
1583
1552
|
|
1584
1553
|
//
|
@@ -1603,22 +1572,30 @@ void GrpcLb::MaybeEnterFallbackModeAfterStartup() {
|
|
1603
1572
|
}
|
1604
1573
|
}
|
1605
1574
|
|
1606
|
-
void GrpcLb::
|
1575
|
+
void GrpcLb::OnFallbackTimer(void* arg, grpc_error* error) {
|
1607
1576
|
GrpcLb* grpclb_policy = static_cast<GrpcLb*>(arg);
|
1577
|
+
GRPC_ERROR_REF(error); // ref owned by lambda
|
1578
|
+
grpclb_policy->work_serializer()->Run(
|
1579
|
+
[grpclb_policy, error]() { grpclb_policy->OnFallbackTimerLocked(error); },
|
1580
|
+
DEBUG_LOCATION);
|
1581
|
+
}
|
1582
|
+
|
1583
|
+
void GrpcLb::OnFallbackTimerLocked(grpc_error* error) {
|
1608
1584
|
// If we receive a serverlist after the timer fires but before this callback
|
1609
1585
|
// actually runs, don't fall back.
|
1610
|
-
if (
|
1611
|
-
|
1586
|
+
if (fallback_at_startup_checks_pending_ && !shutting_down_ &&
|
1587
|
+
error == GRPC_ERROR_NONE) {
|
1612
1588
|
gpr_log(GPR_INFO,
|
1613
1589
|
"[grpclb %p] No response from balancer after fallback timeout; "
|
1614
1590
|
"entering fallback mode",
|
1615
|
-
|
1616
|
-
|
1617
|
-
|
1618
|
-
|
1619
|
-
|
1591
|
+
this);
|
1592
|
+
fallback_at_startup_checks_pending_ = false;
|
1593
|
+
CancelBalancerChannelConnectivityWatchLocked();
|
1594
|
+
fallback_mode_ = true;
|
1595
|
+
CreateOrUpdateChildPolicyLocked();
|
1620
1596
|
}
|
1621
|
-
|
1597
|
+
Unref(DEBUG_LOCATION, "on_fallback_timer");
|
1598
|
+
GRPC_ERROR_UNREF(error);
|
1622
1599
|
}
|
1623
1600
|
|
1624
1601
|
//
|
@@ -1627,7 +1604,7 @@ void GrpcLb::OnFallbackTimerLocked(void* arg, grpc_error* error) {
|
|
1627
1604
|
|
1628
1605
|
grpc_channel_args* GrpcLb::CreateChildPolicyArgsLocked(
|
1629
1606
|
bool is_backend_from_grpclb_load_balancer) {
|
1630
|
-
InlinedVector<grpc_arg, 2> args_to_add;
|
1607
|
+
absl::InlinedVector<grpc_arg, 2> args_to_add;
|
1631
1608
|
args_to_add.emplace_back(grpc_channel_arg_integer_create(
|
1632
1609
|
const_cast<char*>(GRPC_ARG_ADDRESS_IS_BACKEND_FROM_GRPCLB_LOAD_BALANCER),
|
1633
1610
|
is_backend_from_grpclb_load_balancer));
|
@@ -1640,25 +1617,17 @@ grpc_channel_args* GrpcLb::CreateChildPolicyArgsLocked(
|
|
1640
1617
|
}
|
1641
1618
|
|
1642
1619
|
OrphanablePtr<LoadBalancingPolicy> GrpcLb::CreateChildPolicyLocked(
|
1643
|
-
const
|
1644
|
-
Helper* helper = New<Helper>(Ref());
|
1620
|
+
const grpc_channel_args* args) {
|
1645
1621
|
LoadBalancingPolicy::Args lb_policy_args;
|
1646
|
-
lb_policy_args.
|
1622
|
+
lb_policy_args.work_serializer = work_serializer();
|
1647
1623
|
lb_policy_args.args = args;
|
1648
|
-
lb_policy_args.channel_control_helper =
|
1649
|
-
UniquePtr<ChannelControlHelper>(helper);
|
1624
|
+
lb_policy_args.channel_control_helper = absl::make_unique<Helper>(Ref());
|
1650
1625
|
OrphanablePtr<LoadBalancingPolicy> lb_policy =
|
1651
|
-
|
1652
|
-
|
1653
|
-
if (GPR_UNLIKELY(lb_policy == nullptr)) {
|
1654
|
-
gpr_log(GPR_ERROR, "[grpclb %p] Failure creating child policy %s", this,
|
1655
|
-
name);
|
1656
|
-
return nullptr;
|
1657
|
-
}
|
1658
|
-
helper->set_child(lb_policy.get());
|
1626
|
+
MakeOrphanable<ChildPolicyHandler>(std::move(lb_policy_args),
|
1627
|
+
&grpc_lb_glb_trace);
|
1659
1628
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
1660
|
-
gpr_log(GPR_INFO, "[grpclb %p] Created new child policy
|
1661
|
-
|
1629
|
+
gpr_log(GPR_INFO, "[grpclb %p] Created new child policy handler (%p)", this,
|
1630
|
+
lb_policy.get());
|
1662
1631
|
}
|
1663
1632
|
// Add the gRPC LB's interested_parties pollset_set to that of the newly
|
1664
1633
|
// created child policy. This will make the child policy progress upon
|
@@ -1688,103 +1657,17 @@ void GrpcLb::CreateOrUpdateChildPolicyLocked() {
|
|
1688
1657
|
update_args.args =
|
1689
1658
|
CreateChildPolicyArgsLocked(is_backend_from_grpclb_load_balancer);
|
1690
1659
|
GPR_ASSERT(update_args.args != nullptr);
|
1691
|
-
update_args.config =
|
1692
|
-
//
|
1693
|
-
|
1694
|
-
|
1695
|
-
// policy transitions into state READY, we swap it into child_policy_,
|
1696
|
-
// replacing the original child policy. So pending_child_policy_ is
|
1697
|
-
// non-null only between when we apply an update that changes the child
|
1698
|
-
// policy name and when the new child reports state READY.
|
1699
|
-
//
|
1700
|
-
// Updates can arrive at any point during this transition. We always
|
1701
|
-
// apply updates relative to the most recently created child policy,
|
1702
|
-
// even if the most recent one is still in pending_child_policy_. This
|
1703
|
-
// is true both when applying the updates to an existing child policy
|
1704
|
-
// and when determining whether we need to create a new policy.
|
1705
|
-
//
|
1706
|
-
// As a result of this, there are several cases to consider here:
|
1707
|
-
//
|
1708
|
-
// 1. We have no existing child policy (i.e., we have started up but
|
1709
|
-
// have not yet received a serverlist from the balancer or gone
|
1710
|
-
// into fallback mode; in this case, both child_policy_ and
|
1711
|
-
// pending_child_policy_ are null). In this case, we create a
|
1712
|
-
// new child policy and store it in child_policy_.
|
1713
|
-
//
|
1714
|
-
// 2. We have an existing child policy and have no pending child policy
|
1715
|
-
// from a previous update (i.e., either there has not been a
|
1716
|
-
// previous update that changed the policy name, or we have already
|
1717
|
-
// finished swapping in the new policy; in this case, child_policy_
|
1718
|
-
// is non-null but pending_child_policy_ is null). In this case:
|
1719
|
-
// a. If child_policy_->name() equals child_policy_name, then we
|
1720
|
-
// update the existing child policy.
|
1721
|
-
// b. If child_policy_->name() does not equal child_policy_name,
|
1722
|
-
// we create a new policy. The policy will be stored in
|
1723
|
-
// pending_child_policy_ and will later be swapped into
|
1724
|
-
// child_policy_ by the helper when the new child transitions
|
1725
|
-
// into state READY.
|
1726
|
-
//
|
1727
|
-
// 3. We have an existing child policy and have a pending child policy
|
1728
|
-
// from a previous update (i.e., a previous update set
|
1729
|
-
// pending_child_policy_ as per case 2b above and that policy has
|
1730
|
-
// not yet transitioned into state READY and been swapped into
|
1731
|
-
// child_policy_; in this case, both child_policy_ and
|
1732
|
-
// pending_child_policy_ are non-null). In this case:
|
1733
|
-
// a. If pending_child_policy_->name() equals child_policy_name,
|
1734
|
-
// then we update the existing pending child policy.
|
1735
|
-
// b. If pending_child_policy->name() does not equal
|
1736
|
-
// child_policy_name, then we create a new policy. The new
|
1737
|
-
// policy is stored in pending_child_policy_ (replacing the one
|
1738
|
-
// that was there before, which will be immediately shut down)
|
1739
|
-
// and will later be swapped into child_policy_ by the helper
|
1740
|
-
// when the new child transitions into state READY.
|
1741
|
-
const char* child_policy_name = child_policy_config_ == nullptr
|
1742
|
-
? "round_robin"
|
1743
|
-
: child_policy_config_->name();
|
1744
|
-
const bool create_policy =
|
1745
|
-
// case 1
|
1746
|
-
child_policy_ == nullptr ||
|
1747
|
-
// case 2b
|
1748
|
-
(pending_child_policy_ == nullptr &&
|
1749
|
-
strcmp(child_policy_->name(), child_policy_name) != 0) ||
|
1750
|
-
// case 3b
|
1751
|
-
(pending_child_policy_ != nullptr &&
|
1752
|
-
strcmp(pending_child_policy_->name(), child_policy_name) != 0);
|
1753
|
-
LoadBalancingPolicy* policy_to_update = nullptr;
|
1754
|
-
if (create_policy) {
|
1755
|
-
// Cases 1, 2b, and 3b: create a new child policy.
|
1756
|
-
// If child_policy_ is null, we set it (case 1), else we set
|
1757
|
-
// pending_child_policy_ (cases 2b and 3b).
|
1758
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
1759
|
-
gpr_log(GPR_INFO, "[grpclb %p] Creating new %schild policy %s", this,
|
1760
|
-
child_policy_ == nullptr ? "" : "pending ", child_policy_name);
|
1761
|
-
}
|
1762
|
-
auto new_policy =
|
1763
|
-
CreateChildPolicyLocked(child_policy_name, update_args.args);
|
1764
|
-
// Swap the policy into place.
|
1765
|
-
auto& lb_policy =
|
1766
|
-
child_policy_ == nullptr ? child_policy_ : pending_child_policy_;
|
1767
|
-
{
|
1768
|
-
MutexLock lock(&child_policy_mu_);
|
1769
|
-
lb_policy = std::move(new_policy);
|
1770
|
-
}
|
1771
|
-
policy_to_update = lb_policy.get();
|
1772
|
-
} else {
|
1773
|
-
// Cases 2a and 3a: update an existing policy.
|
1774
|
-
// If we have a pending child policy, send the update to the pending
|
1775
|
-
// policy (case 3a), else send it to the current policy (case 2a).
|
1776
|
-
policy_to_update = pending_child_policy_ != nullptr
|
1777
|
-
? pending_child_policy_.get()
|
1778
|
-
: child_policy_.get();
|
1660
|
+
update_args.config = config_->child_policy();
|
1661
|
+
// Create child policy if needed.
|
1662
|
+
if (child_policy_ == nullptr) {
|
1663
|
+
child_policy_ = CreateChildPolicyLocked(update_args.args);
|
1779
1664
|
}
|
1780
|
-
GPR_ASSERT(policy_to_update != nullptr);
|
1781
1665
|
// Update the policy.
|
1782
1666
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
1783
|
-
gpr_log(GPR_INFO, "[grpclb %p] Updating
|
1784
|
-
|
1785
|
-
policy_to_update);
|
1667
|
+
gpr_log(GPR_INFO, "[grpclb %p] Updating child policy handler %p", this,
|
1668
|
+
child_policy_.get());
|
1786
1669
|
}
|
1787
|
-
|
1670
|
+
child_policy_->UpdateLocked(std::move(update_args));
|
1788
1671
|
}
|
1789
1672
|
|
1790
1673
|
//
|
@@ -1795,39 +1678,53 @@ class GrpcLbFactory : public LoadBalancingPolicyFactory {
|
|
1795
1678
|
public:
|
1796
1679
|
OrphanablePtr<LoadBalancingPolicy> CreateLoadBalancingPolicy(
|
1797
1680
|
LoadBalancingPolicy::Args args) const override {
|
1798
|
-
return
|
1681
|
+
return MakeOrphanable<GrpcLb>(std::move(args));
|
1799
1682
|
}
|
1800
1683
|
|
1801
1684
|
const char* name() const override { return kGrpclb; }
|
1802
1685
|
|
1803
|
-
RefCountedPtr<
|
1804
|
-
const
|
1686
|
+
RefCountedPtr<LoadBalancingPolicy::Config> ParseLoadBalancingConfig(
|
1687
|
+
const Json& json, grpc_error** error) const override {
|
1805
1688
|
GPR_DEBUG_ASSERT(error != nullptr && *error == GRPC_ERROR_NONE);
|
1806
|
-
if (json ==
|
1807
|
-
return
|
1808
|
-
New<ParsedGrpcLbConfig>(nullptr));
|
1689
|
+
if (json.type() == Json::Type::JSON_NULL) {
|
1690
|
+
return MakeRefCounted<GrpcLbConfig>(nullptr, "");
|
1809
1691
|
}
|
1810
|
-
|
1811
|
-
|
1812
|
-
|
1813
|
-
|
1814
|
-
|
1815
|
-
|
1816
|
-
|
1817
|
-
|
1818
|
-
|
1819
|
-
|
1820
|
-
|
1821
|
-
|
1822
|
-
field, &parse_error);
|
1823
|
-
if (parse_error != GRPC_ERROR_NONE) {
|
1824
|
-
error_list.push_back(parse_error);
|
1825
|
-
}
|
1692
|
+
std::vector<grpc_error*> error_list;
|
1693
|
+
Json child_policy_config_json_tmp;
|
1694
|
+
const Json* child_policy_config_json;
|
1695
|
+
std::string service_name;
|
1696
|
+
auto it = json.object_value().find("serviceName");
|
1697
|
+
if (it != json.object_value().end()) {
|
1698
|
+
const Json& service_name_json = it->second;
|
1699
|
+
if (service_name_json.type() != Json::Type::STRING) {
|
1700
|
+
error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
1701
|
+
"field:serviceName error:type should be string"));
|
1702
|
+
} else {
|
1703
|
+
service_name = service_name_json.string_value();
|
1826
1704
|
}
|
1827
1705
|
}
|
1706
|
+
it = json.object_value().find("childPolicy");
|
1707
|
+
if (it == json.object_value().end()) {
|
1708
|
+
child_policy_config_json_tmp = Json::Array{Json::Object{
|
1709
|
+
{"round_robin", Json::Object()},
|
1710
|
+
}};
|
1711
|
+
child_policy_config_json = &child_policy_config_json_tmp;
|
1712
|
+
} else {
|
1713
|
+
child_policy_config_json = &it->second;
|
1714
|
+
}
|
1715
|
+
grpc_error* parse_error = GRPC_ERROR_NONE;
|
1716
|
+
RefCountedPtr<LoadBalancingPolicy::Config> child_policy_config =
|
1717
|
+
LoadBalancingPolicyRegistry::ParseLoadBalancingConfig(
|
1718
|
+
*child_policy_config_json, &parse_error);
|
1719
|
+
if (parse_error != GRPC_ERROR_NONE) {
|
1720
|
+
std::vector<grpc_error*> child_errors;
|
1721
|
+
child_errors.push_back(parse_error);
|
1722
|
+
error_list.push_back(
|
1723
|
+
GRPC_ERROR_CREATE_FROM_VECTOR("field:childPolicy", &child_errors));
|
1724
|
+
}
|
1828
1725
|
if (error_list.empty()) {
|
1829
|
-
return
|
1830
|
-
|
1726
|
+
return MakeRefCounted<GrpcLbConfig>(std::move(child_policy_config),
|
1727
|
+
std::move(service_name));
|
1831
1728
|
} else {
|
1832
1729
|
*error = GRPC_ERROR_CREATE_FROM_VECTOR("GrpcLb Parser", &error_list);
|
1833
1730
|
return nullptr;
|
@@ -1854,7 +1751,12 @@ bool maybe_add_client_load_reporting_filter(grpc_channel_stack_builder* builder,
|
|
1854
1751
|
grpc_channel_args_find(args, GRPC_ARG_LB_POLICY_NAME);
|
1855
1752
|
if (channel_arg != nullptr && channel_arg->type == GRPC_ARG_STRING &&
|
1856
1753
|
strcmp(channel_arg->value.string, "grpclb") == 0) {
|
1857
|
-
|
1754
|
+
// TODO(roth): When we get around to re-attempting
|
1755
|
+
// https://github.com/grpc/grpc/pull/16214, we should try to keep
|
1756
|
+
// this filter at the very top of the subchannel stack, since that
|
1757
|
+
// will minimize the number of metadata elements that the filter
|
1758
|
+
// needs to iterate through to find the ClientStats object.
|
1759
|
+
return grpc_channel_stack_builder_prepend_filter(
|
1858
1760
|
builder, (const grpc_channel_filter*)arg, nullptr, nullptr);
|
1859
1761
|
}
|
1860
1762
|
return true;
|
@@ -1865,8 +1767,7 @@ bool maybe_add_client_load_reporting_filter(grpc_channel_stack_builder* builder,
|
|
1865
1767
|
void grpc_lb_policy_grpclb_init() {
|
1866
1768
|
grpc_core::LoadBalancingPolicyRegistry::Builder::
|
1867
1769
|
RegisterLoadBalancingPolicyFactory(
|
1868
|
-
|
1869
|
-
grpc_core::New<grpc_core::GrpcLbFactory>()));
|
1770
|
+
absl::make_unique<grpc_core::GrpcLbFactory>());
|
1870
1771
|
grpc_channel_init_register_stage(GRPC_CLIENT_SUBCHANNEL,
|
1871
1772
|
GRPC_CHANNEL_INIT_BUILTIN_PRIORITY,
|
1872
1773
|
maybe_add_client_load_reporting_filter,
|