MySQL 8.4.0
Source Code Documentation
semisync_source_plugin.cc File Reference
#include <stddef.h>
#include <sys/types.h>
#include "my_inttypes.h"
#include "my_macros.h"
#include "my_psi_config.h"
#include "mysql/psi/mysql_memory.h"
#include "mysql/psi/mysql_stage.h"
#include "nulls.h"
#include "plugin/semisync/semisync_source.h"
#include "plugin/semisync/semisync_source_ack_receiver.h"
#include "sql/current_thd.h"
#include "sql/derror.h"
#include "sql/protocol_classic.h"
#include "sql/raii/sentry.h"
#include "sql/sql_class.h"
#include "sql/sql_lex.h"
#include "typelib.h"

Macros

#define SOURCE_NAME   "source"
 
#define REPLICA_NAME   "replica"
 
#define SEMI_SYNC_PLUGIN_NAME   "rpl_semi_sync_source"
 
#define OTHER_SEMI_SYNC_PLUGIN_NAME   "rpl_semi_sync_master"
 
#define WAIT_NO_REPLICA_NAME   wait_no_replica
 
#define WAIT_FOR_REPLICA_COUNT_NAME   wait_for_replica_count
 
#define STATUS_VAR_PREFIX   "Rpl_semi_sync_source_"
 
#define DEFINE_WAIT_NO_REPLICA(NAME)
 
#define DEFINE_WAIT_FOR_REPLICA_COUNT(NAME)
 
#define SHOW_FNAME(name)   rpl_semi_sync_source_show_##name
 
#define DEF_SHOW_FUNC(name, show_type)
 

Enumerations

enum  enum_wait_point { WAIT_AFTER_SYNC , WAIT_AFTER_COMMIT }
 

Functions

static bool is_semi_sync_dump ()
 
static int repl_semi_report_binlog_update (Binlog_storage_param *, const char *log_file, my_off_t log_pos)
 
static int repl_semi_report_binlog_sync (Binlog_storage_param *, const char *log_file, my_off_t log_pos)
 
static int repl_semi_report_before_dml (Trans_param *, int &)
 
static int repl_semi_report_before_commit (Trans_param *)
 
static int repl_semi_report_before_rollback (Trans_param *)
 
static int repl_semi_report_commit (Trans_param *param)
 
static int repl_semi_report_rollback (Trans_param *param)
 
static int repl_semi_report_begin (Trans_param *, int &)
 
static int repl_semi_binlog_dump_start (Binlog_transmit_param *param, const char *log_file, my_off_t log_pos)
 
static int repl_semi_binlog_dump_end (Binlog_transmit_param *param)
 
static int repl_semi_reserve_header (Binlog_transmit_param *, unsigned char *header, unsigned long size, unsigned long *len)
 
static int repl_semi_before_send_event (Binlog_transmit_param *param, unsigned char *packet, unsigned long, const char *log_file, my_off_t log_pos)
 
static int repl_semi_after_send_event (Binlog_transmit_param *param, const char *event_buf, unsigned long, const char *skipped_log_file, my_off_t skipped_log_pos)
 
static int repl_semi_reset_master (Binlog_transmit_param *)
 
static void fix_rpl_semi_sync_source_timeout (MYSQL_THD thd, SYS_VAR *var, void *ptr, const void *val)
 
static void fix_rpl_semi_sync_source_trace_level (MYSQL_THD thd, SYS_VAR *var, void *ptr, const void *val)
 
static void fix_rpl_semi_sync_source_wait_no_replica (MYSQL_THD thd, SYS_VAR *var, void *ptr, const void *val)
 
static void fix_rpl_semi_sync_source_enabled (MYSQL_THD thd, SYS_VAR *var, void *ptr, const void *val)
 
static void fix_rpl_semi_sync_source_wait_for_replica_count (MYSQL_THD thd, SYS_VAR *var, void *ptr, const void *val)
 
static MYSQL_SYSVAR_BOOL (enabled, rpl_semi_sync_source_enabled, PLUGIN_VAR_OPCMDARG, "Enable semi-synchronous replication source (disabled by default). ", nullptr, &fix_rpl_semi_sync_source_enabled, 0)
 
static MYSQL_SYSVAR_ULONG (timeout, rpl_semi_sync_source_timeout, PLUGIN_VAR_OPCMDARG, "The timeout value (in milliseconds) for semi-synchronous replication on " "the source. If less than " "rpl_semi_sync_" SOURCE_NAME "_wait_for_" REPLICA_NAME "_count " "replicas have replied after this amount of time, switch to asynchronous " "replication.", nullptr, fix_rpl_semi_sync_source_timeout, 10000, 0, ~0UL, 1)
 
static MYSQL_SYSVAR_ULONG (trace_level, rpl_semi_sync_source_trace_level, PLUGIN_VAR_OPCMDARG, "The tracing level for semi-sync replication.", nullptr, &fix_rpl_semi_sync_source_trace_level, 32, 0, ~0UL, 1)
 
static MYSQL_SYSVAR_ENUM (wait_point, rpl_semi_sync_source_wait_point, PLUGIN_VAR_OPCMDARG, "The semisync source plugin can wait for replica replies at one of two " "alternative points: AFTER_SYNC or AFTER_COMMIT. " "AFTER_SYNC is the default value. AFTER_SYNC means that the " "source-side semisynchronous plugin waits for the replies just after it " "has synced the binary log file (or would have synced, but may have " "skipped it, when sync_binlog!=1), but before it has committed in the " "engine on the source side. Therefore, it guarantees that no other " "sessions on the source can see the effects of the transaction before " "the replica has received it. " "AFTER_COMMIT means that the source-side semisynchronous plugin " "waits for the replies from the replica just after the source has " "committed the transaction in the engine, and before it sends an ACK " "packet to the client session. Other sessions may see the effects of " "the transaction before it has been replicated, even though the current " "session is still waiting for the replies from the replica.", nullptr, nullptr, WAIT_AFTER_SYNC, &wait_point_typelib)
 
static void init_semisync_psi_keys (void)
 
static bool is_other_semi_sync_source_plugin_installed ()
 Return true if this is the new library and the old library is installed, or vice versa. More...
 
static int semi_sync_master_plugin_init (void *p)
 
static int semi_sync_source_plugin_check_uninstall (void *)
 
static int semi_sync_master_plugin_deinit (void *p)
 
 mysql_declare_plugin (semi_sync_master)
 

Variables

ReplSemiSyncMasterrepl_semisync = nullptr
 
Ack_receiverack_receiver = nullptr
 
static ulong rpl_semi_sync_source_wait_point = WAIT_AFTER_COMMIT
 
thread_local bool THR_RPL_SEMI_SYNC_DUMP = false
 
static const mysql_service_registry_treg_srv = nullptr
 
const mysql_service_log_builtins_tlog_bi = nullptr
 accessor built-ins More...
 
const mysql_service_log_builtins_string_tlog_bs = nullptr
 string built-ins More...
 
static const char * wait_point_names [] = {"AFTER_SYNC", "AFTER_COMMIT", NullS}
 
static TYPELIB wait_point_typelib
 
static SYS_VARsemi_sync_master_system_vars []
 
Trans_observer trans_observer
 
Binlog_storage_observer storage_observer
 
Binlog_transmit_observer transmit_observer
 
static SHOW_VAR semi_sync_master_status_vars []
 
PSI_mutex_key key_ss_mutex_LOCK_binlog_
 
PSI_mutex_key key_ss_mutex_Ack_receiver_mutex
 
static PSI_mutex_info all_semisync_mutexes []
 
PSI_cond_key key_ss_cond_COND_binlog_send_
 
PSI_cond_key key_ss_cond_Ack_receiver_cond
 
static PSI_cond_info all_semisync_conds []
 
PSI_thread_key key_ss_thread_Ack_receiver_thread
 
static PSI_thread_info all_semisync_threads []
 
PSI_stage_info stage_waiting_for_semi_sync_ack_from_replica
 
PSI_stage_info stage_waiting_for_semi_sync_replica
 
PSI_stage_info stage_reading_semi_sync_ack
 
PSI_memory_key key_ss_memory_TranxNodeAllocator_block
 
PSI_stage_infoall_semisync_stages []
 
PSI_memory_info all_semisync_memory []
 
struct Mysql_replication semi_sync_master_plugin
 
 mysql_declare_plugin_end
 

Macro Definition Documentation

◆ DEF_SHOW_FUNC

#define DEF_SHOW_FUNC (   name,
  show_type 
)
Value:
static int SHOW_FNAME(name)(MYSQL_THD, SHOW_VAR * var, char *) { \
repl_semisync->setExportStats(); \
var->type = show_type; \
var->value = (char *)&rpl_semi_sync_source_##name; \
return 0; \
}
#define MYSQL_THD
Definition: backup_page_tracker.h:38
#define SHOW_FNAME(name)
Definition: semisync_source_plugin.cc:433
case opt name
Definition: sslopt-case.h:29
SHOW STATUS Server status variable.
Definition: status_var.h:79

◆ DEFINE_WAIT_FOR_REPLICA_COUNT

#define DEFINE_WAIT_FOR_REPLICA_COUNT (   NAME)
Value:
NAME, /* name */ \
PLUGIN_VAR_OPCMDARG, /* flags */ \
"The number of replicas that need to acknowledge that they have " \
"received a transaction, before the transaction can complete on " \
"the source.", \
nullptr /* check */, \
1, 1, 65535, 1);
#define PLUGIN_VAR_OPCMDARG
Argument optional for cmd line.
Definition: system_variables_bits.h:70
#define MYSQL_SYSVAR_UINT(name, varname, opt, comment, check, update, def, min, max, blk)
Definition: plugin.h:357
unsigned int rpl_semi_sync_source_wait_for_replica_count
Definition: semisync_source.cc:64
static void fix_rpl_semi_sync_source_wait_for_replica_count(MYSQL_THD thd, SYS_VAR *var, void *ptr, const void *val)
Definition: semisync_source_plugin.cc:388
#define NAME(f)
Definition: xcom_base.cc:4159

◆ DEFINE_WAIT_NO_REPLICA

#define DEFINE_WAIT_NO_REPLICA (   NAME)
Value:
"If enabled, revert to asynchronous replication only if less " \
"than " \
"rpl_semi_sync_" SOURCE_NAME "_wait_for_" REPLICA_NAME \
"_count " \
"replicas have replied when " \
"rpl_semi_sync_" SOURCE_NAME \
"_timeout " \
"seconds have passed. If disabled, revert to asynchronous " \
"replication also as soon as the number of connected replicas " \
"drops below " \
"rpl_semi_sync_" SOURCE_NAME "_wait_for_" REPLICA_NAME "_count.", \
nullptr /*check*/, &fix_rpl_semi_sync_source_wait_no_replica /*update*/, \
1);
bool rpl_semi_sync_source_wait_no_replica
Definition: semisync_source.cc:63
static void fix_rpl_semi_sync_source_wait_no_replica(MYSQL_THD thd, SYS_VAR *var, void *ptr, const void *val)
Definition: semisync_source_plugin.cc:395
#define SOURCE_NAME
Definition: semisync_source_plugin.cc:54
static MYSQL_SYSVAR_BOOL(enabled, rpl_semi_sync_source_enabled, PLUGIN_VAR_OPCMDARG, "Enable semi-synchronous replication source (disabled by default). ", nullptr, &fix_rpl_semi_sync_source_enabled, 0)
#define REPLICA_NAME
Definition: semisync_source_plugin.cc:55

◆ OTHER_SEMI_SYNC_PLUGIN_NAME

#define OTHER_SEMI_SYNC_PLUGIN_NAME   "rpl_semi_sync_master"

◆ REPLICA_NAME

#define REPLICA_NAME   "replica"

◆ SEMI_SYNC_PLUGIN_NAME

#define SEMI_SYNC_PLUGIN_NAME   "rpl_semi_sync_source"

◆ SHOW_FNAME

#define SHOW_FNAME (   name)    rpl_semi_sync_source_show_##name

◆ SOURCE_NAME

#define SOURCE_NAME   "source"

◆ STATUS_VAR_PREFIX

#define STATUS_VAR_PREFIX   "Rpl_semi_sync_source_"

◆ WAIT_FOR_REPLICA_COUNT_NAME

#define WAIT_FOR_REPLICA_COUNT_NAME   wait_for_replica_count

◆ WAIT_NO_REPLICA_NAME

#define WAIT_NO_REPLICA_NAME   wait_no_replica

Enumeration Type Documentation

◆ enum_wait_point

Enumerator
WAIT_AFTER_SYNC 
WAIT_AFTER_COMMIT 

Function Documentation

◆ fix_rpl_semi_sync_source_enabled()

static void fix_rpl_semi_sync_source_enabled ( MYSQL_THD  thd,
SYS_VAR var,
void *  ptr,
const void *  val 
)
static

◆ fix_rpl_semi_sync_source_timeout()

static void fix_rpl_semi_sync_source_timeout ( MYSQL_THD  thd,
SYS_VAR var,
void *  ptr,
const void *  val 
)
static

◆ fix_rpl_semi_sync_source_trace_level()

static void fix_rpl_semi_sync_source_trace_level ( MYSQL_THD  thd,
SYS_VAR var,
void *  ptr,
const void *  val 
)
static

◆ fix_rpl_semi_sync_source_wait_for_replica_count()

static void fix_rpl_semi_sync_source_wait_for_replica_count ( MYSQL_THD  thd,
SYS_VAR var,
void *  ptr,
const void *  val 
)
static

◆ fix_rpl_semi_sync_source_wait_no_replica()

static void fix_rpl_semi_sync_source_wait_no_replica ( MYSQL_THD  thd,
SYS_VAR var,
void *  ptr,
const void *  val 
)
static

◆ init_semisync_psi_keys()

static void init_semisync_psi_keys ( void  )
static

◆ is_other_semi_sync_source_plugin_installed()

static bool is_other_semi_sync_source_plugin_installed ( )
static

Return true if this is the new library and the old library is installed, or vice versa.

Return values
trueThis is semisync_master, and semisync_source is installed already, or this is semisync_source, and semisync_master is installed already.
falseOtherwise

◆ is_semi_sync_dump()

static bool is_semi_sync_dump ( )
inlinestatic

◆ mysql_declare_plugin()

mysql_declare_plugin ( semi_sync_master  )

◆ MYSQL_SYSVAR_BOOL()

static MYSQL_SYSVAR_BOOL ( enabled  ,
rpl_semi_sync_source_enabled  ,
PLUGIN_VAR_OPCMDARG  ,
"Enable semi-synchronous replication source (disabled by default). "  ,
nullptr  ,
fix_rpl_semi_sync_source_enabled,
 
)
static

◆ MYSQL_SYSVAR_ENUM()

static MYSQL_SYSVAR_ENUM ( wait_point  ,
rpl_semi_sync_source_wait_point  ,
PLUGIN_VAR_OPCMDARG  ,
"The semisync source plugin can wait for replica replies at one of two " "alternative points: AFTER_SYNC or AFTER_COMMIT. " "AFTER_SYNC is the default value. AFTER_SYNC means that the " "source-side semisynchronous plugin waits for the replies just after it " "has synced the binary log file   or would have synced, but may have " "skipped it, when sync_binlog!=1,
but before it has committed in the " "engine on the source side.  Therefore,
it guarantees that no other " "sessions on the source can see the effects of the transaction before " "the replica has received it. " "AFTER_COMMIT means that the source-side semisynchronous plugin " "waits for the replies from the replica just after the source has " "committed the transaction in the  engine,
and before it sends an ACK " "packet to the client session. Other sessions may see the effects of " "the transaction before it has been  replicated,
even though the current " "session is still waiting for the replies from the replica."  ,
nullptr  ,
nullptr  ,
WAIT_AFTER_SYNC  ,
wait_point_typelib 
)
static

◆ MYSQL_SYSVAR_ULONG() [1/2]

static MYSQL_SYSVAR_ULONG ( timeout  ,
rpl_semi_sync_source_timeout  ,
PLUGIN_VAR_OPCMDARG  ,
"The timeout value (in milliseconds) for semi-synchronous replication on " "the source. If less than " "rpl_semi_sync_" SOURCE_NAME "_wait_for_" REPLICA_NAME "_count " "replicas have replied after this amount of  time,
switch to asynchronous " "replication."  ,
nullptr  ,
fix_rpl_semi_sync_source_timeout  ,
10000  ,
,
0UL,
 
)
static

◆ MYSQL_SYSVAR_ULONG() [2/2]

static MYSQL_SYSVAR_ULONG ( trace_level  ,
rpl_semi_sync_source_trace_level  ,
PLUGIN_VAR_OPCMDARG  ,
"The tracing level for semi-sync replication."  ,
nullptr  ,
fix_rpl_semi_sync_source_trace_level,
32  ,
,
0UL,
 
)
static

◆ repl_semi_after_send_event()

static int repl_semi_after_send_event ( Binlog_transmit_param param,
const char *  event_buf,
unsigned long  ,
const char *  skipped_log_file,
my_off_t  skipped_log_pos 
)
static

◆ repl_semi_before_send_event()

static int repl_semi_before_send_event ( Binlog_transmit_param param,
unsigned char *  packet,
unsigned long  ,
const char *  log_file,
my_off_t  log_pos 
)
static

◆ repl_semi_binlog_dump_end()

static int repl_semi_binlog_dump_end ( Binlog_transmit_param param)
static

◆ repl_semi_binlog_dump_start()

static int repl_semi_binlog_dump_start ( Binlog_transmit_param param,
const char *  log_file,
my_off_t  log_pos 
)
static

◆ repl_semi_report_before_commit()

static int repl_semi_report_before_commit ( Trans_param )
static

◆ repl_semi_report_before_dml()

static int repl_semi_report_before_dml ( Trans_param ,
int &   
)
static

◆ repl_semi_report_before_rollback()

static int repl_semi_report_before_rollback ( Trans_param )
static

◆ repl_semi_report_begin()

static int repl_semi_report_begin ( Trans_param ,
int &   
)
static

◆ repl_semi_report_binlog_sync()

static int repl_semi_report_binlog_sync ( Binlog_storage_param ,
const char *  log_file,
my_off_t  log_pos 
)
static

◆ repl_semi_report_binlog_update()

static int repl_semi_report_binlog_update ( Binlog_storage_param ,
const char *  log_file,
my_off_t  log_pos 
)
static

◆ repl_semi_report_commit()

static int repl_semi_report_commit ( Trans_param param)
static

◆ repl_semi_report_rollback()

static int repl_semi_report_rollback ( Trans_param param)
static

◆ repl_semi_reserve_header()

static int repl_semi_reserve_header ( Binlog_transmit_param ,
unsigned char *  header,
unsigned long  size,
unsigned long *  len 
)
static

◆ repl_semi_reset_master()

static int repl_semi_reset_master ( Binlog_transmit_param )
static

◆ semi_sync_master_plugin_deinit()

static int semi_sync_master_plugin_deinit ( void *  p)
static

◆ semi_sync_master_plugin_init()

static int semi_sync_master_plugin_init ( void *  p)
static

◆ semi_sync_source_plugin_check_uninstall()

static int semi_sync_source_plugin_check_uninstall ( void *  )
static

Variable Documentation

◆ ack_receiver

Ack_receiver* ack_receiver = nullptr

◆ all_semisync_conds

PSI_cond_info all_semisync_conds[]
static
Initial value:
= {
{&key_ss_cond_COND_binlog_send_, "COND_binlog_send_", 0, 0,
{&key_ss_cond_Ack_receiver_cond, "Ack_receiver::m_cond", 0, 0,
#define PSI_DOCUMENT_ME
Definition: component_common.h:29
PSI_cond_key key_ss_cond_COND_binlog_send_
Definition: semisync_source_plugin.cc:498
PSI_cond_key key_ss_cond_Ack_receiver_cond
Definition: semisync_source_plugin.cc:499

◆ all_semisync_memory

PSI_memory_info all_semisync_memory[]
Initial value:
= {
{&key_ss_memory_TranxNodeAllocator_block, "TranxNodeAllocator::block", 0, 0,
PSI_memory_key key_ss_memory_TranxNodeAllocator_block
Definition: semisync_source_plugin.cc:535

◆ all_semisync_mutexes

PSI_mutex_info all_semisync_mutexes[]
static
Initial value:
= {
{&key_ss_mutex_LOCK_binlog_, "LOCK_binlog_", 0, 0, PSI_DOCUMENT_ME},
{&key_ss_mutex_Ack_receiver_mutex, "Ack_receiver::m_mutex", 0, 0,
PSI_mutex_key key_ss_mutex_Ack_receiver_mutex
Definition: semisync_source_plugin.cc:491
PSI_mutex_key key_ss_mutex_LOCK_binlog_
Definition: semisync_source_plugin.cc:490

◆ all_semisync_stages

PSI_stage_info* all_semisync_stages[]
Initial value:
= {
PSI_stage_info stage_waiting_for_semi_sync_replica
Definition: semisync_source_plugin.cc:527
PSI_stage_info stage_reading_semi_sync_ack
Definition: semisync_source_plugin.cc:530
PSI_stage_info stage_waiting_for_semi_sync_ack_from_replica
Definition: semisync_source_plugin.cc:524

◆ all_semisync_threads

PSI_thread_info all_semisync_threads[]
static
Initial value:
= {
{&key_ss_thread_Ack_receiver_thread, "Ack_receiver", "ss_ack",
#define PSI_FLAG_SINGLETON
Singleton flag.
Definition: component_common.h:35
#define PSI_FLAG_THREAD_SYSTEM
System thread flag.
Definition: psi_bits.h:124
PSI_thread_key key_ss_thread_Ack_receiver_thread
Definition: semisync_source_plugin.cc:507

◆ key_ss_cond_Ack_receiver_cond

PSI_cond_key key_ss_cond_Ack_receiver_cond

◆ key_ss_cond_COND_binlog_send_

PSI_cond_key key_ss_cond_COND_binlog_send_

◆ key_ss_memory_TranxNodeAllocator_block

PSI_memory_key key_ss_memory_TranxNodeAllocator_block

◆ key_ss_mutex_Ack_receiver_mutex

PSI_mutex_key key_ss_mutex_Ack_receiver_mutex

◆ key_ss_mutex_LOCK_binlog_

PSI_mutex_key key_ss_mutex_LOCK_binlog_

◆ key_ss_thread_Ack_receiver_thread

PSI_thread_key key_ss_thread_Ack_receiver_thread

◆ log_bi

accessor built-ins

accessor built-ins

◆ log_bs

string built-ins

◆ mysql_declare_plugin_end

mysql_declare_plugin_end

◆ reg_srv

const mysql_service_registry_t* reg_srv = nullptr
static

◆ repl_semisync

ReplSemiSyncMaster* repl_semisync = nullptr

◆ rpl_semi_sync_source_wait_point

ulong rpl_semi_sync_source_wait_point = WAIT_AFTER_COMMIT
static

◆ semi_sync_master_plugin

struct Mysql_replication semi_sync_master_plugin
Initial value:
= {
#define MYSQL_REPLICATION_INTERFACE_VERSION
Definition: plugin.h:721

◆ semi_sync_master_status_vars

SHOW_VAR semi_sync_master_status_vars[]
static

◆ semi_sync_master_system_vars

SYS_VAR* semi_sync_master_system_vars[]
static
Initial value:
= {
MYSQL_SYSVAR(trace_level),
MYSQL_SYSVAR(wait_point),
nullptr,
}
#define MYSQL_SYSVAR(name)
Definition: plugin.h:255
static bool timeout(bool(*wait_condition)())
Timeout function.
Definition: log0meb.cc:498
required bool enabled
Definition: replication_group_member_actions.proto:33
#define WAIT_NO_REPLICA_NAME
Definition: semisync_source_plugin.cc:58
#define WAIT_FOR_REPLICA_COUNT_NAME
Definition: semisync_source_plugin.cc:59

◆ stage_reading_semi_sync_ack

PSI_stage_info stage_reading_semi_sync_ack
Initial value:
= {
0, "Reading semi-sync ACK from replica", 0, PSI_DOCUMENT_ME}

◆ stage_waiting_for_semi_sync_ack_from_replica

PSI_stage_info stage_waiting_for_semi_sync_ack_from_replica
Initial value:
= {
0, "Waiting for semi-sync ACK from replica", 0, PSI_DOCUMENT_ME}

◆ stage_waiting_for_semi_sync_replica

PSI_stage_info stage_waiting_for_semi_sync_replica
Initial value:
= {
0, "Waiting for semi-sync replica connection", 0, PSI_DOCUMENT_ME}

◆ storage_observer

Binlog_storage_observer storage_observer
Initial value:
= {
}
struct Binlog_storage_observer Binlog_storage_observer
Observe binlog logging storage.
static int repl_semi_report_binlog_sync(Binlog_storage_param *, const char *log_file, my_off_t log_pos)
Definition: semisync_source_plugin.cc:96
static int repl_semi_report_binlog_update(Binlog_storage_param *, const char *log_file, my_off_t log_pos)
Definition: semisync_source_plugin.cc:79

◆ THR_RPL_SEMI_SYNC_DUMP

thread_local bool THR_RPL_SEMI_SYNC_DUMP = false

◆ trans_observer

Trans_observer trans_observer
Initial value:
= {
sizeof(Trans_observer),
}
struct Trans_observer Trans_observer
Observes and extends transaction execution.
static int repl_semi_report_before_rollback(Trans_param *)
Definition: semisync_source_plugin.cc:108
static int repl_semi_report_commit(Trans_param *param)
Definition: semisync_source_plugin.cc:110
static int repl_semi_report_begin(Trans_param *, int &)
Definition: semisync_source_plugin.cc:125
static int repl_semi_report_before_dml(Trans_param *, int &)
Definition: semisync_source_plugin.cc:104
static int repl_semi_report_before_commit(Trans_param *)
Definition: semisync_source_plugin.cc:106
static int repl_semi_report_rollback(Trans_param *param)
Definition: semisync_source_plugin.cc:121

◆ transmit_observer

Binlog_transmit_observer transmit_observer
Initial value:
= {
}
struct Binlog_transmit_observer Binlog_transmit_observer
Observe and extends the binlog dumping thread.
static int repl_semi_before_send_event(Binlog_transmit_param *param, unsigned char *packet, unsigned long, const char *log_file, my_off_t log_pos)
Definition: semisync_source_plugin.cc:194
static int repl_semi_after_send_event(Binlog_transmit_param *param, const char *event_buf, unsigned long, const char *skipped_log_file, my_off_t skipped_log_pos)
Definition: semisync_source_plugin.cc:203
static int repl_semi_binlog_dump_start(Binlog_transmit_param *param, const char *log_file, my_off_t log_pos)
Definition: semisync_source_plugin.cc:127
static int repl_semi_reset_master(Binlog_transmit_param *)
Definition: semisync_source_plugin.cc:226
static int repl_semi_reserve_header(Binlog_transmit_param *, unsigned char *header, unsigned long size, unsigned long *len)
Definition: semisync_source_plugin.cc:186
static int repl_semi_binlog_dump_end(Binlog_transmit_param *param)
Definition: semisync_source_plugin.cc:171

◆ wait_point_names

const char* wait_point_names[] = {"AFTER_SYNC", "AFTER_COMMIT", NullS}
static

◆ wait_point_typelib

TYPELIB wait_point_typelib
static
Initial value:
wait_point_names, nullptr}
static const char * wait_point_names[]
Definition: semisync_source_plugin.cc:300
#define array_elements(A)
Definition: validate_password_imp.cc:48