mirror of
https://github.com/MariaDB/server.git
synced 2025-12-24 11:21:21 +03:00
comments about mutexes in replication.
Don't start the SQL slave thread with SQL_BIG_SELECTS; it's better to inhibate max_join_size instead.
This commit is contained in:
13
sql/slave.cc
13
sql/slave.cc
@@ -1991,13 +1991,12 @@ static int init_slave_thread(THD* thd, SLAVE_THD_TYPE thd_type)
|
||||
thd->priv_user = 0;
|
||||
thd->slave_thread = 1;
|
||||
thd->options = ((opt_log_slave_updates) ? OPTION_BIN_LOG:0) |
|
||||
OPTION_AUTO_IS_NULL |
|
||||
/*
|
||||
It's nonsense to constraint the slave threads with max_join_size; if a
|
||||
query succeeded on master, we HAVE to execute it.
|
||||
*/
|
||||
OPTION_BIG_SELECTS ;
|
||||
|
||||
OPTION_AUTO_IS_NULL;
|
||||
/*
|
||||
It's nonsense to constraint the slave threads with max_join_size; if a
|
||||
query succeeded on master, we HAVE to execute it.
|
||||
*/
|
||||
thd->variables.max_join_size= HA_POS_ERROR;
|
||||
thd->client_capabilities = CLIENT_LOCAL_FILES;
|
||||
thd->real_id=pthread_self();
|
||||
pthread_mutex_lock(&LOCK_thread_count);
|
||||
|
||||
24
sql/slave.h
24
sql/slave.h
@@ -24,6 +24,30 @@
|
||||
having to re-read the master updates.
|
||||
*/
|
||||
|
||||
/*
|
||||
MUTEXES in replication:
|
||||
|
||||
LOCK_active_mi: this is meant for multimaster, when we can switch from a
|
||||
master to another. It protects active_mi. We don't care of it for the moment,
|
||||
as active_mi never moves (it's created at startup and deleted at shutdown, and
|
||||
not changed: it always points to the same MASTER_INFO struct), because we
|
||||
don't have multimaster. So for the moment, mi does not move, and mi->rli does
|
||||
not either.
|
||||
|
||||
In MASTER_INFO: run_lock, data_lock
|
||||
run_lock protects all information about the run state: slave_running, and the
|
||||
existence of the I/O thread (to stop/start it, you need this mutex).
|
||||
data_lock protects some moving members of the struct: counters (log name,
|
||||
position) and relay log (MYSQL_LOG object).
|
||||
|
||||
In RELAY_LOG_INFO: run_lock, data_lock
|
||||
see MASTER_INFO
|
||||
|
||||
In MYSQL_LOG: LOCK_log, LOCK_index of the binlog and the relay log
|
||||
LOCK_log: when you write to it. LOCK_index: when you create/delete a binlog
|
||||
(so that you have to update the .index file).
|
||||
*/
|
||||
|
||||
extern ulong slave_net_timeout, master_retry_count;
|
||||
extern MY_BITMAP slave_error_mask;
|
||||
extern bool use_slave_mask;
|
||||
|
||||
Reference in New Issue
Block a user