grpc 1.53.2 → 1.54.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 +78 -66
- data/include/grpc/event_engine/event_engine.h +30 -14
- data/include/grpc/grpc_security.h +4 -0
- data/include/grpc/support/port_platform.h +4 -4
- data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +11 -0
- data/src/core/ext/filters/client_channel/backend_metric.cc +6 -0
- data/src/core/ext/filters/client_channel/backup_poller.cc +2 -11
- data/src/core/ext/filters/client_channel/backup_poller.h +0 -3
- data/src/core/ext/filters/client_channel/client_channel.cc +848 -813
- data/src/core/ext/filters/client_channel/client_channel.h +131 -173
- data/src/core/ext/filters/client_channel/client_channel_internal.h +114 -0
- data/src/core/ext/filters/client_channel/config_selector.h +4 -3
- data/src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h +6 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +17 -18
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +134 -151
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +2 -16
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +14 -10
- data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/weighted_round_robin.cc +68 -30
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +11 -3
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +8 -1
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +2 -5
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.cc +2 -2
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +30 -38
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +4 -4
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +20 -26
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +31 -179
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +1 -2
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +1 -2
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +4 -2
- data/src/core/ext/filters/client_channel/retry_filter.cc +95 -102
- data/src/core/ext/filters/client_channel/subchannel.cc +2 -4
- data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +26 -27
- data/src/core/ext/filters/client_channel/subchannel_stream_client.h +8 -5
- data/src/core/ext/filters/http/client/http_client_filter.cc +3 -3
- data/src/core/ext/filters/http/http_filters_plugin.cc +1 -12
- data/src/core/ext/filters/http/message_compress/compression_filter.cc +27 -11
- data/src/core/ext/filters/message_size/message_size_filter.cc +141 -224
- data/src/core/ext/filters/message_size/message_size_filter.h +48 -3
- data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +7 -6
- data/src/core/ext/gcp/metadata_query.cc +142 -0
- data/src/core/ext/gcp/metadata_query.h +82 -0
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +70 -55
- data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +8 -12
- data/src/core/ext/transport/chttp2/transport/bin_encoder.h +1 -5
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +116 -58
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +5 -2
- data/src/core/ext/transport/chttp2/transport/flow_control.h +2 -1
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +4 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +222 -118
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +113 -295
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +0 -2
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +0 -2
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +277 -451
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +1 -3
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +12 -14
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +1 -9
- data/src/core/ext/transport/chttp2/transport/internal.h +16 -3
- data/src/core/ext/transport/chttp2/transport/parsing.cc +3 -2
- data/src/core/ext/transport/chttp2/transport/writing.cc +10 -5
- data/src/core/ext/transport/inproc/inproc_transport.cc +20 -14
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +5 -3
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +22 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +5 -3
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +22 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +23 -5
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +94 -3
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +23 -2
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +120 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +6 -3
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +22 -0
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +24 -6
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +111 -12
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +9 -7
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +27 -9
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +11 -7
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +56 -12
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.c +5 -3
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.h +24 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.c +5 -3
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +24 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c +13 -2
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h +49 -0
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +24 -9
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +66 -12
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +191 -187
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +139 -136
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +31 -15
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +12 -9
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +15 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.c +54 -45
- data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c +135 -119
- data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +100 -97
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.c +15 -18
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +272 -264
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +117 -117
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c +5 -5
- data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +5 -5
- data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +5 -5
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.c +12 -9
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.h +5 -0
- data/src/core/ext/xds/xds_channel_stack_modifier.cc +1 -2
- data/src/core/ext/xds/xds_client_stats.cc +29 -15
- data/src/core/ext/xds/xds_client_stats.h +24 -20
- data/src/core/ext/xds/xds_endpoint.cc +5 -2
- data/src/core/ext/xds/xds_endpoint.h +9 -1
- data/src/core/ext/xds/xds_http_rbac_filter.cc +1 -1
- data/src/core/ext/xds/xds_lb_policy_registry.cc +13 -0
- data/src/core/ext/xds/xds_transport_grpc.cc +1 -1
- data/src/core/lib/channel/call_finalization.h +1 -1
- data/src/core/lib/channel/call_tracer.cc +51 -0
- data/src/core/lib/channel/call_tracer.h +101 -38
- data/src/core/lib/channel/connected_channel.cc +483 -1050
- data/src/core/lib/channel/context.h +8 -1
- data/src/core/lib/channel/promise_based_filter.cc +106 -42
- data/src/core/lib/channel/promise_based_filter.h +27 -13
- data/src/core/lib/channel/server_call_tracer_filter.cc +110 -0
- data/src/core/lib/config/config_vars.cc +151 -0
- data/src/core/lib/config/config_vars.h +127 -0
- data/src/core/lib/config/config_vars_non_generated.cc +51 -0
- data/src/core/lib/config/load_config.cc +66 -0
- data/src/core/lib/config/load_config.h +49 -0
- data/src/core/lib/debug/trace.cc +5 -6
- data/src/core/lib/debug/trace.h +0 -5
- data/src/core/lib/event_engine/event_engine.cc +37 -2
- data/src/core/lib/event_engine/handle_containers.h +7 -22
- data/src/core/lib/event_engine/memory_allocator_factory.h +47 -0
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +0 -4
- data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +3 -9
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +48 -15
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +8 -8
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +6 -5
- data/src/core/lib/event_engine/posix_engine/posix_engine.h +0 -1
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +6 -32
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +0 -3
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +27 -18
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +0 -3
- data/src/core/lib/event_engine/resolved_address.cc +2 -1
- data/src/core/lib/event_engine/windows/win_socket.cc +0 -1
- data/src/core/lib/event_engine/windows/windows_endpoint.cc +129 -82
- data/src/core/lib/event_engine/windows/windows_endpoint.h +21 -5
- data/src/core/lib/event_engine/windows/windows_engine.cc +39 -18
- data/src/core/lib/event_engine/windows/windows_engine.h +2 -1
- data/src/core/lib/event_engine/windows/windows_listener.cc +370 -0
- data/src/core/lib/event_engine/windows/windows_listener.h +155 -0
- data/src/core/lib/experiments/config.cc +3 -10
- data/src/core/lib/experiments/experiments.cc +7 -0
- data/src/core/lib/experiments/experiments.h +9 -1
- data/src/core/lib/gpr/log.cc +15 -28
- data/src/core/lib/gprpp/fork.cc +8 -14
- data/src/core/lib/gprpp/orphanable.h +4 -3
- data/src/core/lib/gprpp/per_cpu.h +9 -3
- data/src/core/lib/gprpp/{thd_posix.cc → posix/thd.cc} +49 -37
- data/src/core/lib/gprpp/ref_counted.h +33 -34
- data/src/core/lib/gprpp/thd.h +16 -0
- data/src/core/lib/gprpp/time.cc +1 -0
- data/src/core/lib/gprpp/time.h +4 -4
- data/src/core/lib/gprpp/{thd_windows.cc → windows/thd.cc} +2 -2
- data/src/core/lib/iomgr/call_combiner.h +2 -2
- data/src/core/lib/iomgr/endpoint_cfstream.cc +4 -2
- data/src/core/lib/iomgr/ev_posix.cc +13 -53
- data/src/core/lib/iomgr/ev_posix.h +0 -3
- data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +103 -76
- data/src/core/lib/iomgr/iomgr.cc +4 -8
- data/src/core/lib/iomgr/iomgr_windows.cc +8 -2
- data/src/core/lib/iomgr/pollset_set_windows.cc +9 -9
- data/src/core/lib/iomgr/pollset_windows.cc +1 -1
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +16 -3
- data/src/core/lib/iomgr/tcp_client_windows.cc +2 -2
- data/src/core/lib/iomgr/tcp_posix.cc +0 -1
- data/src/core/lib/iomgr/tcp_server_posix.cc +19 -55
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +0 -12
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +0 -21
- data/src/core/lib/iomgr/tcp_server_windows.cc +176 -9
- data/src/core/lib/iomgr/tcp_windows.cc +12 -8
- data/src/core/lib/load_balancing/lb_policy.cc +9 -13
- data/src/core/lib/load_balancing/lb_policy.h +4 -2
- data/src/core/lib/promise/activity.cc +22 -6
- data/src/core/lib/promise/activity.h +61 -24
- data/src/core/lib/promise/cancel_callback.h +77 -0
- data/src/core/lib/promise/detail/basic_seq.h +1 -1
- data/src/core/lib/promise/detail/promise_factory.h +4 -0
- data/src/core/lib/promise/for_each.h +176 -0
- data/src/core/lib/promise/if.h +9 -0
- data/src/core/lib/promise/interceptor_list.h +23 -2
- data/src/core/lib/promise/latch.h +89 -3
- data/src/core/lib/promise/loop.h +13 -9
- data/src/core/lib/promise/map.h +7 -0
- data/src/core/lib/promise/party.cc +286 -0
- data/src/core/lib/promise/party.h +499 -0
- data/src/core/lib/promise/pipe.h +197 -57
- data/src/core/lib/promise/poll.h +48 -0
- data/src/core/lib/promise/promise.h +2 -2
- data/src/core/lib/resource_quota/arena.cc +19 -3
- data/src/core/lib/resource_quota/arena.h +119 -5
- data/src/core/lib/resource_quota/memory_quota.cc +1 -1
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +12 -35
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +1 -0
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +0 -59
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +10 -5
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +1 -1
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +13 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +2 -0
- data/src/core/lib/security/security_connector/load_system_roots_supported.cc +5 -9
- data/src/core/lib/security/security_connector/ssl_utils.cc +11 -25
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +12 -0
- data/src/core/lib/security/transport/secure_endpoint.cc +4 -2
- data/src/core/lib/security/transport/server_auth_filter.cc +20 -2
- data/src/core/lib/slice/slice.cc +1 -1
- data/src/core/lib/surface/builtins.cc +2 -0
- data/src/core/lib/surface/call.cc +926 -1024
- data/src/core/lib/surface/call.h +10 -0
- data/src/core/lib/surface/lame_client.cc +1 -0
- data/src/core/lib/surface/validate_metadata.cc +42 -43
- data/src/core/lib/surface/validate_metadata.h +0 -9
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/batch_builder.cc +179 -0
- data/src/core/lib/transport/batch_builder.h +468 -0
- data/src/core/lib/transport/bdp_estimator.cc +7 -7
- data/src/core/lib/transport/bdp_estimator.h +10 -6
- data/src/core/lib/transport/custom_metadata.h +30 -0
- data/src/core/lib/transport/metadata_batch.cc +5 -2
- data/src/core/lib/transport/metadata_batch.h +17 -113
- data/src/core/lib/transport/parsed_metadata.h +6 -16
- data/src/core/lib/transport/timeout_encoding.cc +6 -1
- data/src/core/lib/transport/transport.cc +30 -2
- data/src/core/lib/transport/transport.h +70 -14
- data/src/core/lib/transport/transport_impl.h +7 -0
- data/src/core/lib/transport/transport_op_string.cc +52 -42
- data/src/core/plugin_registry/grpc_plugin_registry.cc +2 -2
- data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +1 -0
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +21 -4
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +5 -0
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +1 -1
- data/src/core/tsi/ssl_transport_security.cc +4 -2
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/third_party/abseil-cpp/absl/base/config.h +1 -1
- data/third_party/abseil-cpp/absl/flags/commandlineflag.cc +34 -0
- data/third_party/abseil-cpp/absl/flags/commandlineflag.h +200 -0
- data/third_party/abseil-cpp/absl/flags/config.h +68 -0
- data/third_party/abseil-cpp/absl/flags/declare.h +73 -0
- data/third_party/abseil-cpp/absl/flags/flag.cc +38 -0
- data/third_party/abseil-cpp/absl/flags/flag.h +310 -0
- data/{src/core/lib/gprpp/global_config_custom.h → third_party/abseil-cpp/absl/flags/internal/commandlineflag.cc} +11 -14
- data/third_party/abseil-cpp/absl/flags/internal/commandlineflag.h +68 -0
- data/third_party/abseil-cpp/absl/flags/internal/flag.cc +615 -0
- data/third_party/abseil-cpp/absl/flags/internal/flag.h +800 -0
- data/third_party/abseil-cpp/absl/flags/internal/flag_msvc.inc +116 -0
- data/third_party/abseil-cpp/absl/flags/internal/path_util.h +62 -0
- data/third_party/abseil-cpp/absl/flags/internal/private_handle_accessor.cc +65 -0
- data/third_party/abseil-cpp/absl/flags/internal/private_handle_accessor.h +61 -0
- data/third_party/abseil-cpp/absl/flags/internal/program_name.cc +60 -0
- data/third_party/abseil-cpp/absl/flags/internal/program_name.h +50 -0
- data/third_party/abseil-cpp/absl/flags/internal/registry.h +97 -0
- data/third_party/abseil-cpp/absl/flags/internal/sequence_lock.h +187 -0
- data/third_party/abseil-cpp/absl/flags/marshalling.cc +241 -0
- data/third_party/abseil-cpp/absl/flags/marshalling.h +356 -0
- data/third_party/abseil-cpp/absl/flags/reflection.cc +354 -0
- data/third_party/abseil-cpp/absl/flags/reflection.h +90 -0
- data/third_party/abseil-cpp/absl/flags/usage_config.cc +165 -0
- data/third_party/abseil-cpp/absl/flags/usage_config.h +135 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +12 -8
- data/third_party/boringssl-with-bazel/err_data.c +728 -712
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +177 -177
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +28 -55
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_d2i_fp.c +21 -23
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_dup.c +20 -23
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_gentm.c +66 -185
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_i2d_fp.c +18 -21
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.c +356 -311
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.c +174 -194
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +146 -210
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_octet.c +6 -9
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strex.c +346 -526
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +110 -131
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +130 -116
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +93 -60
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c +93 -181
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +242 -305
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_par.c +41 -18
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.c +30 -33
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.c +36 -33
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_string.c +29 -26
- data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +133 -88
- data/third_party/boringssl-with-bazel/src/crypto/asn1/posix_time.c +230 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +791 -791
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +526 -526
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +114 -135
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.c +201 -207
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.c +21 -26
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.c +55 -68
- data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +2 -4
- data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +11 -7
- data/third_party/boringssl-with-bazel/src/crypto/bio/bio_mem.c +4 -4
- data/third_party/boringssl-with-bazel/src/crypto/bio/connect.c +15 -9
- data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +4 -4
- data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +17 -10
- data/third_party/boringssl-with-bazel/src/crypto/bio/pair.c +1 -3
- data/third_party/boringssl-with-bazel/src/crypto/bio/printf.c +0 -13
- data/third_party/boringssl-with-bazel/src/crypto/bio/socket.c +3 -6
- data/third_party/boringssl-with-bazel/src/crypto/bio/socket_helper.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +9 -5
- data/third_party/boringssl-with-bazel/src/crypto/bn_extra/convert.c +10 -23
- data/third_party/boringssl-with-bazel/src/crypto/buf/buf.c +2 -6
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/asn1_compat.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.c +29 -28
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbb.c +161 -201
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +254 -39
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/internal.h +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/derive_key.c +4 -4
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_aesctrhmac.c +9 -8
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_aesgcmsiv.c +37 -75
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_chacha20poly1305.c +8 -10
- data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/cipher → cipher_extra}/e_des.c +100 -78
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_null.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_rc2.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_rc4.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +6 -12
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +14 -11
- data/third_party/boringssl-with-bazel/src/crypto/conf/conf.c +6 -10
- data/third_party/boringssl-with-bazel/src/crypto/conf/conf_def.h +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/conf/internal.h +12 -0
- data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_apple.c +74 -0
- data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_freebsd.c +62 -0
- data/third_party/boringssl-with-bazel/src/crypto/{cpu-aarch64-fuchsia.c → cpu_aarch64_fuchsia.c} +8 -7
- data/third_party/boringssl-with-bazel/src/crypto/{cpu-aarch64-linux.c → cpu_aarch64_linux.c} +6 -4
- data/third_party/boringssl-with-bazel/src/crypto/{cpu-aarch64-win.c → cpu_aarch64_win.c} +4 -4
- data/third_party/boringssl-with-bazel/src/crypto/{cpu-arm.c → cpu_arm.c} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_freebsd.c +55 -0
- data/third_party/boringssl-with-bazel/src/crypto/{cpu-arm-linux.c → cpu_arm_linux.c} +11 -90
- data/third_party/boringssl-with-bazel/src/crypto/{cpu-arm-linux.h → cpu_arm_linux.h} +0 -38
- data/third_party/boringssl-with-bazel/src/crypto/{cpu-intel.c → cpu_intel.c} +1 -2
- data/third_party/boringssl-with-bazel/src/crypto/crypto.c +25 -20
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +16 -27
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/spake25519.c +17 -32
- data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/des → des}/des.c +232 -232
- data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/des → des}/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/dh_extra/dh_asn1.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/dh_extra/params.c +232 -29
- data/third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c +0 -3
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +39 -16
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa_asn1.c +37 -7
- data/third_party/boringssl-with-bazel/src/crypto/dsa/internal.h +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_asn1.c +11 -36
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +214 -99
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +21 -5
- data/third_party/boringssl-with-bazel/src/crypto/ecdsa_extra/ecdsa_asn1.c +2 -4
- data/third_party/boringssl-with-bazel/src/crypto/err/err.c +83 -60
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp.c +46 -12
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp_ctx.c +25 -23
- data/third_party/boringssl-with-bazel/src/crypto/evp/internal.h +43 -9
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_dsa_asn1.c +75 -44
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec.c +19 -25
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec_asn1.c +96 -45
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519.c +7 -8
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519_asn1.c +26 -23
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_hkdf.c +233 -0
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa.c +5 -5
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa_asn1.c +42 -25
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519.c +4 -5
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519_asn1.c +35 -47
- data/third_party/boringssl-with-bazel/src/crypto/evp/print.c +135 -244
- data/third_party/boringssl-with-bazel/src/crypto/evp/scrypt.c +2 -4
- data/third_party/boringssl-with-bazel/src/crypto/evp/sign.c +15 -10
- data/third_party/boringssl-with-bazel/src/crypto/ex_data.c +29 -15
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes_nohw.c +13 -14
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/internal.h +3 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/key_wrap.c +13 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/mode_wrappers.c +9 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +35 -27
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bn.c +16 -26
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bytes.c +88 -60
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/cmp.c +4 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/ctx.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div_extra.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/exponentiation.c +99 -113
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd.c +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd_extra.c +5 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/generic.c +112 -168
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +86 -31
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery.c +11 -6
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery_inv.c +4 -5
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/mul.c +4 -5
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/prime.c +13 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/random.c +13 -5
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/rsaz_exp.c +19 -108
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/rsaz_exp.h +19 -15
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/shift.c +15 -16
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/sqrt.c +22 -21
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/aead.c +3 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +79 -19
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +102 -99
- data/third_party/boringssl-with-bazel/src/crypto/{cipher_extra → fipsmodule/cipher}/e_aesccm.c +52 -46
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/internal.h +39 -0
- data/third_party/boringssl-with-bazel/src/crypto/{cmac → fipsmodule/cmac}/cmac.c +55 -11
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/check.c +2 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/dh.c +21 -6
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/internal.h +56 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.c +5 -3
- data/third_party/boringssl-with-bazel/src/crypto/{evp → fipsmodule/digestsign}/digestsign.c +51 -15
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +25 -25
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +91 -17
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_montgomery.c +5 -5
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +34 -12
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/oct.c +54 -23
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +44 -60
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{p256-x86_64-table.h → p256-nistz-table.h} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{p256-x86_64.c → p256-nistz.c} +60 -53
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{p256-x86_64.h → p256-nistz.h} +5 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +48 -36
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/scalar.c +2 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple.c +2 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +2 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/wnaf.c +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdh/ecdh.c +8 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +42 -14
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/internal.h +6 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/hmac/hmac.c +52 -24
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c +9 -15
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cfb.c +1 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c +2 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +71 -43
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +14 -16
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c +1 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/ctrdrbg.c +31 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.c +16 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.h +3 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/getrandom_fillin.h +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +9 -38
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +73 -59
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +11 -45
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/blinding.c +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +22 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/padding.c +63 -52
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +107 -62
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +58 -31
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/fips.c +41 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +523 -422
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/service_indicator/internal.h +89 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/service_indicator/service_indicator.c +334 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/internal.h +3 -12
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +12 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +14 -12
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/kdf.c +19 -6
- data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +32 -14
- data/third_party/boringssl-with-bazel/src/crypto/hrss/hrss.c +65 -29
- data/third_party/boringssl-with-bazel/src/crypto/internal.h +373 -18
- data/third_party/boringssl-with-bazel/src/crypto/kyber/internal.h +61 -0
- data/third_party/boringssl-with-bazel/src/crypto/kyber/keccak.c +205 -0
- data/third_party/boringssl-with-bazel/src/crypto/lhash/internal.h +13 -1
- data/third_party/boringssl-with-bazel/src/crypto/mem.c +220 -13
- data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +19 -7
- data/third_party/boringssl-with-bazel/src/crypto/obj/obj_dat.h +13 -1
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_all.c +81 -90
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_info.c +150 -245
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +629 -613
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_oth.c +17 -17
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pk8.c +142 -149
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pkey.c +99 -131
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_x509.c +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_xaux.c +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8.c +0 -3
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +36 -66
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305.c +31 -38
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_arm.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_vec.c +18 -31
- data/third_party/boringssl-with-bazel/src/crypto/pool/internal.h +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/pool/pool.c +8 -1
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/passive.c +129 -5
- data/third_party/boringssl-with-bazel/src/crypto/refcount_c11.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/refcount_lock.c +3 -4
- data/third_party/boringssl-with-bazel/src/crypto/siphash/siphash.c +8 -11
- data/third_party/boringssl-with-bazel/src/crypto/stack/stack.c +61 -27
- data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +10 -13
- data/third_party/boringssl-with-bazel/src/crypto/thread_win.c +10 -13
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +66 -34
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +190 -77
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +81 -284
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c +109 -42
- data/third_party/boringssl-with-bazel/src/crypto/x509/a_digest.c +22 -24
- data/third_party/boringssl-with-bazel/src/crypto/x509/a_sign.c +54 -55
- data/third_party/boringssl-with-bazel/src/crypto/x509/a_verify.c +32 -34
- data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +32 -16
- data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +465 -704
- data/third_party/boringssl-with-bazel/src/crypto/x509/by_dir.c +284 -331
- data/third_party/boringssl-with-bazel/src/crypto/x509/by_file.c +183 -178
- data/third_party/boringssl-with-bazel/src/crypto/x509/i2d_pr.c +11 -15
- data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +67 -50
- data/third_party/boringssl-with-bazel/src/crypto/x509/name_print.c +153 -150
- data/third_party/boringssl-with-bazel/src/crypto/x509/policy.c +786 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c +95 -102
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_crl.c +72 -57
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_req.c +12 -10
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +227 -252
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.c +52 -47
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509.c +3 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +230 -224
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +161 -327
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_d2.c +37 -33
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_def.c +14 -31
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_ext.c +55 -85
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +534 -618
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_obj.c +129 -122
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +116 -182
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +132 -132
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +181 -202
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_txt.c +64 -79
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.c +175 -160
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +1865 -2050
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.c +433 -462
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +156 -163
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +267 -263
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509rset.c +40 -15
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509spki.c +59 -63
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.c +63 -67
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +114 -144
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c +25 -26
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +326 -415
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_exten.c +8 -7
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_info.c +30 -28
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.c +354 -370
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_pkey.c +37 -32
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +116 -119
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_req.c +36 -26
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_sig.c +3 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_spki.c +10 -13
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_val.c +3 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +419 -261
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +113 -105
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/ext_dat.h +11 -15
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +78 -170
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akey.c +126 -131
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akeya.c +3 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +465 -469
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bcons.c +56 -54
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bitst.c +46 -49
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +309 -346
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +341 -365
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_crld.c +429 -393
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c +29 -24
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_extku.c +65 -59
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_genn.c +125 -121
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ia5.c +43 -42
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_info.c +122 -125
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_int.c +50 -20
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +247 -253
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ncons.c +386 -389
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ocsp.c +45 -32
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pcons.c +57 -54
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pmaps.c +63 -67
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +143 -136
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +664 -707
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +83 -75
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +1062 -1146
- data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +8 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +28 -48
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +211 -187
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +26 -78
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +19 -14
- data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +21 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/bn.h +49 -17
- data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +99 -29
- data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +49 -60
- data/third_party/boringssl-with-bazel/src/include/openssl/conf.h +2 -15
- data/third_party/boringssl-with-bazel/src/include/openssl/cpu.h +16 -200
- data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +34 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/ctrdrbg.h +82 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +32 -30
- data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +7 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +4 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +48 -5
- data/third_party/boringssl-with-bazel/src/include/openssl/ec_key.h +37 -8
- data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +1 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/err.h +33 -5
- data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +22 -30
- data/third_party/boringssl-with-bazel/src/include/openssl/ex_data.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/hmac.h +7 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +41 -16
- data/third_party/boringssl-with-bazel/src/include/openssl/kdf.h +91 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/mem.h +74 -8
- data/third_party/boringssl-with-bazel/src/include/openssl/nid.h +13 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/opensslconf.h +1 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +11 -15
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +8 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +12 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +7 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/service_indicator.h +96 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/span.h +13 -21
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +139 -75
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl3.h +1 -6
- data/third_party/boringssl-with-bazel/src/include/openssl/stack.h +384 -286
- data/third_party/boringssl-with-bazel/src/include/openssl/thread.h +5 -6
- data/third_party/boringssl-with-bazel/src/include/openssl/time.h +41 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +18 -7
- data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +49 -23
- data/third_party/boringssl-with-bazel/src/include/openssl/type_check.h +0 -11
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +1592 -1074
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +202 -205
- data/third_party/boringssl-with-bazel/src/ssl/bio_ssl.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +6 -13
- data/third_party/boringssl-with-bazel/src/ssl/d1_pkt.cc +17 -18
- data/third_party/boringssl-with-bazel/src/ssl/dtls_method.cc +4 -5
- data/third_party/boringssl-with-bazel/src/ssl/dtls_record.cc +25 -33
- data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +34 -20
- data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +65 -34
- data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +198 -54
- data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +5 -5
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +32 -28
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +76 -44
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +130 -98
- data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +27 -11
- data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc +91 -75
- data/third_party/boringssl-with-bazel/src/ssl/ssl_aead_ctx.cc +8 -10
- data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +39 -65
- data/third_party/boringssl-with-bazel/src/ssl/ssl_buffer.cc +1 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +5 -9
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +30 -33
- data/third_party/boringssl-with-bazel/src/ssl/ssl_file.cc +77 -100
- data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +120 -107
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +164 -30
- data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +150 -60
- data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +22 -11
- data/third_party/boringssl-with-bazel/src/ssl/ssl_x509.cc +22 -6
- data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +15 -13
- data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +5 -43
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +7 -4
- data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +22 -34
- data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/tls_record.cc +16 -98
- data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_32.h +1241 -657
- data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64.h +751 -398
- data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_32.h +3551 -1938
- data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_64.h +1272 -487
- metadata +103 -70
- data/src/core/ext/filters/client_channel/lb_call_state_internal.h +0 -39
- data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.cc +0 -30
- data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.h +0 -29
- data/src/core/lib/gprpp/global_config.h +0 -93
- data/src/core/lib/gprpp/global_config_env.cc +0 -140
- data/src/core/lib/gprpp/global_config_env.h +0 -133
- data/src/core/lib/gprpp/global_config_generic.h +0 -40
- data/src/core/lib/promise/intra_activity_waiter.h +0 -55
- data/src/core/lib/security/security_connector/ssl_utils_config.cc +0 -32
- data/src/core/lib/security/security_connector/ssl_utils_config.h +0 -29
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_enum.c +0 -195
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_print.c +0 -83
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utf8.c +0 -236
- data/third_party/boringssl-with-bazel/src/crypto/asn1/charmap.h +0 -15
- data/third_party/boringssl-with-bazel/src/crypto/asn1/time_support.c +0 -206
- data/third_party/boringssl-with-bazel/src/crypto/cpu-ppc64le.c +0 -38
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1-altivec.c +0 -361
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_cache.c +0 -287
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_data.c +0 -132
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_lib.c +0 -155
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_map.c +0 -131
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_node.c +0 -189
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_tree.c +0 -843
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pci.c +0 -289
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pcia.c +0 -57
- /data/src/core/lib/gpr/{log_android.cc → android/log.cc} +0 -0
- /data/src/core/lib/gpr/{cpu_iphone.cc → iphone/cpu.cc} +0 -0
- /data/src/core/lib/gpr/{cpu_linux.cc → linux/cpu.cc} +0 -0
- /data/src/core/lib/gpr/{log_linux.cc → linux/log.cc} +0 -0
- /data/src/core/lib/gpr/{tmpfile_msys.cc → msys/tmpfile.cc} +0 -0
- /data/src/core/lib/gpr/{cpu_posix.cc → posix/cpu.cc} +0 -0
- /data/src/core/lib/gpr/{log_posix.cc → posix/log.cc} +0 -0
- /data/src/core/lib/gpr/{string_posix.cc → posix/string.cc} +0 -0
- /data/src/core/lib/gpr/{sync_posix.cc → posix/sync.cc} +0 -0
- /data/src/core/lib/gpr/{time_posix.cc → posix/time.cc} +0 -0
- /data/src/core/lib/gpr/{tmpfile_posix.cc → posix/tmpfile.cc} +0 -0
- /data/src/core/lib/gpr/{cpu_windows.cc → windows/cpu.cc} +0 -0
- /data/src/core/lib/gpr/{log_windows.cc → windows/log.cc} +0 -0
- /data/src/core/lib/gpr/{string_windows.cc → windows/string.cc} +0 -0
- /data/src/core/lib/gpr/{string_util_windows.cc → windows/string_util.cc} +0 -0
- /data/src/core/lib/gpr/{sync_windows.cc → windows/sync.cc} +0 -0
- /data/src/core/lib/gpr/{time_windows.cc → windows/time.cc} +0 -0
- /data/src/core/lib/gpr/{tmpfile_windows.cc → windows/tmpfile.cc} +0 -0
- /data/src/core/lib/gprpp/{env_linux.cc → linux/env.cc} +0 -0
- /data/src/core/lib/gprpp/{env_posix.cc → posix/env.cc} +0 -0
- /data/src/core/lib/gprpp/{stat_posix.cc → posix/stat.cc} +0 -0
- /data/src/core/lib/gprpp/{env_windows.cc → windows/env.cc} +0 -0
- /data/src/core/lib/gprpp/{stat_windows.cc → windows/stat.cc} +0 -0
@@ -61,6 +61,7 @@
|
|
61
61
|
#include <string.h>
|
62
62
|
|
63
63
|
#include <algorithm>
|
64
|
+
#include <atomic>
|
64
65
|
#include <initializer_list>
|
65
66
|
#include <map>
|
66
67
|
#include <memory>
|
@@ -389,19 +390,15 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
389
390
|
// Returns the LB token to use for a drop, or null if the call
|
390
391
|
// should not be dropped.
|
391
392
|
//
|
392
|
-
// Note: This is called from the picker,
|
393
|
-
//
|
394
|
-
// work_serializer. It should not be accessed by any other part of the LB
|
395
|
-
// policy.
|
393
|
+
// Note: This is called from the picker, NOT from inside the control
|
394
|
+
// plane work_serializer.
|
396
395
|
const char* ShouldDrop();
|
397
396
|
|
398
397
|
private:
|
399
398
|
std::vector<GrpcLbServer> serverlist_;
|
400
399
|
|
401
|
-
//
|
402
|
-
|
403
|
-
// picker via the ShouldDrop() method.
|
404
|
-
size_t drop_index_ = 0;
|
400
|
+
// Accessed from the picker, so needs synchronization.
|
401
|
+
std::atomic<size_t> drop_index_{0};
|
405
402
|
};
|
406
403
|
|
407
404
|
class Picker : public SubchannelPicker {
|
@@ -717,8 +714,8 @@ bool GrpcLb::Serverlist::ContainsAllDropEntries() const {
|
|
717
714
|
|
718
715
|
const char* GrpcLb::Serverlist::ShouldDrop() {
|
719
716
|
if (serverlist_.empty()) return nullptr;
|
720
|
-
|
721
|
-
|
717
|
+
size_t index = drop_index_.fetch_add(1, std::memory_order_relaxed);
|
718
|
+
GrpcLbServer& server = serverlist_[index % serverlist_.size()];
|
722
719
|
return server.drop ? server.load_balance_token : nullptr;
|
723
720
|
}
|
724
721
|
|
@@ -1165,13 +1162,15 @@ void GrpcLb::BalancerCallState::OnBalancerMessageReceivedLocked() {
|
|
1165
1162
|
upb::Arena arena;
|
1166
1163
|
if (!GrpcLbResponseParse(response_slice, arena.ptr(), &response) ||
|
1167
1164
|
(response.type == response.INITIAL && seen_initial_response_)) {
|
1168
|
-
|
1169
|
-
|
1170
|
-
|
1171
|
-
|
1172
|
-
|
1173
|
-
|
1174
|
-
|
1165
|
+
if (gpr_should_log(GPR_LOG_SEVERITY_ERROR)) {
|
1166
|
+
char* response_slice_str =
|
1167
|
+
grpc_dump_slice(response_slice, GPR_DUMP_ASCII | GPR_DUMP_HEX);
|
1168
|
+
gpr_log(GPR_ERROR,
|
1169
|
+
"[grpclb %p] lb_calld=%p: Invalid LB response received: '%s'. "
|
1170
|
+
"Ignoring.",
|
1171
|
+
grpclb_policy(), this, response_slice_str);
|
1172
|
+
gpr_free(response_slice_str);
|
1173
|
+
}
|
1175
1174
|
} else {
|
1176
1175
|
switch (response.type) {
|
1177
1176
|
case response.INITIAL: {
|
@@ -1532,7 +1531,7 @@ void GrpcLb::ShutdownLocked() {
|
|
1532
1531
|
GPR_ASSERT(child_channelz_node != nullptr);
|
1533
1532
|
parent_channelz_node_->RemoveChildChannel(child_channelz_node->uuid());
|
1534
1533
|
}
|
1535
|
-
|
1534
|
+
grpc_channel_destroy_internal(lb_channel_);
|
1536
1535
|
lb_channel_ = nullptr;
|
1537
1536
|
}
|
1538
1537
|
}
|
@@ -22,7 +22,6 @@
|
|
22
22
|
#include <stdlib.h>
|
23
23
|
|
24
24
|
#include <algorithm>
|
25
|
-
#include <atomic>
|
26
25
|
#include <cmath>
|
27
26
|
#include <memory>
|
28
27
|
#include <string>
|
@@ -30,7 +29,6 @@
|
|
30
29
|
#include <vector>
|
31
30
|
|
32
31
|
#include "absl/base/attributes.h"
|
33
|
-
#include "absl/base/thread_annotations.h"
|
34
32
|
#include "absl/container/inlined_vector.h"
|
35
33
|
#include "absl/status/status.h"
|
36
34
|
#include "absl/status/statusor.h"
|
@@ -39,15 +37,14 @@
|
|
39
37
|
#include "absl/strings/string_view.h"
|
40
38
|
#include "absl/types/optional.h"
|
41
39
|
|
42
|
-
#include <grpc/grpc.h>
|
43
|
-
|
44
40
|
#define XXH_INLINE_ALL
|
45
41
|
#include "xxhash.h"
|
46
42
|
|
43
|
+
#include <grpc/grpc.h>
|
47
44
|
#include <grpc/impl/connectivity_state.h>
|
48
45
|
#include <grpc/support/log.h>
|
49
46
|
|
50
|
-
#include "src/core/ext/filters/client_channel/
|
47
|
+
#include "src/core/ext/filters/client_channel/client_channel_internal.h"
|
51
48
|
#include "src/core/ext/filters/client_channel/lb_policy/subchannel_list.h"
|
52
49
|
#include "src/core/lib/address_utils/sockaddr_utils.h"
|
53
50
|
#include "src/core/lib/channel/channel_args.h"
|
@@ -55,8 +52,8 @@
|
|
55
52
|
#include "src/core/lib/debug/trace.h"
|
56
53
|
#include "src/core/lib/gprpp/debug_location.h"
|
57
54
|
#include "src/core/lib/gprpp/orphanable.h"
|
55
|
+
#include "src/core/lib/gprpp/ref_counted.h"
|
58
56
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
59
|
-
#include "src/core/lib/gprpp/sync.h"
|
60
57
|
#include "src/core/lib/gprpp/unique_type_name.h"
|
61
58
|
#include "src/core/lib/gprpp/work_serializer.h"
|
62
59
|
#include "src/core/lib/iomgr/closure.h"
|
@@ -143,8 +140,6 @@ class RingHash : public LoadBalancingPolicy {
|
|
143
140
|
void ResetBackoffLocked() override;
|
144
141
|
|
145
142
|
private:
|
146
|
-
~RingHash() override;
|
147
|
-
|
148
143
|
// Forward declaration.
|
149
144
|
class RingHashSubchannelList;
|
150
145
|
|
@@ -165,13 +160,11 @@ class RingHash : public LoadBalancingPolicy {
|
|
165
160
|
|
166
161
|
const ServerAddress& address() const { return address_; }
|
167
162
|
|
168
|
-
grpc_connectivity_state
|
169
|
-
return
|
163
|
+
grpc_connectivity_state logical_connectivity_state() const {
|
164
|
+
return logical_connectivity_state_;
|
170
165
|
}
|
171
|
-
|
172
|
-
|
173
|
-
MutexLock lock(&mu_);
|
174
|
-
return connectivity_status_;
|
166
|
+
const absl::Status& logical_connectivity_status() const {
|
167
|
+
return logical_connectivity_status_;
|
175
168
|
}
|
176
169
|
|
177
170
|
private:
|
@@ -188,20 +181,28 @@ class RingHash : public LoadBalancingPolicy {
|
|
188
181
|
// subchannel in some cases; for example, once this is set to
|
189
182
|
// TRANSIENT_FAILURE, we do not change it again until we get READY,
|
190
183
|
// so we skip any interim stops in CONNECTING.
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
mutable Mutex mu_;
|
195
|
-
absl::Status connectivity_status_ ABSL_GUARDED_BY(&mu_);
|
184
|
+
grpc_connectivity_state logical_connectivity_state_ = GRPC_CHANNEL_IDLE;
|
185
|
+
absl::Status logical_connectivity_status_;
|
196
186
|
};
|
197
187
|
|
198
188
|
// A list of subchannels and the ring containing those subchannels.
|
199
189
|
class RingHashSubchannelList
|
200
190
|
: public SubchannelList<RingHashSubchannelList, RingHashSubchannelData> {
|
201
191
|
public:
|
202
|
-
|
203
|
-
|
204
|
-
|
192
|
+
class Ring : public RefCounted<Ring> {
|
193
|
+
public:
|
194
|
+
struct RingEntry {
|
195
|
+
uint64_t hash;
|
196
|
+
size_t subchannel_index;
|
197
|
+
};
|
198
|
+
|
199
|
+
Ring(RingHashLbConfig* config, RingHashSubchannelList* subchannel_list,
|
200
|
+
const ChannelArgs& args);
|
201
|
+
|
202
|
+
const std::vector<RingEntry>& ring() const { return ring_; }
|
203
|
+
|
204
|
+
private:
|
205
|
+
std::vector<RingEntry> ring_;
|
205
206
|
};
|
206
207
|
|
207
208
|
RingHashSubchannelList(RingHash* policy, ServerAddressList addresses,
|
@@ -212,7 +213,7 @@ class RingHash : public LoadBalancingPolicy {
|
|
212
213
|
p->Unref(DEBUG_LOCATION, "subchannel_list");
|
213
214
|
}
|
214
215
|
|
215
|
-
|
216
|
+
RefCountedPtr<Ring> ring() { return ring_; }
|
216
217
|
|
217
218
|
// Updates the counters of subchannels in each state when a
|
218
219
|
// subchannel transitions from old_state to new_state.
|
@@ -236,7 +237,7 @@ class RingHash : public LoadBalancingPolicy {
|
|
236
237
|
size_t num_connecting_ = 0;
|
237
238
|
size_t num_transient_failure_ = 0;
|
238
239
|
|
239
|
-
|
240
|
+
RefCountedPtr<Ring> ring_;
|
240
241
|
|
241
242
|
// The index of the subchannel currently doing an internally
|
242
243
|
// triggered connection attempt, if any.
|
@@ -251,24 +252,31 @@ class RingHash : public LoadBalancingPolicy {
|
|
251
252
|
|
252
253
|
class Picker : public SubchannelPicker {
|
253
254
|
public:
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
255
|
+
Picker(RefCountedPtr<RingHash> ring_hash_lb,
|
256
|
+
RingHashSubchannelList* subchannel_list)
|
257
|
+
: ring_hash_lb_(std::move(ring_hash_lb)),
|
258
|
+
ring_(subchannel_list->ring()) {
|
259
|
+
subchannels_.reserve(subchannel_list->num_subchannels());
|
260
|
+
for (size_t i = 0; i < subchannel_list->num_subchannels(); ++i) {
|
261
|
+
RingHashSubchannelData* subchannel_data =
|
262
|
+
subchannel_list->subchannel(i);
|
263
|
+
subchannels_.emplace_back(
|
264
|
+
SubchannelInfo{subchannel_data->subchannel()->Ref(),
|
265
|
+
subchannel_data->logical_connectivity_state(),
|
266
|
+
subchannel_data->logical_connectivity_status()});
|
267
|
+
}
|
261
268
|
}
|
262
269
|
|
263
270
|
PickResult Pick(PickArgs args) override;
|
264
271
|
|
265
272
|
private:
|
266
|
-
//
|
267
|
-
|
273
|
+
// A fire-and-forget class that schedules subchannel connection attempts
|
274
|
+
// on the control plane WorkSerializer.
|
275
|
+
class SubchannelConnectionAttempter : public Orphanable {
|
268
276
|
public:
|
269
|
-
explicit
|
270
|
-
RefCountedPtr<
|
271
|
-
:
|
277
|
+
explicit SubchannelConnectionAttempter(
|
278
|
+
RefCountedPtr<RingHash> ring_hash_lb)
|
279
|
+
: ring_hash_lb_(std::move(ring_hash_lb)) {
|
272
280
|
GRPC_CLOSURE_INIT(&closure_, RunInExecCtx, this, nullptr);
|
273
281
|
}
|
274
282
|
|
@@ -278,56 +286,43 @@ class RingHash : public LoadBalancingPolicy {
|
|
278
286
|
ExecCtx::Run(DEBUG_LOCATION, &closure_, absl::OkStatus());
|
279
287
|
}
|
280
288
|
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
protected:
|
285
|
-
RingHash* ring_hash_lb() const {
|
286
|
-
return static_cast<RingHash*>(subchannel_list_->policy());
|
289
|
+
void AddSubchannel(RefCountedPtr<SubchannelInterface> subchannel) {
|
290
|
+
subchannels_.push_back(std::move(subchannel));
|
287
291
|
}
|
288
292
|
|
289
293
|
private:
|
290
294
|
static void RunInExecCtx(void* arg, grpc_error_handle /*error*/) {
|
291
|
-
auto* self = static_cast<
|
292
|
-
self->
|
295
|
+
auto* self = static_cast<SubchannelConnectionAttempter*>(arg);
|
296
|
+
self->ring_hash_lb_->work_serializer()->Run(
|
293
297
|
[self]() {
|
294
|
-
self->
|
298
|
+
if (!self->ring_hash_lb_->shutdown_) {
|
299
|
+
for (auto& subchannel : self->subchannels_) {
|
300
|
+
subchannel->RequestConnection();
|
301
|
+
}
|
302
|
+
}
|
295
303
|
delete self;
|
296
304
|
},
|
297
305
|
DEBUG_LOCATION);
|
298
306
|
}
|
299
307
|
|
300
|
-
RefCountedPtr<
|
308
|
+
RefCountedPtr<RingHash> ring_hash_lb_;
|
301
309
|
grpc_closure closure_;
|
310
|
+
std::vector<RefCountedPtr<SubchannelInterface>> subchannels_;
|
302
311
|
};
|
303
312
|
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
explicit SubchannelConnectionAttempter(
|
309
|
-
RefCountedPtr<RingHashSubchannelList> subchannel_list)
|
310
|
-
: WorkSerializerRunner(std::move(subchannel_list)) {}
|
311
|
-
|
312
|
-
void AddSubchannel(RefCountedPtr<SubchannelInterface> subchannel) {
|
313
|
-
subchannels_.push_back(std::move(subchannel));
|
314
|
-
}
|
315
|
-
|
316
|
-
void Run() override {
|
317
|
-
if (!ring_hash_lb()->shutdown_) {
|
318
|
-
for (auto& subchannel : subchannels_) {
|
319
|
-
subchannel->RequestConnection();
|
320
|
-
}
|
321
|
-
}
|
322
|
-
}
|
323
|
-
|
324
|
-
private:
|
325
|
-
std::vector<RefCountedPtr<SubchannelInterface>> subchannels_;
|
313
|
+
struct SubchannelInfo {
|
314
|
+
RefCountedPtr<SubchannelInterface> subchannel;
|
315
|
+
grpc_connectivity_state state;
|
316
|
+
absl::Status status;
|
326
317
|
};
|
327
318
|
|
328
|
-
RefCountedPtr<
|
319
|
+
RefCountedPtr<RingHash> ring_hash_lb_;
|
320
|
+
RefCountedPtr<RingHashSubchannelList::Ring> ring_;
|
321
|
+
std::vector<SubchannelInfo> subchannels_;
|
329
322
|
};
|
330
323
|
|
324
|
+
~RingHash() override;
|
325
|
+
|
331
326
|
void ShutdownLocked() override;
|
332
327
|
|
333
328
|
// Current config from resolver.
|
@@ -345,15 +340,14 @@ class RingHash : public LoadBalancingPolicy {
|
|
345
340
|
//
|
346
341
|
|
347
342
|
RingHash::PickResult RingHash::Picker::Pick(PickArgs args) {
|
348
|
-
auto* call_state = static_cast<
|
349
|
-
args.call_state);
|
343
|
+
auto* call_state = static_cast<ClientChannelLbCallState*>(args.call_state);
|
350
344
|
auto hash = call_state->GetCallAttribute(RequestHashAttributeName());
|
351
345
|
uint64_t h;
|
352
346
|
if (!absl::SimpleAtoi(hash, &h)) {
|
353
347
|
return PickResult::Fail(
|
354
348
|
absl::InternalError("ring hash value is not a number"));
|
355
349
|
}
|
356
|
-
const auto& ring =
|
350
|
+
const auto& ring = ring_->ring();
|
357
351
|
// Ported from https://github.com/RJ/ketama/blob/master/libketama/ketama.c
|
358
352
|
// (ketama_get_server) NOTE: The algorithm depends on using signed integers
|
359
353
|
// for lowp, highp, and first_index. Do not change them!
|
@@ -386,27 +380,25 @@ RingHash::PickResult RingHash::Picker::Pick(PickArgs args) {
|
|
386
380
|
[&](RefCountedPtr<SubchannelInterface> subchannel) {
|
387
381
|
if (subchannel_connection_attempter == nullptr) {
|
388
382
|
subchannel_connection_attempter =
|
389
|
-
MakeOrphanable<SubchannelConnectionAttempter>(
|
390
|
-
|
391
|
-
"SubchannelConnectionAttempter"));
|
383
|
+
MakeOrphanable<SubchannelConnectionAttempter>(ring_hash_lb_->Ref(
|
384
|
+
DEBUG_LOCATION, "SubchannelConnectionAttempter"));
|
392
385
|
}
|
393
386
|
subchannel_connection_attempter->AddSubchannel(std::move(subchannel));
|
394
387
|
};
|
395
|
-
|
388
|
+
SubchannelInfo& first_subchannel =
|
389
|
+
subchannels_[ring[first_index].subchannel_index];
|
390
|
+
switch (first_subchannel.state) {
|
396
391
|
case GRPC_CHANNEL_READY:
|
397
|
-
return PickResult::Complete(
|
398
|
-
ring[first_index].subchannel->subchannel()->Ref());
|
392
|
+
return PickResult::Complete(first_subchannel.subchannel);
|
399
393
|
case GRPC_CHANNEL_IDLE:
|
400
|
-
ScheduleSubchannelConnectionAttempt(
|
401
|
-
ring[first_index].subchannel->subchannel()->Ref());
|
394
|
+
ScheduleSubchannelConnectionAttempt(first_subchannel.subchannel);
|
402
395
|
ABSL_FALLTHROUGH_INTENDED;
|
403
396
|
case GRPC_CHANNEL_CONNECTING:
|
404
397
|
return PickResult::Queue();
|
405
398
|
default: // GRPC_CHANNEL_TRANSIENT_FAILURE
|
406
399
|
break;
|
407
400
|
}
|
408
|
-
ScheduleSubchannelConnectionAttempt(
|
409
|
-
ring[first_index].subchannel->subchannel()->Ref());
|
401
|
+
ScheduleSubchannelConnectionAttempt(first_subchannel.subchannel);
|
410
402
|
// Loop through remaining subchannels to find one in READY.
|
411
403
|
// On the way, we make sure the right set of connection attempts
|
412
404
|
// will happen.
|
@@ -414,19 +406,17 @@ RingHash::PickResult RingHash::Picker::Pick(PickArgs args) {
|
|
414
406
|
bool found_first_non_failed = false;
|
415
407
|
for (size_t i = 1; i < ring.size(); ++i) {
|
416
408
|
const auto& entry = ring[(first_index + i) % ring.size()];
|
417
|
-
if (entry.
|
409
|
+
if (entry.subchannel_index == ring[first_index].subchannel_index) {
|
418
410
|
continue;
|
419
411
|
}
|
420
|
-
|
421
|
-
|
422
|
-
|
423
|
-
return PickResult::Complete(entry.subchannel->subchannel()->Ref());
|
412
|
+
SubchannelInfo& subchannel_info = subchannels_[entry.subchannel_index];
|
413
|
+
if (subchannel_info.state == GRPC_CHANNEL_READY) {
|
414
|
+
return PickResult::Complete(subchannel_info.subchannel);
|
424
415
|
}
|
425
416
|
if (!found_second_subchannel) {
|
426
|
-
switch (
|
417
|
+
switch (subchannel_info.state) {
|
427
418
|
case GRPC_CHANNEL_IDLE:
|
428
|
-
ScheduleSubchannelConnectionAttempt(
|
429
|
-
entry.subchannel->subchannel()->Ref());
|
419
|
+
ScheduleSubchannelConnectionAttempt(subchannel_info.subchannel);
|
430
420
|
ABSL_FALLTHROUGH_INTENDED;
|
431
421
|
case GRPC_CHANNEL_CONNECTING:
|
432
422
|
return PickResult::Queue();
|
@@ -436,13 +426,11 @@ RingHash::PickResult RingHash::Picker::Pick(PickArgs args) {
|
|
436
426
|
found_second_subchannel = true;
|
437
427
|
}
|
438
428
|
if (!found_first_non_failed) {
|
439
|
-
if (
|
440
|
-
ScheduleSubchannelConnectionAttempt(
|
441
|
-
entry.subchannel->subchannel()->Ref());
|
429
|
+
if (subchannel_info.state == GRPC_CHANNEL_TRANSIENT_FAILURE) {
|
430
|
+
ScheduleSubchannelConnectionAttempt(subchannel_info.subchannel);
|
442
431
|
} else {
|
443
|
-
if (
|
444
|
-
ScheduleSubchannelConnectionAttempt(
|
445
|
-
entry.subchannel->subchannel()->Ref());
|
432
|
+
if (subchannel_info.state == GRPC_CHANNEL_IDLE) {
|
433
|
+
ScheduleSubchannelConnectionAttempt(subchannel_info.subchannel);
|
446
434
|
}
|
447
435
|
found_first_non_failed = true;
|
448
436
|
}
|
@@ -450,27 +438,16 @@ RingHash::PickResult RingHash::Picker::Pick(PickArgs args) {
|
|
450
438
|
}
|
451
439
|
return PickResult::Fail(absl::UnavailableError(absl::StrCat(
|
452
440
|
"ring hash cannot find a connected subchannel; first failure: ",
|
453
|
-
|
441
|
+
first_subchannel.status.ToString())));
|
454
442
|
}
|
455
443
|
|
456
444
|
//
|
457
|
-
// RingHash::RingHashSubchannelList
|
445
|
+
// RingHash::RingHashSubchannelList::Ring
|
458
446
|
//
|
459
447
|
|
460
|
-
RingHash::RingHashSubchannelList::
|
461
|
-
|
462
|
-
|
463
|
-
(GRPC_TRACE_FLAG_ENABLED(grpc_lb_ring_hash_trace)
|
464
|
-
? "RingHashSubchannelList"
|
465
|
-
: nullptr),
|
466
|
-
std::move(addresses), policy->channel_control_helper(),
|
467
|
-
args),
|
468
|
-
num_idle_(num_subchannels()) {
|
469
|
-
// Need to maintain a ref to the LB policy as long as we maintain
|
470
|
-
// any references to subchannels, since the subchannels'
|
471
|
-
// pollset_sets will include the LB policy's pollset_set.
|
472
|
-
policy->Ref(DEBUG_LOCATION, "subchannel_list").release();
|
473
|
-
// Construct the ring.
|
448
|
+
RingHash::RingHashSubchannelList::Ring::Ring(
|
449
|
+
RingHashLbConfig* config, RingHashSubchannelList* subchannel_list,
|
450
|
+
const ChannelArgs& args) {
|
474
451
|
// Store the weights while finding the sum.
|
475
452
|
struct AddressWeight {
|
476
453
|
std::string address;
|
@@ -481,9 +458,9 @@ RingHash::RingHashSubchannelList::RingHashSubchannelList(
|
|
481
458
|
};
|
482
459
|
std::vector<AddressWeight> address_weights;
|
483
460
|
size_t sum = 0;
|
484
|
-
address_weights.reserve(num_subchannels());
|
485
|
-
for (size_t i = 0; i < num_subchannels(); ++i) {
|
486
|
-
RingHashSubchannelData* sd = subchannel(i);
|
461
|
+
address_weights.reserve(subchannel_list->num_subchannels());
|
462
|
+
for (size_t i = 0; i < subchannel_list->num_subchannels(); ++i) {
|
463
|
+
RingHashSubchannelData* sd = subchannel_list->subchannel(i);
|
487
464
|
const ServerAddressWeightAttribute* weight_attribute = static_cast<
|
488
465
|
const ServerAddressWeightAttribute*>(sd->address().GetAttribute(
|
489
466
|
ServerAddressWeightAttribute::kServerAddressWeightAttributeKey));
|
@@ -517,10 +494,8 @@ RingHash::RingHashSubchannelList::RingHashSubchannelList(
|
|
517
494
|
// to fit.
|
518
495
|
const size_t ring_size_cap = args.GetInt(GRPC_ARG_RING_HASH_LB_RING_SIZE_CAP)
|
519
496
|
.value_or(kRingSizeCapDefault);
|
520
|
-
const size_t min_ring_size =
|
521
|
-
|
522
|
-
const size_t max_ring_size =
|
523
|
-
std::min(policy->config_->max_ring_size(), ring_size_cap);
|
497
|
+
const size_t min_ring_size = std::min(config->min_ring_size(), ring_size_cap);
|
498
|
+
const size_t max_ring_size = std::min(config->max_ring_size(), ring_size_cap);
|
524
499
|
const double scale = std::min(
|
525
500
|
std::ceil(min_normalized_weight * min_ring_size) / min_normalized_weight,
|
526
501
|
static_cast<double>(max_ring_size));
|
@@ -537,7 +512,7 @@ RingHash::RingHashSubchannelList::RingHashSubchannelList(
|
|
537
512
|
double target_hashes = 0.0;
|
538
513
|
uint64_t min_hashes_per_host = ring_size;
|
539
514
|
uint64_t max_hashes_per_host = 0;
|
540
|
-
for (size_t i = 0; i < num_subchannels(); ++i) {
|
515
|
+
for (size_t i = 0; i < subchannel_list->num_subchannels(); ++i) {
|
541
516
|
const std::string& address_string = address_weights[i].address;
|
542
517
|
hash_key_buffer.assign(address_string.begin(), address_string.end());
|
543
518
|
hash_key_buffer.emplace_back('_');
|
@@ -550,7 +525,7 @@ RingHash::RingHashSubchannelList::RingHashSubchannelList(
|
|
550
525
|
absl::string_view hash_key(hash_key_buffer.data(),
|
551
526
|
hash_key_buffer.size());
|
552
527
|
const uint64_t hash = XXH64(hash_key.data(), hash_key.size(), 0);
|
553
|
-
ring_.push_back({hash,
|
528
|
+
ring_.push_back({hash, i});
|
554
529
|
++count;
|
555
530
|
++current_hashes;
|
556
531
|
hash_key_buffer.erase(offset_start, hash_key_buffer.end());
|
@@ -561,14 +536,34 @@ RingHash::RingHashSubchannelList::RingHashSubchannelList(
|
|
561
536
|
std::max(static_cast<uint64_t>(i), max_hashes_per_host);
|
562
537
|
}
|
563
538
|
std::sort(ring_.begin(), ring_.end(),
|
564
|
-
[](const
|
565
|
-
const RingHashSubchannelList::RingEntry& rhs) -> bool {
|
539
|
+
[](const RingEntry& lhs, const RingEntry& rhs) -> bool {
|
566
540
|
return lhs.hash < rhs.hash;
|
567
541
|
});
|
542
|
+
}
|
543
|
+
|
544
|
+
//
|
545
|
+
// RingHash::RingHashSubchannelList
|
546
|
+
//
|
547
|
+
|
548
|
+
RingHash::RingHashSubchannelList::RingHashSubchannelList(
|
549
|
+
RingHash* policy, ServerAddressList addresses, const ChannelArgs& args)
|
550
|
+
: SubchannelList(policy,
|
551
|
+
(GRPC_TRACE_FLAG_ENABLED(grpc_lb_ring_hash_trace)
|
552
|
+
? "RingHashSubchannelList"
|
553
|
+
: nullptr),
|
554
|
+
std::move(addresses), policy->channel_control_helper(),
|
555
|
+
args),
|
556
|
+
num_idle_(num_subchannels()) {
|
557
|
+
// Need to maintain a ref to the LB policy as long as we maintain
|
558
|
+
// any references to subchannels, since the subchannels'
|
559
|
+
// pollset_sets will include the LB policy's pollset_set.
|
560
|
+
policy->Ref(DEBUG_LOCATION, "subchannel_list").release();
|
561
|
+
// Construct the ring.
|
562
|
+
ring_ = MakeRefCounted<Ring>(policy->config_.get(), this, args);
|
568
563
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_ring_hash_trace)) {
|
569
564
|
gpr_log(GPR_INFO,
|
570
565
|
"[RH %p] created subchannel list %p with %" PRIuPTR " ring entries",
|
571
|
-
policy, this, ring_.size());
|
566
|
+
policy, this, ring_->ring().size());
|
572
567
|
}
|
573
568
|
}
|
574
569
|
|
@@ -660,7 +655,7 @@ void RingHash::RingHashSubchannelList::UpdateRingHashConnectivityStateLocked(
|
|
660
655
|
// Note that we use our own picker regardless of connectivity state.
|
661
656
|
p->channel_control_helper()->UpdateState(
|
662
657
|
state, status,
|
663
|
-
MakeRefCounted<Picker>(Ref(DEBUG_LOCATION, "RingHashPicker")));
|
658
|
+
MakeRefCounted<Picker>(p->Ref(DEBUG_LOCATION, "RingHashPicker"), this));
|
664
659
|
// While the ring_hash policy is reporting TRANSIENT_FAILURE, it will
|
665
660
|
// not be getting any pick requests from the priority policy.
|
666
661
|
// However, because the ring_hash policy does not attempt to
|
@@ -707,7 +702,6 @@ void RingHash::RingHashSubchannelData::ProcessConnectivityChangeLocked(
|
|
707
702
|
absl::optional<grpc_connectivity_state> old_state,
|
708
703
|
grpc_connectivity_state new_state) {
|
709
704
|
RingHash* p = static_cast<RingHash*>(subchannel_list()->policy());
|
710
|
-
grpc_connectivity_state last_connectivity_state = GetConnectivityState();
|
711
705
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_ring_hash_trace)) {
|
712
706
|
gpr_log(
|
713
707
|
GPR_INFO,
|
@@ -715,7 +709,7 @@ void RingHash::RingHashSubchannelData::ProcessConnectivityChangeLocked(
|
|
715
709
|
"(index %" PRIuPTR " of %" PRIuPTR "): prev_state=%s new_state=%s",
|
716
710
|
p, subchannel(), subchannel_list(), Index(),
|
717
711
|
subchannel_list()->num_subchannels(),
|
718
|
-
ConnectivityStateName(
|
712
|
+
ConnectivityStateName(logical_connectivity_state_),
|
719
713
|
ConnectivityStateName(new_state));
|
720
714
|
}
|
721
715
|
GPR_ASSERT(subchannel() != nullptr);
|
@@ -735,34 +729,23 @@ void RingHash::RingHashSubchannelData::ProcessConnectivityChangeLocked(
|
|
735
729
|
const bool connection_attempt_complete = new_state != GRPC_CHANNEL_CONNECTING;
|
736
730
|
// Decide what state to report for the purposes of aggregation and
|
737
731
|
// picker behavior.
|
738
|
-
// If the last recorded state was TRANSIENT_FAILURE, ignore the
|
739
|
-
// unless the new state is READY
|
740
|
-
|
741
|
-
|
742
|
-
|
743
|
-
new_state
|
744
|
-
|
745
|
-
|
746
|
-
|
747
|
-
|
748
|
-
|
749
|
-
|
750
|
-
update_status = false;
|
751
|
-
}
|
752
|
-
// Update state counters used for aggregation.
|
753
|
-
subchannel_list()->UpdateStateCountersLocked(last_connectivity_state,
|
754
|
-
new_state);
|
755
|
-
// Update status seen by picker if needed.
|
756
|
-
if (update_status) {
|
757
|
-
MutexLock lock(&mu_);
|
758
|
-
connectivity_status_ = connectivity_status();
|
732
|
+
// If the last recorded state was TRANSIENT_FAILURE, ignore the change
|
733
|
+
// unless the new state is READY (or TF again, in which case we need
|
734
|
+
// to update the status).
|
735
|
+
if (logical_connectivity_state_ != GRPC_CHANNEL_TRANSIENT_FAILURE ||
|
736
|
+
new_state == GRPC_CHANNEL_READY ||
|
737
|
+
new_state == GRPC_CHANNEL_TRANSIENT_FAILURE) {
|
738
|
+
// Update state counters used for aggregation.
|
739
|
+
subchannel_list()->UpdateStateCountersLocked(logical_connectivity_state_,
|
740
|
+
new_state);
|
741
|
+
// Update logical state.
|
742
|
+
logical_connectivity_state_ = new_state;
|
743
|
+
logical_connectivity_status_ = connectivity_status();
|
759
744
|
}
|
760
|
-
// Update last seen state, also used by picker.
|
761
|
-
connectivity_state_.store(new_state, std::memory_order_relaxed);
|
762
745
|
// Update the RH policy's connectivity state, creating new picker and new
|
763
746
|
// ring.
|
764
747
|
subchannel_list()->UpdateRingHashConnectivityStateLocked(
|
765
|
-
Index(), connection_attempt_complete,
|
748
|
+
Index(), connection_attempt_complete, logical_connectivity_status_);
|
766
749
|
}
|
767
750
|
|
768
751
|
//
|
@@ -116,7 +116,7 @@ constexpr absl::string_view kRls = "rls_experimental";
|
|
116
116
|
const char kGrpc[] = "grpc";
|
117
117
|
const char* kRlsRequestPath = "/grpc.lookup.v1.RouteLookupService/RouteLookup";
|
118
118
|
const char* kFakeTargetFieldValue = "fake_target_field_value";
|
119
|
-
const char* kRlsHeaderKey = "
|
119
|
+
const char* kRlsHeaderKey = "X-Google-RLS-Data";
|
120
120
|
|
121
121
|
const Duration kDefaultLookupServiceTimeout = Duration::Seconds(10);
|
122
122
|
const Duration kMaxMaxAge = Duration::Minutes(5);
|
@@ -365,7 +365,6 @@ class RlsLb : public LoadBalancingPolicy {
|
|
365
365
|
class Picker : public LoadBalancingPolicy::SubchannelPicker {
|
366
366
|
public:
|
367
367
|
explicit Picker(RefCountedPtr<RlsLb> lb_policy);
|
368
|
-
~Picker() override;
|
369
368
|
|
370
369
|
PickResult Pick(PickArgs args) override;
|
371
370
|
|
@@ -1008,19 +1007,6 @@ RlsLb::Picker::Picker(RefCountedPtr<RlsLb> lb_policy)
|
|
1008
1007
|
}
|
1009
1008
|
}
|
1010
1009
|
|
1011
|
-
RlsLb::Picker::~Picker() {
|
1012
|
-
// It's not safe to unref the default child policy in the picker,
|
1013
|
-
// since that needs to be done in the WorkSerializer.
|
1014
|
-
if (default_child_policy_ != nullptr) {
|
1015
|
-
auto* default_child_policy = default_child_policy_.release();
|
1016
|
-
lb_policy_->work_serializer()->Run(
|
1017
|
-
[default_child_policy]() {
|
1018
|
-
default_child_policy->Unref(DEBUG_LOCATION, "Picker");
|
1019
|
-
},
|
1020
|
-
DEBUG_LOCATION);
|
1021
|
-
}
|
1022
|
-
}
|
1023
|
-
|
1024
1010
|
LoadBalancingPolicy::PickResult RlsLb::Picker::Pick(PickArgs args) {
|
1025
1011
|
// Construct key for request.
|
1026
1012
|
RequestKey key = {BuildKeyMap(config_->key_builder_map(), args.path,
|
@@ -1645,7 +1631,7 @@ void RlsLb::RlsChannel::Orphan() {
|
|
1645
1631
|
client_channel->RemoveConnectivityWatcher(watcher_);
|
1646
1632
|
watcher_ = nullptr;
|
1647
1633
|
}
|
1648
|
-
|
1634
|
+
grpc_channel_destroy_internal(channel_);
|
1649
1635
|
}
|
1650
1636
|
Unref(DEBUG_LOCATION, "Orphan");
|
1651
1637
|
}
|