Hey Rowland,

Not sure why this message showed up in a different thread from the other
KIP-939 discussion (is it just me?)

In KIP-939, we do away with having any transactional timeout on the Kafka
side. The external coordinator is fully responsible for controlling whether
the transaction completes.

While I think there is some use in having a prepare stage, I just wanted to
clarify what the current KIP is proposing.

Thanks,
Justine

On Wed, Jan 3, 2024 at 7:49 PM Rowland Smith <rowl...@gmail.com> wrote:

> Hi Artem,
>
> I saw your response in the thread I started discussing Kafka distributed
> transaction support and the XA interface. I would like to work with you to
> add XA support to Kafka on top of the excellent foundational work that you
> have started with KIP-939. I agree that explicit XA support should not be
> included in the Kafka codebase as long as the right set of basic operations
> are provided. I will begin pulling together a KIP to follow KIP-939.
>
> I did have one comment on KIP-939 itself. I see that you considered an
> explicit "prepare" RPC, but decided not to add it. If I understand your
> design correctly, that would mean that a 2PC transaction would have a
> single timeout that would need to be long enough to ensure that prepared
> transactions are not aborted when an external coordinator fails. However,
> this also means that an unprepared transaction would not be aborted without
> waiting for the same timeout. Since long running transactions block
> transactional consumers, having a long timeout for all transactions could
> be disruptive. An explicit "prepare " RPC would allow the server to abort
> unprepared transactions after a relatively short timeout, and apply a much
> longer timeout only to prepared transactions. The explicit "prepare" RPC
> would make Kafka server more resilient to client failure at the cost of an
> extra synchronous RPC call. I think its worth reconsidering this.
>
> With an XA implementation this might become a more significant issue since
> the transaction coordinator has no memory of unprepared transactions across
> restarts. Such transactions would need to be cleared by hand through the
> admin client even when the transaction coordinator restarts successfully.
>
> - Rowland
>

Reply via email to