[Tarantool-patches] [PATCH 1/1] raft: do not rely on just ev_is_active for timers

Serge Petrenko sergepetrenko at tarantool.org
Thu Feb 10 17:25:43 MSK 2022


10.02.2022 04:09, Vladislav Shpilevoy пишет:
> When timer has 0 timeout and 0 repeat, during timers preparation
> libev makes them inactive right away but puts into the array of
> pending events.
>
> Therefore to check if a timer is really active (will be executed
> in the future) need to look both at ev_is_active() and
> ev_is_pending().
>
> It could happen only during split-vote, because all the other
> places use election_timeout + random shift, while split vote uses
> just random shift - it can be 0.
>
> The patch makes raft do that for all timer checks. Also to make
> the testing reliable and not depend on random the shift factor now
> is configurable. For the test it is set to 0.
>
> Closes #6847
>
> NO_DOC=Bugfix
> NO_CHANGELOG=Bug was not released
> ---
> Branch: http://github.com/tarantool/tarantool/tree/gerold103/gh-6847-split-vote-crash
> Issue: https://github.com/tarantool/tarantool/issues/6847
>

Thanks for the quick fix!

LGTM.



More information about the Tarantool-patches mailing list