Loading server-tools/instance-manager/listener.cc +5 −4 Original line number Diff line number Diff line Loading @@ -127,7 +127,7 @@ void Listener_thread::run() fd_set read_fds_arg= read_fds; /* We should reintialize timer as on linux it is modified to reflect amout of time not slept. to reflect amount of time not slept. */ tv.tv_sec= 0; tv.tv_usec= 100000; Loading Loading @@ -362,12 +362,13 @@ void Listener_thread::handle_new_mysql_connection(Vio *vio) pthread_attr_t mysql_thd_attr; pthread_attr_init(&mysql_thd_attr); pthread_attr_setdetachstate(&mysql_thd_attr, PTHREAD_CREATE_DETACHED); if (pthread_create(&mysql_thd_id, &mysql_thd_attr, mysql_connection, mysql_thread_args)) if (set_stacksize_n_create_thread(&mysql_thd_id, &mysql_thd_attr, mysql_connection, mysql_thread_args)) { delete mysql_thread_args; vio_delete(vio); log_error("handle_one_mysql_connection(): pthread_create(mysql) failed"); log_error("handle_one_mysql_connection():" "set_stacksize_n_create_thread(mysql) failed"); } pthread_attr_destroy(&mysql_thd_attr); } Loading server-tools/instance-manager/manager.cc +6 −6 Original line number Diff line number Diff line Loading @@ -162,12 +162,12 @@ void manager(const Options &options) pthread_attr_init(&listener_thd_attr); pthread_attr_setdetachstate(&listener_thd_attr, PTHREAD_CREATE_DETACHED); rc= pthread_create(&listener_thd_id, &listener_thd_attr, listener, &listener_args); rc= set_stacksize_n_create_thread(&listener_thd_id, &listener_thd_attr, listener, &listener_args); pthread_attr_destroy(&listener_thd_attr); if (rc) { log_error("manager(): pthread_create(listener) failed"); log_error("manager(): set_stacksize_n_create_thread(listener) failed"); goto err; } Loading @@ -187,12 +187,12 @@ void manager(const Options &options) pthread_attr_init(&guardian_thd_attr); pthread_attr_setdetachstate(&guardian_thd_attr, PTHREAD_CREATE_DETACHED); rc= pthread_create(&guardian_thd_id, &guardian_thd_attr, guardian, &guardian_thread); rc= set_stacksize_n_create_thread(&guardian_thd_id, &guardian_thd_attr, guardian, &guardian_thread); pthread_attr_destroy(&guardian_thd_attr); if (rc) { log_error("manager(): pthread_create(guardian) failed"); log_error("manager(): set_stacksize_n_create_thread(guardian) failed"); goto err; } Loading server-tools/instance-manager/priv.cc +35 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,17 @@ #include "priv.h" #include "portability.h" #if defined(__ia64__) || defined(__ia64) /* We can live with 32K, but reserve 64K. Just to be safe. On ia64 we need to reserve double of the size. */ #define IM_THREAD_STACK_SIZE (128*1024L) #else #define IM_THREAD_STACK_SIZE (64*1024) #endif /* the pid of the manager process (of the signal thread on the LinuxThreads) */ pid_t manager_pid; Loading Loading @@ -52,3 +63,27 @@ unsigned int test_flags= 0; unsigned long bytes_sent = 0L, bytes_received = 0L; unsigned long mysqld_net_retry_count = 10L; unsigned long open_files_limit; /* Change the stack size and start a thread. Return an error if either pthread_attr_setstacksize or pthread_create fails. Arguments are the same as for pthread_create(). */ int set_stacksize_n_create_thread(pthread_t *thread, pthread_attr_t *attr, void *(*start_routine)(void *), void *arg) { int rc; /* Set stack size to be safe on the platforms with too small default thread stack. */ rc= pthread_attr_setstacksize(attr, (size_t) (PTHREAD_STACK_MIN + IM_THREAD_STACK_SIZE)); if (!rc) rc= pthread_create(thread, attr, start_routine, arg); return rc; } server-tools/instance-manager/priv.h +4 −0 Original line number Diff line number Diff line Loading @@ -80,4 +80,8 @@ extern unsigned long bytes_sent, bytes_received; extern unsigned long mysqld_net_retry_count; extern unsigned long open_files_limit; int set_stacksize_n_create_thread(pthread_t *thread, pthread_attr_t *attr, void *(*start_routine)(void *), void *arg); #endif // INCLUDES_MYSQL_INSTANCE_MANAGER_PRIV_H Loading
server-tools/instance-manager/listener.cc +5 −4 Original line number Diff line number Diff line Loading @@ -127,7 +127,7 @@ void Listener_thread::run() fd_set read_fds_arg= read_fds; /* We should reintialize timer as on linux it is modified to reflect amout of time not slept. to reflect amount of time not slept. */ tv.tv_sec= 0; tv.tv_usec= 100000; Loading Loading @@ -362,12 +362,13 @@ void Listener_thread::handle_new_mysql_connection(Vio *vio) pthread_attr_t mysql_thd_attr; pthread_attr_init(&mysql_thd_attr); pthread_attr_setdetachstate(&mysql_thd_attr, PTHREAD_CREATE_DETACHED); if (pthread_create(&mysql_thd_id, &mysql_thd_attr, mysql_connection, mysql_thread_args)) if (set_stacksize_n_create_thread(&mysql_thd_id, &mysql_thd_attr, mysql_connection, mysql_thread_args)) { delete mysql_thread_args; vio_delete(vio); log_error("handle_one_mysql_connection(): pthread_create(mysql) failed"); log_error("handle_one_mysql_connection():" "set_stacksize_n_create_thread(mysql) failed"); } pthread_attr_destroy(&mysql_thd_attr); } Loading
server-tools/instance-manager/manager.cc +6 −6 Original line number Diff line number Diff line Loading @@ -162,12 +162,12 @@ void manager(const Options &options) pthread_attr_init(&listener_thd_attr); pthread_attr_setdetachstate(&listener_thd_attr, PTHREAD_CREATE_DETACHED); rc= pthread_create(&listener_thd_id, &listener_thd_attr, listener, &listener_args); rc= set_stacksize_n_create_thread(&listener_thd_id, &listener_thd_attr, listener, &listener_args); pthread_attr_destroy(&listener_thd_attr); if (rc) { log_error("manager(): pthread_create(listener) failed"); log_error("manager(): set_stacksize_n_create_thread(listener) failed"); goto err; } Loading @@ -187,12 +187,12 @@ void manager(const Options &options) pthread_attr_init(&guardian_thd_attr); pthread_attr_setdetachstate(&guardian_thd_attr, PTHREAD_CREATE_DETACHED); rc= pthread_create(&guardian_thd_id, &guardian_thd_attr, guardian, &guardian_thread); rc= set_stacksize_n_create_thread(&guardian_thd_id, &guardian_thd_attr, guardian, &guardian_thread); pthread_attr_destroy(&guardian_thd_attr); if (rc) { log_error("manager(): pthread_create(guardian) failed"); log_error("manager(): set_stacksize_n_create_thread(guardian) failed"); goto err; } Loading
server-tools/instance-manager/priv.cc +35 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,17 @@ #include "priv.h" #include "portability.h" #if defined(__ia64__) || defined(__ia64) /* We can live with 32K, but reserve 64K. Just to be safe. On ia64 we need to reserve double of the size. */ #define IM_THREAD_STACK_SIZE (128*1024L) #else #define IM_THREAD_STACK_SIZE (64*1024) #endif /* the pid of the manager process (of the signal thread on the LinuxThreads) */ pid_t manager_pid; Loading Loading @@ -52,3 +63,27 @@ unsigned int test_flags= 0; unsigned long bytes_sent = 0L, bytes_received = 0L; unsigned long mysqld_net_retry_count = 10L; unsigned long open_files_limit; /* Change the stack size and start a thread. Return an error if either pthread_attr_setstacksize or pthread_create fails. Arguments are the same as for pthread_create(). */ int set_stacksize_n_create_thread(pthread_t *thread, pthread_attr_t *attr, void *(*start_routine)(void *), void *arg) { int rc; /* Set stack size to be safe on the platforms with too small default thread stack. */ rc= pthread_attr_setstacksize(attr, (size_t) (PTHREAD_STACK_MIN + IM_THREAD_STACK_SIZE)); if (!rc) rc= pthread_create(thread, attr, start_routine, arg); return rc; }
server-tools/instance-manager/priv.h +4 −0 Original line number Diff line number Diff line Loading @@ -80,4 +80,8 @@ extern unsigned long bytes_sent, bytes_received; extern unsigned long mysqld_net_retry_count; extern unsigned long open_files_limit; int set_stacksize_n_create_thread(pthread_t *thread, pthread_attr_t *attr, void *(*start_routine)(void *), void *arg); #endif // INCLUDES_MYSQL_INSTANCE_MANAGER_PRIV_H