Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.80) (envelope-from ) id 1ViKGN-0002S4-OH for pgsql-hackers@arkaria.postgresql.org; Mon, 18 Nov 2013 08:32:55 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.80) (envelope-from ) id 1ViKGN-0005Sl-6p for pgsql-hackers@arkaria.postgresql.org; Mon, 18 Nov 2013 08:32:55 +0000 Received: from makus.postgresql.org ([2001:4800:7903:4::125]) by malur.postgresql.org with esmtp (Exim 4.80) (envelope-from ) id 1ViKGL-0005Qv-77 for pgsql-hackers@postgresql.org; Mon, 18 Nov 2013 08:32:53 +0000 Received: from smtp-outbound-2.vmware.com ([208.91.2.13]) by makus.postgresql.org with esmtp (Exim 4.80) (envelope-from ) id 1ViKGH-0005CM-QD for pgsql-hackers@postgresql.org; Mon, 18 Nov 2013 08:32:52 +0000 Received: from sc9-mailhost2.vmware.com (sc9-mailhost2.vmware.com [10.113.161.72]) by smtp-outbound-2.vmware.com (Postfix) with ESMTP id CA26B297D5; Mon, 18 Nov 2013 00:32:48 -0800 (PST) Received: from zcs-prod-ext-mta-2.vmware.com (zcs-prod-ext-mta-2.vmware.com [10.113.62.224]) by sc9-mailhost2.vmware.com (Postfix) with ESMTP id C2AD0B04CC; Mon, 18 Nov 2013 00:32:48 -0800 (PST) Received: from zcs-prod-ext-mta-2.vmware.com (localhost.localdomain [127.0.0.1]) by zcs-prod-ext-mta-2.vmware.com (Postfix) with ESMTP id 7B538C005A; Mon, 18 Nov 2013 00:33:06 -0800 (PST) Received: from [192.168.1.90] (zimbra-prod-ext-proxy-vip.vmware.com [10.113.63.87]) by zcs-prod-ext-mta-2.vmware.com (Postfix) with ESMTPSA; Mon, 18 Nov 2013 00:33:05 -0800 (PST) Message-ID: <5289D0AE.20707@vmware.com> Date: Mon, 18 Nov 2013 10:32:46 +0200 From: Heikki Linnakangas Organization: VMware User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20131005 Icedove/17.0.9 MIME-Version: 1.0 To: =?UTF-8?B?0JzQuNGI0LAg0KLRjtGA0LjQvQ==?= CC: "pgsql-hackers@postgresql.org" , Sergey Burladyan Subject: Re: freeze cannot be finished References: <1384632355.250156225@f64.i.mail.ru> In-Reply-To: <1384632355.250156225@f64.i.mail.ru> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Pg-Spam-Score: -7.4 (-------) List-Archive: List-Help: List-ID: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-Mailing-List: pgsql-hackers Precedence: bulk Sender: pgsql-hackers-owner@postgresql.org Committed, thanks for the report! On 16.11.2013 22:05, Миша Тюрин wrote: > Hello! > > Could anyone review patch suggested by Jeff Janes ? > > Initial thread http://www.postgresql.org/message-id/flat/1384356585.995240612%40f50.i.mail.ru > > Thanks in advance! > >> >> On Wed, Nov 13, 2013 at 3:53 PM, Sergey Burladyan < eshkinkot@gmail.com > wrote: >>> Jeff Janes < jeff.janes@gmail.com > writes: >>> >>> If I not mistaken, looks like lazy_scan_heap() called from lazy_vacuum_rel() >>> (see [1]) skip pages, even if it run with scan_all == true, lazy_scan_heap() >>> does not increment scanned_pages if lazy_check_needs_freeze() return false, so >>> if this occurred at wraparound vacuum it cannot update pg_class, because >>> pg_class updated via this code: >>> >>> new_frozen_xid = FreezeLimit; >>> if (vacrelstats->scanned_pages < vacrelstats->rel_pages) >>> new_frozen_xid = InvalidTransactionId; >>> >>> vac_update_relstats(onerel, >>> new_rel_pages, >>> new_rel_tuples, >>> new_rel_allvisible, >>> vacrelstats->hasindex, >>> new_frozen_xid); >>> >>> so i think in our prevent wraparound vacuum vacrelstats->scanned_pages always >>> less than vacrelstats->rel_pages and pg_class relfrozenxid never updated. >> >> Yeah, I think that that is a bug. If the clean-up lock is unavailable but the page is inspected without it and found not to need freezing, then the page needs to be counted as scanned, but is not so counted. >> >> commit bbb6e559c4ea0fb4c346beda76736451dc24eb4e >> Date: Mon Nov 7 21:39:40 2011 -0500 >> >> But this was introduced in 9.2.0, so unless the OP didn't upgrade to 9.2 until recently, I don't know why it just started happening. >> >> It looks like a simple fix (to HEAD attached), but I don't know how to test it. >> >> Also, it seem like it might be worth issuing a warning if scan_all is true but all was not scanned. >> >> Cheers, >> >> Jeff >> >> -- >> Sent via pgsql-general mailing list (pgsql-general@postgresql.org) >> To make changes to your subscription: >> https://urldefense.proofpoint.com/v1/url?u=http://www.postgresql.org/mailpref/pgsql-general&k=oIvRg1%2BdGAgOoM1BIlLLqw%3D%3D%0A&r=xGch4oNJbpD%2BKPJECmgw4SLBhytSZLBX7UnkZhtNcpw%3D%0A&m=n4tu%2Fhw2DBAVCLO0UwZqdJsniWyqjnPt3OK%2FqepXInw%3D%0A&s=ffa1f6d45b713d12b320b72a4f417015498f57305664de0da209dc32f5e8a63b > >> > > -- > > > > -- - Heikki -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers