reverted linuxthreads thr_client_alarm fix (not future-proof)
fixed differently: wake up select_thread with THR_SERVER_ALARM instead
This commit is contained in:
parent
e786458d14
commit
d2d72bfc58
@ -78,6 +78,10 @@ void init_thr_alarm(uint max_alarms)
|
|||||||
sigfillset(&full_signal_set); /* Neaded to block signals */
|
sigfillset(&full_signal_set); /* Neaded to block signals */
|
||||||
pthread_mutex_init(&LOCK_alarm,MY_MUTEX_INIT_FAST);
|
pthread_mutex_init(&LOCK_alarm,MY_MUTEX_INIT_FAST);
|
||||||
pthread_cond_init(&COND_alarm,NULL);
|
pthread_cond_init(&COND_alarm,NULL);
|
||||||
|
if (thd_lib_detected == THD_LIB_LT)
|
||||||
|
thr_client_alarm= SIGALRM;
|
||||||
|
else
|
||||||
|
thr_client_alarm= SIGUSR1;
|
||||||
#ifndef USE_ALARM_THREAD
|
#ifndef USE_ALARM_THREAD
|
||||||
if (thd_lib_detected != THD_LIB_LT)
|
if (thd_lib_detected != THD_LIB_LT)
|
||||||
#endif
|
#endif
|
||||||
|
@ -622,7 +622,7 @@ static void close_connections(void)
|
|||||||
DBUG_PRINT("info",("Waiting for select thread"));
|
DBUG_PRINT("info",("Waiting for select thread"));
|
||||||
|
|
||||||
#ifndef DONT_USE_THR_ALARM
|
#ifndef DONT_USE_THR_ALARM
|
||||||
if (pthread_kill(select_thread, thr_client_alarm))
|
if (pthread_kill(select_thread, THR_SERVER_ALARM))
|
||||||
break; // allready dead
|
break; // allready dead
|
||||||
#endif
|
#endif
|
||||||
set_timespec(abstime, 2);
|
set_timespec(abstime, 2);
|
||||||
@ -2062,17 +2062,6 @@ static void init_signals(void)
|
|||||||
struct sigaction sa;
|
struct sigaction sa;
|
||||||
DBUG_ENTER("init_signals");
|
DBUG_ENTER("init_signals");
|
||||||
|
|
||||||
if (thd_lib_detected == THD_LIB_LT)
|
|
||||||
{
|
|
||||||
thr_client_alarm= SIGALRM;
|
|
||||||
thr_kill_signal= SIGINT;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
thr_client_alarm= SIGUSR1;
|
|
||||||
thr_kill_signal= SIGUSR2;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (test_flags & TEST_SIGINT)
|
if (test_flags & TEST_SIGINT)
|
||||||
{
|
{
|
||||||
my_sigset(thr_kill_signal, end_thread_signal);
|
my_sigset(thr_kill_signal, end_thread_signal);
|
||||||
@ -2131,14 +2120,11 @@ static void init_signals(void)
|
|||||||
#ifdef SIGTSTP
|
#ifdef SIGTSTP
|
||||||
sigaddset(&set,SIGTSTP);
|
sigaddset(&set,SIGTSTP);
|
||||||
#endif
|
#endif
|
||||||
sigaddset(&set,THR_SERVER_ALARM);
|
|
||||||
if (test_flags & TEST_SIGINT)
|
if (test_flags & TEST_SIGINT)
|
||||||
{
|
{
|
||||||
// May be SIGINT
|
// May be SIGINT
|
||||||
sigdelset(&set, thr_kill_signal);
|
sigdelset(&set, thr_kill_signal);
|
||||||
}
|
}
|
||||||
// For alarms
|
|
||||||
sigdelset(&set, thr_client_alarm);
|
|
||||||
sigprocmask(SIG_SETMASK,&set,NULL);
|
sigprocmask(SIG_SETMASK,&set,NULL);
|
||||||
pthread_sigmask(SIG_SETMASK,&set,NULL);
|
pthread_sigmask(SIG_SETMASK,&set,NULL);
|
||||||
DBUG_VOID_RETURN;
|
DBUG_VOID_RETURN;
|
||||||
@ -3167,6 +3153,13 @@ int main(int argc, char **argv)
|
|||||||
|
|
||||||
MY_INIT(argv[0]); // init my_sys library & pthreads
|
MY_INIT(argv[0]); // init my_sys library & pthreads
|
||||||
|
|
||||||
|
/* Set signal used to kill MySQL */
|
||||||
|
#if defined(SIGUSR2)
|
||||||
|
thr_kill_signal= thd_lib_detected == THD_LIB_LT ? SIGINT : SIGUSR2;
|
||||||
|
#else
|
||||||
|
thr_kill_signal= thd_lib_detected == SIGINT;
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef _CUSTOMSTARTUPCONFIG_
|
#ifdef _CUSTOMSTARTUPCONFIG_
|
||||||
if (_cust_check_startup())
|
if (_cust_check_startup())
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user