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

Commitc7f8cde

Browse files
knizhnikkelvich
authored andcommitted
Always access Raftable with infinite timeout
1 parent0ee9dba commitc7f8cde

File tree

1 file changed

+22
-25
lines changed

1 file changed

+22
-25
lines changed

‎multimaster.c

Lines changed: 22 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1377,41 +1377,38 @@ bool MtmRefreshClusterStatus(bool nowait)
13771377
MTM_LOG1("Find clique %lx, disabledNodeMask %lx", (long)clique, (long)Mtm->disabledNodeMask);
13781378
MtmLock(LW_EXCLUSIVE);
13791379
disabled= ~clique& (((nodemask_t)1 <<Mtm->nAllNodes)-1)& ~Mtm->disabledNodeMask;/* new disabled nodes mask */
1380+
enabled=clique&Mtm->disabledNodeMask;/* new enabled nodes mask */
13801381

1381-
mask=disabled;
1382-
for (i=0;mask!=0;i++,mask >>=1) {
1382+
for (i=0,mask=disabled;mask!=0;i++,mask >>=1) {
13831383
if (mask&1) {
13841384
MtmDisableNode(i+1);
13851385
}
13861386
}
13871387

1388-
enabled=clique&Mtm->disabledNodeMask;/* new enabled nodes mask */
1389-
1390-
mask=enabled;
1391-
for (i=0;mask!=0;i++,mask >>=1) {
1388+
for (i=0,mask=enabled;mask!=0;i++,mask >>=1) {
13921389
if (mask&1) {
13931390
MtmEnableNode(i+1);
13941391
}
13951392
}
13961393
if (disabled|enabled) {
13971394
MtmCheckQuorum();
1398-
/* Interrupt voting for active transaction and abort them */
1399-
for (ts=Mtm->transListHead;ts!=NULL;ts=ts->next) {
1400-
MTM_LOG3("Active transaction gid='%s', coordinator=%d, xid=%d, status=%d, gtid.xid=%d",
1401-
ts->gid,ts->gtid.node,ts->xid,ts->status,ts->gtid.xid);
1402-
if (MtmIsCoordinator(ts)) {
1403-
if (!ts->votingCompleted&&ts->status!=TRANSACTION_STATUS_ABORTED) {
1395+
}
1396+
/* Interrupt voting for active transaction and abort them */
1397+
for (ts=Mtm->transListHead;ts!=NULL;ts=ts->next) {
1398+
MTM_LOG3("Active transaction gid='%s', coordinator=%d, xid=%d, status=%d, gtid.xid=%d",
1399+
ts->gid,ts->gtid.node,ts->xid,ts->status,ts->gtid.xid);
1400+
if (MtmIsCoordinator(ts)) {
1401+
if (!ts->votingCompleted&& (disabled|enabled)!=0&&ts->status!=TRANSACTION_STATUS_ABORTED) {
1402+
MtmAbortTransaction(ts);
1403+
MtmWakeUpBackend(ts);
1404+
}
1405+
}elseif (TransactionIdIsValid(ts->gtid.xid)&&BIT_CHECK(disabled,ts->gtid.node-1)) {// coordinator of transaction is on disabled node
1406+
if (ts->gid[0]) {
1407+
if (ts->status==TRANSACTION_STATUS_UNKNOWN||ts->status==TRANSACTION_STATUS_IN_PROGRESS) {
1408+
MTM_LOG1("%d: Abort trasaction %s because its coordinator is at disabled node %d",MyProcPid,ts->gid,ts->gtid.node);
14041409
MtmAbortTransaction(ts);
1405-
MtmWakeUpBackend(ts);
1406-
}
1407-
}elseif (TransactionIdIsValid(ts->gtid.xid)&&BIT_CHECK(disabled,ts->gtid.node-1)) {// coordinator of transaction is on disabled node
1408-
if (ts->gid[0]) {
1409-
if (ts->status==TRANSACTION_STATUS_UNKNOWN||ts->status==TRANSACTION_STATUS_IN_PROGRESS) {
1410-
MTM_LOG1("%d: Abort trasaction %s because its coordinator is at disabled node %d",MyProcPid,ts->gid,ts->gtid.node);
1411-
MtmAbortTransaction(ts);
1412-
MtmTx.status=TRANSACTION_STATUS_ABORTED;/* prevent recursive invocation of MtmAbortPreparedTransaction */
1413-
FinishPreparedTransaction(ts->gid, false);
1414-
}
1410+
MtmTx.status=TRANSACTION_STATUS_ABORTED;/* prevent recursive invocation of MtmAbortPreparedTransaction */
1411+
FinishPreparedTransaction(ts->gid, false);
14151412
}
14161413
}
14171414
}
@@ -1490,7 +1487,7 @@ void MtmOnNodeDisconnect(int nodeId)
14901487
}
14911488
MtmUnlock();
14921489
}else {
1493-
MtmRefreshClusterStatus(true);/*false); -- TODO: raftable can handg in nowait=true */
1490+
MtmRefreshClusterStatus(false);
14941491
}
14951492
}
14961493

@@ -2683,7 +2680,7 @@ Datum mtm_dump_lock_graph(PG_FUNCTION_ARGS)
26832680
for (i=0;i<Mtm->nAllNodes;i++)
26842681
{
26852682
size_tsize;
2686-
char*data=RaftableGet(psprintf("lock-graph-%d",i+1),&size,NULL,true);
2683+
char*data=RaftableGet(psprintf("lock-graph-%d",i+1),&size,NULL,false);
26872684
if (data) {
26882685
GlobalTransactionId*gtid= (GlobalTransactionId*)data;
26892686
GlobalTransactionId*last= (GlobalTransactionId*)(data+size);
@@ -3305,7 +3302,7 @@ MtmDetectGlobalDeadLock(PGPROC* proc)
33053302
for (i=0;i<Mtm->nAllNodes;i++) {
33063303
if (i+1!=MtmNodeId&& !BIT_CHECK(Mtm->disabledNodeMask,i)) {
33073304
size_tsize;
3308-
void*data=RaftableGet(psprintf("lock-graph-%d",i+1),&size,NULL,true);
3305+
void*data=RaftableGet(psprintf("lock-graph-%d",i+1),&size,NULL,false);
33093306
if (data==NULL) {
33103307
return true;/* If using Raftable is disabled */
33113308
}else {

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp