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

Commit271b148

Browse files
committed
Change cluster configuration only if some node was enabled or disabled
1 parent0f9132c commit271b148

File tree

2 files changed

+25
-19
lines changed

2 files changed

+25
-19
lines changed

‎contrib/mmts/Dockerfile‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ USER postgres
3131
ENV CFLAGS -O0
3232
WORKDIR /pg
3333

34-
ENV REBUILDfalse
34+
ENV REBUILD1
3535

3636
RUN cd /pg && \
3737
git clone https://github.com/postgrespro/postgres_cluster.git --depth 1 && \

‎contrib/mmts/multimaster.c‎

Lines changed: 24 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1351,7 +1351,7 @@ MtmBuildConnectivityMatrix(nodemask_t* matrix, bool nowait)
13511351
*/
13521352
boolMtmRefreshClusterStatus(boolnowait)
13531353
{
1354-
nodemask_tmask,clique,disabled;
1354+
nodemask_tmask,clique,disabled,enabled;
13551355
nodemask_tmatrix[MAX_NODES];
13561356
MtmTransState*ts;
13571357
intclique_size;
@@ -1385,29 +1385,34 @@ bool MtmRefreshClusterStatus(bool nowait)
13851385
MtmDisableNode(i+1);
13861386
}
13871387
}
1388-
mask=clique&Mtm->disabledNodeMask;/* new enabled nodes mask */
1388+
1389+
enabled=clique&Mtm->disabledNodeMask;/* new enabled nodes mask */
1390+
1391+
mask=enabled;
13891392
for (i=0;mask!=0;i++,mask >>=1) {
13901393
if (mask&1) {
13911394
MtmEnableNode(i+1);
13921395
}
13931396
}
1394-
MtmCheckQuorum();
1395-
/* Interrupt voting for active transaction and abort them */
1396-
for (ts=Mtm->transListHead;ts!=NULL;ts=ts->next) {
1397-
MTM_LOG3("Active transaction gid='%s', coordinator=%d, xid=%d, status=%d, gtid.xid=%d",
1398-
ts->gid,ts->gtid.node,ts->xid,ts->status,ts->gtid.xid);
1399-
if (MtmIsCoordinator(ts)) {
1400-
if (!ts->votingCompleted&&ts->status!=TRANSACTION_STATUS_ABORTED) {
1401-
MtmAbortTransaction(ts);
1402-
MtmWakeUpBackend(ts);
1403-
}
1404-
}elseif (TransactionIdIsValid(ts->gtid.xid)&&BIT_CHECK(disabled,ts->gtid.node-1)) {// coordinator of transaction is on disabled node
1405-
if (ts->gid[0]) {
1406-
if (ts->status==TRANSACTION_STATUS_UNKNOWN||ts->status==TRANSACTION_STATUS_IN_PROGRESS) {
1407-
MTM_LOG1("%d: Abort trasaction %s because its coordinator is at disabled node %d",MyProcPid,ts->gid,ts->gtid.node);
1397+
if (disabled|enabled) {
1398+
MtmCheckQuorum();
1399+
/* Interrupt voting for active transaction and abort them */
1400+
for (ts=Mtm->transListHead;ts!=NULL;ts=ts->next) {
1401+
MTM_LOG3("Active transaction gid='%s', coordinator=%d, xid=%d, status=%d, gtid.xid=%d",
1402+
ts->gid,ts->gtid.node,ts->xid,ts->status,ts->gtid.xid);
1403+
if (MtmIsCoordinator(ts)) {
1404+
if (!ts->votingCompleted&&ts->status!=TRANSACTION_STATUS_ABORTED) {
14081405
MtmAbortTransaction(ts);
1409-
MtmTx.status=TRANSACTION_STATUS_ABORTED;/* prevent recursive invocation of MtmAbortPreparedTransaction */
1410-
FinishPreparedTransaction(ts->gid, false);
1406+
MtmWakeUpBackend(ts);
1407+
}
1408+
}elseif (TransactionIdIsValid(ts->gtid.xid)&&BIT_CHECK(disabled,ts->gtid.node-1)) {// coordinator of transaction is on disabled node
1409+
if (ts->gid[0]) {
1410+
if (ts->status==TRANSACTION_STATUS_UNKNOWN||ts->status==TRANSACTION_STATUS_IN_PROGRESS) {
1411+
MTM_LOG1("%d: Abort trasaction %s because its coordinator is at disabled node %d",MyProcPid,ts->gid,ts->gtid.node);
1412+
MtmAbortTransaction(ts);
1413+
MtmTx.status=TRANSACTION_STATUS_ABORTED;/* prevent recursive invocation of MtmAbortPreparedTransaction */
1414+
FinishPreparedTransaction(ts->gid, false);
1415+
}
14111416
}
14121417
}
14131418
}
@@ -3288,6 +3293,7 @@ MtmDetectGlobalDeadLock(PGPROC* proc)
32883293
ByteBufferbuf;
32893294
PGXACT*pgxact=&ProcGlobal->allPgXact[proc->pgprocno];
32903295
boolhasDeadlock= false;
3296+
32913297
if (TransactionIdIsValid(pgxact->xid)) {
32923298
MtmGraphgraph;
32933299
GlobalTransactionIdgtid;

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp