On Wed, Feb 10, 2021 at 11:45 AM Ajin Cherian <itsa...@gmail.com> wrote:
>
> On Wed, Feb 10, 2021 at 3:43 PM Ashutosh Bapat
> <ashutosh.ba...@enterprisedb.com> wrote:
>
>
> > I think we need to treat a prepared transaction slightly different from an 
> > uncommitted transaction when sending downstream. We need to send a whole 
> > uncommitted transaction downstream again because previously applied changes 
> > must have been aborted and hence lost by the downstream and thus it needs 
> > to get all of those again. But when a downstream prepares a transaction, 
> > even if it's not committed, those changes are not lost even after restart 
> > of a walsender. If the downstream confirms that it has "flushed" PREPARE, 
> > there is no need to send all the changes again.
>
> But the other side of the problem is that ,without this, if the
> prepared transaction is prior to a consistent snapshot when decoding
> starts/restarts, then only the "commit prepared" is sent to downstream
> (as seen in the test scenario I shared above), and downstream has to
> error away the commit prepared because it does not have the
> corresponding prepared transaction.
>

I think it is not only simple error handling, it is required for
data-consistency. We need to send the transactions whose commits are
encountered after a consistent snapshot is reached.

-- 
With Regards,
Amit Kapila.


Reply via email to