Commit 10735252 authored by guilhem@mysql.com's avatar guilhem@mysql.com

When the SQL thread cannot read an event from the relay log

("Event too big" etc), stop this thread instead of going on
with the next event, which would certainly lead to slave's data
corruption.
parent 065bcf92
......@@ -16,6 +16,7 @@ bk@admin.bk
davida@isil.mysql.com
gluh@gluh.(none)
greg@mysql.com
guilhem@mysql.com
gweir@work.mysql.com
heikki@donna.mysql.fi
heikki@hundin.mysql.fi
......
......@@ -588,6 +588,15 @@ Log_event* Log_event::read_log_event(IO_CACHE* file, bool old_format)
sql_print_error("Error in Log_event::read_log_event(): '%s', \
data_len=%d,event_type=%d",error,data_len,head[EVENT_TYPE_OFFSET]);
my_free(buf, MYF(MY_ALLOW_ZERO_PTR));
/*
The SQL slave thread will check if file->error<0 to know
if there was an I/O error. Even if there is no "low-level" I/O errors
with 'file', any of the high-level above errors is worrying
enough to stop the SQL thread now ; as we are skipping the current event,
going on with reading and successfully executing other events can
only corrupt the slave's databases. So stop.
*/
file->error= -1;
}
return res;
}
......
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