Re: [PATCH] add concurrent_abort callback for output plugin

Markus Wanner <markus.wanner@enterprisedb.com>

From: Markus Wanner <markus.wanner@enterprisedb.com>
To: Amit Kapila <amit.kapila16@gmail.com>, Ajin Cherian <itsajin@gmail.com>
Cc: Markus Wanner <markus@bluegap.ch>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2021-03-31T06:25:36Z
Lists: pgsql-hackers
On 31.03.21 06:39, Amit Kapila wrote:
> I have slightly adjusted the comments, docs, and commit message. What
> do you think about the attached?

Thank you both, Amit and Ajin.  This looks good to me.

Only one minor gripe:

> +     a prepared transaction with incomplete changes, in which case the
> +     <literal>concurrent_abort</literal> field of the passed
> +     <literal>ReorderBufferTXN</literal> struct is set. This is done so that
> +     eventually when the <command>ROLLBACK PREPARED</command> is decoded, there
> +     is a corresponding prepared transaction with a matching gid.

The last sentences there now seems to relate to just the setting of 
"concurrent_abort", rather than the whole reason to invoke the 
prepare_cb.  And the reference to the "gid" is a bit lost.  Maybe:

    "Thus even in case of a concurrent abort, enough information is
     provided to the output plugin for it to properly deal with the
     <command>ROLLBACK PREPARED</command> once that is decoded."

Alternatively, state that the gid is otherwise missing earlier in the 
docs (similar to how the commit message describes it).

Regards

Markus



Commits

  1. Avoid sending prepare multiple times while decoding.

  2. Ensure to send a prepare after we detect concurrent abort during decoding.