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

Commit23c06aa

Browse files
knizhnikkelvich
authored andcommitted
Handle PREPARE message for aborted transactions at slaves
1 parent0e9e9ca commit23c06aa

File tree

2 files changed

+11
-24
lines changed

2 files changed

+11
-24
lines changed

‎arbiter.c

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -904,11 +904,15 @@ static void MtmTransReceiver(Datum arg)
904904
}else {
905905
switch (msg->code) {
906906
caseMSG_PREPARE:
907-
Assert(ts->status==TRANSACTION_STATUS_IN_PROGRESS);
908-
ts->status=TRANSACTION_STATUS_UNKNOWN;
909-
ts->csn=MtmAssignCSN();
910-
MtmAdjustSubtransactions(ts);
911-
MtmSendNotificationMessage(ts,MSG_PREPARED);
907+
if (ts->status==TRANSACTION_STATUS_IN_PROGRESS) {
908+
ts->status=TRANSACTION_STATUS_UNKNOWN;
909+
ts->csn=MtmAssignCSN();
910+
MtmAdjustSubtransactions(ts);
911+
MtmSendNotificationMessage(ts,MSG_PREPARED);
912+
}else {
913+
Assert(ts->status==TRANSACTION_STATUS_ABORTED);
914+
MtmSendNotificationMessage(ts,MSG_ABORTED);
915+
}
912916
break;
913917
default:
914918
Assert(false);

‎multimaster.c

Lines changed: 2 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -195,7 +195,6 @@ int MtmReplicationNodeId;
195195
intMtmArbiterPort;
196196
intMtmConnectTimeout;
197197
intMtmReconnectTimeout;
198-
intMtmRaftPollDelay;
199198
intMtmNodeDisableDelay;
200199
intMtmTransSpillThreshold;
201200
intMtmMaxNodes;
@@ -736,7 +735,7 @@ MtmPrePrepareTransaction(MtmCurrentTrans* x)
736735

737736
if (Mtm->disabledNodeMask!=0) {
738737
timestamp_tnow=MtmGetSystemTime();
739-
if (Mtm->lastClusterStatusUpdate+MSEC_TO_USEC(MtmRaftPollDelay)<now) {
738+
if (Mtm->lastClusterStatusUpdate+MSEC_TO_USEC(MtmHeartbeatRecvTimeout)<now) {
740739
Mtm->lastClusterStatusUpdate=now;
741740
MtmRefreshClusterStatus(true);
742741
}
@@ -1438,7 +1437,7 @@ void MtmOnNodeDisconnect(int nodeId)
14381437

14391438
RaftableSet(psprintf("node-mask-%d",MtmNodeId),&Mtm->connectivityMask,sizeofMtm->connectivityMask, true);/* false); -- TODO: raftable is hanged with nowait=true */
14401439

1441-
MtmSleep(MSEC_TO_USEC(MtmRaftPollDelay));
1440+
MtmSleep(MSEC_TO_USEC(MtmHeartbeatSendTimeout));
14421441

14431442
if (!MtmUseRaftable)
14441443
{
@@ -2059,22 +2058,6 @@ _PG_init(void)
20592058
NULL
20602059
);
20612060

2062-
DefineCustomIntVariable(
2063-
"multimaster.raft_poll_delay",
2064-
"Multimaster delay of polling cluster state from Raftable after updating local node status",
2065-
"Timeout in milliseconds before polling state of nodes",
2066-
&MtmRaftPollDelay,
2067-
1000,
2068-
1,
2069-
INT_MAX,
2070-
PGC_BACKEND,
2071-
0,
2072-
NULL,
2073-
NULL,
2074-
NULL
2075-
);
2076-
2077-
20782061
MtmSplitConnStrs();
20792062
MtmStartReceivers();
20802063

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp