消息处理API,由客户端通过网络连接GTM Master调用,这些消息处理API通过上述函数达到目的。
ProcessGetGIDDataTransactionCommand() --> MSG_TXN_GET_GID_DATA
ProcessGXIDListCommand() --> MSG_TXN_GXID_LIST
ProcessGetGXIDTransactionCommand() --> MSG_TXN_GET_GXID
ProcessGetNextGXIDTransactionCommand() --> MSG_TXN_GET_NEXT_GXID
ProcessReportXminCommand()
ProcessBeginTransactionCommand() --> MSG_TXN_BEGIN message
ProcessBeginTransactionGetGXIDCommand() --> MSG_TXN_BEGIN_GETGXID
ProcessBeginTransactionGetGXIDAutovacuumCommand() --> MSG_TXN_BEGIN_GETGXID_AUTOVACUUM
ProcessBeginTransactionGetGXIDCommandMulti() --> MSG_TXN_BEGIN_GETGXID_MULTI
ProcessBkupBeginTransactionCommand() --> MSG_BKUP_TXN_BEGIN
ProcessBkupBeginTransactionGetGXIDCommand() --> MSG_BKUP_TXN_BEGIN_GETGXID
ProcessBkupBeginTransactionGetGXIDCommandMulti() --> MSG_BKUP_BEGIN_TXN_GETGXID_MULTI
ProcessBkupBeginTransactionGetGXIDAutovacuumCommand() --> MSG_BKUP_TXN_BEGIN_GETGXID_AUTOVACUUM
ProcessRollbackTransactionCommand() --> MSG_TXN_ROLLBACK/MSG_BKUP_TXN_ROLLBACK
ProcessRollbackTransactionCommandMulti() --> MSG_TXN_ROLLBACK_MULTI/MSG_BKUP_TXN_ROLLBACK_MULTIMSG_TXN_COMMIT_MULTI/MSG_BKUP_TXN_COMMIT_MULTI
ProcessCommitTransactionCommand() --> MSG_TXN_COMMIT/MSG_BKUP_TXN_COMMIT
ProcessCommitTransactionCommandMulti()
ProcessCommitPreparedTransactionCommand() --> MSG_TXN_COMMIT_PREPARED/MSG_BKUP_TXN_COMMIT_PREPARED
ProcessPrepareTransactionCommand() --> MSG_TXN_PREPARE/MSG_BKUP_TXN_PREPARE
ProcessStartPreparedTransactionCommand() --> MSG_TXN_START_PREPARED/MSG_BKUP_TXN_START_PREPARED
BeginTransaction
ProcessBeginTransactionCommand() --> MSG_TXN_BEGIN message
ProcessBeginTransactionGetGXIDCommand() --> MSG_TXN_BEGIN_GETGXID
ProcessBeginTransactionGetGXIDAutovacuumCommand() --> MSG_TXN_BEGIN_GETGXID_AUTOVACUUM
ProcessBeginTransactionGetGXIDCommandMulti() -->
ProcessBeginTransactionCommand函数的流程如下:从message中取出事务隔离级别、read only、session字符串,调用GTM_BeginTransaction函数启动新事务,获取时间戳,调用bkup_begin_transaction向standby同步事务,填充返回消息并将消息返回。
ProcessBeginTransactionGetGXIDCommand函数的流程如下:从message中取出事务隔离级别、read only、session字符串,获取时间戳,调用GTM_BeginTransaction函数启动新事务,调用GTM_GetGlobalTransactionId函数获取全局事务ID,调用bkup_begin_transaction_gxid向standby同步事务,填充返回消息并将消息返回。
ProcessBeginTransactionGetGXIDAutovacuumCommand函数取出事务隔离级别、txn client id,调用GTM_BeginTransaction函数启动新事务,调用GTM_GetGlobalTransactionId函数获取全局事务ID,调用GTM_SetDoVacuum函数,调用bkup_begin_transaction_autovacuum向standby同步事务,填充返回消息并将消息返回。
ProcessBeginTransactionGetGXIDCommandMulti函数先获取请求事务数、再循环获取事务隔离级别、read only、session字符串,txn client id,调用GTM_BeginTransactionMulti,获取时间戳,调用bkup_begin_transaction_multi向standby同步事务,填充返回消息并将消息返回。
ProcessBkupBeginTransactionCommand() --> MSG_BKUP_TXN_BEGIN
ProcessBkupBeginTransactionGetGXIDCommand() --> MSG_BKUP_TXN_BEGIN_GETGXID
ProcessBkupBeginTransactionGetGXIDCommandMulti() --> MSG_BKUP_BEGIN_TXN_GETGXID_MULTI
ProcessBkupBeginTransactionGetGXIDAutovacuumCommand() -->
ProcessBkupBeginTransactionCommand函数从message中取出事务隔离级别、read only、session字符串、client id,调用GTM_BkupBeginTransaction函数。
ProcessBkupBeginTransactionGetGXIDCommand函数取出事务隔离级别、read only、session字符串、txn client id,调用GTM_BkupBeginTransactionGetGXID函数。
ProcessBkupBeginTransactionGetGXIDCommandMulti先获取请求事务数、再循环获取事务隔离级别、read only、session字符串,txn client id,调用GTM_BkupBeginTransactionGetGXIDMulti函数。
ProcessBkupBeginTransactionGetGXIDAutovacuumCommand函数取出事务隔离级别、txn client id,调用GTM_BkupBeginTransactionGetGXID函数,调用GTM_SetDoVacuum函数。
CommitTransaction
ProcessCommitTransactionCommand() --> MSG_TXN_COMMIT/MSG_BKUP_TXN_COMMIT
ProcessCommitTransactionCommandMulti()
ProcessCommitPreparedTransactionCommand() --> MSG_TXN_COMMIT_PREPARED/MSG_BKUP_TXN_COMMIT_PREPARED
ProcessCommitTransactionCommand函数从消息中获取gxid,通过GTM_GXIDToHandle(gxid)获取事务句柄,然后从消息中获取等待xid的数量,获取其等待的所有xid,调用GTM_CommitTransaction函数,调用bkup_commit_transaction向standby同步事务,填充返回消息并将消息返回。
2242
ProcessCommitPreparedTransactionCommand函数