On 04.03.2011 21:26, Kevin Grittner wrote:
"YAMAMOTO Takashi"<y...@mwd.biglobe.ne.jp>  wrote:

a seemingly wrong math in OldSerXidAdd makes it busy writing zeros
to pg_serial.

[patch]

Your fix looks correct to me -- we want to get from a SLRU segment
number to the first page of that segment, so SLRU_PAGES_PER_SEGMENT
is the right multiplier.

Thanks!

While I was looking at it, I noticed some obsolete comment lines
which should be removed.  Trivial patch attached.

Hmm, if I'm reading that function correctly, it makes sure that when headPage < 0 (which implies that the SLRU has not been used since startup, right? ), it zeroes out the whole SLRU file, not only the currently active region. At least pg_subtrans doesn't seem to bother with that, StartupSubTrans only zeroes the active region.

I wonder if we should move the responsibility of truncating the SLRU to checkpoint. At the moment, it's done in OldSerXidSetActiveSerXmin(), while the callers are holding SerializableXactHashLock in exclusive mode. While it'll probably go quickly in practice, it still seems like there's a risk of stalling all new transactions for a few seconds while that happens.

--
  Heikki Linnakangas
  EnterpriseDB   http://www.enterprisedb.com

--
Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs

Reply via email to