Usage of epoch in txid_current - Mailing list pgsql-hackers

From Amit Kapila
Subject Usage of epoch in txid_current
Date
Msg-id CAA4eK1+Mv+mb0HFfWM9Srtc6MVe160WFurXV68iAFMcagRZ0dQ@mail.gmail.com
Whole thread Raw
Responses Re: Usage of epoch in txid_current  (Alexander Korotkov <a.korotkov@postgrespro.ru>)
List pgsql-hackers
Hi,

Currently, txid_current and friends export a 64-bit format of
transaction id that is extended with an “epoch” counter so that it
will not wrap around during the life of an installation.   The epoch
value it uses is based on the epoch that is maintained by checkpoint
(aka only checkpoint increments it).

Now if epoch changes multiple times between two checkpoints
(practically the chances of this are bleak, but there is a theoretical
possibility), then won't the computation of xids will go wrong?
Basically, it can give the same value of txid after wraparound if the
checkpoint doesn't occur between the two calls to txid_current.

Am I missing something which ensures that epoch gets incremented at or
after wraparound?

--
With Regards,
Amit Kapila.
EnterpriseDB: http://www.enterprisedb.com


pgsql-hackers by date:

Previous
From: Noah Misch
Date:
Subject: Re: REPLICA IDENTITY FULL
Next
From: Michael Paquier
Date:
Subject: Re: [HACKERS] pow support for pgbench