[Tarantool-patches] [PATCH v2 0/7] applier: handle synchronous transactions during final

Cyrill Gorcunov gorcunov at gmail.com
Fri Mar 26 16:46:23 MSK 2021


On Wed, Mar 24, 2021 at 03:24:10PM +0300, Serge Petrenko wrote:
> Initially this patches idea was to ignore synchronous rows on applier side and
> make it so that there are no rolled back transactions in final join stream on
> master side.
> 
> Unfortunately, this easy fix didn't work. The reason for it is that once the
> replica receives initial data, up to `start_vclock`, the final join stream has
> to start right at `start_vclock` so that we do not lose any transactions.
> 
> This means that once master encounters a synchro rollback and makes replica
> retry final join to get rid of the rollback, it still has to send it together
> with other data. And this rollback must be processed by applier to avoid
> conflicts.
> 
> In order to let applier process synchro requests (CONFIRM and ROLLBACK) we need
> to make final join transactional, obviously. This is what this patchset does.
> 
> An alternative would be to retry not only final, but also initial join every
> time master receives a rollback during final join stage. This would be too
> violent due to possibly huge data amounts being sent during initial join.

I don't see any obvious problems in the series but I'm far from being
replication expert, still Ack


More information about the Tarantool-patches mailing list