[Tarantool-patches] [PATCH] Add new error injection constant ERRINJ_SYNC_TIMEOUT
Vladislav Shpilevoy
v.shpilevoy at tarantool.org
Tue Jul 7 02:31:26 MSK 2020
Привет!
On 06/07/2020 12:32, sergeyb at tarantool.org wrote:
> From: Sergey Bronnikov <sergeyb at tarantool.org>
>
> Some tests for synchronous replication requires creation of a special state
> when replication_synchro_timeout is not exceeded. Greater timeout value will
> make tests longer and increase probability of flakiness. When constant
> ERRINJ_SYNC_TIMEOUT is set to true operation will stay in a state nor confirmed
> nor rolled back.
Честно говоря я не очень понял, как связаны ERRINJ_SYNC_TIMEOUT и синхра.
Место, куда ты добавил этот инджекшн, вообще никакого отношения к синхронной
репликации не имеет. Но это не главная проблема. См. дальше.
> diff --git a/src/box/replication.cc b/src/box/replication.cc
> index ef0e2411d..675a76a7e 100644
> --- a/src/box/replication.cc
> +++ b/src/box/replication.cc
> @@ -866,6 +867,9 @@ replicaset_sync(void)
> replicaset.applier.loading >= quorum) {
> if (fiber_cond_wait_deadline(&replicaset.applier.cond,
> deadline) != 0)
> + ERROR_INJECT(ERRINJ_SYNC_TIMEOUT, {
> + continue;
> + });
Смысл errinj модуля в том, чтоб сымитировать реальные ошибки или
просто редкие пути выполнения. Конкретно этот путь невозможен
впринципе. Что делает этот errinj бесполезным. То есть он может
в теории что-то и помогает протестировать, но это что-то не будет
связано с реальностью.
Какую задачу ты хочешь тут решить? Выключить аки от репликации?
Посмотри в ERRINJ_APPLIER_SLOW_ACK. Или просто увеличь
replication_timeout. Или включи ERRINJ_WAL_DELAY на реплике - она
не будет ничего писать в WAL и не будет посылать аки.
More information about the Tarantool-patches
mailing list