From: | Hannu Krosing <hannu(at)2ndQuadrant(dot)com> |
---|---|
To: | Heikki Linnakangas <hlinnakangas(at)vmware(dot)com> |
Cc: | PostgreSQL-development <pgsql-hackers(at)postgreSQL(dot)org>, Kevin Grittner <kgrittn(at)ymail(dot)com> |
Subject: | Re: SSI freezing bug |
Date: | 2013-09-22 22:07:33 |
Message-ID: | 523F6A25.60308@2ndQuadrant.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On 09/20/2013 12:55 PM, Heikki Linnakangas wrote:
> Hi,
>
> Prompted by Andres Freund's comments on my Freezing without Write I/O
> patch, I realized that there's there's an existing bug in the way
> predicate locking handles freezing (or rather, it doesn't handle it).
>
> When a tuple is predicate-locked, the key of the lock is ctid+xmin.
> However, when a tuple is frozen, its xmin is changed to FrozenXid.
> That effectively invalidates any predicate lock on the tuple, as
> checking for a lock on the same tuple later won't find it as the xmin
> is different.
>
> Attached is an isolationtester spec to demonstrate this.
The case is even fishier than that.
That is, you can get bad behaviour on at least v9.2.4 even without
VACUUM FREEZE.
You just need to run
permutation "r1" "r2" "w1" "w2" "c1" "c2"
twice in a row.
the first time it does get serialization error at "c2"
but the 2nd time both "c1" and "c2" complete successfully
Cheers
--
Hannu Krosing
PostgreSQL Consultant
Performance, Scalability and High Availability
2ndQuadrant Nordic OÜ
From | Date | Subject | |
---|---|---|---|
Next Message | Peter Geoghegan | 2013-09-22 22:21:15 | Re: INSERT...ON DUPLICATE KEY LOCK FOR UPDATE |
Previous Message | Valentine Gogichashvili | 2013-09-22 21:55:40 | Re: UTF8 national character data type support WIP patch and list of open issues. |