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

Kirill Yukhin kyukhin at tarantool.org
Mon Apr 5 19:15:39 MSK 2021


Hello,

On 24 мар 15:24, Serge Petrenko via Tarantool-patches 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.
> 
> Changes in v2:
>   - Make applier transactional on final join stage
>   - Remove guards for rollback during final join on master side
>   - Some refactoring in preparation to #5874
> 
> https://github.com/tarantool/tarantool/issues/5566
> https://github.com/tarantool/tarantool/tree/sp/gh-5566-final-join-synchro-v2

I've checked your patchset into 2.6, 2.7 and master.

--
Regards, Kirill Yukhin


More information about the Tarantool-patches mailing list