Skip to content

Commit 91cca9c

Browse files
committed
Merge branch 'master' of github.com:postgrespro/postgres_cluster
2 parents 38c4a78 + 494e6dc commit 91cca9c

File tree

3 files changed

+9
-68
lines changed

3 files changed

+9
-68
lines changed

contrib/mmts/arbiter.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -665,8 +665,8 @@ static void MtmTransReceiver(Datum arg)
665665
do {
666666
struct timeval tv;
667667
events = inset;
668-
tv.tv_sec = MtmKeepaliveTimeout/USEC;
669-
tv.tv_usec = MtmKeepaliveTimeout%USEC;
668+
tv.tv_sec = MtmKeepaliveTimeout/USECS_PER_SEC;
669+
tv.tv_usec = MtmKeepaliveTimeout%USECS_PER_SEC;
670670
do {
671671
n = select(max_fd+1, &events, NULL, NULL, &tv);
672672
} while (n < 0 && errno == EINTR);

contrib/mmts/multimaster.c

Lines changed: 6 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ typedef enum
9393
#define MTM_MAP_SIZE 1003
9494
#define MIN_WAIT_TIMEOUT 1000
9595
#define MAX_WAIT_TIMEOUT 100000
96-
#define STATUS_POLL_DELAY USEC
96+
#define STATUS_POLL_DELAY USECS_PER_SEC
9797

9898
void _PG_init(void);
9999
void _PG_fini(void);
@@ -262,7 +262,7 @@ timestamp_t MtmGetSystemTime(void)
262262
{
263263
struct timeval tv;
264264
gettimeofday(&tv, NULL);
265-
return (timestamp_t)tv.tv_sec*USEC + tv.tv_usec + Mtm->timeShift;
265+
return (timestamp_t)tv.tv_sec*USECS_PER_SEC + tv.tv_usec + Mtm->timeShift;
266266
}
267267

268268
timestamp_t MtmGetCurrentTime(void)
@@ -402,7 +402,7 @@ bool MtmXidInMVCCSnapshot(TransactionId xid, Snapshot snapshot)
402402
if (delta > maxSleepTime) {
403403
maxSleepTime = delta;
404404
}
405-
if (now > prevReportTime + USEC*10) {
405+
if (now > prevReportTime + USECS_PER_SEC*10) {
406406
prevReportTime = now;
407407
if (firstReportTime == 0) {
408408
firstReportTime = now;
@@ -443,70 +443,13 @@ bool MtmXidInMVCCSnapshot(TransactionId xid, Snapshot snapshot)
443443
* We collest oldest CSNs from all nodes and choose minimum from them.
444444
* If no such XID can be located, then return previously observed oldest XID
445445
*/
446-
#if 0
447-
static TransactionId
448-
MtmAdjustOldestXid(TransactionId xid)
449-
{
450-
if (TransactionIdIsValid(xid)) {
451-
MtmTransState *ts, *prev = NULL;
452-
csn_t oldestSnapshot = 0;
453-
int i;
454-
455-
MtmLock(LW_EXCLUSIVE);
456-
for (ts = Mtm->transListHead; ts != NULL; ts = ts->next) {
457-
if (TransactionIdPrecedes(ts->xid, xid)
458-
&& ts->status == TRANSACTION_STATUS_COMMITTED
459-
&& ts->csn > oldestSnapshot)
460-
{
461-
oldestSnapshot = ts->csn;
462-
}
463-
}
464-
Mtm->nodes[MtmNodeId-1].oldestSnapshot = oldestSnapshot;
465-
for (i = 0; i < Mtm->nAllNodes; i++) {
466-
if (!BIT_CHECK(Mtm->disabledNodeMask, i)
467-
&& Mtm->nodes[i].oldestSnapshot < oldestSnapshot)
468-
{
469-
oldestSnapshot = Mtm->nodes[i].oldestSnapshot;
470-
}
471-
}
472-
oldestSnapshot -= MtmVacuumDelay*USEC;
473-
for (ts = Mtm->transListHead;
474-
ts != NULL
475-
&& ts->csn < oldestSnapshot
476-
&& TransactionIdPrecedes(ts->xid, xid)
477-
&& (ts->status == TRANSACTION_STATUS_COMMITTED ||
478-
ts->status == TRANSACTION_STATUS_ABORTED);
479-
ts = ts->next)
480-
{
481-
if (ts->status == TRANSACTION_STATUS_COMMITTED) {
482-
prev = ts;
483-
}
484-
}
485-
if (prev != NULL) {
486-
for (ts = Mtm->transListHead; ts != prev; ts = ts->next) {
487-
/* Remove information about too old transactions */
488-
Assert(ts->status != TRANSACTION_STATUS_UNKNOWN);
489-
hash_search(MtmXid2State, &ts->xid, HASH_REMOVE, NULL);
490-
}
491-
Mtm->transListHead = prev;
492-
Mtm->oldestXid = xid = prev->xid;
493-
} else if (TransactionIdPrecedes(Mtm->oldestXid, xid)) {
494-
xid = Mtm->oldestXid;
495-
}
496-
MtmUnlock();
497-
}
498-
return xid;
499-
}
500-
#else
501446
static TransactionId
502447
MtmAdjustOldestXid(TransactionId xid)
503448
{
504449
if (TransactionIdIsValid(xid)) {
505450
MtmTransState *ts, *prev = NULL;
506451
int i;
507452

508-
return FirstNormalTransactionId;
509-
510453
MtmLock(LW_EXCLUSIVE);
511454
ts = (MtmTransState*)hash_search(MtmXid2State, &xid, HASH_FIND, NULL);
512455
if (ts != NULL && ts->status == TRANSACTION_STATUS_COMMITTED) {
@@ -519,7 +462,7 @@ MtmAdjustOldestXid(TransactionId xid)
519462
oldestSnapshot = Mtm->nodes[i].oldestSnapshot;
520463
}
521464
}
522-
oldestSnapshot -= MtmVacuumDelay*USEC;
465+
oldestSnapshot -= MtmVacuumDelay*USECS_PER_SEC;
523466

524467
for (ts = Mtm->transListHead;
525468
ts != NULL
@@ -541,7 +484,7 @@ MtmAdjustOldestXid(TransactionId xid)
541484
Mtm->transListHead = prev;
542485
Mtm->oldestXid = xid = prev->xid;
543486
} else {
544-
Assert(TransactionIdPrecedesOrEqual(Mtm->oldestXid, xid));
487+
Assert(TransactionIdPrecedesOrEquals(Mtm->oldestXid, xid));
545488
xid = Mtm->oldestXid;
546489
}
547490
} else {
@@ -553,7 +496,6 @@ MtmAdjustOldestXid(TransactionId xid)
553496
}
554497
return xid;
555498
}
556-
#endif
557499
/*
558500
* -------------------------------------------
559501
* Transaction list manipulation
@@ -2357,7 +2299,7 @@ mtm_get_nodes_state(PG_FUNCTION_ARGS)
23572299
usrfctx->values[4] = Int64GetDatum(lag);
23582300
usrfctx->nulls[4] = lag < 0;
23592301
usrfctx->values[5] = Int64GetDatum(Mtm->transCount ? Mtm->nodes[usrfctx->nodeId-1].transDelay/Mtm->transCount : 0);
2360-
usrfctx->values[6] = TimestampTzGetDatum(time_t_to_timestamptz(Mtm->nodes[usrfctx->nodeId-1].lastStatusChangeTime/USEC));
2302+
usrfctx->values[6] = TimestampTzGetDatum(time_t_to_timestamptz(Mtm->nodes[usrfctx->nodeId-1].lastStatusChangeTime/USECS_PER_SEC));
23612303
usrfctx->values[7] = CStringGetTextDatum(Mtm->nodes[usrfctx->nodeId-1].con.connStr);
23622304
usrfctx->nodeId += 1;
23632305

contrib/mmts/multimaster.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,7 @@
4646
#define MULTIMASTER_BROADCAST_SERVICE "mtm_broadcast"
4747
#define MULTIMASTER_ADMIN "mtm_admin"
4848

49-
#define USEC 1000000
50-
#define MB (1024*1024)
49+
#define MB (1024*1024L)
5150

5251
#define USEC_TO_MSEC(t) ((t)/1000)
5352
#define MSEC_TO_USEC(t) ((t)*1000)

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