53#define DEFAULT_CONNECT_RETRY 60
140#ifdef HAVE_PSI_INTERFACE
210 }
else if (user_arg) {
249 bool get_password(
char *password_arg,
size_t *password_arg_size);
643 uint param_id,
const char *param_channel);
Contains the classes representing events occurring in the replication stream.
This has the functionality of mysql_rwlock_t, with two differences:
Definition: rpl_gtid.h:309
void assert_some_lock() const
Assert that some thread holds either the read or the write lock.
Definition: rpl_gtid.h:546
void unlock()
Release the lock (whether it is a write or read lock).
Definition: rpl_gtid.h:480
void assert_some_wrlock() const
Assert that some thread holds the write lock.
Definition: rpl_gtid.h:550
Stores information to monitor a transaction during the different replication stages.
Definition: rpl_gtid.h:1311
const Gtid * get_processing_trx_gtid()
Returns the GTID of the processing_trx.
Definition: rpl_gtid_misc.cc:526
void clear()
Clear all monitoring information.
Definition: rpl_gtid_misc.cc:420
void finish()
Sets the final information, copy processing info to last_processed and clears processing info.
Definition: rpl_gtid_misc.cc:487
void start(Gtid gtid_arg, ulonglong original_ts_arg, ulonglong immediate_ts_arg, bool skipped_arg=false)
Sets the initial monitoring information.
Definition: rpl_gtid_misc.cc:447
bool is_processing_trx_set()
Returns true if the processing_trx is set, false otherwise.
Definition: rpl_gtid_misc.cc:517
void clear_processing_trx()
Clear only the processing_trx monitoring info.
Definition: rpl_gtid_misc.cc:427
mysql_mutex_t * get_log_lock()
Definition: binlog.h:954
static const uint * get_table_pk_field_indexes()
Returns an array with the expected column numbers of the primary key fields of the table repository.
Definition: rpl_mi.cc:445
Gtid_monitoring_info * gtid_monitoring_info
Information on the current and last queued transactions.
Definition: rpl_mi.h:138
size_t get_user_size() const
Returns user's size name.
Definition: rpl_mi.h:219
void set_password(const char *password_arg)
Stores either user's password in the master.info repository when CHANGE MASTER is executed or user's ...
Definition: rpl_mi.cc:719
bool start_user_configured
If true, USER/PASSWORD was specified when running START SLAVE.
Definition: rpl_mi.h:110
char network_namespace[NAME_LEN]
Definition: rpl_mi.h:335
bool m_gtid_only_mode
Is the replica working in GTID only mode, meaning it does not persist position related information wh...
Definition: rpl_mi.h:806
bool is_rotate_requested()
Checks whether or not there is a request for rotating the underlying relay log.
Definition: rpl_mi.cc:304
Relay_log_info * rli
Definition: rpl_mi.h:299
void end_info()
Definition: rpl_mi.cc:335
bool is_gtid_only_mode() const
Returns if gtid_only is enabled or not.
Definition: rpl_mi.cc:814
void set_master_log_pos(ulonglong log_pos)
Definition: rpl_mi.h:465
binary_log::enum_binlog_checksum_alg checksum_alg_before_fd
Definition: rpl_mi.h:326
char public_key_path[FN_REFLEN]
Definition: rpl_mi.h:293
char start_plugin_auth[FN_REFLEN+1]
Stores the authentication plugin specified when running START SLAVE.
Definition: rpl_mi.h:130
int mi_init_info()
Creates or reads information from the repository, initializing the Master_info.
Definition: rpl_mi.cc:405
void inc_reference()
Increase the reference count to prohibit deleting a channel.
Definition: rpl_mi.h:718
void increment_failover_list_position()
Increment current position, so next failover source can be selected on failure.
Definition: rpl_mi.h:549
long clock_diff_with_master
Definition: rpl_mi.h:312
char master_uuid[UUID_LENGTH+1]
Definition: rpl_mi.h:328
char start_password[MAX_PASSWORD_LENGTH+1]
Password specified when running START SLAVE.
Definition: rpl_mi.h:126
void set_plugin_auth(const char *src)
Stores the DEFAULT_AUTH defined by START SLAVE.
Definition: rpl_mi.h:269
void set_receiver_position_info_invalid(bool invalid)
Marks the receiver position information (master_log_name, master_log_pos) as being invalid or not.
Definition: rpl_mi.cc:802
Gtid_monitoring_info * get_gtid_monitoring_info()
Definition: rpl_mi.h:367
void set_master_log_name(const char *log_file_name)
Definition: rpl_mi.h:462
static uint get_channel_field_num()
returns the column number of a channel in the TABLE repository.
Definition: rpl_mi.cc:440
void reset_network_error()
Resets m_network_error to false.
Definition: rpl_mi.h:569
const char * get_for_channel_str(bool upper_case=false) const override
Definition: rpl_mi.h:614
const char * get_user() const
If an user was specified when running START SLAVE, this function returns such user.
Definition: rpl_mi.h:228
static const char ** get_table_pk_field_names()
Returns an array with the expected column names of the primary key fields of the table repository.
NET_SERVER server_extn
Definition: rpl_mi.h:348
bool set_info_search_keys(Rpl_info_handler *to) override
To search in the slave repositories, each slave info object (mi, rli or worker) should use a primary ...
Definition: rpl_mi.cc:676
void set_source_connection_auto_failover()
Enable Asynchronous Replication Connection Failover feature.
Definition: rpl_mi.h:520
my_off_t master_log_pos
Definition: rpl_mi.h:449
Checkable_rwlock * m_channel_lock
Definition: rpl_mi.h:672
void set_user(const char *user_arg)
Sets either user's name in the master.info repository when CHANGE MASTER is executed or user's name u...
Definition: rpl_mi.h:207
void request_rotate(THD *thd)
Sets the flag that indicates that a relay log rotation has been requested.
Definition: rpl_mi.cc:263
char compression_algorithm[COMPRESSION_ALGORITHM_NAME_BUFFER_SIZE]
Definition: rpl_mi.h:346
bool is_source_connection_auto_failover()
Checks if Asynchronous Replication Connection Failover feature is enabled.
Definition: rpl_mi.h:513
const char * get_start_plugin_dir()
Returns the PLUGIN_DIR defined by START SLAVE.
Definition: rpl_mi.h:265
bool is_set_network_namespace() const
Definition: rpl_mi.h:337
void reset_failover_list_position()
Reset current position to 0, when new failover source list is fetched.
Definition: rpl_mi.h:543
void clear_gtid_monitoring_info(bool need_lock=false)
Clears all GTID monitoring info.
Definition: rpl_mi.h:420
uint connect_retry
Definition: rpl_mi.h:301
bool is_network_error()
Checks if network error has occurred.
Definition: rpl_mi.h:557
char for_channel_uppercase_str[CHANNEL_NAME_LENGTH+31]
Definition: rpl_mi.h:362
bool auto_position
Definition: rpl_mi.h:625
void clear_rotate_requests()
Clears the flag that indicates that a relay log rotation has been requested and notifies requester th...
Definition: rpl_mi.cc:283
bool ssl
Definition: rpl_mi.h:279
void set_gtid_only_mode(bool gtid_only_mode)
Enable or disable the gtid_only mode.
Definition: rpl_mi.cc:810
uint m_failover_list_position
Definition: rpl_mi.h:627
void channel_rdlock()
Acquire the channel read lock.
Definition: rpl_mi.cc:755
char ssl_capath[FN_REFLEN]
Definition: rpl_mi.h:280
void reset_start_info()
Cleans in-memory password defined by START SLAVE.
Definition: rpl_mi.cc:746
std::pair< bool, std::string > tls_ciphersuites
Definition: rpl_mi.h:291
Replication_transaction_boundary_parser transaction_parser
Definition: rpl_mi.h:658
void set_auto_position(bool auto_position_param)
Definition: rpl_mi.h:502
static bool is_configured(Master_info *mi)
Definition: rpl_mi.h:104
bool get_password(char *password_arg, size_t *password_arg_size)
Returns either user's password in the master.info repository or user's password used in START SLAVE.
Definition: rpl_mi.cc:730
void set_mi_description_event(Format_description_log_event *fdle)
Definition: rpl_mi.h:606
Format_description_log_event * get_mi_description_event()
Definition: rpl_mi.h:602
void dec_reference()
Decrease the reference count.
Definition: rpl_mi.h:724
char master_log_name[FN_REFLEN]
Definition: rpl_mi.h:448
bool is_ignore_server_ids_configured()
This member function shall return true if there are server ids configured to be ignored.
Definition: rpl_mi.cc:781
void channel_wrlock()
Acquire the channel write lock.
Definition: rpl_mi.cc:760
void update_flushed_relay_log_info()
Sync flushed_relay_log_info with current relay log coordinates.
Definition: rpl_mi.cc:785
ulonglong last_heartbeat
Definition: rpl_mi.h:316
bool read_info(Rpl_info_handler *from) override
Definition: rpl_mi.cc:457
bool ssl_verify_server_cert
Definition: rpl_mi.h:294
uint32 file_id
Definition: rpl_mi.h:298
int flush_info(bool force=false)
Store the master file and position where the slave's I/O thread are in the relay log.
Definition: rpl_mi.cc:364
bool m_network_error
Definition: rpl_mi.h:628
void wait_until_no_reference(THD *thd)
It mush be called before deleting a channel and protected by channel_map_lock.wrlock().
Definition: rpl_mi.cc:770
std::atomic< int32 > atomic_references
Definition: rpl_mi.h:675
static void set_nullable_fields(MY_BITMAP *nullable_fields)
Sets bits for columns that are allowed to be NULL.
Definition: rpl_mi.cc:449
bool reset
Definition: rpl_mi.h:735
void channel_unlock()
Release the channel lock (whether it is a write or read lock).
Definition: rpl_mi.h:697
PSI_mutex_key * key_info_rotate_cond
PSI key for the rotate_cond
Definition: rpl_mi.h:148
LOG_INFO flushed_relay_log_info
Definition: rpl_mi.h:799
ulong master_id
Definition: rpl_mi.h:320
void set_relay_log_info(Relay_log_info *info)
Definition: rpl_mi.cc:399
std::string m_uuid_from_host
Definition: rpl_mi.h:818
char ssl_key[FN_REFLEN]
Definition: rpl_mi.h:281
bool m_is_receiver_position_info_invalid
Are positions invalid.
Definition: rpl_mi.h:812
const char * get_io_rpl_log_name()
Definition: rpl_mi.h:469
const Gtid * get_queueing_trx_gtid()
Definition: rpl_mi.h:402
PSI_mutex_key * key_info_rotate_lock
PSI key for the rotate_lock
Definition: rpl_mi.h:144
MYSQL * mysql
Definition: rpl_mi.h:297
ulonglong received_heartbeats
Definition: rpl_mi.h:314
char host[HOSTNAME_LENGTH+1]
Host name or ip address stored in the master.info.
Definition: rpl_mi.h:94
char user[USERNAME_LENGTH+1]
User's name stored in the master.info.
Definition: rpl_mi.h:114
const char * get_master_log_name_info() const
Definition: rpl_mi.h:453
char ssl_crl[FN_REFLEN]
Definition: rpl_mi.h:292
char ssl_cipher[FN_REFLEN]
Definition: rpl_mi.h:281
char ssl_ca[FN_REFLEN]
Definition: rpl_mi.h:280
bool is_start_plugin_auth_configured() const
Returns if DEFAULT_AUTH was specified when running START SLAVE.
Definition: rpl_mi.h:180
uint get_failover_list_position()
Return current position in the Failover source list for the Asynchronous Replication Connection Failo...
Definition: rpl_mi.h:538
Master_info(PSI_mutex_key *param_key_info_run_lock, PSI_mutex_key *param_key_info_data_lock, PSI_mutex_key *param_key_info_sleep_lock, PSI_mutex_key *param_key_info_thd_lock, PSI_mutex_key *param_key_info_rotate_lock, PSI_mutex_key *param_key_info_data_cond, PSI_mutex_key *param_key_info_start_cond, PSI_mutex_key *param_key_info_stop_cond, PSI_mutex_key *param_key_info_sleep_cond, PSI_mutex_key *param_key_info_rotate_cond, uint param_id, const char *param_channel)
Definition: rpl_mi.cc:158
void channel_assert_some_wrlock() const
Assert that some thread holds the write lock.
Definition: rpl_mi.h:709
char tls_version[FN_REFLEN]
Definition: rpl_mi.h:282
char bind_addr[HOSTNAME_LENGTH+1]
Definition: rpl_mi.h:329
mysql_cond_t rotate_cond
Waiting condition that will block the process/thread requesting a relay log rotation in the middle of...
Definition: rpl_mi.h:161
void set_start_user_configured(bool config)
Defines that USER/PASSWORD was specified or not when running START SLAVE.
Definition: rpl_mi.h:197
ulonglong get_master_log_pos() const
Definition: rpl_mi.h:457
Server_ids * ignore_server_ids
Definition: rpl_mi.h:318
bool is_auto_position()
Definition: rpl_mi.h:500
bool is_start_user_configured() const
Returns if USER/PASSWORD was specified when running START SLAVE.
Definition: rpl_mi.h:174
char for_channel_str[CHANNEL_NAME_LENGTH+31]
Definition: rpl_mi.h:361
uint m_uuid_from_port
Definition: rpl_mi.h:823
~Master_info() override
Definition: rpl_mi.cc:246
char ssl_crlpath[FN_REFLEN]
Definition: rpl_mi.h:292
char start_user[USERNAME_LENGTH+1]
User specified when running START SLAVE.
Definition: rpl_mi.h:122
bool is_receiver_position_info_invalid() const
Returns if receiver position information is valid or invalid.
Definition: rpl_mi.cc:806
bool shall_ignore_server_id(ulong s_id)
Reports if the s_id server has been configured to ignore events it generates with.
Definition: rpl_mi.cc:321
const char * network_namespace_str() const
Definition: rpl_mi.h:339
void channel_assert_some_lock() const
Assert that some thread holds either the read or the write lock.
Definition: rpl_mi.h:702
ulong retry_count
Definition: rpl_mi.h:327
bool write_info(Rpl_info_handler *to) override
Definition: rpl_mi.cc:684
void clear_queueing_trx(bool need_lock=false)
Clears the processing_trx monitoring info.
Definition: rpl_mi.h:411
void set_network_error()
Sets m_network_error to true.
Definition: rpl_mi.h:564
void finished_queueing()
When the receiver thread finishes queueing a transaction, that timestamp is recorded and the informat...
Definition: rpl_mi.h:389
char start_plugin_dir[FN_REFLEN+1]
Stores the authentication plugin directory specified when running START SLAVE.
Definition: rpl_mi.h:135
int zstd_compression_level
Definition: rpl_mi.h:347
Master_info(const Master_info &info)
char ssl_cert[FN_REFLEN]
Definition: rpl_mi.h:280
std::atomic< bool > rotate_requested
If a rotate was requested while the relay log was in a transaction.
Definition: rpl_mi.h:165
mysql_mutex_t rotate_lock
Lock to protect from rotating the relay log when in the middle of a transaction.
Definition: rpl_mi.h:154
bool m_source_connection_auto_failover
Definition: rpl_mi.h:626
bool get_public_key
Definition: rpl_mi.h:295
ulonglong get_master_log_pos_info() const
Definition: rpl_mi.h:458
void started_queueing(Gtid gtid_arg, ulonglong original_ts_arg, ulonglong immediate_ts_arg)
Stores the details of the transaction the receiver thread has just started queueing.
Definition: rpl_mi.h:379
float heartbeat_period
Definition: rpl_mi.h:313
static size_t get_number_info_mi_fields()
Definition: rpl_mi.cc:436
Master_info & operator=(const Master_info &info)
uint port
Definition: rpl_mi.h:300
bool is_queueing_trx()
Definition: rpl_mi.h:394
void get_flushed_relay_log_info(LOG_INFO *linfo)
Collect relay log coordinates (file name and position) that related to the last Master_info master co...
Definition: rpl_mi.cc:796
int channel_trywrlock()
Try to acquire the write lock, and fail if it cannot be immediately granted.
Definition: rpl_mi.cc:765
const char * get_master_log_name() const
Definition: rpl_mi.h:452
Format_description_log_event * mi_description_event
Format_description_log_event for events received from the master by the IO thread and written to the ...
Definition: rpl_mi.h:599
bool is_start_plugin_dir_configured() const
Returns if PLUGIN_DIR was specified when running START SLAVE.
Definition: rpl_mi.h:188
void init_master_log_pos()
Definition: rpl_mi.cc:326
void set_plugin_dir(const char *src)
Stores the DEFAULT_AUTH defined by START SLAVE.
Definition: rpl_mi.h:275
char password[MAX_PASSWORD_LENGTH+1]
User's password stored in the master.info.
Definition: rpl_mi.h:118
void unset_source_connection_auto_failover()
Disable Asynchronous Replication Connection Failover feature.
Definition: rpl_mi.h:527
const char * get_start_plugin_auth()
Returns the DEFAULT_AUTH defined by START SLAVE.
Definition: rpl_mi.h:259
Definition: rpl_rli.h:203
MYSQL_BIN_LOG relay_log
Definition: rpl_rli.h:332
This is the class for verifying transaction boundaries in a replication event stream.
Definition: rpl_trx_boundary_parser.h:51
Definition: rpl_info_factory.h:44
Definition: rpl_info_handler.h:58
Definition: rpl_info.h:43
mysql_mutex_t data_lock
Definition: rpl_info.h:58
Definition: dynamic_ids.h:33
For each client connection we create a separate thread with THD serving as a thread/connection descri...
Definition: sql_lexer_thd.h:34
#define mysql_mutex_lock(M)
Definition: mysql_mutex.h:50
#define mysql_mutex_unlock(M)
Definition: mysql_mutex.h:57
#define COMPRESSION_ALGORITHM_NAME_BUFFER_SIZE
Definition: compression.h:42
unsigned int PSI_mutex_key
Instrumented mutex key.
Definition: psi_mutex_bits.h:52
#define mysql_mutex_assert_owner(M)
Wrapper, to use safe_mutex_assert_owner with instrumented mutexes.
Definition: mysql_mutex.h:112
std::string log_file_name(const Log_files_context &ctx, Log_file_id file_id)
Provides name of the log file with the given file id, e.g.
Definition: log0files_io.cc:716
Binary log event definitions.
char * strmake(char *dst, const char *src, size_t length)
Definition: strmake.cc:43
static constexpr int HOSTNAME_LENGTH
Definition: my_hostname.h:43
Some integer typedefs for easier portability.
unsigned long long int ulonglong
Definition: my_inttypes.h:56
ulonglong my_off_t
Definition: my_inttypes.h:72
uint32_t uint32
Definition: my_inttypes.h:67
Common #defines and includes for file and socket I/O.
#define FN_REFLEN
Definition: my_io.h:83
Defines various enable/disable and HAVE_ macros related to the performance schema instrumentation sys...
#define HAVE_PSI_INTERFACE
Definition: my_psi_config.h:39
Common definition between mysql server & client.
#define NAME_LEN
Definition: mysql_com.h:67
#define USERNAME_LENGTH
Definition: mysql_com.h:69
enum_binlog_checksum_alg
Enumeration spcifying checksum algorithm used to encode a binary log event.
Definition: binlog_event.h:440
Instrumentation helpers for mutexes.
Instrumentation helpers for mutexes.
#define CHANNEL_NAME_LENGTH
Definition: rpl_info.h:41
Replication transaction boundary parser.
File containing constants that can be used throughout the server.
constexpr const size_t UUID_LENGTH
Definition: sql_const.h:263
TODO: Move this structure to libbinlogevents/include/control_events.h when we start using C++11.
Definition: rpl_gtid.h:1066
Definition: my_bitmap.h:43
Definition: mysql_com_server.h:59
An instrumented cond structure.
Definition: mysql_cond_bits.h:50
An instrumented mutex structure.
Definition: mysql_mutex_bits.h:50
Include file for Sun RPC to compile out of the box.
unsigned int uint
Definition: uca9-dump.cc:75
#define MAX_PASSWORD_LENGTH
Definition: validate_password.cc:64