[Tarantool-patches] [PATCH 3/7] txn_limbo: fix promote term filtering

Serge Petrenko sergepetrenko at tarantool.org
Fri Jun 18 00:00:11 MSK 2021



15.06.2021 23:57, Vladislav Shpilevoy пишет:
> Thanks for the patch!
>
> On 10.06.2021 15:32, Serge Petrenko via Tarantool-patches wrote:
>> txn_limbo_process() used to filter out promote requests whose term was
>> equal to the greatest term seen. This wasn't correct for PROMOTE entries
>> with term 1.
>>
>> Such entries appear after box.ctl.promote() is issued on an instance
>> with disabled elections. Every PROMOTE entry from such an instance has
>> term 1, but should still be applied. Fix this in the patch.
> Didn't we agree that PROMOTE should bump the term always? I see no purpose
> for the PROMOTE which never bumps the term except for the tests, but for
> such occasion it would be better to have internal.make_leader() or something
> which bypasses everything. Although the best option would to bump the term
> always.
>
> I see you did something in the last commit about that, but the part
> about `limbo->promote_greatest_term > 1` still remains. It looks very
> illegal to point out some terms as "special".

What about old instances?
They may issue multiple promotes for the same term when elections are off.

Previous behaviour (wrong, because we forgot to filter out too old 
promotes at all)
made the instance apply all such promotes.

I thought we should allow multiple promotes, at least for the default 
term (1), which
happen only when elections are turned off and have never been turned on.

Otherwise, having a new instance together with the old one in the same 
cluster,
you'll have one of them apply all the promotes for one term, and have 
one dataset,
and the other ignore all but the first promote, and have possibly 
different data.

I did fix the issue in the last commit. All the new instances will issue 
promotes with
increasing term each time, and the term will be >= 2.

So all the promotes with term == 1 surely will be from the old instances.

-- 
Serge Petrenko



More information about the Tarantool-patches mailing list