1
0
mirror of https://github.com/MariaDB/server.git synced 2025-12-24 11:21:21 +03:00

Fix for Bug#33507: Event scheduler creates more threads

than max_connections -- which results in user lockout.

The problem was that the variable thread_count that contains
the number of active threads was interpreted as a number of
active connections.

The fix is to introduce a new counter for active connections.


mysql-test/r/connect.result:
  A test case for Bug#33507: Event scheduler creates more threads
  than max_connections -- which results in user lockout.
mysql-test/t/connect.test:
  A test case for Bug#33507: Event scheduler creates more threads
  than max_connections -- which results in user lockout.
sql/mysql_priv.h:
  1. Polishing: login_connection() and end_connection() need not
     to be public.
  
  2. Introduce connection_count -- a variable to contain the number
     of active connections. It is protected by LOCK_connection_count.
sql/mysqld.cc:
  Use connection_count to count active connections.
sql/sql_connect.cc:
  1. Use connection_count to count active connections.
  2. Make login_connection(), end_connection() private for the module
  as they had to be.
This commit is contained in:
unknown
2008-03-12 17:44:40 +03:00
parent d80e7ce4e5
commit b279be388e
5 changed files with 231 additions and 14 deletions

View File

@@ -974,8 +974,6 @@ void time_out_user_resource_limits(THD *thd, USER_CONN *uc);
void decrease_user_connections(USER_CONN *uc);
void thd_init_client_charset(THD *thd, uint cs_number);
bool setup_connection_thread_globals(THD *thd);
bool login_connection(THD *thd);
void end_connection(THD *thd);
bool mysql_create_db(THD *thd, char *db, HA_CREATE_INFO *create, bool silent);
bool mysql_alter_db(THD *thd, const char *db, HA_CREATE_INFO *create);
@@ -1895,6 +1893,7 @@ extern bool opt_disable_networking, opt_skip_show_db;
extern my_bool opt_character_set_client_handshake;
extern bool volatile abort_loop, shutdown_in_progress;
extern uint volatile thread_count, thread_running, global_read_lock;
extern uint connection_count;
extern my_bool opt_sql_bin_update, opt_safe_user_create, opt_no_mix_types;
extern my_bool opt_safe_show_db, opt_local_infile, opt_myisam_use_mmap;
extern my_bool opt_slave_compressed_protocol, use_temp_pool;
@@ -1933,7 +1932,7 @@ extern pthread_mutex_t LOCK_mysql_create_db,LOCK_Acl,LOCK_open, LOCK_lock_db,
LOCK_slave_list, LOCK_active_mi, LOCK_manager, LOCK_global_read_lock,
LOCK_global_system_variables, LOCK_user_conn,
LOCK_prepared_stmt_count,
LOCK_bytes_sent, LOCK_bytes_received;
LOCK_bytes_sent, LOCK_bytes_received, LOCK_connection_count;
#ifdef HAVE_OPENSSL
extern pthread_mutex_t LOCK_des_key_file;
#endif