mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
- use the connection_attib used to spawn threads
in the server. this fixes the problem with the limited number of threads because of them being non-detached. pthread_detach_this_tread() expands to empty on most platforms including SuSE but pthread_detach(pthread_self()) is not portable on Windows so the first macro should be used and the thread to be detached we have to create it as such. fix for bug#16984 (Events: running out of threads) WL#1034 (Internal CRON) sql/event_executor.cc: - use the connection_attib used to spawn threads in the server. this fixes the problem with the limited number of threads because of them being non-detached. pthread_detach_this_tread() expands to empty on most platforms including SuSE but pthread_detach(pthread_self()) is not portable on Windows so the first macro should be used and the thread to be detached we have to create it as such.
This commit is contained in:
@ -31,6 +31,7 @@
|
|||||||
|
|
||||||
extern ulong thread_created;
|
extern ulong thread_created;
|
||||||
extern const char *my_localhost;
|
extern const char *my_localhost;
|
||||||
|
extern pthread_attr_t connection_attrib;
|
||||||
|
|
||||||
pthread_mutex_t LOCK_event_arrays,
|
pthread_mutex_t LOCK_event_arrays,
|
||||||
LOCK_workers_count,
|
LOCK_workers_count,
|
||||||
@ -41,7 +42,7 @@ bool evex_is_running= false;
|
|||||||
|
|
||||||
ulonglong evex_main_thread_id= 0;
|
ulonglong evex_main_thread_id= 0;
|
||||||
ulong opt_event_executor;
|
ulong opt_event_executor;
|
||||||
volatile my_bool event_executor_running_global_var;
|
my_bool event_executor_running_global_var;
|
||||||
static my_bool evex_mutexes_initted= false;
|
static my_bool evex_mutexes_initted= false;
|
||||||
static uint workers_count;
|
static uint workers_count;
|
||||||
|
|
||||||
@ -102,7 +103,7 @@ init_events()
|
|||||||
{
|
{
|
||||||
#ifndef DBUG_FAULTY_THR
|
#ifndef DBUG_FAULTY_THR
|
||||||
//TODO Andrey: Change the error code returned!
|
//TODO Andrey: Change the error code returned!
|
||||||
if (pthread_create(&th, NULL, event_executor_main, (void*)NULL))
|
if (pthread_create(&th, &connection_attrib, event_executor_main,(void*)NULL))
|
||||||
DBUG_RETURN(ER_SLAVE_THREAD);
|
DBUG_RETURN(ER_SLAVE_THREAD);
|
||||||
#else
|
#else
|
||||||
event_executor_main(NULL);
|
event_executor_main(NULL);
|
||||||
@ -351,7 +352,7 @@ event_executor_main(void *arg)
|
|||||||
++iter_num;
|
++iter_num;
|
||||||
DBUG_PRINT("info", (" Spawning a thread %d", iter_num));
|
DBUG_PRINT("info", (" Spawning a thread %d", iter_num));
|
||||||
#ifndef DBUG_FAULTY_THR
|
#ifndef DBUG_FAULTY_THR
|
||||||
if (pthread_create(&th, NULL, event_executor_worker, (void*)et))
|
if (pthread_create(&th,&connection_attrib,event_executor_worker,(void*)et))
|
||||||
{
|
{
|
||||||
sql_print_error("Problem while trying to create a thread");
|
sql_print_error("Problem while trying to create a thread");
|
||||||
UNLOCK_MUTEX_AND_BAIL_OUT(LOCK_event_arrays, err);
|
UNLOCK_MUTEX_AND_BAIL_OUT(LOCK_event_arrays, err);
|
||||||
|
Reference in New Issue
Block a user