From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp44.i.mail.ru (smtp44.i.mail.ru [94.100.177.104]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dev.tarantool.org (Postfix) with ESMTPS id 0C63B469710 for ; Fri, 20 Nov 2020 12:14:48 +0300 (MSK) References: From: Serge Petrenko Message-ID: Date: Fri, 20 Nov 2020 12:14:47 +0300 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset="utf-8"; format="flowed" Content-Transfer-Encoding: 8bit Content-Language: en-GB Subject: Re: [Tarantool-patches] [PATCH v2 00/16] Raft module, part 2 - relocation to src/lib/raft List-Id: Tarantool development patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Vladislav Shpilevoy , tarantool-patches@dev.tarantool.org 20.11.2020 02:45, Vladislav Shpilevoy пишет: > The patchset is a second part of Raft relocation to a new module for the sake of > unit testing. This part does the relocation itself. > > It entirely consists of removal of box dependencies from raft code. > > The third part will virtualize Raft event loop at compile-time, and will > introduce customizable implementations for network, disk, event loop, and time > to perform unit tests. > > Branch: http://github.com/tarantool/tarantool/tree/gerold103/gh-5303-p2-src-lib-raft > Issue: https://github.com/tarantool/tarantool/issues/5303 > > Changes in v2: > - Renames and comment fixes; > - Fixed the bug when a follower could be writable for some time. But don't know > how to test it in a sane way. Should be easy to cover in a unit test though. > The fix is done in the commits from "raft: make worker non-cancellable during > WAL write" to "move RO summary update to box-Raft". > > Vladislav Shpilevoy (16): > raft: move sources to raftlib.h/.c > raft: move box_raft_* to src/box/raft.h and .c > raft: stop using replication_disconnect_timeout() > raft: stop using replication_synchro_quorum > raft: stop using instance_id > raft: make raft_request.vclock constant > raft: stop using replicaset.vclock > raft: introduce vtab for disk and network > raft: introduce raft_msg, drop xrow dependency > raft: make worker non-cancellable during WAL write > raft: move worker fiber from Raft library to box > raft: move synchro queue clear to the worker fiber > raft: invoke update triggers within state machine > raft: move RO summary update to box-Raft > raft: introduce RaftError > raft: move algorithm code to src/lib/raft > > src/box/CMakeLists.txt | 2 +- > src/box/applier.cc | 2 +- > src/box/box.cc | 44 +- > src/box/memtx_engine.c | 4 +- > src/box/raft.c | 1200 ++++++----------------------------- > src/box/raft.h | 252 +------- > src/box/replication.cc | 3 + > src/box/xrow.c | 2 +- > src/box/xrow.h | 6 +- > src/lib/CMakeLists.txt | 1 + > src/lib/core/diag.h | 2 + > src/lib/core/exception.cc | 24 + > src/lib/core/exception.h | 7 + > src/lib/raft/CMakeLists.txt | 7 + > src/lib/raft/raft.c | 997 +++++++++++++++++++++++++++++ > src/lib/raft/raft.h | 357 +++++++++++ > 16 files changed, 1652 insertions(+), 1258 deletions(-) > create mode 100644 src/lib/raft/CMakeLists.txt > create mode 100644 src/lib/raft/raft.c > create mode 100644 src/lib/raft/raft.h > Hi! Thanks for the patchset & fixes! Patches 1-9, 15, 16 LGTM as reviewed in previous patchset version. -- Serge Petrenko