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

Commitc9f6ec1

Browse files
knizhnikkelvich
authored andcommitted
Update 2PC support
1 parent1200b6a commitc9f6ec1

File tree

3 files changed

+14
-2
lines changed

3 files changed

+14
-2
lines changed

‎multimaster.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1116,6 +1116,11 @@ MtmGetState(void)
11161116
returndtm;
11171117
}
11181118

1119+
TransactionIdMtmGetCurrentTransaction(void)
1120+
{
1121+
returndtmTx.xid;
1122+
}
1123+
11191124
staticvoid
11201125
MtmShmemStartup(void)
11211126
{

‎multimaster.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,7 @@ extern void MtmSleep(timestamp_t interval);
157157
externvoidMtmSetCurrentTransactionGID(charconst*gid);
158158
externvoidMtmSetCurrentTransactionCSN(csn_tcsn);
159159
externcsn_tMtmGetTransactionCSN(TransactionIdxid);
160+
externTransactionIdMtmGetCurrentTransactionId(void);
160161
externboolMtmIsRecoveredNode(intnodeId);
161162
externvoidMtmRefreshClusterStatus(boolnowait);
162163
externvoidMtmSwitchClusterMode(MtmNodeStatusmode);

‎pglogical_apply.c

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -484,12 +484,15 @@ process_remote_commit(StringInfo in)
484484
{
485485
casePGLOGICAL_COMMIT:
486486
{
487-
if (IsTransactionState())
487+
if (IsTransactionState()) {
488+
Assert(TransactionIdIsValid(MtmGetCurrentTransactionId()));
488489
CommitTransactionCommand();
490+
}
489491
break;
490492
}
491493
casePGLOGICAL_PREPARE:
492494
{
495+
Assert(IsTransactionState()&&TransactionIdIsValid(MtmGetCurrentTransactionId()));
493496
gid=pq_getmsgstring(in);
494497
/* prepare TBLOCK_INPROGRESS state for PrepareTransactionBlock() */
495498
BeginTransactionBlock();
@@ -503,6 +506,7 @@ process_remote_commit(StringInfo in)
503506
}
504507
casePGLOGICAL_COMMIT_PREPARED:
505508
{
509+
Assert(!TransactionIdIsValid(MtmGetCurrentTransactionId()));
506510
csn=pq_getmsgint64(in);
507511
gid=pq_getmsgstring(in);
508512
StartTransactionCommand();
@@ -514,6 +518,7 @@ process_remote_commit(StringInfo in)
514518
}
515519
casePGLOGICAL_ABORT_PREPARED:
516520
{
521+
Assert(!TransactionIdIsValid(MtmGetCurrentTransactionId()));
517522
gid=pq_getmsgstring(in);
518523
StartTransactionCommand();
519524
MtmSetCurrentTransactionGID(gid);
@@ -889,8 +894,9 @@ void MtmExecutor(int id, void* work, size_t size)
889894
{
890895
EmitErrorReport();
891896
FlushErrorState();
892-
MTM_TRACE("%d: REMOTE abort transaction %d\n",MyProcPid,GetCurrentTransactionId());
897+
MTM_TRACE("%d: REMOTEbeginabort transaction %d\n",MyProcPid,MtmGetCurrentTransactionId());
893898
AbortCurrentTransaction();
899+
MTM_TRACE("%d: REMOTE end abort transaction %d\n",MyProcPid,MtmGetCurrentTransactionId());
894900
}
895901
PG_END_TRY();
896902

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp