diff options
author | sasha@mysql.sashanet.com <> | 2000-11-15 16:12:11 -0700 |
---|---|---|
committer | sasha@mysql.sashanet.com <> | 2000-11-15 16:12:11 -0700 |
commit | 5faab668f7996ae58f645a2b563f5c290d37b76c (patch) | |
tree | 0ec2b6001248453903660cc4385ee83d69021683 | |
parent | f2b9a60ec44261352423c6c38bc0092524c7e772 (diff) | |
download | mariadb-git-5faab668f7996ae58f645a2b563f5c290d37b76c.tar.gz |
sql/slave.cc
fixed bug - mutex was not being released if master.info could not be read
-rw-r--r-- | sql/slave.cc | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/sql/slave.cc b/sql/slave.cc index d0128996832..0febb672624 100644 --- a/sql/slave.cc +++ b/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)); if(!file) - return 1; + { + pthread_mutex_unlock(&mi->lock); + return 1; + } mi->log_file_name[0] = 0; mi->pos = 4; // skip magic number mi->file = file; @@ -373,18 +376,25 @@ int init_master_info(MASTER_INFO* mi) mi->connect_retry = master_connect_retry; if(flush_master_info(mi)) - return 1; + { + pthread_mutex_unlock(&mi->lock); + return 1; + } } else { file = my_fopen(fname, O_RDWR|O_BINARY, MYF(MY_WME)); if(!file) - return 1; + { + pthread_mutex_unlock(&mi->lock); + return 1; + } if(!fgets(mi->log_file_name, sizeof(mi->log_file_name), 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 @@ -392,6 +402,7 @@ int init_master_info(MASTER_INFO* mi) if(!fgets(buf, sizeof(buf), file)) { sql_print_error("Error reading log file position from master info file"); + pthread_mutex_unlock(&mi->lock); return 1; } |