mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
sql/slave.cc
fixed bug - mutex was not being released if master.info could not be read
This commit is contained in:
19
sql/slave.cc
19
sql/slave.cc
@ -358,7 +358,10 @@ int init_master_info(MASTER_INFO* mi)
|
|||||||
{
|
{
|
||||||
file = my_fopen(fname, O_CREAT|O_RDWR|O_BINARY, MYF(MY_WME));
|
file = my_fopen(fname, O_CREAT|O_RDWR|O_BINARY, MYF(MY_WME));
|
||||||
if(!file)
|
if(!file)
|
||||||
return 1;
|
{
|
||||||
|
pthread_mutex_unlock(&mi->lock);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
mi->log_file_name[0] = 0;
|
mi->log_file_name[0] = 0;
|
||||||
mi->pos = 4; // skip magic number
|
mi->pos = 4; // skip magic number
|
||||||
mi->file = file;
|
mi->file = file;
|
||||||
@ -373,18 +376,25 @@ int init_master_info(MASTER_INFO* mi)
|
|||||||
mi->connect_retry = master_connect_retry;
|
mi->connect_retry = master_connect_retry;
|
||||||
|
|
||||||
if(flush_master_info(mi))
|
if(flush_master_info(mi))
|
||||||
return 1;
|
{
|
||||||
|
pthread_mutex_unlock(&mi->lock);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
file = my_fopen(fname, O_RDWR|O_BINARY, MYF(MY_WME));
|
file = my_fopen(fname, O_RDWR|O_BINARY, MYF(MY_WME));
|
||||||
if(!file)
|
if(!file)
|
||||||
return 1;
|
{
|
||||||
|
pthread_mutex_unlock(&mi->lock);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
if(!fgets(mi->log_file_name, sizeof(mi->log_file_name), file))
|
if(!fgets(mi->log_file_name, sizeof(mi->log_file_name), file))
|
||||||
{
|
{
|
||||||
sql_print_error("Error reading log file name from master info file ");
|
sql_print_error("Error reading log file name from master info file ");
|
||||||
return 1;
|
pthread_mutex_unlock(&mi->lock);
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
*(strend(mi->log_file_name) - 1) = 0; // kill \n
|
*(strend(mi->log_file_name) - 1) = 0; // kill \n
|
||||||
@ -392,6 +402,7 @@ int init_master_info(MASTER_INFO* mi)
|
|||||||
if(!fgets(buf, sizeof(buf), file))
|
if(!fgets(buf, sizeof(buf), file))
|
||||||
{
|
{
|
||||||
sql_print_error("Error reading log file position from master info file");
|
sql_print_error("Error reading log file position from master info file");
|
||||||
|
pthread_mutex_unlock(&mi->lock);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user