diff options
author | thegeorg <thegeorg@yandex-team.com> | 2025-05-23 14:00:28 +0300 |
---|---|---|
committer | thegeorg <thegeorg@yandex-team.com> | 2025-05-23 14:26:56 +0300 |
commit | 0332172e69764e28c8913bb5c74a58d1fc892fbc (patch) | |
tree | 64ac5c309a6d846700cfe32fe1eea62baabb983b /contrib/libs/grpc/src | |
parent | 7da274ad7c6d448407d7c41af78fbec2bc8e3222 (diff) | |
download | ydb-0332172e69764e28c8913bb5c74a58d1fc892fbc.tar.gz |
Revert commit rXXXXXX, contrib/libs/grpc: Backport patch to fix race condition during openssl shutdown
commit_hash:65fb8d40012f8e188efdebc8137a923db4fcc6e1
Diffstat (limited to 'contrib/libs/grpc/src')
-rw-r--r-- | contrib/libs/grpc/src/core/lib/surface/init.cc | 15 | ||||
-rw-r--r-- | contrib/libs/grpc/src/core/lib/surface/init.h | 5 | ||||
-rw-r--r-- | contrib/libs/grpc/src/core/tsi/ssl_transport_security.cc | 8 |
3 files changed, 0 insertions, 28 deletions
diff --git a/contrib/libs/grpc/src/core/lib/surface/init.cc b/contrib/libs/grpc/src/core/lib/surface/init.cc index 59521f8348e..4527f273bf6 100644 --- a/contrib/libs/grpc/src/core/lib/surface/init.cc +++ b/contrib/libs/grpc/src/core/lib/surface/init.cc @@ -23,8 +23,6 @@ #include <limits.h> #include "y_absl/base/thread_annotations.h" -#include "y_absl/time/clock.h" -#include "y_absl/time/time.h" #include <grpc/fork.h> #include <grpc/grpc.h> @@ -231,16 +229,3 @@ void grpc_maybe_wait_for_async_shutdown(void) { g_shutting_down_cv->Wait(g_init_mu); } } - -bool grpc_wait_for_shutdown_with_timeout(y_absl::Duration timeout) { - const auto started = y_absl::Now(); - const auto deadline = started + timeout; - gpr_once_init(&g_basic_init, do_basic_init); - grpc_core::MutexLock lock(g_init_mu); - while (g_initializations != 0) { - if (g_shutting_down_cv->WaitWithDeadline(g_init_mu, deadline)) { - return false; - } - } - return true; -} diff --git a/contrib/libs/grpc/src/core/lib/surface/init.h b/contrib/libs/grpc/src/core/lib/surface/init.h index 20a2fdf3256..0d0035ae304 100644 --- a/contrib/libs/grpc/src/core/lib/surface/init.h +++ b/contrib/libs/grpc/src/core/lib/surface/init.h @@ -18,13 +18,8 @@ #ifndef GRPC_SRC_CORE_LIB_SURFACE_INIT_H #define GRPC_SRC_CORE_LIB_SURFACE_INIT_H -#include "y_absl/time/time.h" - #include <grpc/support/port_platform.h> void grpc_maybe_wait_for_async_shutdown(void); -// Returns false if the timeout expired before fully shut down. -bool grpc_wait_for_shutdown_with_timeout(y_absl::Duration timeout); - #endif // GRPC_SRC_CORE_LIB_SURFACE_INIT_H diff --git a/contrib/libs/grpc/src/core/tsi/ssl_transport_security.cc b/contrib/libs/grpc/src/core/tsi/ssl_transport_security.cc index fcccd0c5dd5..deb3b952d4b 100644 --- a/contrib/libs/grpc/src/core/tsi/ssl_transport_security.cc +++ b/contrib/libs/grpc/src/core/tsi/ssl_transport_security.cc @@ -23,8 +23,6 @@ #include <limits.h> #include <string.h> -# include <cstdlib> - // TODO(jboeuf): refactor inet_ntop into a portability header. // Note: for whomever reads this and tries to refactor this, this // can't be in grpc, it has to be in gpr. @@ -60,7 +58,6 @@ #include "src/core/lib/gpr/useful.h" #include "src/core/lib/gprpp/crash.h" -#include "src/core/lib/surface/init.h" #include "src/core/tsi/ssl/key_logging/ssl_key_logging.h" #include "src/core/tsi/ssl/session_cache/ssl_session_cache.h" #include "src/core/tsi/ssl_transport_security_utils.h" @@ -175,11 +172,6 @@ static unsigned long openssl_thread_id_cb(void) { static void init_openssl(void) { #if OPENSSL_VERSION_NUMBER >= 0x10100000 OPENSSL_init_ssl(0, nullptr); - // Ensure OPENSSL global clean up happens after gRPC shutdown completes. - // OPENSSL registers an exit handler to clean up global objects, which - // otherwise may happen before gRPC removes all references to OPENSSL. Below - // exit handler is guaranteed to run after OPENSSL's. - std::atexit([]() { grpc_wait_for_shutdown_with_timeout(y_absl::Seconds(2)); }); #else SSL_library_init(); SSL_load_error_strings(); |