[Tarantool-patches] [PATCH v3 00/10] Raft

Vladislav Shpilevoy v.shpilevoy at tarantool.org
Wed Sep 30 01:11:21 MSK 2020


The patchset is a first approach to implementing Raft leader election.
Synchronous replication is already implemented, and the leader election is
supposed to complement it. Although this is still far being from production
ready. Main purpose of the patch is to get Raft in 2.6.1 so as we could work on
its stabilization and testing in 2.6.x releases, not making the users wait for
2.7.

Branch: http://github.com/tarantool/tarantool/tree/gh-1146-raft
Issue: https://github.com/tarantool/tarantool/issues/1146

@ChangeLog
* Automated leader election via Raft algorithm (gh-1146).

Changed from v2:
- Lots of minor bugs fixed;
- New naming in the public API - 'election' instead of 'raft'.

Vladislav Shpilevoy (9):
  applier: store instance_id in struct applier
  box: introduce summary RO flag
  wal: don't touch box.cfg.wal_dir more than once
  replication: track registered replica count
  raft: introduce persistent raft state
  raft: introduce box.cfg.election_* options
  raft: introduce state machine
  raft: introduce box.info.election
  raft: add tests

sergepetrenko (1):
  raft: relay status updates to followers

 src/box/CMakeLists.txt                   |    1 +
 src/box/applier.cc                       |   50 +-
 src/box/applier.h                        |    2 +
 src/box/box.cc                           |  185 +++-
 src/box/box.h                            |    9 +
 src/box/iproto_constants.h               |   15 +
 src/box/lua/cfg.cc                       |   27 +
 src/box/lua/info.c                       |   17 +
 src/box/lua/load_cfg.lua                 |   15 +
 src/box/lua/misc.cc                      |    1 +
 src/box/memtx_engine.c                   |   36 +
 src/box/raft.c                           | 1009 ++++++++++++++++++++++
 src/box/raft.h                           |  260 ++++++
 src/box/relay.cc                         |  181 +++-
 src/box/relay.h                          |    7 +
 src/box/replication.cc                   |    4 +-
 src/box/replication.h                    |    7 +
 src/box/wal.c                            |    6 +
 src/box/wal.h                            |    7 +
 src/box/xrow.c                           |  115 +++
 src/box/xrow.h                           |   15 +
 test/app-tap/init_script.result          |    3 +
 test/box/admin.result                    |    6 +
 test/box/cfg.result                      |   12 +
 test/box/info.result                     |    1 +
 test/replication/election_basic.result   |  278 ++++++
 test/replication/election_basic.test.lua |  117 +++
 test/replication/election_replica.lua    |   30 +
 test/replication/election_replica1.lua   |    1 +
 test/replication/election_replica2.lua   |    1 +
 test/replication/election_replica3.lua   |    1 +
 31 files changed, 2383 insertions(+), 36 deletions(-)
 create mode 100644 src/box/raft.c
 create mode 100644 src/box/raft.h
 create mode 100644 test/replication/election_basic.result
 create mode 100644 test/replication/election_basic.test.lua
 create mode 100644 test/replication/election_replica.lua
 create mode 120000 test/replication/election_replica1.lua
 create mode 120000 test/replication/election_replica2.lua
 create mode 120000 test/replication/election_replica3.lua

-- 
2.21.1 (Apple Git-122.3)



More information about the Tarantool-patches mailing list