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

+2-2
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

+5-3
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

+3-3
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)