MySQL  8.0.21
源代码文档
验证者类别参考

#include < certifier.h >

验证者的继承图:
Certifier_interfaceCertifier_stats

公众成员职能

验证者 ()
虚拟 〜证明人 ()
整型 初始化ulonglong gtid_assignment_block_size
初始化验证者. 更多...
整型 终止 ()
终止验证者. 更多...
虚拟虚空 handle_view_change ()
处理验证者的视图更改. 更多...
虚拟int handle_certifier_data (const uchar * data,ulong len,const Gcs_member_identifier &gcs_member_id)
将来自读取器的数据包排队,以备将来处理. 更多...
rpl_gno certifyGtid_set *快照版本, std :: list <const char *> * write_set, bool generate_group_id,const char * member_uuid, Gtid_log_event * gle, bool local_transaction)
该成员函数应针对已通过认证测试的交易对项目集进行认证. 更多...
整型 get_group_stable_transactions_set_string (char ** buffer ,size_t * length)
以文本格式返回稳定集的事务,即已应用于所有组成员的事务集. 更多...
虚拟虚空 get_certification_info (std :: map <std :: string,std :: string> * cert_info)
检索当前的认证信息. 更多...
虚拟int set_certification_info (std :: map <std :: string,std :: string> * cert_info)
根据给定值设置认证信息. 更多...
乌龙 get_positive_certified ()
获取验证者进行的正面验证交易的数量. 更多...
乌龙 get_negative_certified ()
获取方法以获取通过负面认证的交易次数. 更多...
乌龙 get_certification_info_size ()
获取方法以检索认证数据库大小. 更多...
虚空 get_last_conflict_free_transaction (std :: string * value
获取方法以检索最后的无冲突事务. 更多...
size_t get_members_size ()
获取方法以检索成员的大小. 更多...
rpl_gno generate_view_change_group_gno ()
为视图更改日志事件生成组GNO. 更多...
整型 add_group_gtid_to_group_gtid_executedrpl_gno gno, bool local)
将给定的gno值添加到group_gtid_executed集中的公共方法,该集用于支持skip gtid功能. 更多...
整型 add_specified_gtid_to_group_gtid_exectedGtid_log_event * gle, bool local)
在group_gtid_executed集中添加给定GTID值的公共方法,用于支持skip gtid功能. 更多...
布尔 set_group_stable_transactions_setGtid_set * executed_gtid_set)
该成员函数应将事务添加到稳定集中. 更多...
size_t get_local_certified_gtid (std :: string&local_gtid_certified_string)
获取表示最后一个本地认证的GTID的字符串的方法. 更多...
虚空 enable_conflict_detection ()
启用冲突检测. 更多...
虚空 disable_conflict_detection ()
禁用冲突检测. 更多...
布尔 is_conflict_detection_enable ()
检查是否启用了冲突检测. 更多...
--Certifier_interface继承的公共成员函数
虚拟 〜Certifier_interface ()
--Certifier_stats继承的公共成员函数
虚拟 〜Certifier_stats ()

静态公共属性

静态const std :: string CERTIFICATION_INFO_ERROR_NAME
用于在View_change_log_event的认证信息中存储错误的密钥. 更多...

私人会员职能

整型 initialize_server_gtid_setbool get_server_gtid_retrieved = false
用服务器gtid执行集和应用程序检索的gtid设置值初始化group_gtid_executed gtid设置的方法. 更多...
虚空 compute_group_available_gtid_intervals ()
此函数从组UUID计算可用的GTID间隔,并将它们存储在group_available_gtid_intervals上. 更多...
Gtid_set :: Interval reserve_gtid_blocklonglong block_size)
该函数从group_available_gtid_intervals列表中保留了一部分GTID. 更多...
虚空 increment_parallel_applier_sequence_number布尔 update_parallel_applier_last_committed_global)
此函数更新并行的应用程序索引. 更多...
虚空 add_to_group_gtid_executed_internalrpl_sidno sidno, rpl_gno gno, bool local_transaction)
在group_gtid_executed集中添加给定gtid gno的内部方法. 更多...
rpl_gno get_group_next_available_gtid (const char * member_uuid)
此方法用于为正在执行的事务获取下一个有效的GNO. 更多...
rpl_gno get_group_next_available_gtid_candidaterpl_gno startrpl_gno end)const
生成当前交易的候选GNO. 更多...
布尔 is_initialized ()
虚空 clear_certification_info ()
虚空 clear_members ()
清除成员的方法. 更多...
布尔 add_item (const char * item, Gtid_set_ref * snapshot_version, int64 * item_previous_sequence_number)
将来自事务写入集的项目添加到认证数据库. 更多...
Gtid_set * get_certified_write_set_snapshot_version (const char * item)
查找与项目对应的snapshot_version. 更多...
整型 stable_set_handle ()
计算收到的所有集合之间的交集,以便我们在所有服务器上都具有已应用的事务. 更多...
虚空 垃圾收集 ()
从证明数据库中删除接收到的交易稳定集的交集. 更多...
虚空 clear_incoming ()
清除传入队列. 更多...
虚空 update_certified_transaction_countbool 结果bool local_transaction)

私人属性

布尔 已初始化
验证者已初始化. 更多...
rpl_sidno group_gtid_sid_map_group_sidno
变量,用于存储将使用group_uuid记录的事务使用的sidno. 更多...
t last_conflict_free_transaction
最后无冲突的交易标识. 更多...
认证信息 认证信息
认证数据库. 更多...
Sid_map * Certification_info_sid_map
乌龙 肯定证书
乌龙 negative_cert
int64 parallel_applier_last_committed_global
int64 parallel_applier_sequence_number
布尔 certifier_garbage_collection_block
布尔 same_member_message_discarded
mysql_mutex_t LOCK_certification_info
Checkable_rwlock * stable_gtid_set_lock
稳定的集合和垃圾收集器变量. 更多...
Sid_map * stable_sid_map
Gtid_set * stable_gtid_set
Synchronized_queue <数据 *> * 传入
std :: vector <std :: string> 成员
布尔 certifying_already_applied_transactions
Sid_map * group_gtid_sid_map
Gtid_set * group_gtid_exected
Gtid_set * group_gtid_extracted
Gtid_set包含从捐赠者的证明信息图中提取的gtid. 更多...
uint64 gtid_assignment_block_size
组GTID分配块大小. 更多...
std :: list < Gtid_set :: Interval > group_available_gtid_intervals
组中的免费GTID间隔列表. 更多...
std :: map <std :: string, Gtid_set :: Interval > member_gtids
扩展上述内容,以允许每个成员按块分配GTID. 更多...
乌龙 gtids_assigned_in_blocks_counter
t last_local_gtid
最近的本地已知GTID. 更多...
布尔 flict_detection_enable
在以下情况下执行冲突检测:1)组处于多主机模式; 2)组处于单主数据库模式,主数据库正在应用中继日志以及来自先前主数据库的事务. 更多...
mysql_mutex_t LOCK_成员
Certifier_broadcast_thread * broadcast_thread
广播线程. 更多...

静态私有属性

静态const std :: string GTID_EXTRACTED_NAME =" gtid_extracted"
用于存储对View_change_log_event的认证信息执行的group_gtid_execute的密钥. 更多...

构造函数和析构函数文档

验证者()

验证者::验证者

〜Certifier()

验证者::〜验证者
虚拟

会员功能文档

add_group_gtid_to_group_gtid_executed()

int验证者:: add_group_gtid_to_group_gtid_exected rpl_gno 侏儒
布尔 本地

将给定的gno值添加到group_gtid_executed集中的公共方法,该集用于支持skip gtid功能.

参量
[在] 地精 将被添加到group_gtid执行的GTID集的事务的gno. 用于此事务的sidno将为group_sidno. 此处的gno专门属于组UUID.
[在] 本地 如果gtid值是本地值或来自远程服务器
返回值
1个 添加期间发生错误.
0 成功.

add_item()

bool验证者:: add_item const char *
Gtid_set_ref * 快照版本
int64 * item_previous_sequence_number
私人的

将来自事务写入集的项目添加到认证数据库.

参量
[在] 项目 要添加到证书数据库的writeset中的项目.
[在] 快照版本 修改上述项目的传入事务的快照版本.
[出] item_previous_sequence_number 此项的上一个并行申请者序列号.
返回值
成功添加到地图. 否则为真.

add_specified_gtid_to_group_gtid_executed()

int验证者:: add_specified_gtid_to_group_gtid_exected Gtid_log_event * GLE,
布尔 本地

在group_gtid_executed集中添加给定GTID值的公共方法,用于支持skip gtid功能.

参量
[在] gle 在group_gtid_executed GTID集中添加的gtid值.
[在] 本地 如果gtid值是本地值或来自远程服务器
返回值
1个 添加期间发生错误.
0 成功.

add_to_group_gtid_executed_internal()

无效Certifier :: add_to_group_gtid_executed_internal rpl_sidno 西德诺
rpl_gno 侏儒
布尔 local_transaction
私人的

在group_gtid_executed集中添加给定gtid gno的内部方法.

这将在skip gtid实现中使用.

注意
这将更新最近知道的本地事务GTID.
参量
[在] 西德诺 rpl_sidno正在进行的事务的执行gtid的一部分.
[在] 地精 rpl_gno是正在进行的事务的执行gtid的一部分.
[在] local_transaction 如果GTID属于本地交易

certify()

rpl_gno Certifier :: certify Gtid_set * 快照版本
std :: list <const char *> * write_set
布尔 generate_group_id
const char * member_uuid
Gtid_log_event * GLE,
布尔 local_transaction

该成员函数应针对已通过认证测试的交易对项目集进行认证.

参量
快照版本 传入事务快照版本.
write_set 传入事务写集.
generate_group_id 指示是否必须生成事务组标识的标志.
member_uuid 发起此事务的成员的UUID.
gle 传入事务全局标识符事件.
local_transaction 如果此事务确实源自此成员,则为true,否则为false.
返回值
> 0 交易识别码(经过积极认证). 如果generate_group_id为false,并且证书为正,则返回1;否则,返回0.
0 负面认证;
-1 错误.

clear_certification_info()

无效Certifier :: clear_certification_info
私人的

clear_incoming()

无效Certifier :: clear_incoming
私人的

清除传入队列.

clear_members()

无效Certifier :: clear_members
私人的

清除成员的方法.

compute_group_available_gtid_intervals()

无效Certifier :: compute_group_available_gtid_intervals
私人的

此函数从组UUID计算可用的GTID间隔,并将它们存储在group_available_gtid_intervals上.

disable_conflict_detection()

无效Certifier :: disable_conflict_detection
虚拟

禁用冲突检测.

实现Certifier_interface .

enable_conflict_detection()

无效Certifier :: enable_conflict_detection
虚拟

启用冲突检测.

实现Certifier_interface .

垃圾收集()

无效Certifier :: garbage_collect
私人的

从证明数据库中删除接收到的交易稳定集的交集.

generate_view_change_group_gno()

rpl_gno验证者:: generate_view_change_group_gno

为视图更改日志事件生成组GNO.

返回值
> 0 查看更改GNO
除此以外 GNO生成错误

get_certification_info()

无效Certifier :: get_certification_info std :: map <std :: string,std :: string> * cert_info
虚拟

检索当前的认证信息.

注意
如果对这些变量引入了并发访问,则此方法需要锁定
参量
[出] cert_info 检索认证信息的指针

实现Certifier_interface .

get_certification_info_size()

ulonglong验证者:: get_certification_info_size
虚拟

获取方法以检索认证数据库大小.

实现Certifier_stats .

get_certified_write_set_snapshot_version()

Gtid_set *验证者:: get_certified_write_set_snapshot_version const char * 项目
私人的

查找与项目对应的snapshot_version.

如果存在则返回,否则返回NULL;否则返回NULL.

参量
[在] 项目 快照版本的项目.
返回值
Gtid_set 指针(如果地图中存在). 否则为0;否则为0.

get_group_next_available_gtid()

rpl_gno验证者:: get_group_next_available_gtid const char * member_uuid
私人的

此方法用于为正在执行的事务获取下一个有效的GNO.

它检查已经用完的GNO,然后根据它选择下一个可能的值. 该方法将参考group_available_gtid_intervals来根据gtid_assignment_block_size在块中分配GTID.

参量
member_uuid 发起此事务的成员的UUID. 在View_change_log_event上为NULL.
返回值
> 0 要使用的GNO.
-1 错误:组UUID的GNO用尽.

get_group_next_available_gtid_candidate()

rpl_gno验证者:: get_group_next_available_gtid_candidate rpl_gno 开始
rpl_gno 结束
const
私人的

生成当前交易的候选GNO.

候选者将处于间隔[开始,结束]或返回错误. 此方法将参考group_gtid_exected以避免两次生成相同的值.

参量
开始 GNO的第一个可能值
结束 GNO的最后一个可能值
返回值
> 0 要使用的GNO.
-1 错误:组UUID的GNO用尽.
-2 错误:生成的GNO大于结束.

get_group_stable_transactions_set_string()

int验证者:: get_group_stable_transactions_set_string 字符** 缓冲区
size_t * 长度
虚拟

以文本格式返回稳定集的事务,即已应用于所有组成员的事务集.

参量
[出] 缓冲 指向字符串的指针. 该方法将其设置为指向新分配的缓冲区,或者在内存不足时为NULL. 调用者必须释放分配的内存.
[出] 长度 生成的字符串的长度.
退货
运行状态
返回值
0
!= 0 内存不足错误

实现Certifier_stats .

get_last_conflict_free_transaction()

无效Certifier :: get_last_conflict_free_transaction std :: string *
虚拟

获取方法以检索最后的无冲突事务.

参量
[出] 最后的无冲突交易

实现Certifier_stats .

get_local_certified_gtid()

size_t验证者:: get_local_certified_gtid std :: string和 local_gtid_certified_string

获取表示最后一个本地认证的GTID的字符串的方法.

参量
[出] local_gtid_certified_string 最后一个本地GTID交易字符串
返回值
0 如果没有GTID /字符串为空
!= 0 字符串的大小

get_members_size()

size_t验证者:: get_members_size

获取方法以检索成员的大小.

get_negative_certified()

ulonglong认证者:: get_negative_certified
虚拟

获取方法以获取通过负面认证的交易次数.

实现Certifier_stats .

get_positive_certified()

ulonglong认证者:: get_positive_certified
虚拟

获取验证者进行的正面验证交易的数量.

实现Certifier_stats .

handle_certifier_data()

int验证者:: handle_certifier_data const uchar * 数据
乌龙
const Gcs_member_identifier gcs_member_id
虚拟

将来自读取器的数据包排队,以备将来处理.

参量
[在] 数据 分组数据
[在] 包长度
[在] gcs_member_id 发送消息的member_id
退货
运行状态
返回值
0
!= 0 队列错误

实现Certifier_interface .

handle_view_change()

无效Certifier :: handle_view_change
虚拟

处理验证者的视图更改.

实现Certifier_interface .

crement_parallel_applier_sequence_number()

无效Certifier :: increment_parallel_applier_sequence_number 布尔 update_parallel_applier_last_committed_global
私人的

此函数更新并行的应用程序索引.

必须为每个远程事务调用它.

参量
[在] update_parallel_applier_last_committed_global 如果为true,则parallel_applier_last_committed_global更新为当前序列号(在更新序列号之前).

注意:parallel_applier_last_committed_global应该在以下情况下更新:1)没有写集的事务已得到认证,因为它代表所有将来事务中最低的last_committed; 2)在认证信息垃圾回收之后,由于我们不知道清除了哪些写集,这可能导致错误地计算最后提交的事务.

initialize()

int Certifier ::初始化 乌龙 gtid_assignment_block_size

初始化验证者.

参量
gtid_assignment_block_size 组gtid分配块大小
退货
运行状态
返回值
0
!= 0 错误

initialize_server_gtid_set()

int验证者:: initialize_server_gtid_set 布尔 get_server_gtid_retrieved = false
私人的

用服务器gtid执行集和应用程序检索的gtid设置值初始化group_gtid_executed gtid设置的方法.

参量
get_server_gtid_retrieved 将应用者检索到的gtid集添加到group_gtid_executed gtid集
返回值
1个 初始化过程中发生错误
0 成功

is_conflict_detection_enable()

布尔认证者:: is_conflict_detection_enable
虚拟

检查是否启用了冲突检测.

返回值
真正 启用冲突检测
除此以外

实现Certifier_interface .

is_initialized()

布尔 Certifier :: is_initialized
内联 私有

reserve_gtid_block()

Gtid_set ::间隔验证者:: reserve_gtid_block 龙龙 block_size
私人的

该函数从group_available_gtid_intervals列表中保留了一部分GTID.

返回值
Gtid_set :: Interval 这是归因于OS GTID的间隔

set_certification_info()

int认证者:: set_certification_info std :: map <std :: string,std :: string> * cert_info
虚拟

根据给定值设置认证信息.

注意
如果对这些变量引入了并发访问,则此方法需要锁定
参量
[在] cert_info 从恢复过程中检索到的认证信息
返回值
> 0设置认证信息时出错.
= 0一切顺利.

实现Certifier_interface .

set_group_stable_transactions_set()

布尔认证者:: set_group_stable_transactions_set Gtid_set * execute_gtid_set
虚拟

该成员函数应将事务添加到稳定集中.

参量
execute_gtid_set 要添加到稳定集的交易的GTID集.
注意
设置时,稳定集将导致调用垃圾收集过程
返回值
如果添加成功,
真正 除此以外.

实现Certifier_interface .

stable_set_handle()

int验证者:: stable_set_handle
私人的

计算收到的所有集合之间的交集,以便我们在所有服务器上都具有已应用的事务.

退货
运行状态
返回值
0
!= 0 错误

终止()

int验证者::终止

终止验证者.

退货
运行状态
返回值
0
!= 0 错误

update_certified_transaction_count()

无效Certifier :: update_certified_transaction_count 布尔 结果
布尔 local_transaction
私人的

会员资料文件

broadcast_thread

Certifier_broadcast_thread * Certifier :: broadcast_thread
私人的

广播线程.

认证信息

Certification_info证明人:: certification_info
私人的

认证数据库.

CERTIFICATION_INFO_ERROR_NAME

const std :: string验证者:: CERTIFICATION_INFO_ERROR_NAME
静态的
初始值:
=
" certification_info_error"

用于在View_change_log_event的认证信息中存储错误的密钥.

certificate_info_sid_map

Sid_map *验证者:: certification_info_sid_map
私人的

certifier_garbage_collection_block

布尔认证者:: certifier_garbage_collection_block
私人的

certifying_already_applied_transactions

布尔认证者:: certification_already_applied_transactions
私人的

冲突检测启用

布尔认证者:: conflict_detection_enable
私人的

在以下情况下执行冲突检测:1)组处于多主机模式; 2)组处于单主数据库模式,主数据库正在应用中继日志以及来自先前主数据库的事务.

group_available_gtid_intervals

std :: list < Gtid_set :: Interval >验证者:: group_available_gtid_intervals
私人的

组中的免费GTID间隔列表.

group_gtid_exected

Gtid_set *验证者:: group_gtid_exected
私人的

group_gtid_extracted

Gtid_set *验证者:: group_gtid_extracted
私人的

Gtid_set包含从捐赠者的证明信息图中提取的gtid.

这是供体在View_change_log_event时执行的一组事务.

group_gtid_sid_map

Sid_map *验证者:: group_gtid_sid_map
私人的

group_gtid_sid_map_group_sidno

rpl_sidno验证者:: group_gtid_sid_map_group_sidno
私人的

变量,用于存储将使用group_uuid记录的事务使用的sidno.

gtid_assignment_block_size

uint64验证者:: gtid_assignment_block_size
私人的

组GTID分配块大小.

GTID_EXTRACTED_NAME

const std :: string验证者:: GTID_EXTRACTED_NAME =" gtid_extracted"
静态 私人

用于存储对View_change_log_event的认证信息执行的group_gtid_execute的密钥.

gtids_assigned_in_blocks_counter

ulonglong验证者:: gtids_assigned_in_blocks_counter
私人的

来料

Synchronized_queue < Data_packet *> * Certifier :: incoming
私人的

◆已初始化

bool验证者::已初始化
私人的

验证者已初始化.

last_conflict_free_transaction

Gtid验证者:: last_conflict_free_transaction
私人的

最后无冲突的交易标识.

last_local_gtid

Gtid验证者:: last_local_gtid
私人的

最近的本地已知GTID.

LOCK_certification_info

mysql_mutex_t验证者:: LOCK_certification_info
私人的

LOCK_成员

mysql_mutex_t Certifier :: LOCK_members
私人的

member_gtids

std :: map <std :: string, Gtid_set :: Interval >验证者:: member_gtids
私人的

扩展上述内容,以允许每个成员按块分配GTID.

会员

std :: vector <std :: string>验证者::成员
私人的

negative_cert

ulonglong验证者:: negative_cert
私人的

parallel_applier_last_committed_global

int64验证者:: parallel_applier_last_committed_global
私人的

parallel_applier_sequence_number

int64验证者:: parallel_applier_sequence_number
私人的

肯定证书

ulonglong认证者:: positive_cert
私人的

same_member_message_discarded

布尔认证者:: same_member_message_discarded
私人的

stable_gtid_set

Gtid_set *验证者:: stable_gtid_set
私人的

stable_gtid_set_lock

Checkable_rwlock *验证者:: stable_gtid_set_lock
私人的

稳定的集合和垃圾收集器变量.

stable_sid_map

Sid_map *验证者:: stable_sid_map
私人的

此类的文档是从以下文件生成的:

by  ICOPY.SITE