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

Commit5a61a27

Browse files
knizhnikkelvich
authored andcommitted
Reverted MtmAdjustOldestXid
1 parenta0f28cd commit5a61a27

File tree

1 file changed

+47
-0
lines changed

1 file changed

+47
-0
lines changed

‎multimaster.c

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -404,6 +404,7 @@ bool MtmXidInMVCCSnapshot(TransactionId xid, Snapshot snapshot)
404404
* We collest oldest CSNs from all nodes and choose minimum from them.
405405
* If no such XID can be located, then return previously observed oldest XID
406406
*/
407+
#if0
407408
staticTransactionId
408409
MtmAdjustOldestXid(TransactionIdxid)
409410
{
@@ -457,7 +458,53 @@ MtmAdjustOldestXid(TransactionId xid)
457458
}
458459
returnxid;
459460
}
461+
#else
462+
staticTransactionId
463+
MtmAdjustOldestXid(TransactionIdxid)
464+
{
465+
if (TransactionIdIsValid(xid)) {
466+
MtmTransState*ts,*prev=NULL;
467+
inti;
460468

469+
MtmLock(LW_EXCLUSIVE);
470+
ts= (MtmTransState*)hash_search(MtmXid2State,&xid,HASH_FIND,NULL);
471+
if (ts!=NULL&&ts->status==TRANSACTION_STATUS_COMMITTED) {
472+
csn_toldestSnapshot=ts->csn;
473+
Mtm->nodes[MtmNodeId-1].oldestSnapshot=oldestSnapshot;
474+
for (i=0;i<MtmNodes;i++) {
475+
if (!BIT_CHECK(Mtm->disabledNodeMask,i)
476+
&&Mtm->nodes[i].oldestSnapshot<oldestSnapshot)
477+
{
478+
oldestSnapshot=Mtm->nodes[i].oldestSnapshot;
479+
}
480+
}
481+
oldestSnapshot-=MtmVacuumDelay*USEC;
482+
483+
for (ts=Mtm->transListHead;
484+
ts!=NULL
485+
&&ts->csn<oldestSnapshot
486+
&&TransactionIdPrecedes(ts->xid,xid)
487+
&& (ts->status==TRANSACTION_STATUS_COMMITTED||
488+
ts->status==TRANSACTION_STATUS_ABORTED);
489+
prev=ts,ts=ts->next)
490+
{
491+
if (prev!=NULL) {
492+
/* Remove information about too old transactions */
493+
hash_search(MtmXid2State,&prev->xid,HASH_REMOVE,NULL);
494+
}
495+
}
496+
}
497+
if (prev!=NULL) {
498+
Mtm->transListHead=prev;
499+
Mtm->oldestXid=xid=prev->xid;
500+
}elseif (TransactionIdPrecedes(Mtm->oldestXid,xid)) {
501+
xid=Mtm->oldestXid;
502+
}
503+
MtmUnlock();
504+
}
505+
returnxid;
506+
}
507+
#endif
461508
/*
462509
* -------------------------------------------
463510
* Transaction list manipulation

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp