mariadb/mysql-test/t/rpl_relayspace.test
unknown 40c0b2c6c8 New variable rli->ignore_log_space_limit to resolve
a deadlock between I/O and SQL threads in replication
when relay_log_space is too small. This fixes bug #79.


sql/log.cc:
  New variable rli->ignore_log_space_limit to resolve
  a deadlock between I/O and SQL threads in replication
  when relay_log_space is too small.
sql/slave.cc:
  New variable rli->ignore_log_space_limit to resolve
  a deadlock between I/O and SQL threads in replication
  when relay_log_space is too small.
sql/slave.h:
  New variable rli->ignore_log_space_limit to resolve
  a deadlock between I/O and SQL threads in replication
  when relay_log_space is too small.
sql/sql_repl.cc:
  New variable rli->ignore_log_space_limit to resolve
  a deadlock between I/O and SQL threads in replication
  when relay_log_space is too small.
2003-03-17 22:51:56 +01:00

33 lines
972 B
Text

# The slave is started with relay_log_space_limit=1024 bytes,
# to force the deadlock
source include/master-slave.inc;
connection slave;
stop slave;
connection master;
create table t1 (a int);
let $1=200;
disable_query_log;
while ($1)
{
# eval means expand $ expressions
eval insert into t1 values( $1 );
dec $1;
}
# This will generate one 10kB master's binlog
enable_query_log;
save_master_pos;
connection slave;
reset slave;
start slave;
# The I/O thread stops filling the relay log when
# it's 1kB. And the SQL thread cannot purge this relay log
# as purge is done only when the SQL thread switches to another
# relay log, which does not exist here.
# So we should have a deadlock.
# if it is not resolved automatically we'll detect
# it with master_pos_wait that waits for farther than 1kB;
# it will timeout after 45 seconds;
# also the slave will probably not cooperate to shutdown
# (as 2 threads are locked)
select master_pos_wait('master-bin.001',5000,45)=-1;