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
@@ -35,13 +35,14 @@
|
|
35
35
|
#include "absl/strings/strip.h"
|
36
36
|
#include "absl/types/optional.h"
|
37
37
|
|
38
|
+
#include <grpc/event_engine/event_engine.h>
|
38
39
|
#include <grpc/grpc.h>
|
39
40
|
#include <grpc/slice.h>
|
40
41
|
#include <grpc/status.h>
|
41
|
-
#include <grpc/support/atm.h>
|
42
42
|
#include <grpc/support/log.h>
|
43
43
|
|
44
44
|
#include "src/core/ext/filters/client_channel/client_channel.h"
|
45
|
+
#include "src/core/ext/filters/client_channel/client_channel_internal.h"
|
45
46
|
#include "src/core/ext/filters/client_channel/config_selector.h"
|
46
47
|
#include "src/core/ext/filters/client_channel/retry_service_config.h"
|
47
48
|
#include "src/core/ext/filters/client_channel/retry_throttle.h"
|
@@ -64,7 +65,6 @@
|
|
64
65
|
#include "src/core/lib/iomgr/error.h"
|
65
66
|
#include "src/core/lib/iomgr/exec_ctx.h"
|
66
67
|
#include "src/core/lib/iomgr/polling_entity.h"
|
67
|
-
#include "src/core/lib/iomgr/timer.h"
|
68
68
|
#include "src/core/lib/resource_quota/arena.h"
|
69
69
|
#include "src/core/lib/service_config/service_config.h"
|
70
70
|
#include "src/core/lib/service_config/service_config_call_data.h"
|
@@ -132,6 +132,7 @@ namespace grpc_core {
|
|
132
132
|
|
133
133
|
namespace {
|
134
134
|
|
135
|
+
using grpc_event_engine::experimental::EventEngine;
|
135
136
|
using internal::RetryGlobalConfig;
|
136
137
|
using internal::RetryMethodConfig;
|
137
138
|
using internal::RetryServiceConfigParser;
|
@@ -176,6 +177,7 @@ class RetryFilter {
|
|
176
177
|
|
177
178
|
RetryFilter(const ChannelArgs& args, grpc_error_handle* error)
|
178
179
|
: client_channel_(args.GetObject<ClientChannel>()),
|
180
|
+
event_engine_(args.GetObject<EventEngine>()),
|
179
181
|
per_rpc_retry_buffer_size_(GetMaxPerRpcRetryBufferSize(args)),
|
180
182
|
service_config_parser_index_(
|
181
183
|
internal::RetryServiceConfigParser::ParserIndex()) {
|
@@ -212,6 +214,7 @@ class RetryFilter {
|
|
212
214
|
const grpc_call_context_element* context);
|
213
215
|
|
214
216
|
ClientChannel* client_channel_;
|
217
|
+
EventEngine* const event_engine_;
|
215
218
|
size_t per_rpc_retry_buffer_size_;
|
216
219
|
RefCountedPtr<ServerRetryThrottleData> retry_throttle_data_;
|
217
220
|
const size_t service_config_parser_index_;
|
@@ -269,7 +272,7 @@ class RetryFilter::CallData {
|
|
269
272
|
// We allocate one struct on the arena for each attempt at starting a
|
270
273
|
// batch on a given LB call.
|
271
274
|
class BatchData
|
272
|
-
: public RefCounted<BatchData, PolymorphicRefCount,
|
275
|
+
: public RefCounted<BatchData, PolymorphicRefCount, UnrefCallDtor> {
|
273
276
|
public:
|
274
277
|
BatchData(RefCountedPtr<CallAttempt> call_attempt, int refcount,
|
275
278
|
bool set_on_complete);
|
@@ -442,18 +445,17 @@ class RetryFilter::CallData {
|
|
442
445
|
// Abandons the call attempt. Unrefs any deferred batches.
|
443
446
|
void Abandon();
|
444
447
|
|
445
|
-
|
448
|
+
void OnPerAttemptRecvTimer();
|
446
449
|
static void OnPerAttemptRecvTimerLocked(void* arg, grpc_error_handle error);
|
447
450
|
void MaybeCancelPerAttemptRecvTimer();
|
448
451
|
|
449
452
|
CallData* calld_;
|
450
453
|
AttemptDispatchController attempt_dispatch_controller_;
|
451
|
-
OrphanablePtr<ClientChannel::
|
454
|
+
OrphanablePtr<ClientChannel::FilterBasedLoadBalancedCall> lb_call_;
|
452
455
|
bool lb_call_committed_ = false;
|
453
456
|
|
454
|
-
grpc_timer per_attempt_recv_timer_;
|
455
457
|
grpc_closure on_per_attempt_recv_timer_;
|
456
|
-
|
458
|
+
absl::optional<EventEngine::TaskHandle> per_attempt_recv_timer_handle_;
|
457
459
|
|
458
460
|
// BatchData.batch.payload points to this.
|
459
461
|
grpc_transport_stream_op_batch_payload batch_payload_;
|
@@ -548,14 +550,15 @@ class RetryFilter::CallData {
|
|
548
550
|
// If server_pushback is nullopt, retry_backoff_ is used.
|
549
551
|
void StartRetryTimer(absl::optional<Duration> server_pushback);
|
550
552
|
|
551
|
-
|
552
|
-
static void OnRetryTimerLocked(void* arg, grpc_error_handle error);
|
553
|
+
void OnRetryTimer();
|
554
|
+
static void OnRetryTimerLocked(void* arg, grpc_error_handle /*error*/);
|
553
555
|
|
554
556
|
// Adds a closure to closures to start a transparent retry.
|
555
557
|
void AddClosureToStartTransparentRetry(CallCombinerClosureList* closures);
|
556
558
|
static void StartTransparentRetry(void* arg, grpc_error_handle error);
|
557
559
|
|
558
|
-
OrphanablePtr<ClientChannel::
|
560
|
+
OrphanablePtr<ClientChannel::FilterBasedLoadBalancedCall>
|
561
|
+
CreateLoadBalancedCall(
|
559
562
|
ConfigSelector::CallDispatchController* call_dispatch_controller,
|
560
563
|
bool is_transparent_retry);
|
561
564
|
|
@@ -586,7 +589,7 @@ class RetryFilter::CallData {
|
|
586
589
|
// LB call used when we've committed to a call attempt and the retry
|
587
590
|
// state for that attempt is no longer needed. This provides a fast
|
588
591
|
// path for long-running streaming calls that minimizes overhead.
|
589
|
-
OrphanablePtr<ClientChannel::
|
592
|
+
OrphanablePtr<ClientChannel::FilterBasedLoadBalancedCall> committed_call_;
|
590
593
|
|
591
594
|
// When are are not yet fully committed to a particular call (i.e.,
|
592
595
|
// either we might still retry or we have committed to the call but
|
@@ -601,26 +604,16 @@ class RetryFilter::CallData {
|
|
601
604
|
|
602
605
|
// Retry state.
|
603
606
|
bool retry_committed_ : 1;
|
604
|
-
bool retry_timer_pending_ : 1;
|
605
607
|
bool retry_codepath_started_ : 1;
|
606
608
|
bool sent_transparent_retry_not_seen_by_server_ : 1;
|
607
609
|
int num_attempts_completed_ = 0;
|
608
|
-
|
610
|
+
absl::optional<EventEngine::TaskHandle> retry_timer_handle_;
|
609
611
|
grpc_closure retry_closure_;
|
610
612
|
|
611
613
|
// Cached data for retrying send ops.
|
612
614
|
// send_initial_metadata
|
613
615
|
bool seen_send_initial_metadata_ = false;
|
614
616
|
grpc_metadata_batch send_initial_metadata_{arena_};
|
615
|
-
// TODO(roth): As part of implementing hedging, we'll probably need to
|
616
|
-
// have the LB call set a value in CallAttempt and then propagate it
|
617
|
-
// from CallAttempt to the parent call when we commit. Otherwise, we
|
618
|
-
// may leave this with a value for a peer other than the one we
|
619
|
-
// actually commit to. Alternatively, maybe see if there's a way to
|
620
|
-
// change the surface API such that the peer isn't available until
|
621
|
-
// after initial metadata is received? (Could even change the
|
622
|
-
// transport API to return this with the recv_initial_metadata op.)
|
623
|
-
gpr_atm* peer_string_;
|
624
617
|
// send_message
|
625
618
|
// When we get a send_message op, we replace the original byte stream
|
626
619
|
// with a CachingByteStream that caches the slices to a local buffer for
|
@@ -656,7 +649,7 @@ class RetryFilter::CallData {
|
|
656
649
|
// on_call_stack_destruction closure from the surface.
|
657
650
|
class RetryFilter::CallData::CallStackDestructionBarrier
|
658
651
|
: public RefCounted<CallStackDestructionBarrier, PolymorphicRefCount,
|
659
|
-
|
652
|
+
UnrefCallDtor> {
|
660
653
|
public:
|
661
654
|
CallStackDestructionBarrier() {}
|
662
655
|
|
@@ -723,23 +716,23 @@ RetryFilter::CallData::CallAttempt::CallAttempt(CallData* calld,
|
|
723
716
|
// If per_attempt_recv_timeout is set, start a timer.
|
724
717
|
if (calld->retry_policy_ != nullptr &&
|
725
718
|
calld->retry_policy_->per_attempt_recv_timeout().has_value()) {
|
726
|
-
|
727
|
-
|
719
|
+
const Duration per_attempt_recv_timeout =
|
720
|
+
*calld->retry_policy_->per_attempt_recv_timeout();
|
728
721
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_retry_trace)) {
|
729
722
|
gpr_log(GPR_INFO,
|
730
723
|
"chand=%p calld=%p attempt=%p: per-attempt timeout in %" PRId64
|
731
724
|
" ms",
|
732
|
-
calld->chand_, calld, this,
|
733
|
-
calld->retry_policy_->per_attempt_recv_timeout()->millis());
|
725
|
+
calld->chand_, calld, this, per_attempt_recv_timeout.millis());
|
734
726
|
}
|
735
727
|
// Schedule retry after computed delay.
|
736
|
-
GRPC_CLOSURE_INIT(&on_per_attempt_recv_timer_, OnPerAttemptRecvTimer, this,
|
737
|
-
nullptr);
|
738
728
|
GRPC_CALL_STACK_REF(calld->owning_call_, "OnPerAttemptRecvTimer");
|
739
729
|
Ref(DEBUG_LOCATION, "OnPerAttemptRecvTimer").release();
|
740
|
-
|
741
|
-
|
742
|
-
|
730
|
+
per_attempt_recv_timer_handle_ = calld_->chand_->event_engine_->RunAfter(
|
731
|
+
per_attempt_recv_timeout, [this] {
|
732
|
+
ApplicationCallbackExecCtx callback_exec_ctx;
|
733
|
+
ExecCtx exec_ctx;
|
734
|
+
OnPerAttemptRecvTimer();
|
735
|
+
});
|
743
736
|
}
|
744
737
|
}
|
745
738
|
|
@@ -803,7 +796,7 @@ void RetryFilter::CallData::CallAttempt::MaybeSwitchToFastPath() {
|
|
803
796
|
// If we've already switched to fast path, there's nothing to do here.
|
804
797
|
if (calld_->committed_call_ != nullptr) return;
|
805
798
|
// If the perAttemptRecvTimeout timer is pending, we can't switch yet.
|
806
|
-
if (
|
799
|
+
if (per_attempt_recv_timer_handle_.has_value()) return;
|
807
800
|
// If there are still send ops to replay, we can't switch yet.
|
808
801
|
if (HaveSendOpsToReplay()) return;
|
809
802
|
// If we started an internal batch for recv_trailing_metadata but have not
|
@@ -881,7 +874,7 @@ namespace {
|
|
881
874
|
void StartBatchInCallCombiner(void* arg, grpc_error_handle /*ignored*/) {
|
882
875
|
grpc_transport_stream_op_batch* batch =
|
883
876
|
static_cast<grpc_transport_stream_op_batch*>(arg);
|
884
|
-
auto* lb_call = static_cast<ClientChannel::
|
877
|
+
auto* lb_call = static_cast<ClientChannel::FilterBasedLoadBalancedCall*>(
|
885
878
|
batch->handler_private.extra_arg);
|
886
879
|
// Note: This will release the call combiner.
|
887
880
|
lb_call->StartTransportStreamOpBatch(batch);
|
@@ -895,7 +888,7 @@ void RetryFilter::CallData::CallAttempt::AddClosureForBatch(
|
|
895
888
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_retry_trace)) {
|
896
889
|
gpr_log(GPR_INFO, "chand=%p calld=%p attempt=%p: adding batch (%s): %s",
|
897
890
|
calld_->chand_, calld_, this, reason,
|
898
|
-
grpc_transport_stream_op_batch_string(batch).c_str());
|
891
|
+
grpc_transport_stream_op_batch_string(batch, false).c_str());
|
899
892
|
}
|
900
893
|
batch->handler_private.extra_arg = lb_call_.get();
|
901
894
|
GRPC_CLOSURE_INIT(&batch->handler_private.closure, StartBatchInCallCombiner,
|
@@ -1249,14 +1242,11 @@ void RetryFilter::CallData::CallAttempt::Abandon() {
|
|
1249
1242
|
on_complete_deferred_batches_.clear();
|
1250
1243
|
}
|
1251
1244
|
|
1252
|
-
void RetryFilter::CallData::CallAttempt::OnPerAttemptRecvTimer(
|
1253
|
-
|
1254
|
-
|
1255
|
-
|
1256
|
-
|
1257
|
-
GRPC_CALL_COMBINER_START(call_attempt->calld_->call_combiner_,
|
1258
|
-
&call_attempt->on_per_attempt_recv_timer_, error,
|
1259
|
-
"per-attempt timer fired");
|
1245
|
+
void RetryFilter::CallData::CallAttempt::OnPerAttemptRecvTimer() {
|
1246
|
+
GRPC_CLOSURE_INIT(&on_per_attempt_recv_timer_, OnPerAttemptRecvTimerLocked,
|
1247
|
+
this, nullptr);
|
1248
|
+
GRPC_CALL_COMBINER_START(calld_->call_combiner_, &on_per_attempt_recv_timer_,
|
1249
|
+
absl::OkStatus(), "per-attempt timer fired");
|
1260
1250
|
}
|
1261
1251
|
|
1262
1252
|
void RetryFilter::CallData::CallAttempt::OnPerAttemptRecvTimerLocked(
|
@@ -1266,35 +1256,33 @@ void RetryFilter::CallData::CallAttempt::OnPerAttemptRecvTimerLocked(
|
|
1266
1256
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_retry_trace)) {
|
1267
1257
|
gpr_log(GPR_INFO,
|
1268
1258
|
"chand=%p calld=%p attempt=%p: perAttemptRecvTimeout timer fired: "
|
1269
|
-
"error=%s,
|
1259
|
+
"error=%s, per_attempt_recv_timer_handle_.has_value()=%d",
|
1270
1260
|
calld->chand_, calld, call_attempt, StatusToString(error).c_str(),
|
1271
|
-
call_attempt->
|
1261
|
+
call_attempt->per_attempt_recv_timer_handle_.has_value());
|
1272
1262
|
}
|
1273
1263
|
CallCombinerClosureList closures;
|
1274
|
-
|
1275
|
-
|
1276
|
-
|
1277
|
-
|
1278
|
-
|
1279
|
-
|
1280
|
-
|
1281
|
-
|
1282
|
-
|
1283
|
-
|
1284
|
-
|
1285
|
-
|
1286
|
-
|
1287
|
-
|
1288
|
-
|
1289
|
-
|
1290
|
-
|
1291
|
-
|
1292
|
-
|
1293
|
-
|
1294
|
-
|
1295
|
-
|
1296
|
-
call_attempt->MaybeSwitchToFastPath();
|
1297
|
-
}
|
1264
|
+
call_attempt->per_attempt_recv_timer_handle_.reset();
|
1265
|
+
// Cancel this attempt.
|
1266
|
+
// TODO(roth): When implementing hedging, we should not cancel the
|
1267
|
+
// current attempt.
|
1268
|
+
call_attempt->MaybeAddBatchForCancelOp(
|
1269
|
+
grpc_error_set_int(
|
1270
|
+
GRPC_ERROR_CREATE("retry perAttemptRecvTimeout exceeded"),
|
1271
|
+
StatusIntProperty::kRpcStatus, GRPC_STATUS_CANCELLED),
|
1272
|
+
&closures);
|
1273
|
+
// Check whether we should retry.
|
1274
|
+
if (call_attempt->ShouldRetry(/*status=*/absl::nullopt,
|
1275
|
+
/*server_pushback_ms=*/absl::nullopt)) {
|
1276
|
+
// Mark current attempt as abandoned.
|
1277
|
+
call_attempt->Abandon();
|
1278
|
+
// We are retrying. Start backoff timer.
|
1279
|
+
calld->StartRetryTimer(/*server_pushback=*/absl::nullopt);
|
1280
|
+
} else {
|
1281
|
+
// Not retrying, so commit the call.
|
1282
|
+
calld->RetryCommit(call_attempt);
|
1283
|
+
// If retry state is no longer needed, switch to fast path for
|
1284
|
+
// subsequent batches.
|
1285
|
+
call_attempt->MaybeSwitchToFastPath();
|
1298
1286
|
}
|
1299
1287
|
closures.RunClosures(calld->call_combiner_);
|
1300
1288
|
call_attempt->Unref(DEBUG_LOCATION, "OnPerAttemptRecvTimer");
|
@@ -1302,15 +1290,19 @@ void RetryFilter::CallData::CallAttempt::OnPerAttemptRecvTimerLocked(
|
|
1302
1290
|
}
|
1303
1291
|
|
1304
1292
|
void RetryFilter::CallData::CallAttempt::MaybeCancelPerAttemptRecvTimer() {
|
1305
|
-
if (
|
1293
|
+
if (per_attempt_recv_timer_handle_.has_value()) {
|
1306
1294
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_retry_trace)) {
|
1307
1295
|
gpr_log(GPR_INFO,
|
1308
1296
|
"chand=%p calld=%p attempt=%p: cancelling "
|
1309
1297
|
"perAttemptRecvTimeout timer",
|
1310
1298
|
calld_->chand_, calld_, this);
|
1311
1299
|
}
|
1312
|
-
|
1313
|
-
|
1300
|
+
if (calld_->chand_->event_engine_->Cancel(
|
1301
|
+
*per_attempt_recv_timer_handle_)) {
|
1302
|
+
Unref(DEBUG_LOCATION, "OnPerAttemptRecvTimer");
|
1303
|
+
GRPC_CALL_STACK_UNREF(calld_->owning_call_, "OnPerAttemptRecvTimer");
|
1304
|
+
}
|
1305
|
+
per_attempt_recv_timer_handle_.reset();
|
1314
1306
|
}
|
1315
1307
|
}
|
1316
1308
|
|
@@ -1351,8 +1343,9 @@ RetryFilter::CallData::CallAttempt::BatchData::~BatchData() {
|
|
1351
1343
|
this);
|
1352
1344
|
}
|
1353
1345
|
CallAttempt* call_attempt = std::exchange(call_attempt_, nullptr);
|
1354
|
-
|
1346
|
+
grpc_call_stack* owning_call = call_attempt->calld_->owning_call_;
|
1355
1347
|
call_attempt->Unref(DEBUG_LOCATION, "~BatchData");
|
1348
|
+
GRPC_CALL_STACK_UNREF(owning_call, "Retry BatchData");
|
1356
1349
|
}
|
1357
1350
|
|
1358
1351
|
void RetryFilter::CallData::CallAttempt::BatchData::
|
@@ -1879,7 +1872,8 @@ void RetryFilter::CallData::CallAttempt::BatchData::OnComplete(
|
|
1879
1872
|
"got on_complete, error=%s, batch=%s",
|
1880
1873
|
calld->chand_, calld, call_attempt, batch_data.get(),
|
1881
1874
|
StatusToString(error).c_str(),
|
1882
|
-
grpc_transport_stream_op_batch_string(&batch_data->batch_)
|
1875
|
+
grpc_transport_stream_op_batch_string(&batch_data->batch_, false)
|
1876
|
+
.c_str());
|
1883
1877
|
}
|
1884
1878
|
// If this attempt has been abandoned, then we're not going to propagate
|
1885
1879
|
// the completion of this batch, so do nothing.
|
@@ -1954,7 +1948,8 @@ void RetryFilter::CallData::CallAttempt::BatchData::OnCompleteForCancelOp(
|
|
1954
1948
|
"got on_complete for cancel_stream batch, error=%s, batch=%s",
|
1955
1949
|
calld->chand_, calld, call_attempt, batch_data.get(),
|
1956
1950
|
StatusToString(error).c_str(),
|
1957
|
-
grpc_transport_stream_op_batch_string(&batch_data->batch_)
|
1951
|
+
grpc_transport_stream_op_batch_string(&batch_data->batch_, false)
|
1952
|
+
.c_str());
|
1958
1953
|
}
|
1959
1954
|
GRPC_CALL_COMBINER_STOP(
|
1960
1955
|
calld->call_combiner_,
|
@@ -1986,7 +1981,6 @@ void RetryFilter::CallData::CallAttempt::BatchData::
|
|
1986
1981
|
batch_.send_initial_metadata = true;
|
1987
1982
|
batch_.payload->send_initial_metadata.send_initial_metadata =
|
1988
1983
|
&call_attempt_->send_initial_metadata_;
|
1989
|
-
batch_.payload->send_initial_metadata.peer_string = calld->peer_string_;
|
1990
1984
|
}
|
1991
1985
|
|
1992
1986
|
void RetryFilter::CallData::CallAttempt::BatchData::
|
@@ -2160,7 +2154,6 @@ RetryFilter::CallData::CallData(RetryFilter* chand,
|
|
2160
2154
|
pending_send_message_(false),
|
2161
2155
|
pending_send_trailing_metadata_(false),
|
2162
2156
|
retry_committed_(false),
|
2163
|
-
retry_timer_pending_(false),
|
2164
2157
|
retry_codepath_started_(false),
|
2165
2158
|
sent_transparent_retry_not_seen_by_server_(false) {}
|
2166
2159
|
|
@@ -2178,7 +2171,8 @@ void RetryFilter::CallData::StartTransportStreamOpBatch(
|
|
2178
2171
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_retry_trace) &&
|
2179
2172
|
!GRPC_TRACE_FLAG_ENABLED(grpc_trace_channel)) {
|
2180
2173
|
gpr_log(GPR_INFO, "chand=%p calld=%p: batch started from surface: %s",
|
2181
|
-
chand_, this,
|
2174
|
+
chand_, this,
|
2175
|
+
grpc_transport_stream_op_batch_string(batch, false).c_str());
|
2182
2176
|
}
|
2183
2177
|
// If we have an LB call, delegate to the LB call.
|
2184
2178
|
if (committed_call_ != nullptr) {
|
@@ -2220,13 +2214,15 @@ void RetryFilter::CallData::StartTransportStreamOpBatch(
|
|
2220
2214
|
return;
|
2221
2215
|
}
|
2222
2216
|
// Cancel retry timer if needed.
|
2223
|
-
if (
|
2217
|
+
if (retry_timer_handle_.has_value()) {
|
2224
2218
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_retry_trace)) {
|
2225
2219
|
gpr_log(GPR_INFO, "chand=%p calld=%p: cancelling retry timer", chand_,
|
2226
2220
|
this);
|
2227
2221
|
}
|
2228
|
-
|
2229
|
-
|
2222
|
+
if (chand_->event_engine_->Cancel(*retry_timer_handle_)) {
|
2223
|
+
GRPC_CALL_STACK_UNREF(owning_call_, "OnRetryTimer");
|
2224
|
+
}
|
2225
|
+
retry_timer_handle_.reset();
|
2230
2226
|
FreeAllCachedSendOpData();
|
2231
2227
|
}
|
2232
2228
|
// We have no call attempt, so there's nowhere to send the cancellation
|
@@ -2240,7 +2236,7 @@ void RetryFilter::CallData::StartTransportStreamOpBatch(
|
|
2240
2236
|
PendingBatch* pending = PendingBatchesAdd(batch);
|
2241
2237
|
// If the timer is pending, yield the call combiner and wait for it to
|
2242
2238
|
// run, since we don't want to start another call attempt until it does.
|
2243
|
-
if (
|
2239
|
+
if (retry_timer_handle_.has_value()) {
|
2244
2240
|
GRPC_CALL_COMBINER_STOP(call_combiner_,
|
2245
2241
|
"added pending batch while retry timer pending");
|
2246
2242
|
return;
|
@@ -2300,7 +2296,7 @@ void RetryFilter::CallData::StartTransportStreamOpBatch(
|
|
2300
2296
|
call_attempt_->StartRetriableBatches();
|
2301
2297
|
}
|
2302
2298
|
|
2303
|
-
OrphanablePtr<ClientChannel::
|
2299
|
+
OrphanablePtr<ClientChannel::FilterBasedLoadBalancedCall>
|
2304
2300
|
RetryFilter::CallData::CreateLoadBalancedCall(
|
2305
2301
|
ConfigSelector::CallDispatchController* call_dispatch_controller,
|
2306
2302
|
bool is_transparent_retry) {
|
@@ -2334,7 +2330,6 @@ void RetryFilter::CallData::MaybeCacheSendOpsForBatch(PendingBatch* pending) {
|
|
2334
2330
|
grpc_metadata_batch* send_initial_metadata =
|
2335
2331
|
batch->payload->send_initial_metadata.send_initial_metadata;
|
2336
2332
|
send_initial_metadata_ = send_initial_metadata->Copy();
|
2337
|
-
peer_string_ = batch->payload->send_initial_metadata.peer_string;
|
2338
2333
|
}
|
2339
2334
|
// Set up cache for send_message ops.
|
2340
2335
|
if (batch->send_message) {
|
@@ -2575,42 +2570,40 @@ void RetryFilter::CallData::StartRetryTimer(
|
|
2575
2570
|
// Reset call attempt.
|
2576
2571
|
call_attempt_.reset(DEBUG_LOCATION, "StartRetryTimer");
|
2577
2572
|
// Compute backoff delay.
|
2578
|
-
|
2573
|
+
Duration next_attempt_timeout;
|
2579
2574
|
if (server_pushback.has_value()) {
|
2580
2575
|
GPR_ASSERT(*server_pushback >= Duration::Zero());
|
2581
|
-
|
2576
|
+
next_attempt_timeout = *server_pushback;
|
2582
2577
|
retry_backoff_.Reset();
|
2583
2578
|
} else {
|
2584
|
-
|
2579
|
+
next_attempt_timeout = retry_backoff_.NextAttemptTime() - Timestamp::Now();
|
2585
2580
|
}
|
2586
2581
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_retry_trace)) {
|
2587
2582
|
gpr_log(GPR_INFO,
|
2588
2583
|
"chand=%p calld=%p: retrying failed call in %" PRId64 " ms", chand_,
|
2589
|
-
this,
|
2584
|
+
this, next_attempt_timeout.millis());
|
2590
2585
|
}
|
2591
2586
|
// Schedule retry after computed delay.
|
2592
|
-
GRPC_CLOSURE_INIT(&retry_closure_, OnRetryTimer, this, nullptr);
|
2593
2587
|
GRPC_CALL_STACK_REF(owning_call_, "OnRetryTimer");
|
2594
|
-
|
2595
|
-
|
2588
|
+
retry_timer_handle_ =
|
2589
|
+
chand_->event_engine_->RunAfter(next_attempt_timeout, [this] {
|
2590
|
+
ApplicationCallbackExecCtx callback_exec_ctx;
|
2591
|
+
ExecCtx exec_ctx;
|
2592
|
+
OnRetryTimer();
|
2593
|
+
});
|
2596
2594
|
}
|
2597
2595
|
|
2598
|
-
void RetryFilter::CallData::OnRetryTimer(
|
2599
|
-
|
2600
|
-
|
2601
|
-
GRPC_CALL_COMBINER_START(calld->call_combiner_, &calld->retry_closure_, error,
|
2596
|
+
void RetryFilter::CallData::OnRetryTimer() {
|
2597
|
+
GRPC_CLOSURE_INIT(&retry_closure_, OnRetryTimerLocked, this, nullptr);
|
2598
|
+
GRPC_CALL_COMBINER_START(call_combiner_, &retry_closure_, absl::OkStatus(),
|
2602
2599
|
"retry timer fired");
|
2603
2600
|
}
|
2604
2601
|
|
2605
2602
|
void RetryFilter::CallData::OnRetryTimerLocked(void* arg,
|
2606
|
-
grpc_error_handle error) {
|
2603
|
+
grpc_error_handle /*error*/) {
|
2607
2604
|
auto* calld = static_cast<CallData*>(arg);
|
2608
|
-
|
2609
|
-
|
2610
|
-
calld->CreateCallAttempt(/*is_transparent_retry=*/false);
|
2611
|
-
} else {
|
2612
|
-
GRPC_CALL_COMBINER_STOP(calld->call_combiner_, "retry timer cancelled");
|
2613
|
-
}
|
2605
|
+
calld->retry_timer_handle_.reset();
|
2606
|
+
calld->CreateCallAttempt(/*is_transparent_retry=*/false);
|
2614
2607
|
GRPC_CALL_STACK_UNREF(calld->owning_call_, "OnRetryTimer");
|
2615
2608
|
}
|
2616
2609
|
|
@@ -920,7 +920,8 @@ bool Subchannel::PublishTransportLocked() {
|
|
920
920
|
// Construct channel stack.
|
921
921
|
ChannelStackBuilderImpl builder("subchannel", GRPC_CLIENT_SUBCHANNEL,
|
922
922
|
connecting_result_.channel_args);
|
923
|
-
|
923
|
+
// Builder takes ownership of transport.
|
924
|
+
builder.SetTransport(std::exchange(connecting_result_.transport, nullptr));
|
924
925
|
if (!CoreConfiguration::Get().channel_init().CreateStack(&builder)) {
|
925
926
|
return false;
|
926
927
|
}
|
@@ -933,9 +934,6 @@ bool Subchannel::PublishTransportLocked() {
|
|
933
934
|
key_.ToString().c_str(), StatusToString(error).c_str());
|
934
935
|
return false;
|
935
936
|
}
|
936
|
-
// Release the ownership since it is now owned by the connected filter in the
|
937
|
-
// channel stack (published).
|
938
|
-
connecting_result_.transport = nullptr;
|
939
937
|
RefCountedPtr<channelz::SocketNode> socket =
|
940
938
|
std::move(connecting_result_.socket_node);
|
941
939
|
connecting_result_.Reset();
|
@@ -33,6 +33,7 @@
|
|
33
33
|
#include "src/core/lib/gprpp/status_helper.h"
|
34
34
|
#include "src/core/lib/gprpp/sync.h"
|
35
35
|
#include "src/core/lib/gprpp/time.h"
|
36
|
+
#include "src/core/lib/iomgr/exec_ctx.h"
|
36
37
|
#include "src/core/lib/resource_quota/resource_quota.h"
|
37
38
|
#include "src/core/lib/transport/error_utils.h"
|
38
39
|
|
@@ -43,6 +44,8 @@
|
|
43
44
|
|
44
45
|
namespace grpc_core {
|
45
46
|
|
47
|
+
using ::grpc_event_engine::experimental::EventEngine;
|
48
|
+
|
46
49
|
//
|
47
50
|
// SubchannelStreamClient
|
48
51
|
//
|
@@ -69,12 +72,11 @@ SubchannelStreamClient::SubchannelStreamClient(
|
|
69
72
|
.set_multiplier(SUBCHANNEL_STREAM_RECONNECT_BACKOFF_MULTIPLIER)
|
70
73
|
.set_jitter(SUBCHANNEL_STREAM_RECONNECT_JITTER)
|
71
74
|
.set_max_backoff(Duration::Seconds(
|
72
|
-
SUBCHANNEL_STREAM_RECONNECT_MAX_BACKOFF_SECONDS)))
|
75
|
+
SUBCHANNEL_STREAM_RECONNECT_MAX_BACKOFF_SECONDS))),
|
76
|
+
event_engine_(connected_subchannel_->args().GetObject<EventEngine>()) {
|
73
77
|
if (GPR_UNLIKELY(tracer_ != nullptr)) {
|
74
78
|
gpr_log(GPR_INFO, "%s %p: created SubchannelStreamClient", tracer_, this);
|
75
79
|
}
|
76
|
-
GRPC_CLOSURE_INIT(&retry_timer_callback_, OnRetryTimer, this,
|
77
|
-
grpc_schedule_on_exec_ctx);
|
78
80
|
StartCall();
|
79
81
|
}
|
80
82
|
|
@@ -94,8 +96,9 @@ void SubchannelStreamClient::Orphan() {
|
|
94
96
|
MutexLock lock(&mu_);
|
95
97
|
event_handler_.reset();
|
96
98
|
call_state_.reset();
|
97
|
-
if (
|
98
|
-
|
99
|
+
if (retry_timer_handle_.has_value()) {
|
100
|
+
event_engine_->Cancel(*retry_timer_handle_);
|
101
|
+
retry_timer_handle_.reset();
|
99
102
|
}
|
100
103
|
}
|
101
104
|
Unref(DEBUG_LOCATION, "orphan");
|
@@ -124,11 +127,10 @@ void SubchannelStreamClient::StartRetryTimerLocked() {
|
|
124
127
|
if (event_handler_ != nullptr) {
|
125
128
|
event_handler_->OnRetryTimerStartLocked(this);
|
126
129
|
}
|
127
|
-
|
130
|
+
const Duration timeout = retry_backoff_.NextAttemptTime() - Timestamp::Now();
|
128
131
|
if (GPR_UNLIKELY(tracer_ != nullptr)) {
|
129
132
|
gpr_log(GPR_INFO, "%s %p: SubchannelStreamClient health check call lost...",
|
130
133
|
tracer_, this);
|
131
|
-
Duration timeout = next_try - Timestamp::Now();
|
132
134
|
if (timeout > Duration::Zero()) {
|
133
135
|
gpr_log(GPR_INFO, "%s %p: ... will retry in %" PRId64 "ms.", tracer_,
|
134
136
|
this, timeout.millis());
|
@@ -136,28 +138,27 @@ void SubchannelStreamClient::StartRetryTimerLocked() {
|
|
136
138
|
gpr_log(GPR_INFO, "%s %p: ... retrying immediately.", tracer_, this);
|
137
139
|
}
|
138
140
|
}
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
141
|
+
retry_timer_handle_ = event_engine_->RunAfter(
|
142
|
+
timeout, [self = Ref(DEBUG_LOCATION, "health_retry_timer")]() mutable {
|
143
|
+
ApplicationCallbackExecCtx callback_exec_ctx;
|
144
|
+
ExecCtx exec_ctx;
|
145
|
+
self->OnRetryTimer();
|
146
|
+
self.reset(DEBUG_LOCATION, "health_retry_timer");
|
147
|
+
});
|
143
148
|
}
|
144
149
|
|
145
|
-
void SubchannelStreamClient::OnRetryTimer(
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
gpr_log(GPR_INFO,
|
154
|
-
"%s %p: SubchannelStreamClient restarting health check call",
|
155
|
-
self->tracer_, self);
|
156
|
-
}
|
157
|
-
self->StartCallLocked();
|
150
|
+
void SubchannelStreamClient::OnRetryTimer() {
|
151
|
+
MutexLock lock(&mu_);
|
152
|
+
if (event_handler_ != nullptr && retry_timer_handle_.has_value() &&
|
153
|
+
call_state_ == nullptr) {
|
154
|
+
if (GPR_UNLIKELY(tracer_ != nullptr)) {
|
155
|
+
gpr_log(GPR_INFO,
|
156
|
+
"%s %p: SubchannelStreamClient restarting health check call",
|
157
|
+
tracer_, this);
|
158
158
|
}
|
159
|
+
StartCallLocked();
|
159
160
|
}
|
160
|
-
|
161
|
+
retry_timer_handle_.reset();
|
161
162
|
}
|
162
163
|
|
163
164
|
//
|
@@ -242,7 +243,6 @@ void SubchannelStreamClient::CallState::StartCallLocked() {
|
|
242
243
|
GPR_ASSERT(error.ok());
|
243
244
|
payload_.send_initial_metadata.send_initial_metadata =
|
244
245
|
&send_initial_metadata_;
|
245
|
-
payload_.send_initial_metadata.peer_string = nullptr;
|
246
246
|
batch_.send_initial_metadata = true;
|
247
247
|
// Add send_message op.
|
248
248
|
send_message_.Append(Slice(
|
@@ -257,7 +257,6 @@ void SubchannelStreamClient::CallState::StartCallLocked() {
|
|
257
257
|
payload_.recv_initial_metadata.recv_initial_metadata =
|
258
258
|
&recv_initial_metadata_;
|
259
259
|
payload_.recv_initial_metadata.trailing_metadata_available = nullptr;
|
260
|
-
payload_.recv_initial_metadata.peer_string = nullptr;
|
261
260
|
// recv_initial_metadata_ready callback takes ref, handled manually.
|
262
261
|
call_->Ref(DEBUG_LOCATION, "recv_initial_metadata_ready").release();
|
263
262
|
payload_.recv_initial_metadata.recv_initial_metadata_ready =
|
@@ -27,6 +27,7 @@
|
|
27
27
|
#include "absl/strings/string_view.h"
|
28
28
|
#include "absl/types/optional.h"
|
29
29
|
|
30
|
+
#include <grpc/event_engine/event_engine.h>
|
30
31
|
#include <grpc/event_engine/memory_allocator.h>
|
31
32
|
#include <grpc/slice.h>
|
32
33
|
#include <grpc/status.h>
|
@@ -42,7 +43,6 @@
|
|
42
43
|
#include "src/core/lib/iomgr/error.h"
|
43
44
|
#include "src/core/lib/iomgr/iomgr_fwd.h"
|
44
45
|
#include "src/core/lib/iomgr/polling_entity.h"
|
45
|
-
#include "src/core/lib/iomgr/timer.h"
|
46
46
|
#include "src/core/lib/resource_quota/arena.h"
|
47
47
|
#include "src/core/lib/resource_quota/memory_quota.h"
|
48
48
|
#include "src/core/lib/slice/slice.h"
|
@@ -196,7 +196,7 @@ class SubchannelStreamClient
|
|
196
196
|
void StartCallLocked() ABSL_EXCLUSIVE_LOCKS_REQUIRED(&mu_);
|
197
197
|
|
198
198
|
void StartRetryTimerLocked() ABSL_EXCLUSIVE_LOCKS_REQUIRED(&mu_);
|
199
|
-
|
199
|
+
void OnRetryTimer() ABSL_LOCKS_EXCLUDED(mu_);
|
200
200
|
|
201
201
|
RefCountedPtr<ConnectedSubchannel> connected_subchannel_;
|
202
202
|
grpc_pollset_set* interested_parties_; // Do not own.
|
@@ -212,9 +212,12 @@ class SubchannelStreamClient
|
|
212
212
|
|
213
213
|
// Call retry state.
|
214
214
|
BackOff retry_backoff_ ABSL_GUARDED_BY(mu_);
|
215
|
-
|
216
|
-
|
217
|
-
|
215
|
+
absl::optional<grpc_event_engine::experimental::EventEngine::TaskHandle>
|
216
|
+
retry_timer_handle_ ABSL_GUARDED_BY(mu_);
|
217
|
+
// A raw pointer will suffice since connected_subchannel_ holds a copy of the
|
218
|
+
// ChannelArgs which holds an std::shared_ptr of the EventEngine.
|
219
|
+
grpc_event_engine::experimental::EventEngine* event_engine_
|
220
|
+
ABSL_GUARDED_BY(mu_);
|
218
221
|
};
|
219
222
|
|
220
223
|
} // namespace grpc_core
|
@@ -133,13 +133,13 @@ ArenaPromise<ServerMetadataHandle> HttpClientFilter::MakeCallPromise(
|
|
133
133
|
return std::move(md);
|
134
134
|
});
|
135
135
|
|
136
|
-
return Race(
|
136
|
+
return Race(initial_metadata_err->Wait(),
|
137
|
+
Map(next_promise_factory(std::move(call_args)),
|
137
138
|
[](ServerMetadataHandle md) -> ServerMetadataHandle {
|
138
139
|
auto r = CheckServerMetadata(md.get());
|
139
140
|
if (!r.ok()) return ServerMetadataFromStatus(r);
|
140
141
|
return md;
|
141
|
-
})
|
142
|
-
initial_metadata_err->Wait());
|
142
|
+
}));
|
143
143
|
}
|
144
144
|
|
145
145
|
HttpClientFilter::HttpClientFilter(HttpSchemeMetadata::ValueType scheme,
|