Re: Wraparound limits

Поиск
Список
Период
Сортировка
От Heikki Linnakangas
Тема Re: Wraparound limits
Дата
Msg-id 53E379CE.6080108@vmware.com
обсуждение исходный текст
Ответ на Wraparound limits  (Teodor Sigaev <teodor@sigaev.ru>)
Список pgsql-hackers
On 08/07/2014 01:34 PM, Teodor Sigaev wrote:
> Hi!
>
> I have a questions about setting transaction's wraparound limits. Function
> SetTransactionIdLimit() in access/transam/varsup.c:
>
> 1)
>       xidWrapLimit = oldest_datfrozenxid + (MaxTransactionId >> 1);
>       if (xidWrapLimit < FirstNormalTransactionId)
>           xidWrapLimit += FirstNormalTransactionId;
>
> Isn't  it a problem if oldest_datfrozenxid > MaxTransactionId/2?

Don't think so. What problem do you see?

> 2)
>       xidStopLimit = xidWrapLimit - 1000000;
>       if (xidStopLimit < FirstNormalTransactionId)
>           xidStopLimit -= FirstNormalTransactionId;
>
>       xidWarnLimit = xidStopLimit - 10000000;
>       if (xidWarnLimit < FirstNormalTransactionId)
>           xidWarnLimit -= FirstNormalTransactionId;
>
> Why does it use '-' instead of '+' if variable < FirstNormalTransactionId? In
> this case it is easy to get xidStopLimit > xidWrapLimit or xidWarnLimit >
> xidStopLimit...

Remember that the limits are compared with xids using wrap-around aware 
functions TransactionIdPrecedes and TransactionidFollows. Not regular < 
and >. The "<" checks above are just to check if the XID hit one of the 
special TransactionIds, and if so, increase/decrese it to get back to 
the normal range.

- Heikki




В списке pgsql-hackers по дате отправления:

Предыдущее
От: Michael Paquier
Дата:
Сообщение: Re: pg_shmem_allocations view
Следующее
От: Fujii Masao
Дата:
Сообщение: Re: HEAD crashes with assertion and LWLOCK_STATS enabled