Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1eqRve-0003mB-W7 for pgsql-admin@arkaria.postgresql.org; Mon, 26 Feb 2018 23:11:31 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1eqRve-0003tN-03 for pgsql-admin@arkaria.postgresql.org; Mon, 26 Feb 2018 23:11:30 +0000 Received: from makus.postgresql.org ([2001:4800:1501:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1eqRtu-0007Lf-5p for pgsql-admin@lists.postgresql.org; Mon, 26 Feb 2018 23:09:42 +0000 Received: from smtprelay0199.b.hostedemail.com ([64.98.42.199] helo=smtprelay.b.hostedemail.com) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1eqRtp-0002Wb-E8 for pgsql-admin@postgresql.org; Mon, 26 Feb 2018 23:09:40 +0000 Received: from filter.hostedemail.com (10.5.19.248.rfc1918.com [10.5.19.248]) by smtprelay01.b.hostedemail.com (Postfix) with ESMTP id 358F32D2B6D; Mon, 26 Feb 2018 23:09:35 +0000 (UTC) X-Session-Marker: 616C76686572726540616C76682E6E6F2D69702E6F7267 X-Spam-Summary: 90,0,0,,d41d8cd98f00b204,alvherre@alvh.no-ip.org,:::::,RULES_HIT:41:355:379:599:960:965:966:967:968:973:982:988:989:1260:1277:1311:1312:1313:1314:1345:1359:1437:1515:1516:1518:1519:1534:1541:1593:1594:1595:1596:1711:1730:1747:1777:1792:2196:2199:2393:2525:2560:2564:2682:2685:2828:2859:2892:2919:2933:2937:2939:2942:2945:2947:2951:2954:3022:3138:3139:3140:3141:3142:3353:3865:3866:3867:3868:3870:3871:3872:3873:3874:3934:3936:3938:3941:3944:3947:3950:3953:3956:3959:4321:4385:4390:4395:4560:4605:5007:6117:6261:7903:8985:9025:9121:10004:10400:10848:11026:11232:11473:11658:11854:11914:12043:12438:12555:12660:12663:12679:12895:13069:13095:13161:13229:13311:13357:13439:13894:13895:14181:14721:14764:21063:21080:21324:21365:21433:21627:21740:30012:30041:30054:30070:30075,0,RBL:179.57.113.18:@alvh.no-ip.org:.lbl8.mailshell.net-62.8.63.190 64.201.201.201,CacheIP:none,Bayesian:0.5,0.5,0.5,Netcheck:none,DomainCache:0,MSF:not bulk,SPF:fn,MSBL:0,DNSBL:no-ip.org-dnsbl7.mailshell.net-12 X-HE-Tag: hot99_5392ad13d8b2f X-Filterd-Recvd-Size: 2745 Received: from alvin.alvh.no-ip.org (unknown [179.57.113.18]) (Authenticated sender: alvherre@alvh.no-ip.org) by omf06.b.hostedemail.com (Postfix) with ESMTPA; Mon, 26 Feb 2018 23:09:34 +0000 (UTC) Received: by alvin.alvh.no-ip.org (Postfix, from userid 1000) id D157392E; Mon, 26 Feb 2018 20:09:31 -0300 (-03) Date: Mon, 26 Feb 2018 20:09:31 -0300 From: Alvaro Herrera To: Alexandre Garcia Cc: "pgsql-admin@postgresql.org" , Andres Freund Subject: Re: postgresql 9.6 - cannot freeze committed xmax Message-ID: <20180226230931.3m7js5dkzxnu7tbi@alvherre.pgsql> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: User-Agent: NeoMutt/20170306-137-4415bd-dirty (1.8.0) List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk Alexandre Garcia wrote: > Recently our team performed an upgrade on one of our old postgres 9.2 > databases. "for science" we tried a direct upgrade from 9.2 to 9.6 on our > staging environment . The initial plan was to do 9.2 -> 9.4 and 9.4 -> 9.6. > > The upgrade turned out successful on staging and we decided to go with it > on prod as well. > Prod starting throwing the following errors during autovacuum -> 'cannot > freeze committed xmax ' on 2 different tables. Running vacuum manually > revealed more tables affected by the same error. > > The staging database did not present any error but the process to sync prod > to stage includes a sanitize script that removes sensitive information and > it somehow seems to fix the issue on stage (we've done a sync from prod to > stage after the upgrade) > > I've been doing a lot of search about this and even tried to go through the > code that throws that specific error. This particular error condition is a sanity check that was only introduced in 9.6.7, so you would not find too many reports of that (this exact error message wording doesn't exist prior to that). It is possible that we missed some corner case when writing that check. Upgrades from 9.2 are particularly unusual since the xmax header was reused in the 9.3 era to mean something completely different under some circumstances. I'm not in a position to do deeper debugging for you at this time, though. The commit in question is https://git.postgresql.org/pg/commitdiff/986a9153b9708071adf6ce2c9131266f3431f4ec Wild guess: maybe we should be checking HEAP_LOCKED_UPGRADED before bailing out. -- Álvaro Herrera https://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services