mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
After merge fixes.
This commit is contained in:
130
sql/ha_innodb.cc
130
sql/ha_innodb.cc
@ -1769,25 +1769,6 @@ innobase_report_binlog_offset_and_commit(
|
||||
trx->mysql_log_file_name = log_file_name;
|
||||
trx->mysql_log_offset = (ib_longlong)end_offset;
|
||||
|
||||
#ifdef HAVE_REPLICATION
|
||||
if (thd->variables.sync_replication) {
|
||||
/* Let us store the binlog file name and the position, so that
|
||||
we know how long to wait for the binlog to the replicated to
|
||||
the slave in synchronous replication. */
|
||||
|
||||
if (trx->repl_wait_binlog_name == NULL) {
|
||||
|
||||
trx->repl_wait_binlog_name =
|
||||
(char*)mem_alloc_noninline(FN_REFLEN + 100);
|
||||
}
|
||||
|
||||
ut_a(strlen(log_file_name) < FN_REFLEN + 100);
|
||||
|
||||
strcpy(trx->repl_wait_binlog_name, log_file_name);
|
||||
|
||||
trx->repl_wait_binlog_pos = (ib_longlong)end_offset;
|
||||
}
|
||||
#endif /* HAVE_REPLICATION */
|
||||
trx->flush_log_later = TRUE;
|
||||
|
||||
innobase_commit(thd, TRUE);
|
||||
@ -1856,117 +1837,6 @@ innobase_commit_complete(
|
||||
trx_commit_complete_for_mysql(trx);
|
||||
}
|
||||
|
||||
#ifdef HAVE_REPLICATION
|
||||
if (thd->variables.sync_replication
|
||||
&& trx->repl_wait_binlog_name
|
||||
&& innobase_repl_state != 0) {
|
||||
|
||||
struct timespec abstime;
|
||||
int cmp;
|
||||
int ret;
|
||||
|
||||
/* In synchronous replication, let us wait until the MySQL
|
||||
replication has sent the relevant binlog segment to the
|
||||
replication slave. */
|
||||
|
||||
pthread_mutex_lock(&innobase_repl_cond_mutex);
|
||||
try_again:
|
||||
if (innobase_repl_state == 0) {
|
||||
|
||||
pthread_mutex_unlock(&innobase_repl_cond_mutex);
|
||||
|
||||
return(0);
|
||||
}
|
||||
|
||||
cmp = strcmp(innobase_repl_file_name,
|
||||
trx->repl_wait_binlog_name);
|
||||
if (cmp > 0
|
||||
|| (cmp == 0 && innobase_repl_pos
|
||||
>= (my_off_t)trx->repl_wait_binlog_pos)) {
|
||||
/* We have already sent the relevant binlog to the
|
||||
slave: no need to wait here */
|
||||
|
||||
pthread_mutex_unlock(&innobase_repl_cond_mutex);
|
||||
|
||||
/* printf("Binlog now sent\n"); */
|
||||
|
||||
return(0);
|
||||
}
|
||||
|
||||
/* Let us update the info about the minimum binlog position
|
||||
of waiting threads in the innobase_repl_... variables */
|
||||
|
||||
if (innobase_repl_wait_file_name_inited != 0) {
|
||||
cmp = strcmp(trx->repl_wait_binlog_name,
|
||||
innobase_repl_wait_file_name);
|
||||
if (cmp < 0
|
||||
|| (cmp == 0
|
||||
&& (my_off_t)trx->repl_wait_binlog_pos
|
||||
<= innobase_repl_wait_pos)) {
|
||||
/* This thd has an even lower position, let
|
||||
us update the minimum info */
|
||||
|
||||
strcpy(innobase_repl_wait_file_name,
|
||||
trx->repl_wait_binlog_name);
|
||||
|
||||
innobase_repl_wait_pos =
|
||||
trx->repl_wait_binlog_pos;
|
||||
}
|
||||
} else {
|
||||
strcpy(innobase_repl_wait_file_name,
|
||||
trx->repl_wait_binlog_name);
|
||||
|
||||
innobase_repl_wait_pos = trx->repl_wait_binlog_pos;
|
||||
|
||||
innobase_repl_wait_file_name_inited = 1;
|
||||
}
|
||||
set_timespec(abstime, thd->variables.sync_replication_timeout);
|
||||
|
||||
/* Let us suspend this thread to wait on the condition;
|
||||
when replication has progressed far enough, we will release
|
||||
these waiting threads. The following call
|
||||
pthread_cond_timedwait also atomically unlocks
|
||||
innobase_repl_cond_mutex. */
|
||||
|
||||
innobase_repl_n_wait_threads++;
|
||||
|
||||
/* printf("Waiting for binlog to be sent\n"); */
|
||||
|
||||
ret = pthread_cond_timedwait(&innobase_repl_cond,
|
||||
&innobase_repl_cond_mutex, &abstime);
|
||||
innobase_repl_n_wait_threads--;
|
||||
|
||||
if (ret != 0) {
|
||||
ut_print_timestamp(stderr);
|
||||
|
||||
sql_print_error("MySQL synchronous replication was "
|
||||
"not able to send the binlog to the "
|
||||
"slave within the timeout %lu. We "
|
||||
"assume that the slave has become "
|
||||
"inaccessible, and switch off "
|
||||
"synchronous replication until the "
|
||||
"communication to the slave works "
|
||||
"again. MySQL synchronous replication "
|
||||
"has sent binlog to the slave up to "
|
||||
"file %s, position %lu. This "
|
||||
"transaction needs it to be sent up "
|
||||
"to file %s, position %lu.",
|
||||
thd->variables.sync_replication_timeout,
|
||||
innobase_repl_file_name,
|
||||
(ulong) innobase_repl_pos,
|
||||
trx->repl_wait_binlog_name,
|
||||
(ulong) trx->repl_wait_binlog_pos);
|
||||
|
||||
innobase_repl_state = 0;
|
||||
|
||||
pthread_mutex_unlock(&innobase_repl_cond_mutex);
|
||||
|
||||
return(0);
|
||||
}
|
||||
|
||||
goto try_again;
|
||||
}
|
||||
#endif // HAVE_REPLICATION
|
||||
return(0);
|
||||
}
|
||||
|
||||
|
@ -316,9 +316,6 @@ int innobase_rollback_by_xid(
|
||||
XID *xid); /* in : X/Open XA Transaction Identification */
|
||||
|
||||
|
||||
int innobase_repl_report_sent_binlog(THD *thd, char *log_file_name,
|
||||
my_off_t end_offset);
|
||||
|
||||
/***********************************************************************
|
||||
Create a consistent view for a cursor based on current transaction
|
||||
which is created if the corresponding MySQL thread still lacks one.
|
||||
|
@ -6160,23 +6160,6 @@ The minimum value for this variable is 4096.",
|
||||
{"sync-frm", OPT_SYNC_FRM, "Sync .frm to disk on create. Enabled by default.",
|
||||
(gptr*) &opt_sync_frm, (gptr*) &opt_sync_frm, 0, GET_BOOL, NO_ARG, 1, 0,
|
||||
0, 0, 0, 0},
|
||||
#ifdef HAVE_REPLICATION
|
||||
{"sync-replication", OPT_SYNC_REPLICATION,
|
||||
"Enable synchronous replication.",
|
||||
(gptr*) &global_system_variables.sync_replication,
|
||||
(gptr*) &global_system_variables.sync_replication,
|
||||
0, GET_ULONG, REQUIRED_ARG, 0, 0, 1, 0, 1, 0},
|
||||
{"sync-replication-slave-id", OPT_SYNC_REPLICATION_SLAVE_ID,
|
||||
"Synchronous replication is wished for this slave.",
|
||||
(gptr*) &global_system_variables.sync_replication_slave_id,
|
||||
(gptr*) &global_system_variables.sync_replication_slave_id,
|
||||
0, GET_ULONG, REQUIRED_ARG, 0, 0, ~0L, 0, 1, 0},
|
||||
{"sync-replication-timeout", OPT_SYNC_REPLICATION_TIMEOUT,
|
||||
"Synchronous replication timeout.",
|
||||
(gptr*) &global_system_variables.sync_replication_timeout,
|
||||
(gptr*) &global_system_variables.sync_replication_timeout,
|
||||
0, GET_ULONG, REQUIRED_ARG, 10, 0, ~0L, 0, 1, 0},
|
||||
#endif /* HAVE_REPLICATION */
|
||||
{"table_cache", OPT_TABLE_OPEN_CACHE,
|
||||
"Deprecated; use --table_open_cache instead.",
|
||||
(gptr*) &table_cache_size, (gptr*) &table_cache_size, 0, GET_ULONG,
|
||||
|
@ -436,14 +436,6 @@ sys_var_thd_storage_engine sys_storage_engine("storage_engine",
|
||||
&SV::table_type);
|
||||
#ifdef HAVE_REPLICATION
|
||||
sys_var_sync_binlog_period sys_sync_binlog_period("sync_binlog", &sync_binlog_period);
|
||||
sys_var_thd_ulong sys_sync_replication("sync_replication",
|
||||
&SV::sync_replication);
|
||||
sys_var_thd_ulong sys_sync_replication_slave_id(
|
||||
"sync_replication_slave_id",
|
||||
&SV::sync_replication_slave_id);
|
||||
sys_var_thd_ulong sys_sync_replication_timeout(
|
||||
"sync_replication_timeout",
|
||||
&SV::sync_replication_timeout);
|
||||
#endif
|
||||
sys_var_bool_ptr sys_sync_frm("sync_frm", &opt_sync_frm);
|
||||
sys_var_long_ptr sys_table_def_size("table_definition_cache",
|
||||
@ -966,11 +958,6 @@ SHOW_VAR init_vars[]= {
|
||||
{sys_sync_binlog_period.name,(char*) &sys_sync_binlog_period, SHOW_SYS},
|
||||
#endif
|
||||
{sys_sync_frm.name, (char*) &sys_sync_frm, SHOW_SYS},
|
||||
#ifdef HAVE_REPLICATION
|
||||
{sys_sync_replication.name, (char*) &sys_sync_replication, SHOW_SYS},
|
||||
{sys_sync_replication_slave_id.name, (char*) &sys_sync_replication_slave_id,SHOW_SYS},
|
||||
{sys_sync_replication_timeout.name, (char*) &sys_sync_replication_timeout,SHOW_SYS},
|
||||
#endif
|
||||
#ifdef HAVE_TZNAME
|
||||
{"system_time_zone", system_time_zone, SHOW_CHAR},
|
||||
#endif
|
||||
|
@ -241,11 +241,6 @@ struct system_variables
|
||||
my_bool new_mode;
|
||||
my_bool query_cache_wlock_invalidate;
|
||||
my_bool engine_condition_pushdown;
|
||||
#ifdef HAVE_REPLICATION
|
||||
ulong sync_replication;
|
||||
ulong sync_replication_slave_id;
|
||||
ulong sync_replication_timeout;
|
||||
#endif /* HAVE_REPLICATION */
|
||||
my_bool innodb_table_locks;
|
||||
my_bool innodb_support_xa;
|
||||
my_bool ndb_force_send;
|
||||
|
Reference in New Issue
Block a user