Tarantool development patches archive
 help / color / mirror / Atom feed
From: Vladislav Shpilevoy <v.shpilevoy@tarantool.org>
To: tarantool-patches@freelists.org
Cc: vdavydov.dev@gmail.com
Subject: [PATCH 0/8] box.ctl.promote
Date: Wed,  8 Aug 2018 01:03:43 +0300	[thread overview]
Message-ID: <cover.1533679264.git.v.shpilevoy@tarantool.org> (raw)

Replicaset master promotion is a procedure of atomic making one
slave be a new master, and an old master be a slave in a fullmesh
master-slave replicaset.

The promotion follows the protocol described in details in the
corresponding RFC. Shortly, the protocol collects a quorum of
instances who approves the promotion, syncs data with the old
master and demotes it.

The patchset consists of several preparation commits with the most
important one describing the promotion protocol in details. The
last two patches are the promotion itself and its garbage
collection implementation.

Branch: http://github.com/tarantool/tarantool/tree/gerold103/gh-3055-box-ctl-promote
Issue: https://github.com/tarantool/tarantool/issues/3055

Vladislav Shpilevoy (8):
  rfc: describe box.ctl.promote protocol
  box: rename process_rw to process_dml
  Add 'exact_field_count' parameter to options decoder
  box: remove orphan check from box_is_ro()
  Fix gcov on Mac
  box: introduce _promotion space
  box: introduce box.ctl.promote
  box: introduce promotion GC

 cmake/profile.cmake                   |   12 +-
 doc/rfc/3055-box_ctl_promote.md       |  237 +++++++
 doc/rfc/3055-box_ctl_promote_img1.svg |    2 +
 src/box/CMakeLists.txt                |    1 +
 src/box/alter.cc                      |   80 ++-
 src/box/alter.h                       |    1 +
 src/box/bootstrap.snap                |  Bin 1540 -> 1635 bytes
 src/box/box.cc                        |   47 +-
 src/box/box.h                         |   44 +-
 src/box/errcode.h                     |    3 +
 src/box/iproto.cc                     |    2 +-
 src/box/key_def.c                     |    2 +-
 src/box/lua/cfg.cc                    |    9 +-
 src/box/lua/ctl.c                     |   82 +++
 src/box/lua/info.c                    |    2 +-
 src/box/lua/space.cc                  |    2 +
 src/box/lua/upgrade.lua               |   19 +
 src/box/opt_def.c                     |   13 +-
 src/box/opt_def.h                     |   16 +-
 src/box/promote.c                     | 1086 +++++++++++++++++++++++++++++++++
 src/box/promote.h                     |  170 ++++++
 src/box/schema.cc                     |   15 +
 src/box/schema_def.h                  |   14 +
 src/cfg.c                             |   11 +
 src/cfg.h                             |    3 +
 src/main.cc                           |    1 +
 test/app-tap/tarantoolctl.test.lua    |    4 +-
 test/box-py/bootstrap.result          |    8 +-
 test/box/access_misc.result           |    4 +
 test/box/access_sysview.result        |    6 +-
 test/box/alter.result                 |    6 +-
 test/box/misc.result                  |    9 +-
 test/promote/basic.result             |  495 +++++++++++++++
 test/promote/basic.test.lua           |  171 ++++++
 test/promote/box.lua                  |    8 +
 test/promote/box1.lua                 |  112 ++++
 test/promote/box2.lua                 |    1 +
 test/promote/box3.lua                 |    1 +
 test/promote/box4.lua                 |    1 +
 test/promote/errinj.result            |  222 +++++++
 test/promote/errinj.test.lua          |   87 +++
 test/promote/suite.ini                |    6 +
 test/wal_off/alter.result             |    2 +-
 test/xlog/upgrade.result              |    8 +-
 44 files changed, 2970 insertions(+), 55 deletions(-)
 create mode 100644 doc/rfc/3055-box_ctl_promote.md
 create mode 100644 doc/rfc/3055-box_ctl_promote_img1.svg
 create mode 100644 src/box/promote.c
 create mode 100644 src/box/promote.h
 create mode 100644 test/promote/basic.result
 create mode 100644 test/promote/basic.test.lua
 create mode 100644 test/promote/box.lua
 create mode 100644 test/promote/box1.lua
 create mode 120000 test/promote/box2.lua
 create mode 120000 test/promote/box3.lua
 create mode 120000 test/promote/box4.lua
 create mode 100644 test/promote/errinj.result
 create mode 100644 test/promote/errinj.test.lua
 create mode 100644 test/promote/suite.ini

-- 
2.15.2 (Apple Git-101.1)

             reply	other threads:[~2018-08-07 22:03 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-08-07 22:03 Vladislav Shpilevoy [this message]
2018-08-07 22:03 ` [PATCH 1/8] rfc: describe box.ctl.promote protocol Vladislav Shpilevoy
2018-08-07 22:03 ` [PATCH 2/8] box: rename process_rw to process_dml Vladislav Shpilevoy
2018-08-13  8:20   ` Vladimir Davydov
2018-08-07 22:03 ` [PATCH 3/8] Add 'exact_field_count' parameter to options decoder Vladislav Shpilevoy
2018-08-13  8:30   ` Vladimir Davydov
2018-08-07 22:03 ` [PATCH 4/8] box: remove orphan check from box_is_ro() Vladislav Shpilevoy
2018-08-13  8:34   ` Vladimir Davydov
2018-08-07 22:03 ` [PATCH 5/8] Fix gcov on Mac Vladislav Shpilevoy
2018-08-07 22:03 ` [PATCH 6/8] box: introduce _promotion space Vladislav Shpilevoy
2018-08-07 22:03 ` [PATCH 7/8] box: introduce box.ctl.promote Vladislav Shpilevoy
2018-08-13  8:58   ` Vladimir Davydov
2018-08-07 22:03 ` [PATCH 8/8] box: introduce promotion GC Vladislav Shpilevoy

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.1533679264.git.v.shpilevoy@tarantool.org \
    --to=v.shpilevoy@tarantool.org \
    --cc=tarantool-patches@freelists.org \
    --cc=vdavydov.dev@gmail.com \
    --subject='Re: [PATCH 0/8] box.ctl.promote' \
    /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