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

Commit73916d4

Browse files
knizhnikkelvich
authored andcommitted
Fixes in MtmAdjustOldestXid
1 parent24885ab commit73916d4

File tree

3 files changed

+9
-68
lines changed

3 files changed

+9
-68
lines changed

‎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
structtimevaltv;
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);

‎multimaster.c

Lines changed: 6 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ typedef enum
9292
#defineMTM_MAP_SIZE 1003
9393
#defineMIN_WAIT_TIMEOUT 1000
9494
#defineMAX_WAIT_TIMEOUT 100000
95-
#defineSTATUS_POLL_DELAYUSEC
95+
#defineSTATUS_POLL_DELAYUSECS_PER_SEC
9696

9797
void_PG_init(void);
9898
void_PG_fini(void);
@@ -261,7 +261,7 @@ timestamp_t MtmGetSystemTime(void)
261261
{
262262
structtimevaltv;
263263
gettimeofday(&tv,NULL);
264-
return (timestamp_t)tv.tv_sec*USEC+tv.tv_usec+Mtm->timeShift;
264+
return (timestamp_t)tv.tv_sec*USECS_PER_SEC+tv.tv_usec+Mtm->timeShift;
265265
}
266266

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

507-
returnFirstNormalTransactionId;
508-
509452
MtmLock(LW_EXCLUSIVE);
510453
ts= (MtmTransState*)hash_search(MtmXid2State,&xid,HASH_FIND,NULL);
511454
if (ts!=NULL&&ts->status==TRANSACTION_STATUS_COMMITTED) {
@@ -518,7 +461,7 @@ MtmAdjustOldestXid(TransactionId xid)
518461
oldestSnapshot=Mtm->nodes[i].oldestSnapshot;
519462
}
520463
}
521-
oldestSnapshot-=MtmVacuumDelay*USEC;
464+
oldestSnapshot-=MtmVacuumDelay*USECS_PER_SEC;
522465

523466
for (ts=Mtm->transListHead;
524467
ts!=NULL
@@ -540,7 +483,7 @@ MtmAdjustOldestXid(TransactionId xid)
540483
Mtm->transListHead=prev;
541484
Mtm->oldestXid=xid=prev->xid;
542485
}else {
543-
Assert(TransactionIdPrecedesOrEqual(Mtm->oldestXid,xid));
486+
Assert(TransactionIdPrecedesOrEquals(Mtm->oldestXid,xid));
544487
xid=Mtm->oldestXid;
545488
}
546489
}else {
@@ -552,7 +495,6 @@ MtmAdjustOldestXid(TransactionId xid)
552495
}
553496
returnxid;
554497
}
555-
#endif
556498
/*
557499
* -------------------------------------------
558500
* Transaction list manipulation
@@ -2356,7 +2298,7 @@ mtm_get_nodes_state(PG_FUNCTION_ARGS)
23562298
usrfctx->values[4]=Int64GetDatum(lag);
23572299
usrfctx->nulls[4]=lag<0;
23582300
usrfctx->values[5]=Int64GetDatum(Mtm->transCount ?Mtm->nodes[usrfctx->nodeId-1].transDelay/Mtm->transCount :0);
2359-
usrfctx->values[6]=TimestampTzGetDatum(time_t_to_timestamptz(Mtm->nodes[usrfctx->nodeId-1].lastStatusChangeTime/USEC));
2301+
usrfctx->values[6]=TimestampTzGetDatum(time_t_to_timestamptz(Mtm->nodes[usrfctx->nodeId-1].lastStatusChangeTime/USECS_PER_SEC));
23602302
usrfctx->values[7]=CStringGetTextDatum(Mtm->nodes[usrfctx->nodeId-1].con.connStr);
23612303
usrfctx->nodeId+=1;
23622304

‎multimaster.h

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

49-
#defineUSEC 1000000
50-
#defineMB (1024*1024)
49+
#defineMB (1024*1024L)
5150

5251
#defineUSEC_TO_MSEC(t) ((t)/1000)
5352
#defineMSEC_TO_USEC(t) ((t)*1000)

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp