Skip to content

Commit eb07cf6

Browse files
knizhnikkelvich
authored andcommitted
Fix locking in MtmRefreshClusterStatus
1 parent 9bf3fb8 commit eb07cf6

File tree

3 files changed

+10
-8
lines changed

3 files changed

+10
-8
lines changed

arbiter.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -354,7 +354,7 @@ static void MtmSendHeartbeat()
354354
msg.oldestSnapshot = Mtm->nodes[MtmNodeId-1].oldestSnapshot;
355355
msg.node = MtmNodeId;
356356
msg.csn = now;
357-
if (last_sent_heartbeat + MSEC_TO_USEC(MtmHeartbeatSendTimeout)*2 < now) {
357+
if (last_sent_heartbeat != 0 && last_sent_heartbeat + MSEC_TO_USEC(MtmHeartbeatSendTimeout)*2 < now) {
358358
MTM_LOG1("More than %ld microseconds since last heartbeat", now - last_sent_heartbeat);
359359
}
360360
last_sent_heartbeat = now;
@@ -1024,7 +1024,7 @@ static void MtmTransReceiver(Datum arg)
10241024
MTM_LOG1("Last hearbeat from node %d received %ld microseconds ago", i+1, now - Mtm->nodes[i].lastHeartbeat);
10251025
}
10261026
}
1027-
MTM_LOG1("epoll started %ld and finished %ld microseconds ago", now - startPolling, now - stopPolling);
1027+
MTM_LOG2("epoll started %ld and finished %ld microseconds ago", now - startPolling, now - stopPolling);
10281028
}
10291029
lastHeartbeatCheck = now;
10301030
}

multimaster.c

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -567,7 +567,7 @@ MtmAdjustOldestXid(TransactionId xid)
567567
if (MtmUseDtm)
568568
{
569569
if (prev != NULL) {
570-
MTM_LOG1("%d: MtmAdjustOldestXid: oldestXid=%d, prev->xid=%d, prev->status=%d, prev->snapshot=%ld, ts->xid=%d, ts->status=%d, ts->snapshot=%ld, oldestSnapshot=%ld",
570+
MTM_LOG2("%d: MtmAdjustOldestXid: oldestXid=%d, prev->xid=%d, prev->status=%d, prev->snapshot=%ld, ts->xid=%d, ts->status=%d, ts->snapshot=%ld, oldestSnapshot=%ld",
571571
MyProcPid, xid, prev->xid, prev->status, prev->snapshot, (ts ? ts->xid : 0), (ts ? ts->status : -1), (ts ? ts->snapshot : -1), oldestSnapshot);
572572
Mtm->transListHead = prev;
573573
Mtm->oldestXid = xid = prev->xid;
@@ -886,7 +886,7 @@ MtmPostPrepareTransaction(MtmCurrentTrans* x)
886886
MtmLock(LW_EXCLUSIVE);
887887
ts = hash_search(MtmXid2State, &x->xid, HASH_FIND, NULL);
888888
Assert(ts != NULL);
889-
if (x->gid[0]) MTM_LOG1("Preparing transaction %d (%s) at %ld", x->xid, x->gid, MtmGetCurrentTime());
889+
//if (x->gid[0]) MTM_LOG1("Preparing transaction %d (%s) at %ld", x->xid, x->gid, MtmGetCurrentTime());
890890
if (!MtmIsCoordinator(ts) || Mtm->status == MTM_RECOVERY) {
891891
bool found;
892892
MtmTransMap* tm = (MtmTransMap*)hash_search(MtmGid2State, x->gid, HASH_ENTER, &found);
@@ -940,7 +940,7 @@ MtmPostPrepareTransaction(MtmCurrentTrans* x)
940940
MTM_LOG3("%d: Result of vote: %d", MyProcPid, ts->status);
941941
MtmUnlock();
942942
}
943-
if (x->gid[0]) MTM_LOG1("Prepared transaction %d (%s) csn=%ld at %ld: %d", x->xid, x->gid, ts->csn, MtmGetCurrentTime(), ts->status);
943+
//if (x->gid[0]) MTM_LOG1("Prepared transaction %d (%s) csn=%ld at %ld: %d", x->xid, x->gid, ts->csn, MtmGetCurrentTime(), ts->status);
944944
if (Mtm->inject2PCError == 3) {
945945
Mtm->inject2PCError = 0;
946946
elog(ERROR, "ERROR INJECTION for transaction %d (%s)", x->xid, x->gid);
@@ -2596,7 +2596,9 @@ MtmReplicationStartupHook(struct PGLogicalStartupHookArgs* args)
25962596
} else {
25972597
MtmUnlock();
25982598
MtmRefreshClusterStatus(true);
2599+
MtmLock(LW_SHARED);
25992600
if (BIT_CHECK(Mtm->disabledNodeMask, MtmReplicationNodeId-1)) {
2601+
MtmUnlock();
26002602
elog(ERROR, "Disabled node %d tries to reconnect without recovery", MtmReplicationNodeId);
26012603
}
26022604
}

pglogical_apply.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -343,7 +343,7 @@ process_remote_begin(StringInfo s)
343343

344344
inside_tx = true;
345345

346-
MTM_LOG1("REMOTE begin node=%d xid=%d snapshot=%ld", gtid.node, gtid.xid, snapshot);
346+
MTM_LOG2("REMOTE begin node=%d xid=%d snapshot=%ld", gtid.node, gtid.xid, snapshot);
347347
}
348348

349349
static void
@@ -624,7 +624,7 @@ process_remote_commit(StringInfo in)
624624
gid = pq_getmsgstring(in);
625625
MTM_LOG2("PGLOGICAL_ABORT_PREPARED commit: gid=%s", gid);
626626
if (MtmExchangeGlobalTransactionStatus(gid, TRANSACTION_STATUS_ABORTED) == TRANSACTION_STATUS_UNKNOWN) {
627-
MTM_LOG1("PGLOGICAL_ABORT_PREPARED commit: gid=%s #2", gid);
627+
MTM_LOG2("PGLOGICAL_ABORT_PREPARED commit: gid=%s #2", gid);
628628
StartTransactionCommand();
629629
MtmBeginSession();
630630
MtmSetCurrentTransactionGID(gid);
@@ -967,7 +967,7 @@ void MtmExecutor(int id, void* work, size_t size)
967967
{
968968
while (true) {
969969
char action = pq_getmsgbyte(&s);
970-
MTM_LOG1("%d: REMOTE process action %c", MyProcPid, action);
970+
MTM_LOG2("%d: REMOTE process action %c", MyProcPid, action);
971971
#if 0
972972
if (Mtm->status == MTM_RECOVERY) {
973973
MTM_LOG1("Replay action %c[%x]", action, s.data[s.cursor]);

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy