From: | Andres Freund <andres(at)anarazel(dot)de> |
---|---|
To: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
Cc: | Xiaoran Wang <fanfuxiaoran(at)gmail(dot)com>, pgsql-hackers <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: XACT_EVENT for 'commit prepared' |
Date: | 2024-06-07 16:52:41 |
Message-ID: | 20240607165241.ihv5ht4y3r4fkbac@awork3.anarazel.de |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Hi,
On 2024-06-07 11:19:40 -0400, Tom Lane wrote:
> Xiaoran Wang <fanfuxiaoran(at)gmail(dot)com> writes:
> > I found that in enum XactEvent, there is 'XACT_EVENT_PREPARE' for
> > 'prepare transaction', but there is no event for 'commit prepared' or
> > 'rollback prepared'.
>
> On the whole, it seems like a good idea to me that those commands
> don't invoke event triggers. It is a core principle of 2PC that
> if 'prepare' succeeded, 'commit prepared' must not fail. Invoking a
> trigger during the second step would add failure cases and I'm not
> sure what value it has.
Event triggers? Isn't this about RegisterXactCallback?
XACT_EVENT_COMMIT is called after the commit record has been flushed and the
procarray has been modified. Thus a failure in the hook has somewhat limited
consequences. I'd assume XACT_EVENT_COMMIT_PREPARED would do something
similar.
I suspect the reason we don't callback for 2pc commit/rollback prepared is
simpl: The code for doing a 2pc commit prepared lives in twophase.c, not
xact.c...
Greetings,
Andres Freund
From | Date | Subject | |
---|---|---|---|
Next Message | Andres Freund | 2024-06-07 16:59:07 | Re: Postgresql OOM |
Previous Message | Srirama Kucherlapati | 2024-06-07 16:30:35 | RE: AIX support |