Received: from maia.hub.org (maia-3.hub.org [200.46.204.243]) by mail.postgresql.org (Postfix) with ESMTP id 73CDB1337B93 for ; Tue, 8 Mar 2011 04:38:21 -0400 (AST) Received: from mail.postgresql.org ([200.46.204.86]) by maia.hub.org (mx1.hub.org [200.46.204.243]) (amavisd-maia, port 10024) with ESMTP id 38988-07-4 for ; Tue, 8 Mar 2011 08:38:13 +0000 (UTC) X-Greylist: from auto-whitelisted by SQLgrey-1.7.6 Received: from b.mail.sonic.net (b.mail.sonic.net [64.142.19.5]) by mail.postgresql.org (Postfix) with ESMTP id 0AD741337BD4 for ; Tue, 8 Mar 2011 04:38:12 -0400 (AST) Received: from newshell.sonic.net (bolt.sonic.net [208.201.242.19]) by b.mail.sonic.net (8.13.8.Beta0-Sonic/8.13.7) with ESMTP id p288c9lh025169 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Tue, 8 Mar 2011 00:38:09 -0800 Received: from bolt.sonic.net (IDENT:j7tKETiP2mppaq4ciriaB+GnGatCvgdI@localhost.localdomain [127.0.0.1]) by newshell.sonic.net (8.13.6/8.12.1) with ESMTP id p288c9Kh004315; Tue, 8 Mar 2011 00:38:09 -0800 Received: (from daveg@localhost) by bolt.sonic.net (8.13.6/8.12.1/Submit) id p288c8uD004314; Tue, 8 Mar 2011 00:38:08 -0800 Date: Tue, 8 Mar 2011 00:38:08 -0800 From: daveg To: Heikki Linnakangas Cc: Greg Stark , PostgreSQL-development Subject: Re: Re: PD_ALL_VISIBLE flag was incorrectly set happend during repeatable vacuum Message-ID: <20110308083808.GD21941@sonic.net> References: <1B3CCBDD-4AC6-404A-9E26-DB4CA2554228@endpoint.com> <20110303071208.GA4053@sonic.net> <4D6F4E5D.6080507@enterprisedb.com> <20110304090031.GE4053@sonic.net> <4D710ABD.5090103@enterprisedb.com> <20110307235340.GA21941@sonic.net> <4D75E201.20402@enterprisedb.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4D75E201.20402@enterprisedb.com> User-Agent: Mutt/1.4.2.3i X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=-1.91 tagged_above=-5 required=5 tests=BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, T_RP_MATCHES_RCVD=-0.01 X-Spam-Level: X-Archive-Number: 201103/537 X-Sequence-Number: 183787 On Tue, Mar 08, 2011 at 10:00:01AM +0200, Heikki Linnakangas wrote: > On 08.03.2011 04:07, Greg Stark wrote: > >Well from that log you definitely have OldestXmin going backwards. And > >not by a little bit either. at 6:33 it set the all_visible flag and > >then at 7:01 it was almost 1.3 million transactions earlier. In fact > >to precisely the same value that was in use for a transaction at 1:38. > >That seems like a bit of a coincidence though it's not repeated > >earlier. > > Yep. After staring at GetOldestXmin() again, it finally struck me how > OldestXmin can move backwards. You need two databases for it, which > probably explains why this has been so elusive. ... > What there are no other transactions active in the same database, > GetOldestXmin() returns just latestCompletedXid. When you open a > transaction in the same database after that, its xid will be above > latestCompletedXid, but its xmin includes transactions from all > databases, and there might be a transaction in some other database with > an xid that precedes the value that GetOldestXmin() returned earlier. > > I'm not sure what to do about that. One idea is track two xmin values in > proc-array, one that includes transactions in all databases, and another > that only includes transactions in the same database. GetOldestXmin() > (when allDbs is false) would only pay attention to the latter. It would > add a few instructions to GetSnapshotData(), though. > > Another idea is to give up on the warning when it appears that > oldestxmin has moved backwards, and assume that it's actually fine. We > could still warn in other cases where the flag appears to be incorrectly > set, like if there is a deleted tuple on the page. I read this to mean that it is safe to ignore this warning and that these databases are not at risk for data corruption or wrong results so long as the warning is due to oldestxmin. Please correct me if I have misunderstood. Thanks -dg -- David Gould daveg@sonic.net 510 536 1443 510 282 0869 If simplicity worked, the world would be overrun with insects.