From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtpng3.m.smailru.net (smtpng3.m.smailru.net [94.100.177.149]) (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 51BEA469710 for ; Fri, 20 Nov 2020 02:46:14 +0300 (MSK) From: Vladislav Shpilevoy Date: Fri, 20 Nov 2020 00:45:56 +0100 Message-Id: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [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: tarantool-patches@dev.tarantool.org, sergepetrenko@tarantool.org 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 -- 2.24.3 (Apple Git-128)