mirror of
https://github.com/MariaDB/server.git
synced 2026-01-06 05:22:24 +03:00
Backport BUG#47298 Semisync: always wait until timeout if no semi-sync slave available
Add an option to control whether the master should keep waiting until timeout when it detected that there is no semi-sync slave available. The bool option 'rpl_semi_sync_master_wait_no_slave' is 1 by defalt, and will keep waiting until timeout. When set to 0, the master will switch to asynchronous replication immediately when no semi-sync slave is available.
This commit is contained in:
@@ -76,7 +76,7 @@ int repl_semi_binlog_dump_start(Binlog_transmit_param *param,
|
||||
/*
|
||||
Let's assume this semi-sync slave has already received all
|
||||
binlog events before the filename and position it requests.
|
||||
*/
|
||||
*/
|
||||
repl_semisync.reportReplyBinlog(param->server_id, log_file, log_pos);
|
||||
}
|
||||
sql_print_information("Start %s binlog_dump to slave (server_id: %d), pos(%s, %lu)",
|
||||
@@ -176,6 +176,13 @@ static MYSQL_SYSVAR_ULONG(timeout, rpl_semi_sync_master_timeout,
|
||||
fix_rpl_semi_sync_master_timeout, // update
|
||||
10000, 0, ~0L, 1);
|
||||
|
||||
static MYSQL_SYSVAR_BOOL(wait_no_slave, rpl_semi_sync_master_wait_no_slave,
|
||||
PLUGIN_VAR_OPCMDARG,
|
||||
"Wait until timeout when no semi-synchronous replication slave available (enabled by default). ",
|
||||
NULL, // check
|
||||
NULL, // update
|
||||
1);
|
||||
|
||||
static MYSQL_SYSVAR_ULONG(trace_level, rpl_semi_sync_master_trace_level,
|
||||
PLUGIN_VAR_OPCMDARG,
|
||||
"The tracing level for semi-sync replication.",
|
||||
@@ -186,6 +193,7 @@ static MYSQL_SYSVAR_ULONG(trace_level, rpl_semi_sync_master_trace_level,
|
||||
static SYS_VAR* semi_sync_master_system_vars[]= {
|
||||
MYSQL_SYSVAR(enabled),
|
||||
MYSQL_SYSVAR(timeout),
|
||||
MYSQL_SYSVAR(wait_no_slave),
|
||||
MYSQL_SYSVAR(trace_level),
|
||||
NULL,
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user