Re: Old row version in hot chain become visible after a freeze
Michael Paquier <michael.paquier@gmail.com>
From: Michael Paquier <michael.paquier@gmail.com>
To: Alvaro Herrera <alvherre@alvh.no-ip.org>
Cc: Peter Geoghegan <pg@bowt.ie>, "Wood, Dan" <hexpert@amazon.com>, "pgsql-bugs@postgresql.org" <pgsql-bugs@postgresql.org>,
Andres Freund <andres@anarazel.de>, "Wong, Yi Wen" <yiwong@amazon.com>
Date: 2017-09-12T12:32:12Z
Lists: pgsql-bugs
On Tue, Sep 12, 2017 at 5:22 PM, Alvaro Herrera <alvherre@alvh.no-ip.org> wrote: > Michael Paquier wrote: >> On Mon, Sep 11, 2017 at 11:01 PM, Alvaro Herrera >> <alvherre@alvh.no-ip.org> wrote: >> > (I also threw in a small sleep between heap_page_prune and >> > HeapTupleSatisfiesVacuum while testing, just to widen the problem window >> > to hopefully make any remaining problems more evident.) >> >> I am understanding that you mean heap_prepare_freeze_tuple here >> instead of heap_page_prune. > > Hmm ... no, I meant adding a sleep after the page is pruned, before > HeapTupleSatisfiesVacuum call that determines the action with regards to > freezing. Well, I have tested both. With the test case of Dan adding a sleep after calling HeapTupleSatisfiesVacuum() helped in increasing the window. Of course feel free to correct me. >> Using again the test of Dan at the top of the thread, I am seeing from >> time to time what looks like garbage data in xmax, like that: >> ctid | xmin | xmax | id >> -------+------+------+---- >> (0,1) | 620 | 0 | 1 >> (0,7) | 625 | 84 | 3 >> (2 rows) >> [...] >> ctid | xmin | xmax | id >> -------+------+------+---- >> (0,1) | 656 | 0 | 1 >> (0,6) | 661 | 128 | 3 >> (2 rows) > > I bet those are multixact values rather than garbage. You should see > HEAP_XMAX_IS_MULTI in t_infomask in those cases, and the values should > be near NextMultiXactId (make sure to checkpoint if you examine with > pg_controldata; I think it's easier to obtain it from shmem. Or you > could just use pg_get_multixact_members()). Yes, you're right. That's the case. So I guess that I don't have much complains about the patch as presented. -- Michael
Commits
-
Fix freezing of a dead HOT-updated tuple
- fb6de78a291b 9.5.10 landed
- d149aa762c05 9.3.20 landed
- 46c35116ae1a 10.0 landed
- 3a135bdb1b5e 9.6.6 landed
- 232c7cbcbbc6 9.4.15 landed
- 20b655224249 11.0 landed
-
Fix potential data corruption during freeze
- 31b8db8e6c1f 10.0 cited
-
Clarify the contract of partition_rbound_cmp().
- f1dae097f294 10.0 cited