[Tarantool-patches] [RFC] Quorum-based synchronous replication
Konstantin Osipov
kostja.osipov at gmail.com
Tue May 12 20:47:41 MSK 2020
* Sergey Ostanevich <sergos at tarantool.org> [20/05/12 19:43]:
> > 1) It's unclear what happens here if async tx follows a sync tx.
> > Does it wait for the sync tx? This reduces availability for
>
> Definitely yes, unless we keep the 'dirty read' as it is at the moment
> in memtx. This is the essence of the design, and it is temporary until
> the MVCC similar to the vinyl machinery appears. I intentionally didn't
> include this big task into this RFC.
>
> It will provide similar capabilities, although it will keep only
> dependent transactions in the undo log. Also, it looks like it will fit
> well into the machinery of this RFC.
= reduced availability for all who have at least one sync space.
If different spaces have different quorum size = quorum size of
the biggest group is effectively used for all spaces.
Replica-local transactions, e.g. those used by vinyl compaction,
are rolled back if there is no quorum.
What's the value of this?
>
> > async txs - so it's hardly acceptable. Besides, with
> > group=local spaces, one can quickly run out of memory for undo.
> >
> >
> > Then it should be allowed to proceed and commit.
> >
> > Then mixing sync and async tables in a single transaction
> > shouldn't be allowed.
> >
> > Imagine t1 is sync and t2 is async. tx1 changes t1 and t2, tx2
> > changes t2. tx1 is not confirmed and must be rolled back. But it can
> > not revert changes of tx2.
> >
> > The spec should clarify that.
You conveniently skip this explanation of the problem - meaning
you don't intend to address it?
> >
> > 3) One can quickly run out of memory for undo. Any sync
> > transaction should be capped with a timeout to avoid OOMs. I
> > don't know how many times I should repeat it. The only good
> > solution for load control is in-memory WAL, which will allow to
> > rollback all transactions as soon as network partitioning is
> > detected.
>
> How in-memry WAL can help save on _undo_ memory?
> To rollback whatever amount of transactions one need to store the undo.
I wrote earlier that it works as a natural failure detector and
throttling mechanism. If
there is no quorum, we can see it immediately by looking at the
number of active subscribers of the in-memory WAL, so do not
accumulate undo.
--
Konstantin Osipov, Moscow, Russia
More information about the Tarantool-patches
mailing list