Skip to content
  • Arun Kuruvila's avatar
    e42be82b
    Bug#22322504 : MYSQL_REAL_CONNECT IS NOT THREAD SAFE · e42be82b
    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.
    e42be82b
    Bug#22322504 : MYSQL_REAL_CONNECT IS NOT THREAD SAFE
    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.
Loading