mirror of
https://github.com/MariaDB/server.git
synced 2025-02-20 20:33:15 +01:00
![]() In Log_event::read_log_event(), don't use IO_CACHE::error of the relay log's
IO_CACHE to signal an error back to the caller. When reading the active
relay log, this flag is also being used by the IO thread, and setting it can
randomly cause the IO thread to wrongly detect IO error on writing and
permanently disable the relay log.
This was seen sporadically in test case rpl.rpl_from_mysql80. The read
error set by the SQL thread in the IO_CACHE would be interpreted as a
write error by the IO thread, which would cause it to throw a fatal
error and close the relay log. And this would later cause CHANGE
MASTER to try to purge a closed relay log, resulting in nullptr crash.
SQL thread is not able to parse an event read from the relay log. This
can happen like here when replicating unknown events from a MySQL master,
potentially also for other reasons.
Also fix a mistake in my_b_flush_io_cache() introduced back in 2001
(
|
||
---|---|---|
.. | ||
async_example.c | ||
client_metadata.h | ||
client_priv.h | ||
CMakeLists.txt | ||
completion_hash.cc | ||
completion_hash.h | ||
echo.c | ||
mariadb-conv.cc | ||
my_readline.h | ||
mysql.cc | ||
mysql_plugin.c | ||
mysql_upgrade.c | ||
mysqladmin.cc | ||
mysqlbinlog.cc | ||
mysqlcheck.c | ||
mysqldump.c | ||
mysqlimport.c | ||
mysqlshow.c | ||
mysqlslap.c | ||
mysqltest.cc | ||
readline.cc |