sql/slave.cc

     fixed bug - mutex was not being released if master.info could not be read
parent f2b9a60e
...@@ -358,7 +358,10 @@ int init_master_info(MASTER_INFO* mi) ...@@ -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)
{
pthread_mutex_unlock(&mi->lock);
return 1; 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,17 +376,24 @@ int init_master_info(MASTER_INFO* mi) ...@@ -373,17 +376,24 @@ 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))
{
pthread_mutex_unlock(&mi->lock);
return 1; 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)
{
pthread_mutex_unlock(&mi->lock);
return 1; 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 ");
pthread_mutex_unlock(&mi->lock);
return 1; return 1;
} }
...@@ -392,6 +402,7 @@ int init_master_info(MASTER_INFO* mi) ...@@ -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;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment