From: | Peter Geoghegan <pg(at)heroku(dot)com> |
---|---|
To: | Heikki Linnakangas <hlinnakangas(at)vmware(dot)com> |
Cc: | Robert Haas <robertmhaas(at)gmail(dot)com>, Andres Freund <andres(at)2ndquadrant(dot)com>, Pg Hackers <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: INSERT...ON DUPLICATE KEY LOCK FOR UPDATE |
Date: | 2013-11-26 21:41:41 |
Message-ID: | CAM3SWZSH+4C5iRkmo4-Ae+aDYuDdeFqfn=Vp0BRpSzTpDzTyqg@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Tue, Nov 26, 2013 at 11:32 AM, Heikki Linnakangas
<hlinnakangas(at)vmware(dot)com> wrote:
> After fixing that bug, I'm getting a correctly-detected deadlock every now
> and then with that test case.
We'll probably want to carefully consider how
predictably/deterministically this occurs.
> Hmm. That's because the trick I used to kill the just-inserted tuple
> confuses a concurrent heap_lock_tuple call. It doesn't expect the tuple it's
> locking to become invisible. Actually, doesn't your patch have the same bug?
> If you're about to lock a tuple in ON DUPLICATE KEY LOCK FOR UPDATE, and the
> transaction that inserted the duplicate row aborts just before the
> heap_lock_tuple() call, I think you'd also see that error.
Yes, that's true. It will occur much more frequently with your
previous revision, but the V4 patch is also affected.
>> To me this seems like a problem with the (potential) total lack of
>> locking that your approach takes (inserting btree unique index tuples
>> as in your patch is a form of value locking...sort of...it's a little
>> hard to reason about as presented). Do you think this might be an
>> inherent problem, or can you suggest a way to make your approach still
>> work?
>
>
> Just garden-variety bugs :-). Attached patch fixes both issues.
Great. I'll let you know what I think.
>> * Doesn't just work with one unique index. Naming a unique index
>> directly in DML, or assuming that the PK is intended seems quite weak
>> to me.
> Totally agreed on that.
Good.
BTW, you keep forgetting to add "expected" output of the new isolation tests.
--
Peter Geoghegan
From | Date | Subject | |
---|---|---|---|
Next Message | Peter Eisentraut | 2013-11-26 21:41:51 | Re: Cleaner build output when not much has changed |
Previous Message | Heikki Linnakangas | 2013-11-26 21:14:46 | Re: GIN improvements part 1: additional information |