Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitb84020a

Browse files
knizhnikkelvich
authored andcommitted
Add GetPreparedTransactionState function
1 parent2cd76ba commitb84020a

File tree

2 files changed

+12
-6
lines changed

2 files changed

+12
-6
lines changed

‎multimaster--1.0.sql

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ CREATE FUNCTION mtm.get_snapshot() RETURNS bigint
2727
AS'MODULE_PATHNAME','mtm_get_snapshot'
2828
LANGUAGE C;
2929

30-
CREATEFUNCTIONmtm.get_csn(tid xid) RETURNSbigint
30+
CREATEFUNCTIONmtm.get_csn(integer xid) RETURNSbigint
3131
AS'MODULE_PATHNAME','mtm_get_csn'
3232
LANGUAGE C;
3333

@@ -51,7 +51,7 @@ CREATE FUNCTION mtm.get_trans_by_gid(git text) RETURNS mtm.trans_state
5151
AS'MODULE_PATHNAME','mtm_get_trans_by_gid'
5252
LANGUAGE C;
5353

54-
CREATEFUNCTIONmtm.get_trans_by_xid(tid xid) RETURNSmtm.trans_state
54+
CREATEFUNCTIONmtm.get_trans_by_xid(integer xid) RETURNSmtm.trans_state
5555
AS'MODULE_PATHNAME','mtm_get_trans_by_xid'
5656
LANGUAGE C;
5757

‎multimaster.c

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1199,11 +1199,13 @@ static void
11991199
MtmLogAbortLogicalMessage(intnodeId,charconst*gid)
12001200
{
12011201
MtmAbortLogicalMessagemsg;
1202+
XLogRecPtrlsn;
12021203
strcpy(msg.gid,gid);
12031204
msg.origin_node=nodeId;
12041205
msg.origin_lsn=replorigin_session_origin_lsn;
1205-
MTM_LOG2("[TRACE] MtmLogAbortLogicalMessage(%d, %s)",nodeId,gid);
1206-
XLogFlush(LogLogicalMessage("A", (char*)&msg,sizeofmsg, false));
1206+
lsn=LogLogicalMessage("A", (char*)&msg,sizeofmsg, false);
1207+
XLogFlush(lsn);
1208+
MTM_LOG1("MtmLogAbortLogicalMessage node=%d transaction=%s lsn=%lx",nodeId,gid,lsn);
12071209
}
12081210

12091211
staticvoid
@@ -1260,7 +1262,7 @@ MtmEndTransaction(MtmCurrentTrans* x, bool commit)
12601262
* Send notification only if ABORT happens during transaction processing at replicas,
12611263
* do not send notification if ABORT is received from master
12621264
*/
1263-
MTM_LOG1("%d: send ABORT notification for transaction %d to coordinator %d",MyProcPid,x->gtid.xid,x->gtid.node);
1265+
MTM_LOG1("%d: send ABORT notification for transaction %d(%s)to coordinator %d",MyProcPid,x->gtid.xid,x->gid,x->gtid.node);
12641266
if (ts==NULL) {
12651267
boolfound;
12661268
Assert(TransactionIdIsValid(x->xid));
@@ -1408,7 +1410,7 @@ static voidMtmLoadPreparedTransactions(void)
14081410
boolfound;
14091411
charconst*gid=pxacts[i].gid;
14101412
MtmTransMap*tm= (MtmTransMap*)hash_search(MtmGid2State,gid,HASH_ENTER,&found);
1411-
if (!found) {
1413+
if (!found||tm->state==NULL) {
14121414
TransactionIdxid=GetNewTransactionId(false);
14131415
MtmTransState*ts= (MtmTransState*)hash_search(MtmXid2State,&xid,HASH_ENTER,&found);
14141416
MTM_LOG1("Recover prepared transaction %s xid=%d state=%s",gid,xid,pxacts[i].state_3pc);
@@ -1532,9 +1534,11 @@ XidStatus MtmExchangeGlobalTransactionStatus(char const* gid, XidStatus new_stat
15321534
}
15331535
if (tm->state!=NULL&&old_status==TRANSACTION_STATUS_IN_PROGRESS) {
15341536
/* Return UNKNOWN to mark that transaction was prepared */
1537+
MTM_LOG1("Change status of in-progress transaction %s to %s",gid,MtmTxtStatusMnem[new_status]);
15351538
old_status=TRANSACTION_STATUS_UNKNOWN;
15361539
}
15371540
}else {
1541+
MTM_LOG1("Set status of unknown transaction %s to %s",gid,MtmTxtStatusMnem[new_status]);
15381542
tm->state=NULL;
15391543
tm->status=new_status;
15401544
}
@@ -2996,6 +3000,8 @@ void MtmRollbackPreparedTransaction(int nodeId, char const* gid)
29963000
CommitTransactionCommand();
29973001
MtmEndSession(nodeId, true);
29983002
}elseif (status==TRANSACTION_STATUS_IN_PROGRESS) {
3003+
charstate3pc[MAX_3PC_STATE_SIZE];
3004+
Assert(!GetPreparedTransactionState(gid,state3pc));
29993005
MtmBeginSession(nodeId);
30003006
MtmLogAbortLogicalMessage(nodeId,gid);
30013007
MtmEndSession(nodeId, true);

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp