summaryrefslogtreecommitdiff
path: root/sql
diff options
context:
space:
mode:
authorunknown <serg@serg.mysql.com>2001-02-28 09:51:41 +0100
committerunknown <serg@serg.mysql.com>2001-02-28 09:51:41 +0100
commit064c7adf422bddbad3dfdf1dc9d6246082b10a32 (patch)
treee12784b0696c8cf8e1ababf11e9d665c0fdbe982 /sql
parent3a7fc247298afdecc6d10ad647b601039e1c4c1f (diff)
parent1d9c5905f8c7aa98bcca2ee963f79c901433efb6 (diff)
downloadmariadb-git-064c7adf422bddbad3dfdf1dc9d6246082b10a32.tar.gz
Merge work:/home/bk/mysql into serg.mysql.com:/usr/home/serg/Abk/mysql
BitKeeper/etc/logging_ok: auto-union Docs/manual.texi: Auto merged
Diffstat (limited to 'sql')
-rw-r--r--sql/slave.cc48
-rw-r--r--sql/slave.h8
2 files changed, 42 insertions, 14 deletions
diff --git a/sql/slave.cc b/sql/slave.cc
index ebf757420a3..a5c66216366 100644
--- a/sql/slave.cc
+++ b/sql/slave.cc
@@ -588,7 +588,7 @@ int show_master_info(THD* thd)
net_store_data(packet, (uint32) glob_mi.port);
net_store_data(packet, (uint32) glob_mi.connect_retry);
net_store_data(packet, glob_mi.log_file_name);
- net_store_data(packet, (longlong) glob_mi.pos);
+ net_store_data(packet, (uint32) glob_mi.pos);
pthread_mutex_unlock(&glob_mi.lock);
pthread_mutex_lock(&LOCK_slave);
net_store_data(packet, slave_running ? "Yes":"No");
@@ -1150,7 +1150,7 @@ pthread_handler_decl(handle_slave,arg __attribute__((unused)))
int error = 1;
bool retried_once = 0;
- ulonglong last_failed_pos = 0;
+ uint32 last_failed_pos = 0;
// needs to call my_thread_init(), otherwise we get a coredump in DBUG_ stuff
my_thread_init();
@@ -1160,7 +1160,10 @@ pthread_handler_decl(handle_slave,arg __attribute__((unused)))
pthread_detach_this_thread();
if (init_slave_thread(thd) || init_master_info(&glob_mi))
- goto err;
+ {
+ sql_print_error("Failed during slave thread initialization");
+ goto err;
+ }
thd->thread_stack = (char*)&thd; // remember where our stack is
thd->temporary_tables = save_temporary_tables; // restore temp tables
threads.append(thd);
@@ -1175,7 +1178,7 @@ pthread_handler_decl(handle_slave,arg __attribute__((unused)))
goto err;
}
- thd->proc_info = "Connecting to master";
+ thd->proc_info = "connecting to master";
#ifndef DBUG_OFF
sql_print_error("Slave thread initialized");
#endif
@@ -1187,7 +1190,10 @@ pthread_handler_decl(handle_slave,arg __attribute__((unused)))
RPL_LOG_NAME,
glob_mi.pos);
else
- goto err;
+ {
+ sql_print_error("Slave thread killed while connecting to master");
+ goto err;
+ }
while (!slave_killed(thd))
{
@@ -1196,9 +1202,13 @@ pthread_handler_decl(handle_slave,arg __attribute__((unused)))
{
sql_print_error("Failed on request_dump()");
if(slave_killed(thd))
- goto err;
+ {
+ sql_print_error("Slave thread killed while requesting master \
+dump");
+ goto err;
+ }
- thd->proc_info = "Waiting to reconnect after a failed dump request";
+ thd->proc_info = "Waiiting to reconnect after a failed dump request";
if(mysql->net.vio)
vio_close(mysql->net.vio);
// first time retry immediately, assuming that we can recover
@@ -1210,14 +1220,21 @@ pthread_handler_decl(handle_slave,arg __attribute__((unused)))
retried_once = 1;
if(slave_killed(thd))
+ {
+ sql_print_error("Slave thread killed while retrying master \
+dump");
goto err;
+ }
thd->proc_info = "Reconnecting after a failed dump request";
sql_print_error("Slave: failed dump request, reconnecting to \
try again, log '%s' at postion %ld", RPL_LOG_NAME,
last_failed_pos = glob_mi.pos );
if(safe_reconnect(thd, mysql, &glob_mi) || slave_killed(thd))
+ {
+ sql_print_error("Slave thread killed during or after reconnect");
goto err;
+ }
continue;
}
@@ -1228,7 +1245,10 @@ try again, log '%s' at postion %ld", RPL_LOG_NAME,
thd->proc_info = "Reading master update";
uint event_len = read_event(mysql, &glob_mi);
if(slave_killed(thd))
- goto err;
+ {
+ sql_print_error("Slave thread killed while reading event");
+ goto err;
+ }
if (event_len == packet_error)
{
@@ -1241,13 +1261,21 @@ try again, log '%s' at postion %ld", RPL_LOG_NAME,
retried_once = 1;
if(slave_killed(thd))
- goto err;
+ {
+ sql_print_error("Slave thread killed while waiting to \
+reconnect after a failed read");
+ goto err;
+ }
thd->proc_info = "Reconnecting after a failed read";
sql_print_error("Slave: Failed reading log event, \
reconnecting to retry, log '%s' position %ld", RPL_LOG_NAME,
last_failed_pos = glob_mi.pos);
if(safe_reconnect(thd, mysql, &glob_mi) || slave_killed(thd))
- goto err;
+ {
+ sql_print_error("Slave thread killed during or after a \
+reconnect done to recover from failed read");
+ goto err;
+ }
break;
}
diff --git a/sql/slave.h b/sql/slave.h
index 11c01a9fa03..d47ec22410c 100644
--- a/sql/slave.h
+++ b/sql/slave.h
@@ -4,7 +4,7 @@
typedef struct st_master_info
{
char log_file_name[FN_REFLEN];
- ulonglong pos,pending;
+ uint32 pos,pending;
File fd; // we keep the file open, so we need to remember the file pointer
IO_CACHE file;
// the variables below are needed because we can change masters on the fly
@@ -29,11 +29,11 @@ typedef struct st_master_info
pthread_mutex_destroy(&lock);
pthread_cond_destroy(&cond);
}
- inline void inc_pending(ulonglong val)
+ inline void inc_pending(uint32 val)
{
pending += val;
}
- inline void inc_pos(ulonglong val)
+ inline void inc_pos(uint32 val)
{
pthread_mutex_lock(&lock);
pos += val + pending;
@@ -43,7 +43,7 @@ typedef struct st_master_info
}
// thread safe read of position - not needed if we are in the slave thread,
// but required otherwise
- inline void read_pos(ulonglong& var)
+ inline void read_pos(uint32& var)
{
pthread_mutex_lock(&lock);
var = pos;