From: | Rajeev rastogi <rajeev(dot)rastogi(at)huawei(dot)com> |
---|---|
To: | Robert Haas <robertmhaas(at)gmail(dot)com>, Craig Ringer <craig(at)2ndquadrant(dot)com> |
Cc: | PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org>, Simon Riggs <simon(at)2ndquadrant(dot)com> |
Subject: | Re: Autonomous Transaction is back |
Date: | 2015-08-03 04:37:56 |
Message-ID: | BF2827DCCE55594C8D7A8F7FFD3AB7715990EA8E@szxeml521-mbs.china.huawei.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On 31 July 2015 23:10, Robert Haas Wrote:
On Tue, Jul 28, 2015 at 6:01 AM, Craig Ringer <craig(at)2ndquadrant(dot)com> wrote:
>> That should be practical to special-case by maintaining a list of
>> parent transaction (virtual?) transaction IDs. Attempts to wait on a
>> lock held by any of those should fail immediately. There's no point
>> waiting for the deadlock detector since the outer tx can never
>> progress and commit/rollback to release locks, and it might not be
>> able to see the parent/child relationship from outside the backend
>> doing the nested tx anyway.
>I think we're going entirely down the wrong path here. Why is it ever useful for a backend's lock requests to conflict with themselves, even with autonomous transactions? That seems like an artifact of somebody else's implementation that we should be happy we don't need to copy.
IMHO, since most of the locking are managed at transaction level not backend level and we consider main & autonomous transaction to be independent transaction, then practically they may conflict right.
It is also right as you said that there is no as such useful use-cases where autonomous transaction conflicts with main (parent) transaction. But we cannot take it for granted as user might make a mistake. So at-least we should have some mechanism to handle this rare case, for which as of now I think throwing error from autonomous transaction as one of the solution. Once error thrown from autonomous transaction, main transaction may continue as it is (or abort main transaction also??).
Any other suggestion to handle this will be really helpful.
Thanks and Regards,
Kumar Rajeev Rastogi
From | Date | Subject | |
---|---|---|---|
Next Message | Michael Paquier | 2015-08-03 05:15:27 | Re: Doubt about AccessExclusiveLock in ALTER TABLE .. SET ( .. ); |
Previous Message | Amit Kapila | 2015-08-03 04:05:27 | Re: Transactions involving multiple postgres foreign servers |