Re: could not truncate directory "pg_serial": apparent wraparound - Mailing list pgsql-hackers

From Kevin Grittner
Subject Re: could not truncate directory "pg_serial": apparent wraparound
Date
Msg-id 4DF072D1020000250003E418@gw.wicourts.gov
Whole thread Raw
List pgsql-hackers
Heikki Linnakangas  wrote:
> While testing this, I noticed another serious bug in the
> OldSerXidSLRU handling: we never set the dirty-flag on any page.
Arg.  I never noticed that there was such a thing, although in
retrospect I should have suspected it and gone hunting for it.
> I believe the reason we haven't bumped into this in testing before
> is that when a new page is initialized, it's marked as dirty, so
> everything goes smoothly when we modify recently-zeroed pages.
Sounds plausible.
> But if a page falls out of the cache, and is later read back in and
> modified, the modifications are lost.
> 
> The comments in SLRU could be more explicit about this. It was
> coincidental that I started to wonder where the pages are marked as
> dirty, I somehow thought the SLRU functions do that for you.
Yeah -- me, too.
> Fortunately the fix is very simple, we just need to set the
> page_dirty flag whenever we modify an slru page.
OK.
> But clearly this slru stuff needs more testing. It's pretty hard to
> write good repeatable test cases for these things, though.
Yeah, that is the problem.
Thanks for finding this.  Is there anything you would like me to do
in this area right now, or are you on it?
-Kevin


pgsql-hackers by date:

Previous
From: "Kevin Grittner"
Date:
Subject: Re: SSI work for 9.1
Next
From: Magnus Hagander
Date:
Subject: Re: .gitignore for some of cygwin files