mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
MDEV-10714: Could not execute Delete_rows event on table; wsrep_max_ws_rows exceeded. Error_Code 1180
The wsrep_max_ws_rows related implementation should be skipped when server is running with wsrep disabled.
This commit is contained in:
22
mysql-test/suite/wsrep/r/wsrep_rpl.result
Normal file
22
mysql-test/suite/wsrep/r/wsrep_rpl.result
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
include/master-slave.inc
|
||||||
|
[connection master]
|
||||||
|
#
|
||||||
|
# MDEV-10714: Could not execute Delete_rows event on table;
|
||||||
|
# wsrep_max_ws_rows exceeded. Error_Code 1180
|
||||||
|
#
|
||||||
|
CREATE TABLE t1(i INT) ENGINE = INNODB;
|
||||||
|
SET @@GLOBAL.wsrep_max_ws_rows = 1;
|
||||||
|
INSERT INTO t1 VALUES(1), (2);
|
||||||
|
SELECT COUNT(*) = 2 FROM t1;
|
||||||
|
COUNT(*) = 2
|
||||||
|
1
|
||||||
|
SET @@GLOBAL.wsrep_max_ws_rows = 1;
|
||||||
|
DELETE FROM t1;
|
||||||
|
SELECT COUNT(*) = 0 FROM t1;
|
||||||
|
COUNT(*) = 0
|
||||||
|
1
|
||||||
|
DROP TABLE t1;
|
||||||
|
SET @@GLOBAL.wsrep_max_ws_rows = 0;
|
||||||
|
SET @@GLOBAL.wsrep_max_ws_rows = 0;
|
||||||
|
include/rpl_end.inc
|
||||||
|
# End of test.
|
1
mysql-test/suite/wsrep/t/wsrep_rpl.cnf
Normal file
1
mysql-test/suite/wsrep/t/wsrep_rpl.cnf
Normal file
@ -0,0 +1 @@
|
|||||||
|
!include ../../rpl/my.cnf
|
50
mysql-test/suite/wsrep/t/wsrep_rpl.test
Normal file
50
mysql-test/suite/wsrep/t/wsrep_rpl.test
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
--source include/have_wsrep.inc
|
||||||
|
--source include/have_innodb.inc
|
||||||
|
--source include/master-slave.inc
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-10714: Could not execute Delete_rows event on table;
|
||||||
|
--echo # wsrep_max_ws_rows exceeded. Error_Code 1180
|
||||||
|
--echo #
|
||||||
|
# Save wsrep_max_ws_rows on master and slave.
|
||||||
|
connection master;
|
||||||
|
let $wsrep_max_ws_rows_master = `SELECT @@GLOBAL.wsrep_max_ws_rows`;
|
||||||
|
connection slave;
|
||||||
|
let $wsrep_max_ws_rows_slave = `SELECT @@GLOBAL.wsrep_max_ws_rows`;
|
||||||
|
|
||||||
|
connection master;
|
||||||
|
CREATE TABLE t1(i INT) ENGINE = INNODB;
|
||||||
|
|
||||||
|
# Setting wsrep_max_ws_rows should have no impact on replication master
|
||||||
|
# unless its a cluster node.
|
||||||
|
SET @@GLOBAL.wsrep_max_ws_rows = 1;
|
||||||
|
INSERT INTO t1 VALUES(1), (2);
|
||||||
|
|
||||||
|
sync_slave_with_master;
|
||||||
|
SELECT COUNT(*) = 2 FROM t1;
|
||||||
|
|
||||||
|
connection slave;
|
||||||
|
# Setting wsrep_max_ws_rows should have no impact on replication slave
|
||||||
|
# unless its a cluster node.
|
||||||
|
SET @@GLOBAL.wsrep_max_ws_rows = 1;
|
||||||
|
|
||||||
|
connection master;
|
||||||
|
DELETE FROM t1;
|
||||||
|
|
||||||
|
sync_slave_with_master;
|
||||||
|
SELECT COUNT(*) = 0 FROM t1;
|
||||||
|
|
||||||
|
connection master;
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
sync_slave_with_master;
|
||||||
|
|
||||||
|
# Restore wsrep_max_ws_rows on master and slave
|
||||||
|
connection master;
|
||||||
|
eval SET @@GLOBAL.wsrep_max_ws_rows = $wsrep_max_ws_rows_master;
|
||||||
|
connection slave;
|
||||||
|
eval SET @@GLOBAL.wsrep_max_ws_rows = $wsrep_max_ws_rows_slave;
|
||||||
|
|
||||||
|
--source include/rpl_end.inc
|
||||||
|
--echo # End of test.
|
||||||
|
|
@ -6109,14 +6109,17 @@ int handler::ha_write_row(uchar *buf)
|
|||||||
if (unlikely(error= binlog_log_row(table, 0, buf, log_func)))
|
if (unlikely(error= binlog_log_row(table, 0, buf, log_func)))
|
||||||
DBUG_RETURN(error); /* purecov: inspected */
|
DBUG_RETURN(error); /* purecov: inspected */
|
||||||
#ifdef WITH_WSREP
|
#ifdef WITH_WSREP
|
||||||
current_thd->wsrep_affected_rows++;
|
if (WSREP(current_thd))
|
||||||
if (wsrep_max_ws_rows &&
|
|
||||||
current_thd->wsrep_exec_mode != REPL_RECV &&
|
|
||||||
current_thd->wsrep_affected_rows > wsrep_max_ws_rows)
|
|
||||||
{
|
{
|
||||||
trans_rollback_stmt(current_thd) || trans_rollback(current_thd);
|
current_thd->wsrep_affected_rows++;
|
||||||
my_message(ER_ERROR_DURING_COMMIT, "wsrep_max_ws_rows exceeded", MYF(0));
|
if (wsrep_max_ws_rows &&
|
||||||
DBUG_RETURN(ER_ERROR_DURING_COMMIT);
|
current_thd->wsrep_exec_mode != REPL_RECV &&
|
||||||
|
current_thd->wsrep_affected_rows > wsrep_max_ws_rows)
|
||||||
|
{
|
||||||
|
trans_rollback_stmt(current_thd) || trans_rollback(current_thd);
|
||||||
|
my_message(ER_ERROR_DURING_COMMIT, "wsrep_max_ws_rows exceeded", MYF(0));
|
||||||
|
DBUG_RETURN(ER_ERROR_DURING_COMMIT);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#endif /* WITH_WSREP */
|
#endif /* WITH_WSREP */
|
||||||
|
|
||||||
@ -6153,14 +6156,17 @@ int handler::ha_update_row(const uchar *old_data, uchar *new_data)
|
|||||||
if (unlikely(error= binlog_log_row(table, old_data, new_data, log_func)))
|
if (unlikely(error= binlog_log_row(table, old_data, new_data, log_func)))
|
||||||
return error;
|
return error;
|
||||||
#ifdef WITH_WSREP
|
#ifdef WITH_WSREP
|
||||||
current_thd->wsrep_affected_rows++;
|
if (WSREP(current_thd))
|
||||||
if (wsrep_max_ws_rows &&
|
|
||||||
current_thd->wsrep_exec_mode != REPL_RECV &&
|
|
||||||
current_thd->wsrep_affected_rows > wsrep_max_ws_rows)
|
|
||||||
{
|
{
|
||||||
trans_rollback_stmt(current_thd) || trans_rollback(current_thd);
|
current_thd->wsrep_affected_rows++;
|
||||||
my_message(ER_ERROR_DURING_COMMIT, "wsrep_max_ws_rows exceeded", MYF(0));
|
if (wsrep_max_ws_rows &&
|
||||||
return ER_ERROR_DURING_COMMIT;
|
current_thd->wsrep_exec_mode != REPL_RECV &&
|
||||||
|
current_thd->wsrep_affected_rows > wsrep_max_ws_rows)
|
||||||
|
{
|
||||||
|
trans_rollback_stmt(current_thd) || trans_rollback(current_thd);
|
||||||
|
my_message(ER_ERROR_DURING_COMMIT, "wsrep_max_ws_rows exceeded", MYF(0));
|
||||||
|
return ER_ERROR_DURING_COMMIT;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#endif /* WITH_WSREP */
|
#endif /* WITH_WSREP */
|
||||||
return 0;
|
return 0;
|
||||||
@ -6191,14 +6197,17 @@ int handler::ha_delete_row(const uchar *buf)
|
|||||||
if (unlikely(error= binlog_log_row(table, buf, 0, log_func)))
|
if (unlikely(error= binlog_log_row(table, buf, 0, log_func)))
|
||||||
return error;
|
return error;
|
||||||
#ifdef WITH_WSREP
|
#ifdef WITH_WSREP
|
||||||
current_thd->wsrep_affected_rows++;
|
if (WSREP(current_thd))
|
||||||
if (wsrep_max_ws_rows &&
|
|
||||||
current_thd->wsrep_exec_mode != REPL_RECV &&
|
|
||||||
current_thd->wsrep_affected_rows > wsrep_max_ws_rows)
|
|
||||||
{
|
{
|
||||||
trans_rollback_stmt(current_thd) || trans_rollback(current_thd);
|
current_thd->wsrep_affected_rows++;
|
||||||
my_message(ER_ERROR_DURING_COMMIT, "wsrep_max_ws_rows exceeded", MYF(0));
|
if (wsrep_max_ws_rows &&
|
||||||
return ER_ERROR_DURING_COMMIT;
|
current_thd->wsrep_exec_mode != REPL_RECV &&
|
||||||
|
current_thd->wsrep_affected_rows > wsrep_max_ws_rows)
|
||||||
|
{
|
||||||
|
trans_rollback_stmt(current_thd) || trans_rollback(current_thd);
|
||||||
|
my_message(ER_ERROR_DURING_COMMIT, "wsrep_max_ws_rows exceeded", MYF(0));
|
||||||
|
return ER_ERROR_DURING_COMMIT;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#endif /* WITH_WSREP */
|
#endif /* WITH_WSREP */
|
||||||
return 0;
|
return 0;
|
||||||
|
Reference in New Issue
Block a user