From: | Michael Paquier <michael(at)paquier(dot)xyz> |
---|---|
To: | Thomas Munro <thomas(dot)munro(at)gmail(dot)com> |
Cc: | Robert Haas <robertmhaas(at)gmail(dot)com>, Andres Freund <andres(at)anarazel(dot)de>, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, pgsql-hackers <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: Is RecoveryConflictInterrupt() entirely safe in a signal handler? |
Date: | 2022-06-21 07:43:55 |
Message-ID: | YrF2uwVHrqkGgC0R@paquier.xyz |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Tue, Jun 21, 2022 at 05:22:05PM +1200, Thomas Munro wrote:
> Here's one thing I got a bit confused about along the way, but it
> seems the comment was just wrong:
>
> + /*
> + * If we can abort just the current
> subtransaction then we are OK
> + * to throw an ERROR to resolve the conflict.
> Otherwise drop
> + * through to the FATAL case.
> ...
> + if (!IsSubTransaction())
> ...
> + ereport(ERROR,
>
> Surely this was meant to say, "If we're not in a subtransaction then
> ...", right? Changed.
Indeed, the code does something else than what the comment says, aka
generating an ERROR if the process is not in a subtransaction,
ignoring already aborted transactions (aborted subtrans go to FATAL)
and throwing a FATAL in the other cases. So your change looks right.
> I thought of a couple more simplifications for the big switch
> statement in ProcessRecoveryConflictInterrupt(). The special case for
> DoingCommandRead can be changed to fall through, instead of needing a
> separate ereport(FATAL).
The extra business with QueryCancelHoldoffCount and DoingCommandRead
is the only addition for the snapshot, lock and tablespace conflict
handling part. I don't see why a reason why that could be wrong on a
close lookup. Anyway, why don't you check QueryCancelPending on top
of QueryCancelHoldoffCount?
> Now we're down to just one ereport(FATAL), one ereport(ERROR), and a
> couple of ways to give up without erroring. I think this makes the
> logic a lot easier to follow?
Agreed that it looks like a gain in clarity.
--
Michael
From | Date | Subject | |
---|---|---|---|
Next Message | houzj.fnst@fujitsu.com | 2022-06-21 08:07:55 | RE: Replica Identity check of partition table on subscriber |
Previous Message | Kirill Reshke | 2022-06-21 07:36:55 | Use fadvise in wal replay |