From: | Kevin Grittner <kgrittn(at)ymail(dot)com> |
---|---|
To: | Andres Freund <andres(at)2ndquadrant(dot)com> |
Cc: | Heikki Linnakangas <hlinnakangas(at)vmware(dot)com>, PostgreSQL-development <pgsql-hackers(at)postgreSQL(dot)org> |
Subject: | Re: SSI freezing bug |
Date: | 2013-10-02 22:05:48 |
Message-ID: | 1380751548.91621.YahooMailNeo@web162905.mail.bf1.yahoo.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Andres Freund <andres(at)2ndquadrant(dot)com> wrote:
> On 2013-10-01 07:41:46 -0700, Kevin Grittner wrote:
>> Andres Freund <andres(at)2ndquadrant(dot)com> wrote:
>>
>>> A better solution probably is to promote tuple-level locks if
>>> they exist to a relation level one upon freezing I guess?
>>
>> It would be sufficient to promote the tuple lock to a page lock.
>> It would be pretty easy to add a function to predicate.c which
>> would accept a Relation and HeapTuple, check for a predicate lock
>> for the tuple, and add a page lock if found (which will
>> automatically clear the tuple lock). This new function would be
>> called when a tuple was chosen for freezing. Since freezing always
>> causes WAL-logging and disk I/O, the cost of a couple hash table
>> operations should not be noticeable.
>
> Yea, not sure why I was thinking of table level locks.
>
>> This seems like a bug fix which should be back-patched to 9.1, yes?
>
> Yes.
Patch attached, including new isolation test based on Heikki's
example. This patch does change the signature of
heap_freeze_tuple(). If anyone thinks there is risk that external
code may be calling this, I could keep the old function with its
old behavior (including the bug) and add a new function name with
the new parameters added -- the old function could call the new one
with NULL for the last two parameters. I'm not sure whether that
is better than breaking a compile of code which uses the old
signature, which would force a choice about what to do.
Will give it a couple days for feedback before pushing.
--
Kevin Grittner
EDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company
Attachment | Content-Type | Size |
---|---|---|
freeze-ssi-v1.patch | text/x-diff | 93.4 KB |
From | Date | Subject | |
---|---|---|---|
Next Message | Josh Berkus | 2013-10-02 22:32:11 | Re: [PATCH] pg_upgrade: support for btrfs copy-on-write clones |
Previous Message | Merlin Moncure | 2013-10-02 21:14:31 | Re: [PERFORM] Cpu usage 100% on slave. s_lock problem. |