Tarantool development patches archive
 help / color / mirror / Atom feed
From: Vladislav Shpilevoy <v.shpilevoy@tarantool.org>
To: tarantool-patches@dev.tarantool.org, sergepetrenko@tarantool.org
Subject: [Tarantool-patches] [PATCH v3 00/10] Raft
Date: Wed, 30 Sep 2020 00:11:21 +0200	[thread overview]
Message-ID: <cover.1601417273.git.v.shpilevoy@tarantool.org> (raw)

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)

             reply	other threads:[~2020-09-29 22:11 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-09-29 22:11 Vladislav Shpilevoy [this message]
2020-09-29 22:11 ` [Tarantool-patches] [PATCH v3 01/10] applier: store instance_id in struct applier Vladislav Shpilevoy
2020-09-29 22:11 ` [Tarantool-patches] [PATCH v3 10/10] raft: add tests Vladislav Shpilevoy
2020-09-29 22:11 ` [Tarantool-patches] [PATCH v3 02/10] box: introduce summary RO flag Vladislav Shpilevoy
2020-09-29 22:11 ` [Tarantool-patches] [PATCH v3 03/10] wal: don't touch box.cfg.wal_dir more than once Vladislav Shpilevoy
2020-09-29 22:11 ` [Tarantool-patches] [PATCH v3 04/10] replication: track registered replica count Vladislav Shpilevoy
2020-09-29 22:11 ` [Tarantool-patches] [PATCH v3 05/10] raft: introduce persistent raft state Vladislav Shpilevoy
2020-09-29 22:11 ` [Tarantool-patches] [PATCH v3 06/10] raft: introduce box.cfg.election_* options Vladislav Shpilevoy
2020-09-29 22:11 ` [Tarantool-patches] [PATCH v3 07/10] raft: relay status updates to followers Vladislav Shpilevoy
2020-09-29 22:11 ` [Tarantool-patches] [PATCH v3 08/10] raft: introduce state machine Vladislav Shpilevoy
2020-09-29 22:11 ` [Tarantool-patches] [PATCH v3 09/10] raft: introduce box.info.election Vladislav Shpilevoy
2020-09-30  7:06 ` [Tarantool-patches] [PATCH v3 00/10] Raft Serge Petrenko
2020-09-30 11:04 ` Kirill Yukhin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=cover.1601417273.git.v.shpilevoy@tarantool.org \
    --to=v.shpilevoy@tarantool.org \
    --cc=sergepetrenko@tarantool.org \
    --cc=tarantool-patches@dev.tarantool.org \
    --subject='Re: [Tarantool-patches] [PATCH v3 00/10] Raft' \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox