Re: cannot freeze committed xmax

Поиск
Список
Период
Сортировка
От Mark Dilger
Тема Re: cannot freeze committed xmax
Дата
Msg-id 8B2560FC-F92D-46A4-8D71-EA274B5A56FC@enterprisedb.com
обсуждение исходный текст
Ответ на cannot freeze committed xmax  (Konstantin Knizhnik <k.knizhnik@postgrespro.ru>)
Ответы Re: cannot freeze committed xmax  (Konstantin Knizhnik <k.knizhnik@postgrespro.ru>)
Список pgsql-hackers

> On Oct 28, 2020, at 6:44 AM, Konstantin Knizhnik <k.knizhnik@postgrespro.ru> wrote:
>
> Looks like there is no assumption that xmax should be set to InvalidTransactionId when HEAP_XMAX_INVALID bit is set.
> And I didn't find any check  preventing cutoff_xid to be greater than XID of some transaction which was aborted long
timeago. 

Nothing in your example suggests that cutoff_xid is wrong, so I'd assume that part is probably working ok.

Your data shows that HEAP_XMAX_INVALID and HEAP_UPDATED flags are both set.  That should only happen if the updating
transactionaborted.  But the query of clog is saying that it committed. Something is wrong with that.  How did the hint
bitsget set to HEAP_XMAX_INVALID if the transaction did commit.  Either some process is setting that hint bit when it
shouldn't,or your clog is corrupted and returning a bogus answer about the xmax having been committed.  Either way,
you'vegot corruption. 

Your question "preventing cutoff_xid to be greater than XID of some transaction which was aborted long time ago" seems
tobe ignoring that TransactionIdDidCommit(xid) is returning true, suggesting the transaction did not abort. 

—
Mark Dilger
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company






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

Предыдущее
От: Magnus Hagander
Дата:
Сообщение: Re: cutting down the TODO list thread
Следующее
От: John Naylor
Дата:
Сообщение: Re: duplicate function oid symbols