mirror of
https://git.freebsd.org/ports.git
synced 2025-04-29 01:56:37 -04:00
52 lines
1.7 KiB
Text
52 lines
1.7 KiB
Text
From 90d376e01710fbc6f7e9eeef3f8c4653d5d4d82e Mon Sep 17 00:00:00 2001
|
|
From: Dave Gosselin <dave.gosselin@mariadb.com>
|
|
Date: Mon, 13 May 2024 10:36:11 -0400
|
|
Subject: [PATCH] MDEV-34129 mariadb-install-db appears to hang on macOS
|
|
|
|
Immediately close down the signal handler loop when we decide to
|
|
break connections as it's the start of process termination
|
|
anyway, and there's no need to wait once we've invoked break_connections.
|
|
---
|
|
sql/mysqld.cc | 15 +++++++++++----
|
|
1 file changed, 11 insertions(+), 4 deletions(-)
|
|
|
|
diff --git a/sql/mysqld.cc b/sql/mysqld.cc
|
|
index cfc16209251c2..a9960400c17cd 100644
|
|
--- sql/mysqld.cc.orig
|
|
+++ sql/mysqld.cc
|
|
@@ -2953,6 +2953,15 @@ static void start_signal_handler(void)
|
|
DBUG_VOID_RETURN;
|
|
}
|
|
|
|
+/** Called only from signal_hand function. */
|
|
+static void* exit_signal_handler()
|
|
+{
|
|
+ my_thread_end();
|
|
+ signal_thread_in_use= 0;
|
|
+ pthread_exit(0); // Safety
|
|
+ return nullptr; // Avoid compiler warnings
|
|
+}
|
|
+
|
|
|
|
/** This threads handles all signals and alarms. */
|
|
/* ARGSUSED */
|
|
@@ -3013,10 +3022,7 @@ pthread_handler_t signal_hand(void *arg __attribute__((unused)))
|
|
if (abort_loop)
|
|
{
|
|
DBUG_PRINT("quit",("signal_handler: calling my_thread_end()"));
|
|
- my_thread_end();
|
|
- signal_thread_in_use= 0;
|
|
- pthread_exit(0); // Safety
|
|
- return 0; // Avoid compiler warnings
|
|
+ return exit_signal_handler();
|
|
}
|
|
switch (sig) {
|
|
case SIGTERM:
|
|
@@ -3035,6 +3041,7 @@ pthread_handler_t signal_hand(void *arg __attribute__((unused)))
|
|
PSI_CALL_delete_current_thread();
|
|
my_sigset(sig, SIG_IGN);
|
|
break_connect_loop(); // MIT THREAD has a alarm thread
|
|
+ return exit_signal_handler();
|
|
}
|
|
break;
|
|
case SIGHUP:
|