grpc 1.24.0 → 1.25.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 +306 -243
- data/etc/roots.pem +0 -100
- data/include/grpc/grpc_security.h +44 -18
- data/include/grpc/impl/codegen/grpc_types.h +15 -0
- data/include/grpc/impl/codegen/port_platform.h +27 -11
- data/include/grpc/impl/codegen/sync_generic.h +1 -1
- data/src/boringssl/err_data.c +695 -650
- data/src/core/ext/filters/client_channel/client_channel.cc +257 -179
- data/src/core/ext/filters/client_channel/client_channel.h +24 -0
- data/src/core/ext/filters/client_channel/client_channel_channelz.cc +2 -3
- data/src/core/ext/filters/client_channel/client_channel_factory.h +1 -5
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +18 -45
- data/src/core/ext/filters/client_channel/health/health_check_client.h +5 -13
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy.cc +2 -3
- data/src/core/ext/filters/client_channel/lb_policy.h +65 -55
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +14 -14
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +113 -36
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +14 -19
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +36 -13
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +3 -10
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.cc +814 -1589
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +2 -5
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +3 -6
- data/src/core/ext/filters/client_channel/resolver.cc +1 -2
- data/src/core/ext/filters/client_channel/resolver.h +8 -16
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +25 -8
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.cc +46 -12
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +10 -17
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +7 -8
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +4 -4
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +111 -44
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +22 -14
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc +2 -2
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +29 -10
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +27 -36
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +7 -10
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +60 -16
- data/src/core/ext/filters/client_channel/resolver_factory.h +4 -8
- data/src/core/ext/filters/client_channel/resolver_registry.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver_registry.h +1 -1
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +7 -10
- data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +7 -8
- data/src/core/ext/filters/client_channel/resolving_lb_policy.h +1 -1
- data/src/core/ext/filters/client_channel/retry_throttle.cc +5 -5
- data/src/core/ext/filters/client_channel/retry_throttle.h +1 -4
- data/src/core/ext/filters/client_channel/service_config.h +8 -8
- data/src/core/ext/filters/client_channel/subchannel.cc +53 -86
- data/src/core/ext/filters/client_channel/subchannel.h +7 -9
- data/src/core/ext/filters/client_channel/subchannel_interface.h +9 -13
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +3 -6
- data/src/core/ext/filters/client_channel/{lb_policy/xds/xds_load_balancer_api.cc → xds/xds_api.cc} +169 -52
- data/src/core/ext/filters/client_channel/xds/xds_api.h +171 -0
- data/src/core/ext/filters/client_channel/xds/xds_bootstrap.cc +450 -0
- data/src/core/ext/filters/client_channel/xds/xds_bootstrap.h +99 -0
- data/src/core/ext/filters/client_channel/{lb_policy/xds → xds}/xds_channel.h +8 -6
- data/src/core/ext/filters/client_channel/xds/xds_channel_args.h +26 -0
- data/src/core/ext/filters/client_channel/{lb_policy/xds → xds}/xds_channel_secure.cc +28 -11
- data/src/core/ext/filters/client_channel/xds/xds_client.cc +1413 -0
- data/src/core/ext/filters/client_channel/xds/xds_client.h +221 -0
- data/src/core/ext/filters/client_channel/{lb_policy/xds → xds}/xds_client_stats.cc +1 -5
- data/src/core/ext/filters/client_channel/{lb_policy/xds → xds}/xds_client_stats.h +3 -4
- data/src/core/ext/filters/deadline/deadline_filter.cc +20 -20
- data/src/core/ext/filters/http/client/http_client_filter.cc +15 -15
- data/src/core/ext/filters/http/client_authority_filter.cc +14 -14
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +12 -12
- data/src/core/ext/filters/max_age/max_age_filter.cc +59 -50
- data/src/core/ext/filters/message_size/message_size_filter.cc +18 -18
- data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +15 -14
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +233 -175
- data/src/core/ext/transport/chttp2/transport/flow_control.h +21 -24
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +253 -163
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +24 -12
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +2 -3
- data/src/core/ext/transport/chttp2/transport/internal.h +13 -15
- data/src/core/ext/transport/chttp2/transport/writing.cc +3 -0
- data/src/core/ext/transport/inproc/inproc_transport.cc +20 -13
- data/src/core/lib/channel/channel_args.cc +16 -0
- data/src/core/lib/channel/channel_args.h +22 -0
- data/src/core/lib/channel/channelz.cc +5 -6
- data/src/core/lib/channel/channelz.h +1 -1
- data/src/core/lib/channel/connected_channel.cc +20 -20
- data/src/core/lib/channel/handshaker.h +3 -4
- data/src/core/lib/channel/handshaker_factory.h +1 -3
- data/src/core/lib/debug/trace.h +3 -2
- data/src/core/lib/gprpp/arena.cc +3 -3
- data/src/core/lib/gprpp/arena.h +2 -3
- data/src/core/lib/gprpp/inlined_vector.h +9 -0
- data/src/core/lib/gprpp/map.h +3 -501
- data/src/core/lib/gprpp/memory.h +45 -41
- data/src/core/lib/gprpp/mpscq.cc +108 -0
- data/src/core/lib/gprpp/mpscq.h +98 -0
- data/src/core/lib/gprpp/orphanable.h +6 -11
- data/src/core/lib/gprpp/ref_counted.h +25 -19
- data/src/core/lib/gprpp/set.h +33 -0
- data/src/core/lib/gprpp/thd.h +2 -4
- data/src/core/lib/http/httpcli.cc +1 -1
- data/src/core/lib/http/httpcli_security_connector.cc +15 -11
- data/src/core/lib/http/parser.cc +1 -1
- data/src/core/lib/iomgr/buffer_list.cc +4 -5
- data/src/core/lib/iomgr/buffer_list.h +5 -6
- data/src/core/lib/iomgr/call_combiner.cc +4 -5
- data/src/core/lib/iomgr/call_combiner.h +2 -2
- data/src/core/lib/iomgr/cfstream_handle.h +3 -5
- data/src/core/lib/iomgr/closure.h +8 -3
- data/src/core/lib/iomgr/combiner.cc +45 -82
- data/src/core/lib/iomgr/combiner.h +32 -8
- data/src/core/lib/iomgr/endpoint_cfstream.cc +5 -3
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +19 -15
- data/src/core/lib/iomgr/ev_poll_posix.cc +3 -1
- data/src/core/lib/iomgr/exec_ctx.h +4 -3
- data/src/core/lib/iomgr/executor.cc +4 -2
- data/src/core/lib/iomgr/executor.h +3 -0
- data/src/core/lib/iomgr/executor/mpmcqueue.h +3 -6
- data/src/core/lib/iomgr/executor/threadpool.cc +1 -2
- data/src/core/lib/iomgr/executor/threadpool.h +7 -11
- data/src/core/lib/iomgr/resource_quota.cc +55 -51
- data/src/core/lib/iomgr/resource_quota.h +13 -9
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +13 -0
- data/src/core/lib/iomgr/socket_utils_posix.h +4 -0
- data/src/core/lib/iomgr/tcp_client_posix.cc +4 -11
- data/src/core/lib/iomgr/tcp_custom.cc +9 -7
- data/src/core/lib/iomgr/tcp_posix.cc +20 -16
- data/src/core/lib/iomgr/tcp_server.h +1 -4
- data/src/core/lib/iomgr/tcp_server_custom.cc +5 -5
- data/src/core/lib/iomgr/tcp_server_posix.cc +1 -1
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +2 -11
- data/src/core/lib/iomgr/timer_custom.cc +2 -2
- data/src/core/lib/iomgr/udp_server.cc +3 -2
- data/src/core/lib/iomgr/udp_server.h +6 -12
- data/src/core/lib/json/json.h +1 -1
- data/src/core/lib/json/json_string.cc +2 -2
- data/src/core/lib/profiling/basic_timers.cc +2 -2
- data/src/core/lib/security/credentials/alts/alts_credentials.cc +2 -2
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc +1 -1
- data/src/core/lib/security/credentials/credentials.h +4 -20
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +4 -4
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +1 -3
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +64 -0
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +4 -4
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +9 -7
- data/src/core/lib/security/security_connector/load_system_roots_linux.cc +2 -0
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +4 -4
- data/src/core/lib/security/security_connector/security_connector.cc +1 -0
- data/src/core/lib/security/security_connector/security_connector.h +19 -17
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +8 -5
- data/src/core/lib/security/security_connector/ssl_utils.cc +2 -2
- data/src/core/lib/security/security_connector/ssl_utils.h +1 -1
- data/src/core/lib/security/security_connector/tls/spiffe_security_connector.cc +14 -6
- data/src/core/lib/security/security_connector/tls/spiffe_security_connector.h +4 -2
- data/src/core/lib/security/transport/client_auth_filter.cc +17 -17
- data/src/core/lib/security/transport/security_handshaker.cc +29 -13
- data/src/core/lib/security/transport/security_handshaker.h +4 -2
- data/src/core/lib/security/transport/server_auth_filter.cc +14 -14
- data/src/core/lib/slice/slice.cc +2 -10
- data/src/core/lib/slice/slice_hash_table.h +4 -6
- data/src/core/lib/slice/slice_intern.cc +42 -39
- data/src/core/lib/slice/slice_internal.h +3 -3
- data/src/core/lib/slice/slice_utils.h +21 -4
- data/src/core/lib/slice/slice_weak_hash_table.h +4 -6
- data/src/core/lib/surface/call.cc +3 -3
- data/src/core/lib/surface/channel.cc +7 -0
- data/src/core/lib/surface/completion_queue.cc +12 -11
- data/src/core/lib/surface/completion_queue.h +4 -2
- data/src/core/lib/surface/init.cc +1 -0
- data/src/core/lib/surface/lame_client.cc +33 -18
- data/src/core/lib/surface/server.cc +77 -76
- data/src/core/lib/surface/version.cc +1 -1
- data/src/core/lib/transport/byte_stream.h +3 -7
- data/src/core/lib/transport/connectivity_state.cc +112 -98
- data/src/core/lib/transport/connectivity_state.h +100 -50
- data/src/core/lib/transport/static_metadata.cc +276 -288
- data/src/core/lib/transport/static_metadata.h +73 -76
- data/src/core/lib/transport/status_conversion.cc +1 -1
- data/src/core/lib/transport/status_metadata.cc +1 -1
- data/src/core/lib/transport/transport.cc +2 -2
- data/src/core/lib/transport/transport.h +12 -4
- data/src/core/lib/transport/transport_op_string.cc +14 -11
- data/src/core/tsi/alts/frame_protector/alts_unseal_privacy_integrity_crypter.cc +1 -1
- data/src/core/tsi/alts/handshaker/alts_shared_resource.cc +1 -1
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +5 -5
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +12 -2
- data/src/core/tsi/fake_transport_security.cc +7 -5
- data/src/core/tsi/grpc_shadow_boringssl.h +2918 -2627
- data/src/core/tsi/local_transport_security.cc +8 -6
- data/src/core/tsi/ssl/session_cache/ssl_session.h +1 -3
- data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +1 -2
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +7 -5
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +4 -6
- data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +1 -2
- data/src/core/tsi/ssl_transport_security.cc +12 -12
- data/src/core/tsi/ssl_transport_security.h +2 -2
- data/src/core/tsi/transport_security_grpc.cc +7 -0
- data/src/core/tsi/transport_security_grpc.h +6 -0
- data/src/ruby/ext/grpc/extconf.rb +1 -0
- data/src/ruby/ext/grpc/rb_call.c +1 -1
- data/src/ruby/ext/grpc/rb_channel.c +1 -1
- data/src/ruby/lib/grpc/generic/bidi_call.rb +1 -1
- data/src/ruby/lib/grpc/generic/rpc_server.rb +1 -1
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/spec/google_rpc_status_utils_spec.rb +2 -2
- data/third_party/boringssl/crypto/asn1/a_bool.c +18 -5
- data/third_party/boringssl/crypto/asn1/a_d2i_fp.c +17 -221
- data/third_party/boringssl/crypto/asn1/a_dup.c +0 -24
- data/third_party/boringssl/crypto/asn1/a_enum.c +2 -2
- data/third_party/boringssl/crypto/asn1/a_i2d_fp.c +10 -72
- data/third_party/boringssl/crypto/asn1/a_int.c +12 -71
- data/third_party/boringssl/crypto/asn1/a_mbstr.c +110 -216
- data/third_party/boringssl/crypto/asn1/a_object.c +16 -5
- data/third_party/boringssl/crypto/asn1/a_strnid.c +1 -0
- data/third_party/boringssl/crypto/asn1/asn1_lib.c +5 -1
- data/third_party/boringssl/crypto/asn1/tasn_enc.c +3 -1
- data/third_party/boringssl/crypto/base64/base64.c +2 -2
- data/third_party/boringssl/crypto/bio/bio.c +73 -9
- data/third_party/boringssl/crypto/bio/connect.c +4 -0
- data/third_party/boringssl/crypto/bio/fd.c +4 -0
- data/third_party/boringssl/crypto/bio/file.c +5 -2
- data/third_party/boringssl/crypto/bio/socket.c +4 -0
- data/third_party/boringssl/crypto/bio/socket_helper.c +4 -0
- data/third_party/boringssl/crypto/bn_extra/convert.c +11 -7
- data/third_party/boringssl/crypto/bytestring/ber.c +8 -4
- data/third_party/boringssl/crypto/bytestring/cbb.c +19 -7
- data/third_party/boringssl/crypto/bytestring/cbs.c +28 -15
- data/third_party/boringssl/crypto/bytestring/internal.h +28 -7
- data/third_party/boringssl/crypto/bytestring/unicode.c +155 -0
- data/third_party/boringssl/crypto/chacha/chacha.c +36 -19
- data/third_party/boringssl/crypto/chacha/internal.h +45 -0
- data/third_party/boringssl/crypto/cipher_extra/cipher_extra.c +29 -0
- data/third_party/boringssl/crypto/cipher_extra/e_aesccm.c +269 -25
- data/third_party/boringssl/crypto/cipher_extra/e_aesctrhmac.c +16 -14
- data/third_party/boringssl/crypto/cipher_extra/e_aesgcmsiv.c +54 -38
- data/third_party/boringssl/crypto/cipher_extra/e_chacha20poly1305.c +133 -41
- data/third_party/boringssl/crypto/cipher_extra/e_tls.c +23 -15
- data/third_party/boringssl/crypto/cipher_extra/tls_cbc.c +24 -15
- data/third_party/boringssl/crypto/cmac/cmac.c +62 -25
- data/third_party/boringssl/crypto/conf/conf.c +7 -0
- data/third_party/boringssl/crypto/cpu-arm-linux.c +4 -148
- data/third_party/boringssl/crypto/cpu-arm-linux.h +201 -0
- data/third_party/boringssl/crypto/cpu-intel.c +45 -51
- data/third_party/boringssl/crypto/crypto.c +39 -22
- data/third_party/boringssl/crypto/curve25519/spake25519.c +1 -1
- data/third_party/boringssl/crypto/dsa/dsa.c +77 -53
- data/third_party/boringssl/crypto/ec_extra/ec_asn1.c +20 -8
- data/third_party/boringssl/crypto/ec_extra/ec_derive.c +96 -0
- data/third_party/boringssl/crypto/{ecdh/ecdh.c → ecdh_extra/ecdh_extra.c} +20 -58
- data/third_party/boringssl/crypto/ecdsa_extra/ecdsa_asn1.c +1 -9
- data/third_party/boringssl/crypto/engine/engine.c +2 -1
- data/third_party/boringssl/crypto/err/err.c +2 -0
- data/third_party/boringssl/crypto/err/internal.h +2 -2
- data/third_party/boringssl/crypto/evp/evp.c +89 -8
- data/third_party/boringssl/crypto/evp/evp_asn1.c +56 -5
- data/third_party/boringssl/crypto/evp/evp_ctx.c +52 -14
- data/third_party/boringssl/crypto/evp/internal.h +18 -1
- data/third_party/boringssl/crypto/evp/p_dsa_asn1.c +5 -0
- data/third_party/boringssl/crypto/evp/p_ec.c +51 -3
- data/third_party/boringssl/crypto/evp/p_ec_asn1.c +6 -7
- data/third_party/boringssl/crypto/evp/p_ed25519.c +36 -3
- data/third_party/boringssl/crypto/evp/p_ed25519_asn1.c +76 -45
- data/third_party/boringssl/crypto/evp/p_rsa.c +3 -1
- data/third_party/boringssl/crypto/evp/p_rsa_asn1.c +5 -0
- data/third_party/boringssl/crypto/evp/p_x25519.c +110 -0
- data/third_party/boringssl/crypto/evp/p_x25519_asn1.c +249 -0
- data/third_party/boringssl/crypto/evp/scrypt.c +6 -2
- data/third_party/boringssl/crypto/fipsmodule/aes/aes.c +34 -274
- data/third_party/boringssl/crypto/fipsmodule/aes/internal.h +161 -21
- data/third_party/boringssl/crypto/fipsmodule/aes/key_wrap.c +111 -13
- data/third_party/boringssl/crypto/fipsmodule/aes/mode_wrappers.c +17 -21
- data/third_party/boringssl/crypto/fipsmodule/bcm.c +119 -7
- data/third_party/boringssl/crypto/fipsmodule/bn/bn.c +19 -2
- data/third_party/boringssl/crypto/fipsmodule/bn/cmp.c +2 -2
- data/third_party/boringssl/crypto/fipsmodule/bn/ctx.c +93 -160
- data/third_party/boringssl/crypto/fipsmodule/bn/div.c +48 -57
- data/third_party/boringssl/crypto/fipsmodule/bn/div_extra.c +87 -0
- data/third_party/boringssl/crypto/fipsmodule/bn/exponentiation.c +143 -211
- data/third_party/boringssl/crypto/fipsmodule/bn/gcd.c +0 -305
- data/third_party/boringssl/crypto/fipsmodule/bn/gcd_extra.c +325 -0
- data/third_party/boringssl/crypto/fipsmodule/bn/internal.h +168 -50
- data/third_party/boringssl/crypto/fipsmodule/bn/montgomery.c +68 -92
- data/third_party/boringssl/crypto/fipsmodule/bn/montgomery_inv.c +7 -6
- data/third_party/boringssl/crypto/fipsmodule/bn/mul.c +11 -14
- data/third_party/boringssl/crypto/fipsmodule/bn/prime.c +358 -443
- data/third_party/boringssl/crypto/fipsmodule/bn/random.c +25 -35
- data/third_party/boringssl/crypto/fipsmodule/bn/rsaz_exp.c +20 -25
- data/third_party/boringssl/crypto/fipsmodule/bn/rsaz_exp.h +76 -5
- data/third_party/boringssl/crypto/fipsmodule/bn/shift.c +14 -14
- data/third_party/boringssl/crypto/fipsmodule/cipher/cipher.c +7 -2
- data/third_party/boringssl/crypto/fipsmodule/cipher/e_aes.c +383 -516
- data/third_party/boringssl/crypto/fipsmodule/cipher/e_des.c +4 -0
- data/third_party/boringssl/crypto/fipsmodule/cipher/internal.h +3 -4
- data/third_party/boringssl/crypto/fipsmodule/delocate.h +3 -2
- data/third_party/boringssl/crypto/fipsmodule/digest/digest.c +32 -17
- data/third_party/boringssl/crypto/fipsmodule/digest/md32_common.h +3 -3
- data/third_party/boringssl/crypto/fipsmodule/ec/ec.c +228 -122
- data/third_party/boringssl/crypto/fipsmodule/ec/ec_key.c +34 -8
- data/third_party/boringssl/crypto/fipsmodule/ec/ec_montgomery.c +311 -98
- data/third_party/boringssl/crypto/fipsmodule/ec/felem.c +82 -0
- data/third_party/boringssl/crypto/fipsmodule/ec/internal.h +263 -97
- data/third_party/boringssl/crypto/fipsmodule/ec/oct.c +22 -59
- data/third_party/boringssl/crypto/fipsmodule/ec/p224-64.c +317 -234
- data/third_party/boringssl/crypto/fipsmodule/ec/p256-x86_64-table.h +9473 -9475
- data/third_party/boringssl/crypto/fipsmodule/ec/p256-x86_64.c +313 -109
- data/third_party/boringssl/crypto/fipsmodule/ec/p256-x86_64.h +36 -0
- data/third_party/boringssl/crypto/fipsmodule/ec/scalar.c +96 -0
- data/third_party/boringssl/crypto/fipsmodule/ec/simple.c +126 -792
- data/third_party/boringssl/crypto/fipsmodule/ec/simple_mul.c +84 -0
- data/third_party/boringssl/crypto/fipsmodule/ec/util.c +163 -12
- data/third_party/boringssl/crypto/fipsmodule/ec/wnaf.c +84 -211
- data/third_party/boringssl/crypto/fipsmodule/ecdh/ecdh.c +122 -0
- data/third_party/boringssl/crypto/fipsmodule/ecdsa/ecdsa.c +60 -205
- data/third_party/boringssl/crypto/fipsmodule/fips_shared_support.c +32 -0
- data/third_party/boringssl/crypto/fipsmodule/is_fips.c +2 -0
- data/third_party/boringssl/crypto/fipsmodule/md4/md4.c +3 -1
- data/third_party/boringssl/crypto/fipsmodule/md5/internal.h +37 -0
- data/third_party/boringssl/crypto/fipsmodule/md5/md5.c +11 -8
- data/third_party/boringssl/crypto/fipsmodule/modes/cbc.c +35 -79
- data/third_party/boringssl/crypto/fipsmodule/modes/cfb.c +7 -39
- data/third_party/boringssl/crypto/fipsmodule/modes/ctr.c +7 -27
- data/third_party/boringssl/crypto/fipsmodule/modes/gcm.c +123 -309
- data/third_party/boringssl/crypto/fipsmodule/modes/internal.h +189 -126
- data/third_party/boringssl/crypto/fipsmodule/modes/ofb.c +3 -2
- data/third_party/boringssl/crypto/fipsmodule/rand/ctrdrbg.c +2 -2
- data/third_party/boringssl/crypto/fipsmodule/rand/internal.h +35 -0
- data/third_party/boringssl/crypto/fipsmodule/rand/rand.c +24 -19
- data/third_party/boringssl/crypto/fipsmodule/rand/urandom.c +256 -77
- data/third_party/boringssl/crypto/fipsmodule/rsa/padding.c +10 -7
- data/third_party/boringssl/crypto/fipsmodule/rsa/rsa.c +5 -1
- data/third_party/boringssl/crypto/fipsmodule/rsa/rsa_impl.c +131 -14
- data/third_party/boringssl/crypto/fipsmodule/self_check/self_check.c +83 -10
- data/third_party/boringssl/crypto/fipsmodule/sha/internal.h +53 -0
- data/third_party/boringssl/crypto/fipsmodule/sha/sha1.c +9 -13
- data/third_party/boringssl/crypto/fipsmodule/sha/sha256.c +18 -12
- data/third_party/boringssl/crypto/fipsmodule/sha/sha512.c +95 -168
- data/third_party/boringssl/crypto/hrss/hrss.c +2201 -0
- data/third_party/boringssl/crypto/hrss/internal.h +62 -0
- data/third_party/boringssl/crypto/internal.h +95 -20
- data/third_party/boringssl/crypto/lhash/lhash.c +45 -33
- data/third_party/boringssl/crypto/mem.c +39 -2
- data/third_party/boringssl/crypto/obj/obj.c +4 -4
- data/third_party/boringssl/crypto/obj/obj_dat.h +6181 -875
- data/third_party/boringssl/crypto/pem/pem_all.c +2 -3
- data/third_party/boringssl/crypto/pem/pem_info.c +144 -162
- data/third_party/boringssl/crypto/pem/pem_lib.c +53 -52
- data/third_party/boringssl/crypto/pem/pem_pkey.c +13 -21
- data/third_party/boringssl/crypto/pkcs7/pkcs7.c +15 -22
- data/third_party/boringssl/crypto/pkcs7/pkcs7_x509.c +168 -16
- data/third_party/boringssl/crypto/pkcs8/internal.h +11 -0
- data/third_party/boringssl/crypto/pkcs8/p5_pbev2.c +24 -15
- data/third_party/boringssl/crypto/pkcs8/pkcs8.c +42 -25
- data/third_party/boringssl/crypto/pkcs8/pkcs8_x509.c +559 -43
- data/third_party/boringssl/crypto/pool/internal.h +1 -1
- data/third_party/boringssl/crypto/pool/pool.c +21 -0
- data/third_party/boringssl/crypto/rand_extra/deterministic.c +8 -0
- data/third_party/boringssl/crypto/rand_extra/fuchsia.c +1 -14
- data/third_party/boringssl/crypto/refcount_lock.c +2 -2
- data/third_party/boringssl/crypto/rsa_extra/rsa_print.c +22 -0
- data/third_party/boringssl/crypto/siphash/siphash.c +80 -0
- data/third_party/boringssl/crypto/stack/stack.c +83 -32
- data/third_party/boringssl/crypto/thread_none.c +2 -2
- data/third_party/boringssl/crypto/thread_pthread.c +2 -2
- data/third_party/boringssl/crypto/thread_win.c +38 -19
- data/third_party/boringssl/crypto/x509/a_strex.c +22 -2
- data/third_party/boringssl/crypto/x509/asn1_gen.c +2 -1
- data/third_party/boringssl/crypto/x509/by_dir.c +7 -0
- data/third_party/boringssl/crypto/x509/by_file.c +12 -10
- data/third_party/boringssl/crypto/x509/t_crl.c +5 -8
- data/third_party/boringssl/crypto/x509/t_req.c +1 -3
- data/third_party/boringssl/crypto/x509/t_x509.c +5 -8
- data/third_party/boringssl/crypto/x509/x509_cmp.c +1 -1
- data/third_party/boringssl/crypto/x509/x509_def.c +1 -1
- data/third_party/boringssl/crypto/x509/x509_lu.c +114 -5
- data/third_party/boringssl/crypto/x509/x509_req.c +20 -0
- data/third_party/boringssl/crypto/x509/x509_set.c +5 -0
- data/third_party/boringssl/crypto/x509/x509_trs.c +1 -0
- data/third_party/boringssl/crypto/x509/x509_txt.c +4 -5
- data/third_party/boringssl/crypto/x509/x509_vfy.c +145 -138
- data/third_party/boringssl/crypto/x509/x509_vpm.c +2 -0
- data/third_party/boringssl/crypto/x509/x509cset.c +40 -0
- data/third_party/boringssl/crypto/x509/x509name.c +2 -3
- data/third_party/boringssl/crypto/x509/x_all.c +109 -210
- data/third_party/boringssl/crypto/x509/x_x509.c +6 -0
- data/third_party/boringssl/crypto/x509v3/ext_dat.h +1 -3
- data/third_party/boringssl/crypto/x509v3/internal.h +56 -0
- data/third_party/boringssl/crypto/x509v3/pcy_cache.c +2 -0
- data/third_party/boringssl/crypto/x509v3/pcy_node.c +1 -0
- data/third_party/boringssl/crypto/x509v3/pcy_tree.c +4 -2
- data/third_party/boringssl/crypto/x509v3/v3_akey.c +5 -2
- data/third_party/boringssl/crypto/x509v3/v3_alt.c +19 -13
- data/third_party/boringssl/crypto/x509v3/v3_conf.c +2 -1
- data/third_party/boringssl/crypto/x509v3/v3_cpols.c +3 -2
- data/third_party/boringssl/crypto/x509v3/v3_genn.c +1 -6
- data/third_party/boringssl/crypto/x509v3/v3_lib.c +1 -0
- data/third_party/boringssl/crypto/x509v3/v3_ocsp.c +68 -0
- data/third_party/boringssl/crypto/x509v3/v3_pci.c +2 -1
- data/third_party/boringssl/crypto/x509v3/v3_purp.c +47 -69
- data/third_party/boringssl/crypto/x509v3/v3_skey.c +5 -2
- data/third_party/boringssl/crypto/x509v3/v3_utl.c +69 -25
- data/third_party/boringssl/include/openssl/aead.h +45 -19
- data/third_party/boringssl/include/openssl/aes.h +32 -7
- data/third_party/boringssl/include/openssl/asn1.h +7 -77
- data/third_party/boringssl/include/openssl/base.h +120 -6
- data/third_party/boringssl/include/openssl/base64.h +4 -1
- data/third_party/boringssl/include/openssl/bio.h +112 -81
- data/third_party/boringssl/include/openssl/blowfish.h +3 -3
- data/third_party/boringssl/include/openssl/bn.h +55 -29
- data/third_party/boringssl/include/openssl/buf.h +2 -2
- data/third_party/boringssl/include/openssl/bytestring.h +54 -32
- data/third_party/boringssl/include/openssl/cast.h +2 -2
- data/third_party/boringssl/include/openssl/cipher.h +46 -16
- data/third_party/boringssl/include/openssl/cmac.h +6 -2
- data/third_party/boringssl/include/openssl/conf.h +3 -6
- data/third_party/boringssl/include/openssl/cpu.h +25 -9
- data/third_party/boringssl/include/openssl/crypto.h +32 -10
- data/third_party/boringssl/include/openssl/curve25519.h +4 -4
- data/third_party/boringssl/include/openssl/dh.h +3 -2
- data/third_party/boringssl/include/openssl/digest.h +21 -7
- data/third_party/boringssl/include/openssl/dsa.h +8 -2
- data/third_party/boringssl/include/openssl/e_os2.h +18 -0
- data/third_party/boringssl/include/openssl/ec.h +25 -21
- data/third_party/boringssl/include/openssl/ec_key.h +36 -8
- data/third_party/boringssl/include/openssl/ecdh.h +17 -0
- data/third_party/boringssl/include/openssl/ecdsa.h +3 -3
- data/third_party/boringssl/include/openssl/engine.h +4 -4
- data/third_party/boringssl/include/openssl/err.h +3 -0
- data/third_party/boringssl/include/openssl/evp.h +199 -42
- data/third_party/boringssl/include/openssl/hmac.h +4 -4
- data/third_party/boringssl/include/openssl/hrss.h +100 -0
- data/third_party/boringssl/include/openssl/lhash.h +131 -23
- data/third_party/boringssl/include/openssl/md4.h +6 -4
- data/third_party/boringssl/include/openssl/md5.h +6 -4
- data/third_party/boringssl/include/openssl/mem.h +6 -2
- data/third_party/boringssl/include/openssl/nid.h +3 -0
- data/third_party/boringssl/include/openssl/obj.h +3 -0
- data/third_party/boringssl/include/openssl/pem.h +102 -64
- data/third_party/boringssl/include/openssl/pkcs7.h +136 -3
- data/third_party/boringssl/include/openssl/pkcs8.h +42 -3
- data/third_party/boringssl/include/openssl/pool.h +13 -2
- data/third_party/boringssl/include/openssl/ripemd.h +5 -4
- data/third_party/boringssl/include/openssl/rsa.h +46 -15
- data/third_party/boringssl/include/openssl/sha.h +40 -28
- data/third_party/boringssl/include/openssl/siphash.h +37 -0
- data/third_party/boringssl/include/openssl/span.h +17 -9
- data/third_party/boringssl/include/openssl/ssl.h +766 -393
- data/third_party/boringssl/include/openssl/ssl3.h +4 -3
- data/third_party/boringssl/include/openssl/stack.h +134 -77
- data/third_party/boringssl/include/openssl/thread.h +1 -1
- data/third_party/boringssl/include/openssl/tls1.h +25 -9
- data/third_party/boringssl/include/openssl/type_check.h +14 -15
- data/third_party/boringssl/include/openssl/x509.h +28 -3
- data/third_party/boringssl/include/openssl/x509_vfy.h +98 -32
- data/third_party/boringssl/include/openssl/x509v3.h +17 -13
- data/third_party/boringssl/ssl/d1_both.cc +9 -18
- data/third_party/boringssl/ssl/d1_lib.cc +4 -3
- data/third_party/boringssl/ssl/d1_pkt.cc +4 -4
- data/third_party/boringssl/ssl/d1_srtp.cc +15 -15
- data/third_party/boringssl/ssl/dtls_method.cc +0 -1
- data/third_party/boringssl/ssl/dtls_record.cc +28 -28
- data/third_party/boringssl/ssl/handoff.cc +295 -91
- data/third_party/boringssl/ssl/handshake.cc +133 -72
- data/third_party/boringssl/ssl/handshake_client.cc +218 -189
- data/third_party/boringssl/ssl/handshake_server.cc +399 -272
- data/third_party/boringssl/ssl/internal.h +1413 -928
- data/third_party/boringssl/ssl/s3_both.cc +175 -36
- data/third_party/boringssl/ssl/s3_lib.cc +9 -13
- data/third_party/boringssl/ssl/s3_pkt.cc +63 -29
- data/third_party/boringssl/ssl/ssl_aead_ctx.cc +55 -35
- data/third_party/boringssl/ssl/ssl_asn1.cc +57 -73
- data/third_party/boringssl/ssl/ssl_buffer.cc +13 -12
- data/third_party/boringssl/ssl/ssl_cert.cc +313 -210
- data/third_party/boringssl/ssl/ssl_cipher.cc +159 -221
- data/third_party/boringssl/ssl/ssl_file.cc +2 -0
- data/third_party/boringssl/ssl/ssl_key_share.cc +164 -19
- data/third_party/boringssl/ssl/ssl_lib.cc +847 -555
- data/third_party/boringssl/ssl/ssl_privkey.cc +441 -111
- data/third_party/boringssl/ssl/ssl_session.cc +230 -178
- data/third_party/boringssl/ssl/ssl_transcript.cc +21 -142
- data/third_party/boringssl/ssl/ssl_versions.cc +88 -93
- data/third_party/boringssl/ssl/ssl_x509.cc +279 -218
- data/third_party/boringssl/ssl/t1_enc.cc +5 -96
- data/third_party/boringssl/ssl/t1_lib.cc +931 -678
- data/third_party/boringssl/ssl/tls13_both.cc +251 -121
- data/third_party/boringssl/ssl/tls13_client.cc +129 -73
- data/third_party/boringssl/ssl/tls13_enc.cc +350 -282
- data/third_party/boringssl/ssl/tls13_server.cc +259 -192
- data/third_party/boringssl/ssl/tls_method.cc +26 -21
- data/third_party/boringssl/ssl/tls_record.cc +42 -47
- data/third_party/boringssl/third_party/fiat/curve25519.c +261 -1324
- data/third_party/boringssl/third_party/fiat/curve25519_32.h +911 -0
- data/third_party/boringssl/third_party/fiat/curve25519_64.h +559 -0
- data/third_party/boringssl/third_party/fiat/p256.c +238 -999
- data/third_party/boringssl/third_party/fiat/p256_32.h +3226 -0
- data/third_party/boringssl/third_party/fiat/p256_64.h +1217 -0
- data/third_party/upb/upb/port_def.inc +1 -1
- data/third_party/upb/upb/table.c +2 -1
- metadata +72 -44
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_load_balancer_api.h +0 -127
- data/src/core/lib/gpr/mpscq.cc +0 -117
- data/src/core/lib/gpr/mpscq.h +0 -88
- data/src/core/lib/gprpp/abstract.h +0 -47
- data/src/core/lib/gprpp/pair.h +0 -38
- data/third_party/boringssl/crypto/cipher_extra/e_ssl3.c +0 -460
- data/third_party/boringssl/crypto/fipsmodule/modes/ccm.c +0 -256
- data/third_party/boringssl/include/openssl/lhash_macros.h +0 -174
- data/third_party/boringssl/ssl/custom_extensions.cc +0 -265
@@ -46,11 +46,35 @@ grpc_connectivity_state grpc_client_channel_check_connectivity_state(
|
|
46
46
|
int grpc_client_channel_num_external_connectivity_watchers(
|
47
47
|
grpc_channel_element* elem);
|
48
48
|
|
49
|
+
// Starts a one-time connectivity state watch. When the channel's state
|
50
|
+
// becomes different from *state, sets *state to the new state and
|
51
|
+
// schedules on_complete. The watcher_timer_init callback is invoked as
|
52
|
+
// soon as the watch is actually started (i.e., after hopping into the
|
53
|
+
// client channel combiner). I/O will be serviced via pollent.
|
54
|
+
//
|
55
|
+
// This is intended to be used when starting a watch from outside of C-core
|
56
|
+
// via grpc_channel_watch_connectivity_state(). It should not be used
|
57
|
+
// by other callers.
|
49
58
|
void grpc_client_channel_watch_connectivity_state(
|
50
59
|
grpc_channel_element* elem, grpc_polling_entity pollent,
|
51
60
|
grpc_connectivity_state* state, grpc_closure* on_complete,
|
52
61
|
grpc_closure* watcher_timer_init);
|
53
62
|
|
63
|
+
// Starts and stops a connectivity watch. The watcher will be initially
|
64
|
+
// notified as soon as the state changes from initial_state and then on
|
65
|
+
// every subsequent state change until either the watch is stopped or
|
66
|
+
// it is notified that the state has changed to SHUTDOWN.
|
67
|
+
//
|
68
|
+
// This is intended to be used when starting watches from code inside of
|
69
|
+
// C-core (e.g., for a nested control plane channel for things like xds).
|
70
|
+
void grpc_client_channel_start_connectivity_watch(
|
71
|
+
grpc_channel_element* elem, grpc_connectivity_state initial_state,
|
72
|
+
grpc_core::OrphanablePtr<grpc_core::AsyncConnectivityStateWatcherInterface>
|
73
|
+
watcher);
|
74
|
+
void grpc_client_channel_stop_connectivity_watch(
|
75
|
+
grpc_channel_element* elem,
|
76
|
+
grpc_core::AsyncConnectivityStateWatcherInterface* watcher);
|
77
|
+
|
54
78
|
/* Debug helper: pull the subchannel call from a call stack element */
|
55
79
|
grpc_core::RefCountedPtr<grpc_core::SubchannelCall>
|
56
80
|
grpc_client_channel_get_subchannel_call(grpc_call_element* elem);
|
@@ -53,9 +53,8 @@ void SubchannelNode::PopulateConnectivityState(grpc_json* json) {
|
|
53
53
|
connectivity_state_.Load(MemoryOrder::RELAXED);
|
54
54
|
json = grpc_json_create_child(nullptr, json, "state", nullptr,
|
55
55
|
GRPC_JSON_OBJECT, false);
|
56
|
-
grpc_json_create_child(nullptr, json, "state",
|
57
|
-
|
58
|
-
false);
|
56
|
+
grpc_json_create_child(nullptr, json, "state", ConnectivityStateName(state),
|
57
|
+
GRPC_JSON_STRING, false);
|
59
58
|
}
|
60
59
|
|
61
60
|
grpc_json* SubchannelNode::RenderJson() {
|
@@ -24,7 +24,6 @@
|
|
24
24
|
#include <grpc/impl/codegen/grpc_types.h>
|
25
25
|
|
26
26
|
#include "src/core/ext/filters/client_channel/subchannel.h"
|
27
|
-
#include "src/core/lib/gprpp/abstract.h"
|
28
27
|
|
29
28
|
namespace grpc_core {
|
30
29
|
|
@@ -33,8 +32,7 @@ class ClientChannelFactory {
|
|
33
32
|
virtual ~ClientChannelFactory() = default;
|
34
33
|
|
35
34
|
// Creates a subchannel with the specified args.
|
36
|
-
virtual Subchannel* CreateSubchannel(const grpc_channel_args* args)
|
37
|
-
GRPC_ABSTRACT;
|
35
|
+
virtual Subchannel* CreateSubchannel(const grpc_channel_args* args) = 0;
|
38
36
|
|
39
37
|
// Returns a channel arg containing the specified factory.
|
40
38
|
static grpc_arg CreateChannelArg(ClientChannelFactory* factory);
|
@@ -42,8 +40,6 @@ class ClientChannelFactory {
|
|
42
40
|
// Returns the factory from args, or null if not found.
|
43
41
|
static ClientChannelFactory* GetFromChannelArgs(
|
44
42
|
const grpc_channel_args* args);
|
45
|
-
|
46
|
-
GRPC_ABSTRACT_BASE_CLASS
|
47
43
|
};
|
48
44
|
|
49
45
|
} // namespace grpc_core
|
@@ -47,12 +47,14 @@ HealthCheckClient::HealthCheckClient(
|
|
47
47
|
const char* service_name,
|
48
48
|
RefCountedPtr<ConnectedSubchannel> connected_subchannel,
|
49
49
|
grpc_pollset_set* interested_parties,
|
50
|
-
RefCountedPtr<channelz::SubchannelNode> channelz_node
|
50
|
+
RefCountedPtr<channelz::SubchannelNode> channelz_node,
|
51
|
+
RefCountedPtr<ConnectivityStateWatcherInterface> watcher)
|
51
52
|
: InternallyRefCounted<HealthCheckClient>(&grpc_health_check_client_trace),
|
52
53
|
service_name_(service_name),
|
53
54
|
connected_subchannel_(std::move(connected_subchannel)),
|
54
55
|
interested_parties_(interested_parties),
|
55
56
|
channelz_node_(std::move(channelz_node)),
|
57
|
+
watcher_(std::move(watcher)),
|
56
58
|
retry_backoff_(
|
57
59
|
BackOff::Options()
|
58
60
|
.set_initial_backoff(
|
@@ -73,43 +75,21 @@ HealthCheckClient::~HealthCheckClient() {
|
|
73
75
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_health_check_client_trace)) {
|
74
76
|
gpr_log(GPR_INFO, "destroying HealthCheckClient %p", this);
|
75
77
|
}
|
76
|
-
GRPC_ERROR_UNREF(error_);
|
77
|
-
}
|
78
|
-
|
79
|
-
void HealthCheckClient::NotifyOnHealthChange(grpc_connectivity_state* state,
|
80
|
-
grpc_closure* closure) {
|
81
|
-
MutexLock lock(&mu_);
|
82
|
-
GPR_ASSERT(notify_state_ == nullptr);
|
83
|
-
if (*state != state_) {
|
84
|
-
*state = state_;
|
85
|
-
GRPC_CLOSURE_SCHED(closure, GRPC_ERROR_REF(error_));
|
86
|
-
return;
|
87
|
-
}
|
88
|
-
notify_state_ = state;
|
89
|
-
on_health_changed_ = closure;
|
90
78
|
}
|
91
79
|
|
92
80
|
void HealthCheckClient::SetHealthStatus(grpc_connectivity_state state,
|
93
|
-
|
81
|
+
const char* reason) {
|
94
82
|
MutexLock lock(&mu_);
|
95
|
-
SetHealthStatusLocked(state,
|
83
|
+
SetHealthStatusLocked(state, reason);
|
96
84
|
}
|
97
85
|
|
98
86
|
void HealthCheckClient::SetHealthStatusLocked(grpc_connectivity_state state,
|
99
|
-
|
87
|
+
const char* reason) {
|
100
88
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_health_check_client_trace)) {
|
101
|
-
gpr_log(GPR_INFO, "HealthCheckClient %p: setting state=%
|
102
|
-
state,
|
103
|
-
}
|
104
|
-
if (notify_state_ != nullptr && *notify_state_ != state) {
|
105
|
-
*notify_state_ = state;
|
106
|
-
notify_state_ = nullptr;
|
107
|
-
GRPC_CLOSURE_SCHED(on_health_changed_, GRPC_ERROR_REF(error));
|
108
|
-
on_health_changed_ = nullptr;
|
89
|
+
gpr_log(GPR_INFO, "HealthCheckClient %p: setting state=%s reason=%s", this,
|
90
|
+
ConnectivityStateName(state), reason);
|
109
91
|
}
|
110
|
-
|
111
|
-
GRPC_ERROR_UNREF(error_);
|
112
|
-
error_ = error;
|
92
|
+
if (watcher_ != nullptr) watcher_->Notify(state);
|
113
93
|
}
|
114
94
|
|
115
95
|
void HealthCheckClient::Orphan() {
|
@@ -118,13 +98,8 @@ void HealthCheckClient::Orphan() {
|
|
118
98
|
}
|
119
99
|
{
|
120
100
|
MutexLock lock(&mu_);
|
121
|
-
if (on_health_changed_ != nullptr) {
|
122
|
-
*notify_state_ = GRPC_CHANNEL_SHUTDOWN;
|
123
|
-
notify_state_ = nullptr;
|
124
|
-
GRPC_CLOSURE_SCHED(on_health_changed_, GRPC_ERROR_NONE);
|
125
|
-
on_health_changed_ = nullptr;
|
126
|
-
}
|
127
101
|
shutting_down_ = true;
|
102
|
+
watcher_.reset();
|
128
103
|
call_state_.reset();
|
129
104
|
if (retry_timer_callback_pending_) {
|
130
105
|
grpc_timer_cancel(&retry_timer_);
|
@@ -141,7 +116,7 @@ void HealthCheckClient::StartCall() {
|
|
141
116
|
void HealthCheckClient::StartCallLocked() {
|
142
117
|
if (shutting_down_) return;
|
143
118
|
GPR_ASSERT(call_state_ == nullptr);
|
144
|
-
SetHealthStatusLocked(GRPC_CHANNEL_CONNECTING,
|
119
|
+
SetHealthStatusLocked(GRPC_CHANNEL_CONNECTING, "starting health watch");
|
145
120
|
call_state_ = MakeOrphanable<CallState>(Ref(), interested_parties_);
|
146
121
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_health_check_client_trace)) {
|
147
122
|
gpr_log(GPR_INFO, "HealthCheckClient %p: created CallState %p", this,
|
@@ -152,10 +127,8 @@ void HealthCheckClient::StartCallLocked() {
|
|
152
127
|
|
153
128
|
void HealthCheckClient::StartRetryTimer() {
|
154
129
|
MutexLock lock(&mu_);
|
155
|
-
SetHealthStatusLocked(
|
156
|
-
|
157
|
-
GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
158
|
-
"health check call failed; will retry after backoff"));
|
130
|
+
SetHealthStatusLocked(GRPC_CHANNEL_TRANSIENT_FAILURE,
|
131
|
+
"health check call failed; will retry after backoff");
|
159
132
|
grpc_millis next_try = retry_backoff_.NextAttemptTime();
|
160
133
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_health_check_client_trace)) {
|
161
134
|
gpr_log(GPR_INFO, "HealthCheckClient %p: health check call lost...", this);
|
@@ -489,10 +462,10 @@ void HealthCheckClient::CallState::DoneReadingRecvMessage(grpc_error* error) {
|
|
489
462
|
const bool healthy = DecodeResponse(&recv_message_buffer_, &error);
|
490
463
|
const grpc_connectivity_state state =
|
491
464
|
healthy ? GRPC_CHANNEL_READY : GRPC_CHANNEL_TRANSIENT_FAILURE;
|
492
|
-
|
493
|
-
|
494
|
-
|
495
|
-
health_check_client_->SetHealthStatus(state,
|
465
|
+
const char* reason = error == GRPC_ERROR_NONE && !healthy
|
466
|
+
? "backend unhealthy"
|
467
|
+
: grpc_error_string(error);
|
468
|
+
health_check_client_->SetHealthStatus(state, reason);
|
496
469
|
seen_response_.Store(true, MemoryOrder::RELEASE);
|
497
470
|
grpc_slice_buffer_destroy_internal(&recv_message_buffer_);
|
498
471
|
// Start another recv_message batch.
|
@@ -603,7 +576,7 @@ void HealthCheckClient::CallState::RecvTrailingMetadataReady(
|
|
603
576
|
grpc_slice_from_static_string(kErrorMessage));
|
604
577
|
}
|
605
578
|
self->health_check_client_->SetHealthStatus(GRPC_CHANNEL_READY,
|
606
|
-
|
579
|
+
kErrorMessage);
|
607
580
|
retry = false;
|
608
581
|
}
|
609
582
|
self->CallEnded(retry);
|
@@ -47,16 +47,11 @@ class HealthCheckClient : public InternallyRefCounted<HealthCheckClient> {
|
|
47
47
|
HealthCheckClient(const char* service_name,
|
48
48
|
RefCountedPtr<ConnectedSubchannel> connected_subchannel,
|
49
49
|
grpc_pollset_set* interested_parties,
|
50
|
-
RefCountedPtr<channelz::SubchannelNode> channelz_node
|
50
|
+
RefCountedPtr<channelz::SubchannelNode> channelz_node,
|
51
|
+
RefCountedPtr<ConnectivityStateWatcherInterface> watcher);
|
51
52
|
|
52
53
|
~HealthCheckClient();
|
53
54
|
|
54
|
-
// When the health state changes from *state, sets *state to the new
|
55
|
-
// value and schedules closure.
|
56
|
-
// Only one closure can be outstanding at a time.
|
57
|
-
void NotifyOnHealthChange(grpc_connectivity_state* state,
|
58
|
-
grpc_closure* closure);
|
59
|
-
|
60
55
|
void Orphan() override;
|
61
56
|
|
62
57
|
private:
|
@@ -151,9 +146,9 @@ class HealthCheckClient : public InternallyRefCounted<HealthCheckClient> {
|
|
151
146
|
void StartRetryTimer();
|
152
147
|
static void OnRetryTimer(void* arg, grpc_error* error);
|
153
148
|
|
154
|
-
void SetHealthStatus(grpc_connectivity_state state,
|
149
|
+
void SetHealthStatus(grpc_connectivity_state state, const char* reason);
|
155
150
|
void SetHealthStatusLocked(grpc_connectivity_state state,
|
156
|
-
|
151
|
+
const char* reason); // Requires holding mu_.
|
157
152
|
|
158
153
|
const char* service_name_; // Do not own.
|
159
154
|
RefCountedPtr<ConnectedSubchannel> connected_subchannel_;
|
@@ -161,10 +156,7 @@ class HealthCheckClient : public InternallyRefCounted<HealthCheckClient> {
|
|
161
156
|
RefCountedPtr<channelz::SubchannelNode> channelz_node_;
|
162
157
|
|
163
158
|
Mutex mu_;
|
164
|
-
|
165
|
-
grpc_error* error_ = GRPC_ERROR_NONE;
|
166
|
-
grpc_connectivity_state* notify_state_ = nullptr;
|
167
|
-
grpc_closure* on_health_changed_ = nullptr;
|
159
|
+
RefCountedPtr<ConnectivityStateWatcherInterface> watcher_;
|
168
160
|
bool shutting_down_ = false;
|
169
161
|
|
170
162
|
// The data associated with the current health check call. It holds a ref
|
@@ -356,5 +356,5 @@ void grpc_http_connect_register_handshaker_factory() {
|
|
356
356
|
using namespace grpc_core;
|
357
357
|
HandshakerRegistry::RegisterHandshakerFactory(
|
358
358
|
true /* at_start */, HANDSHAKER_CLIENT,
|
359
|
-
|
359
|
+
MakeUnique<HttpConnectHandshakerFactory>());
|
360
360
|
}
|
@@ -105,9 +105,8 @@ LoadBalancingPolicy::PickResult LoadBalancingPolicy::QueuePicker::Pick(
|
|
105
105
|
if (!exit_idle_called_) {
|
106
106
|
exit_idle_called_ = true;
|
107
107
|
parent_->Ref().release(); // ref held by closure.
|
108
|
-
|
109
|
-
GRPC_CLOSURE_CREATE(&CallExitIdle, parent_.get(),
|
110
|
-
grpc_combiner_scheduler(parent_->combiner())),
|
108
|
+
parent_->combiner()->Run(
|
109
|
+
GRPC_CLOSURE_CREATE(&CallExitIdle, parent_.get(), nullptr),
|
111
110
|
GRPC_ERROR_NONE);
|
112
111
|
}
|
113
112
|
PickResult result;
|
@@ -21,10 +21,11 @@
|
|
21
21
|
|
22
22
|
#include <grpc/support/port_platform.h>
|
23
23
|
|
24
|
+
#include <iterator>
|
25
|
+
|
24
26
|
#include "src/core/ext/filters/client_channel/server_address.h"
|
25
27
|
#include "src/core/ext/filters/client_channel/service_config.h"
|
26
28
|
#include "src/core/ext/filters/client_channel/subchannel_interface.h"
|
27
|
-
#include "src/core/lib/gprpp/abstract.h"
|
28
29
|
#include "src/core/lib/gprpp/map.h"
|
29
30
|
#include "src/core/lib/gprpp/orphanable.h"
|
30
31
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
@@ -109,23 +110,42 @@ class LoadBalancingPolicy : public InternallyRefCounted<LoadBalancingPolicy> {
|
|
109
110
|
/// automatically freed when the call is complete.
|
110
111
|
/// It is more efficient to use this than to allocate memory directly
|
111
112
|
/// for allocations that need to be made on a per-call basis.
|
112
|
-
virtual void* Alloc(size_t size)
|
113
|
+
virtual void* Alloc(size_t size) = 0;
|
113
114
|
|
114
115
|
/// Returns the backend metric data returned by the server for the call,
|
115
116
|
/// or null if no backend metric data was returned.
|
116
|
-
virtual const BackendMetricData* GetBackendMetricData()
|
117
|
-
|
118
|
-
GRPC_ABSTRACT_BASE_CLASS
|
117
|
+
virtual const BackendMetricData* GetBackendMetricData() = 0;
|
119
118
|
};
|
120
119
|
|
121
120
|
/// Interface for accessing metadata.
|
122
121
|
/// Implemented by the client channel and used by the SubchannelPicker.
|
123
122
|
class MetadataInterface {
|
124
123
|
public:
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
124
|
+
class iterator
|
125
|
+
: public std::iterator<std::input_iterator_tag,
|
126
|
+
std::pair<StringView, StringView>, // value_type
|
127
|
+
std::ptrdiff_t, // difference_type
|
128
|
+
std::pair<StringView, StringView>*, // pointer
|
129
|
+
std::pair<StringView, StringView>& // reference
|
130
|
+
> {
|
131
|
+
public:
|
132
|
+
iterator(const MetadataInterface* md, intptr_t handle)
|
133
|
+
: md_(md), handle_(handle) {}
|
134
|
+
iterator& operator++() {
|
135
|
+
handle_ = md_->IteratorHandleNext(handle_);
|
136
|
+
return *this;
|
137
|
+
}
|
138
|
+
bool operator==(iterator other) const {
|
139
|
+
return md_ == other.md_ && handle_ == other.handle_;
|
140
|
+
}
|
141
|
+
bool operator!=(iterator other) const { return !(*this == other); }
|
142
|
+
value_type operator*() const { return md_->IteratorHandleGet(handle_); }
|
143
|
+
|
144
|
+
private:
|
145
|
+
friend class MetadataInterface;
|
146
|
+
const MetadataInterface* md_;
|
147
|
+
intptr_t handle_;
|
148
|
+
};
|
129
149
|
|
130
150
|
virtual ~MetadataInterface() = default;
|
131
151
|
|
@@ -134,20 +154,25 @@ class LoadBalancingPolicy : public InternallyRefCounted<LoadBalancingPolicy> {
|
|
134
154
|
/// Implementations must ensure that the key and value remain alive
|
135
155
|
/// until the call ends. If desired, they may be allocated via
|
136
156
|
/// CallState::Alloc().
|
137
|
-
virtual void Add(StringView key, StringView value)
|
157
|
+
virtual void Add(StringView key, StringView value) = 0;
|
138
158
|
|
139
159
|
/// Iteration interface.
|
140
|
-
virtual
|
141
|
-
virtual
|
142
|
-
|
143
|
-
|
144
|
-
|
160
|
+
virtual iterator begin() const = 0;
|
161
|
+
virtual iterator end() const = 0;
|
162
|
+
|
163
|
+
/// Removes the element pointed to by \a it.
|
164
|
+
/// Returns an iterator pointing to the next element.
|
165
|
+
virtual iterator erase(iterator it) = 0;
|
166
|
+
|
167
|
+
protected:
|
168
|
+
intptr_t GetIteratorHandle(const iterator& it) const { return it.handle_; }
|
145
169
|
|
146
|
-
|
147
|
-
|
148
|
-
virtual void Erase(Iterator* it) GRPC_ABSTRACT;
|
170
|
+
private:
|
171
|
+
friend class iterator;
|
149
172
|
|
150
|
-
|
173
|
+
virtual intptr_t IteratorHandleNext(intptr_t handle) const = 0;
|
174
|
+
virtual std::pair<StringView /*key*/, StringView /*value */>
|
175
|
+
IteratorHandleGet(intptr_t handle) const = 0;
|
151
176
|
};
|
152
177
|
|
153
178
|
/// Arguments used when picking a subchannel for a call.
|
@@ -194,20 +219,14 @@ class LoadBalancingPolicy : public InternallyRefCounted<LoadBalancingPolicy> {
|
|
194
219
|
|
195
220
|
/// Used only if type is PICK_COMPLETE.
|
196
221
|
/// Callback set by LB policy to be notified of trailing metadata.
|
197
|
-
///
|
198
|
-
///
|
199
|
-
///
|
200
|
-
///
|
201
|
-
///
|
202
|
-
/// be
|
203
|
-
|
204
|
-
|
205
|
-
// people outside of gRPC team to use this API.
|
206
|
-
void (*recv_trailing_metadata_ready)(
|
207
|
-
void* user_data, grpc_error* error,
|
208
|
-
MetadataInterface* recv_trailing_metadata,
|
209
|
-
CallState* call_state) = nullptr;
|
210
|
-
void* recv_trailing_metadata_ready_user_data = nullptr;
|
222
|
+
/// If set by LB policy, the client channel will invoke the callback
|
223
|
+
/// when trailing metadata is returned.
|
224
|
+
/// The metadata may be modified by the callback. However, the callback
|
225
|
+
/// does not take ownership, so any data that needs to be used after
|
226
|
+
/// returning must be copied.
|
227
|
+
/// The call state can be used to obtain backend metric data.
|
228
|
+
std::function<void(grpc_error*, MetadataInterface*, CallState*)>
|
229
|
+
recv_trailing_metadata_ready;
|
211
230
|
};
|
212
231
|
|
213
232
|
/// A subchannel picker is the object used to pick the subchannel to
|
@@ -229,9 +248,7 @@ class LoadBalancingPolicy : public InternallyRefCounted<LoadBalancingPolicy> {
|
|
229
248
|
SubchannelPicker() = default;
|
230
249
|
virtual ~SubchannelPicker() = default;
|
231
250
|
|
232
|
-
virtual PickResult Pick(PickArgs args)
|
233
|
-
|
234
|
-
GRPC_ABSTRACT_BASE_CLASS
|
251
|
+
virtual PickResult Pick(PickArgs args) = 0;
|
235
252
|
};
|
236
253
|
|
237
254
|
/// A proxy object implemented by the client channel and used by the
|
@@ -246,22 +263,19 @@ class LoadBalancingPolicy : public InternallyRefCounted<LoadBalancingPolicy> {
|
|
246
263
|
|
247
264
|
/// Creates a new subchannel with the specified channel args.
|
248
265
|
virtual RefCountedPtr<SubchannelInterface> CreateSubchannel(
|
249
|
-
const grpc_channel_args& args)
|
266
|
+
const grpc_channel_args& args) = 0;
|
250
267
|
|
251
268
|
/// Sets the connectivity state and returns a new picker to be used
|
252
269
|
/// by the client channel.
|
253
270
|
virtual void UpdateState(grpc_connectivity_state state,
|
254
|
-
UniquePtr<SubchannelPicker>)
|
271
|
+
UniquePtr<SubchannelPicker>) = 0;
|
255
272
|
|
256
273
|
/// Requests that the resolver re-resolve.
|
257
|
-
virtual void RequestReresolution()
|
274
|
+
virtual void RequestReresolution() = 0;
|
258
275
|
|
259
276
|
/// Adds a trace message associated with the channel.
|
260
277
|
enum TraceSeverity { TRACE_INFO, TRACE_WARNING, TRACE_ERROR };
|
261
|
-
virtual void AddTraceEvent(TraceSeverity severity,
|
262
|
-
StringView message) GRPC_ABSTRACT;
|
263
|
-
|
264
|
-
GRPC_ABSTRACT_BASE_CLASS
|
278
|
+
virtual void AddTraceEvent(TraceSeverity severity, StringView message) = 0;
|
265
279
|
};
|
266
280
|
|
267
281
|
/// Interface for configuration data used by an LB policy implementation.
|
@@ -272,9 +286,7 @@ class LoadBalancingPolicy : public InternallyRefCounted<LoadBalancingPolicy> {
|
|
272
286
|
virtual ~Config() = default;
|
273
287
|
|
274
288
|
// Returns the load balancing policy name
|
275
|
-
virtual const char* name() const
|
276
|
-
|
277
|
-
GRPC_ABSTRACT_BASE_CLASS
|
289
|
+
virtual const char* name() const = 0;
|
278
290
|
};
|
279
291
|
|
280
292
|
/// Data passed to the UpdateLocked() method when new addresses and
|
@@ -301,7 +313,7 @@ class LoadBalancingPolicy : public InternallyRefCounted<LoadBalancingPolicy> {
|
|
301
313
|
// TODO(roth): Once we have a C++-like interface for combiners, this
|
302
314
|
// API should change to take a smart pointer that does pass ownership
|
303
315
|
// of a reference.
|
304
|
-
|
316
|
+
Combiner* combiner = nullptr;
|
305
317
|
/// Channel control helper.
|
306
318
|
/// Note: LB policies MUST NOT call any method on the helper from
|
307
319
|
/// their constructor.
|
@@ -319,12 +331,12 @@ class LoadBalancingPolicy : public InternallyRefCounted<LoadBalancingPolicy> {
|
|
319
331
|
LoadBalancingPolicy& operator=(const LoadBalancingPolicy&) = delete;
|
320
332
|
|
321
333
|
/// Returns the name of the LB policy.
|
322
|
-
virtual const char* name() const
|
334
|
+
virtual const char* name() const = 0;
|
323
335
|
|
324
336
|
/// Updates the policy with new data from the resolver. Will be invoked
|
325
337
|
/// immediately after LB policy is constructed, and then again whenever
|
326
338
|
/// the resolver returns a new result.
|
327
|
-
virtual void UpdateLocked(UpdateArgs)
|
339
|
+
virtual void UpdateLocked(UpdateArgs) = 0; // NOLINT
|
328
340
|
|
329
341
|
/// Tries to enter a READY connectivity state.
|
330
342
|
/// This is a no-op by default, since most LB policies never go into
|
@@ -332,7 +344,7 @@ class LoadBalancingPolicy : public InternallyRefCounted<LoadBalancingPolicy> {
|
|
332
344
|
virtual void ExitIdleLocked() {}
|
333
345
|
|
334
346
|
/// Resets connection backoff.
|
335
|
-
virtual void ResetBackoffLocked()
|
347
|
+
virtual void ResetBackoffLocked() = 0;
|
336
348
|
|
337
349
|
grpc_pollset_set* interested_parties() const { return interested_parties_; }
|
338
350
|
|
@@ -370,10 +382,8 @@ class LoadBalancingPolicy : public InternallyRefCounted<LoadBalancingPolicy> {
|
|
370
382
|
grpc_error* error_;
|
371
383
|
};
|
372
384
|
|
373
|
-
GRPC_ABSTRACT_BASE_CLASS
|
374
|
-
|
375
385
|
protected:
|
376
|
-
|
386
|
+
Combiner* combiner() const { return combiner_; }
|
377
387
|
|
378
388
|
// Note: LB policies MUST NOT call any method on the helper from their
|
379
389
|
// constructor.
|
@@ -382,11 +392,11 @@ class LoadBalancingPolicy : public InternallyRefCounted<LoadBalancingPolicy> {
|
|
382
392
|
}
|
383
393
|
|
384
394
|
/// Shuts down the policy.
|
385
|
-
virtual void ShutdownLocked()
|
395
|
+
virtual void ShutdownLocked() = 0;
|
386
396
|
|
387
397
|
private:
|
388
398
|
/// Combiner under which LB policy actions take place.
|
389
|
-
|
399
|
+
Combiner* combiner_;
|
390
400
|
/// Owned pointer to interested parties in load balancing decisions.
|
391
401
|
grpc_pollset_set* interested_parties_;
|
392
402
|
/// Channel control helper.
|