mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
MDEV-13073 This part merges the Ali semisync related changes
and specifically the ack receiving functionality. Semisync is turned to be static instead of plugin so its functions are invoked at the same points as RUN_HOOKS. The RUN_HOOKS and the observer interface remain to be removed by later patch. Todo: React on killed status by repl_semisync_master.wait_after_sync(). Currently Repl_semi_sync_master::commit_trx does not check the killed status. There were few bugfixes found that are present in mysql and its unclear whether/how they are covered. Those include: Bug#15985893: GTID SKIPPED EVENTS ON MASTER CAUSE SEMI SYNC TIME-OUTS Bug#17932935 CALLING IS_SEMI_SYNC_SLAVE() IN EACH FUNCTION CALL HAS BAD PERFORMANCE Bug#20574628: SEMI-SYNC REPLICATION PERFORMANCE DEGRADES WITH A HIGH NUMBER OF THREADS
This commit is contained in:
@ -1569,7 +1569,8 @@ enum enum_thread_type
|
||||
SYSTEM_THREAD_EVENT_WORKER= 16,
|
||||
SYSTEM_THREAD_BINLOG_BACKGROUND= 32,
|
||||
SYSTEM_THREAD_SLAVE_BACKGROUND= 64,
|
||||
SYSTEM_THREAD_GENERIC= 128
|
||||
SYSTEM_THREAD_GENERIC= 128,
|
||||
SYSTEM_THREAD_SEMISYNC_MASTER_BACKGROUND= 256
|
||||
};
|
||||
|
||||
inline char const *
|
||||
@ -1585,6 +1586,7 @@ show_system_thread(enum_thread_type thread)
|
||||
RETURN_NAME_AS_STRING(SYSTEM_THREAD_EVENT_SCHEDULER);
|
||||
RETURN_NAME_AS_STRING(SYSTEM_THREAD_EVENT_WORKER);
|
||||
RETURN_NAME_AS_STRING(SYSTEM_THREAD_SLAVE_BACKGROUND);
|
||||
RETURN_NAME_AS_STRING(SYSTEM_THREAD_SEMISYNC_MASTER_BACKGROUND);
|
||||
default:
|
||||
sprintf(buf, "<UNKNOWN SYSTEM THREAD: %d>", thread);
|
||||
return buf;
|
||||
@ -2261,7 +2263,8 @@ public:
|
||||
|
||||
/* Needed by MariaDB semi sync replication */
|
||||
Trans_binlog_info *semisync_info;
|
||||
|
||||
/* If this is a semisync slave connection. */
|
||||
bool semi_sync_slave;
|
||||
ulonglong client_capabilities; /* What the client supports */
|
||||
ulong max_client_packet_length;
|
||||
|
||||
@ -3147,11 +3150,20 @@ public:
|
||||
/* Debug Sync facility. See debug_sync.cc. */
|
||||
struct st_debug_sync_control *debug_sync_control;
|
||||
#endif /* defined(ENABLED_DEBUG_SYNC) */
|
||||
THD(my_thread_id id, bool is_wsrep_applier= false);
|
||||
/**
|
||||
@param id thread identifier
|
||||
@param is_wsrep_applier thread type
|
||||
@param skip_lock instruct whether @c LOCK_global_system_variables
|
||||
is already locked, to not acquire it then.
|
||||
*/
|
||||
THD(my_thread_id id, bool is_wsrep_applier= false, bool skip_lock= false);
|
||||
|
||||
~THD();
|
||||
|
||||
void init(void);
|
||||
/**
|
||||
@param skip_lock instruct whether @c LOCK_global_system_variables
|
||||
is already locked, to not acquire it then.
|
||||
*/
|
||||
void init(bool skip_lock= false);
|
||||
/*
|
||||
Initialize memory roots necessary for query processing and (!)
|
||||
pre-allocate memory for it. We can't do that in THD constructor because
|
||||
|
Reference in New Issue
Block a user