Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.80) (envelope-from ) id 1X9GCf-0007qm-17 for pgsql-bugs@arkaria.postgresql.org; Mon, 21 Jul 2014 16:12:41 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.80) (envelope-from ) id 1X9GCd-0008Fl-FN for pgsql-bugs@arkaria.postgresql.org; Mon, 21 Jul 2014 16:12:39 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:DHE_RSA_AES_256_CBC_SHA256:256) (Exim 4.80) (envelope-from ) id 1X9GCU-00080m-Qc for pgsql-bugs@postgresql.org; Mon, 21 Jul 2014 16:12:30 +0000 Received: from mail.anarazel.de ([217.115.131.40]) by magus.postgresql.org with esmtp (Exim 4.80) (envelope-from ) id 1X9GCO-0007Qz-As for pgsql-bugs@postgresql.org; Mon, 21 Jul 2014 16:12:27 +0000 Received: from intern.anarazel.de (p5DDC7BF8.dip0.t-ipconnect.de [93.220.123.248]) (Authenticated sender: andres@anarazel.de) by mail.anarazel.de (Postfix) with ESMTPSA id 52E06500002; Mon, 21 Jul 2014 18:12:23 +0200 (CEST) Date: Mon, 21 Jul 2014 18:12:22 +0200 From: Andres Freund To: Tom Lane Cc: Bruce Momjian , Alvaro Herrera , PostgreSQL Bugs Subject: Re: pg_upgrade < 9.3 -> >=9.3 misses a step around multixacts Message-ID: <20140721161222.GA17049@alap3.anarazel.de> References: <20140720223010.GF5974@alap3.anarazel.de> <17935.1405895946@sss.pgh.pa.us> <20140720225653.GG5974@alap3.anarazel.de> <18673.1405897470@sss.pgh.pa.us> <18851.1405897900@sss.pgh.pa.us> <20140720233125.GI5974@alap3.anarazel.de> <19458.1405899435@sss.pgh.pa.us> <20140720234925.GJ5974@alap3.anarazel.de> <22178.1405903964@sss.pgh.pa.us> <26504.1405912770@sss.pgh.pa.us> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <26504.1405912770@sss.pgh.pa.us> X-Pg-Spam-Score: -2.6 (--) List-Archive: List-Help: List-ID: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-Mailing-List: pgsql-bugs Precedence: bulk Sender: pgsql-bugs-owner@postgresql.org On 2014-07-20 23:19:30 -0400, Tom Lane wrote: > I wrote: > > Here's a draft patch for this. I think this will fix all cases where > > the "1" minmxid inserted by previous pg_upgrade versions is actually > > in the future at the time we run VACUUM. We would still be at risk if > > it had been in the future when pg_upgrade ran but no longer is now, > > since that would mean there could be non-lock-only mxids on disk that > > are older than "1". However, for the reasons discussed upthread, it > > seems fairly unlikely to me that people would actually get burnt in > > practice, so I'm satisfied with doing this much and no more. > > Ah, belay that: as coded, that would allow truncation of clog/multixact > as soon as any one relation in any one database had sane > frozenxid/minmxid. If we want to have any pretense of being safe, we have > to postpone truncation until *all* relations have been vacuumed. So more > like the attached, instead. Looks basically good to me. Two minor things: 1) How about adding a elog(WARNING, "relation %u has invalid freeze limits", ...) to vac_update_datfrozenxid()? Otherwise it's a bit hard to understand what's going on. I wouldn't want to invest too much effort into the precision of the message, but some log bleat seems justified. 2) From a pedantic POV lastSane* should be initialized to ReadNewTransactionId()/ReadNextMultiXactId(). On a busy system we could otherwise consider concurrently updated values as being too new if some longrunning transaction finishes. Also GetOldestXmin() can sometimes go backwards... Greetings, Andres Freund -- Andres Freund http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training & Services -- Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-bugs