-
Arun Kuruvila authored
Description: When 'mysql_real_connect()' is invoked in parallel with either of the option MYSQL_READ_DEFAULT_FILE or MYSQL_READ_DEFAULT_GROUP enabled causes a noticeable percentage of thread connection failures. This is due to the inappropriate loading of options from the configuration files. Analysis: 'mysql_real_connect()' calls 'my_load_defaults()' which will toggle a static global variable 'is_login_file' before it calls 'my_search_option_files()'. Function 'my_search_option_files()' has conditional logic based on the static global variable, 'is_login_file', which is accessible across multiple threads. This makes 'mysql_real_connect()' thread unsafe causing noticeable percent of parallel thread connections to fail. Fix: A new argument, 'is_login_file', is passed to all the functions which deals with login file.
Arun Kuruvila authoredDescription: When 'mysql_real_connect()' is invoked in parallel with either of the option MYSQL_READ_DEFAULT_FILE or MYSQL_READ_DEFAULT_GROUP enabled causes a noticeable percentage of thread connection failures. This is due to the inappropriate loading of options from the configuration files. Analysis: 'mysql_real_connect()' calls 'my_load_defaults()' which will toggle a static global variable 'is_login_file' before it calls 'my_search_option_files()'. Function 'my_search_option_files()' has conditional logic based on the static global variable, 'is_login_file', which is accessible across multiple threads. This makes 'mysql_real_connect()' thread unsafe causing noticeable percent of parallel thread connections to fail. Fix: A new argument, 'is_login_file', is passed to all the functions which deals with login file.
Loading