On Sat, Jun 6, 2015 at 10:12 AM, Thomas Munro <thomas.mu...@enterprisedb.com> wrote: > On Sat, Jun 6, 2015 at 9:45 AM, Dan Langille <d...@langille.org> wrote: >> I noticed this today on my 9.4.2 server running on FreeBSD 10.1: >> >> Jun 5 18:59:40 slocum postgres[986]: [3957-1] LOG: could not truncate >> directory "pg_subtrans": apparent wraparound >> >> Looking at a post from 2010, Tom Lane suggest this information was useful: >> >> [root@slocum:/usr/local/pgsql/data/pg_subtrans] # ls -l >> total 1 >> -rw------- 1 pgsql pgsql 8192 Jun 5 19:04 0032 >> >> This not not a high throughput server. > > It looks like subtrantransactions may have a fencepost error similar > to multixacts, described here: > > http://www.postgresql.org/message-id/CAEepm=0DqAtnM=23oq44bbnwvn3g6+dxx+s5g4jrbp-vy8g...@mail.gmail.com > > I will try to repro this.
My idea was that if I could get oldestXact == next XID in TruncateSUBSTRANS, then TransactionIdToPage(oldestXact) for a value of oldestXact that happens to be immediately after a page boundary (so that xid % 2048 == 0) might give page number that is >= latest_page_number, causing SimpleLruTruncate to print that message. But I can't figure out how to get next XID == oldest XID, because vacuumdb --freeze --all consumes xids itself, so in my first attempt at this, next XID is always 3 ahead of the oldest XID when a checkpoint is run. -- Thomas Munro http://www.enterprisedb.com -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers