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

Commitf7ac918

Browse files
knizhnikkelvich
authored andcommitted
Some 2pc fixes
1 parent522f183 commitf7ac918

File tree

3 files changed

+19
-3
lines changed

3 files changed

+19
-3
lines changed

‎multimaster.c

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,7 @@ static void MtmBeginTransaction(MtmCurrentTrans* x);
103103
staticvoidMtmPrecommitTransaction(MtmCurrentTrans*x);
104104
staticboolMtmCommitTransaction(TransactionIdxid,intnsubxids,TransactionId*subxids);
105105
staticvoidMtmPrepareTransaction(MtmCurrentTrans*x);
106+
staticvoidMtmCommitPreparedTransaction(MtmCurrentTrans*x);
106107
staticvoidMtmEndTransaction(MtmCurrentTrans*x,boolcommit);
107108
staticTransactionIdMtmGetOldestXmin(Relationrel,boolignoreVacuum);
108109
staticboolMtmXidInMVCCSnapshot(TransactionIdxid,Snapshotsnapshot);
@@ -494,6 +495,9 @@ MtmXactCallback(XactEvent event, void *arg)
494495
caseXACT_EVENT_PREPARE:
495496
MtmPrepareTransaction(&dtmTx);
496497
break;
498+
caseXACT_EVENT_COMMIT_PREPARED:
499+
MtmCommitPreparedTransaction(&dtmTx);
500+
break;
497501
caseXACT_EVENT_COMMIT:
498502
MtmEndTransaction(&dtmTx, true);
499503
break;
@@ -652,10 +656,15 @@ static void MtmPrecommitTransaction(MtmCurrentTrans* x)
652656
staticvoid
653657
MtmPrepareTransaction(MtmCurrentTrans*x)
654658
{
655-
TransactionId*subxids;
656-
intnSubxids;
657659
MtmPrecommitTransaction(x);
658660
x->isPrepared= true;
661+
}
662+
663+
staticvoid
664+
MtmCommitPreparedTransaction(MtmCurrentTrans*x)
665+
{
666+
TransactionId*subxids;
667+
intnSubxids;
659668
nSubxids=xactGetCommittedChildren(&subxids);
660669
if (!MtmCommitTransaction(x->xid,nSubxids,subxids))
661670
{
@@ -1536,12 +1545,15 @@ static void MtmProcessUtility(Node *parsetree, const char *queryString,
15361545
char*gid=MtmGenerateGid();
15371546
if (!PrepareTransactionBlock(gid))
15381547
{
1548+
elog(WARNING,"Failed to prepare transaction %s",gid);
15391549
/* report unsuccessful commit in completionTag */
15401550
if (completionTag) {
15411551
strcpy(completionTag,"ROLLBACK");
15421552
}
15431553
/* ??? Should we do explicit rollback */
15441554
}else {
1555+
CommitTransactionCommand();
1556+
StartTransactionCommand();
15451557
FinishPreparedTransaction(gid, true);
15461558
}
15471559
return;

‎pglogical_apply.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -467,7 +467,7 @@ static void
467467
process_remote_commit(StringInfoin)
468468
{
469469
uint8flags;
470-
constchar*gid;
470+
constchar*gid=NULL;
471471

472472
/* read flags */
473473
flags=pq_getmsgbyte(in);
@@ -480,6 +480,8 @@ process_remote_commit(StringInfo in)
480480
if (PGLOGICAL_XACT_EVENT(flags)!=PGLOGICAL_COMMIT)
481481
gid=pq_getmsgstring(in);
482482

483+
MTM_TRACE("PGLOGICAL_RECV commit: flags=%d, gid=%s\n",flags,gid);
484+
483485
switch(PGLOGICAL_XACT_EVENT(flags))
484486
{
485487
casePGLOGICAL_COMMIT:

‎pglogical_proto.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,8 @@ pglogical_write_commit(StringInfo out, PGLogicalOutputData *data,
145145
else
146146
Assert(false);
147147

148+
MTM_TRACE("PGLOGICAL_SEND commit: event=%d, gid=%s\n",flags,txn->gid);
149+
148150
/* send the flags field */
149151
pq_sendbyte(out,flags);
150152

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp