[RFC PATCH 00/12] Replica rejoin
Vladimir Davydov
vdavydov.dev at gmail.com
Wed Jun 6 20:45:00 MSK 2018
After this patch set is applied, an instance will try to detect if
it fell too much behind its peers in the cluster and so needs to be
rebootstrapped. If it does, it will skip local recovery and instead
proceed to bootstrap from a remote master. Old files (xlog, snap)
are not deleted during rebootstrap. They will be removed by gc as
usual.
NOTE rebootstrap will bluntly fail if there are vinyl spaces on the
replica. Vinyl support is planned for the near future, but since it
won't touch generic code, I'm posting the patch set now for early
review.
https://github.com/tarantool/tarantool/issues/461
https://github.com/tarantool/tarantool/commits/gh-461-replica-rejoin
Vladimir Davydov (12):
recovery: drop unused recovery_exit
recovery: constify vclock argument
applier: remove extra new line in log message printed on connect
xrow: add helper function for encoding vclock
box: retrieve instance uuid before starting local recovery
box: refactor hot standby recovery
box: retrieve end vclock before starting local recovery
box: open the port before starting local recovery
box: connect to remote peers before starting local recovery
box: factor out local recovery function
applier: inquire oldest vclock on connect
replication: rebootstrap instance on startup if it fell behind
src/box/applier.cc | 17 +-
src/box/applier.h | 2 +
src/box/box.cc | 311 +++++++++++++++++--------------
src/box/box.h | 4 +-
src/box/iproto.cc | 30 ++-
src/box/iproto.h | 5 +-
src/box/iproto_constants.h | 2 +
src/box/lua/cfg.cc | 1 -
src/box/memtx_engine.c | 11 +-
src/box/recovery.cc | 49 ++---
src/box/recovery.h | 9 +-
src/box/replication.cc | 15 ++
src/box/replication.h | 9 +
src/box/xrow.c | 94 +++++++---
src/box/xrow.h | 31 +++
test/replication/replica_rejoin.result | 194 +++++++++++++++++++
test/replication/replica_rejoin.test.lua | 73 ++++++++
test/replication/suite.cfg | 1 +
18 files changed, 640 insertions(+), 218 deletions(-)
create mode 100644 test/replication/replica_rejoin.result
create mode 100644 test/replication/replica_rejoin.test.lua
--
2.11.0
More information about the Tarantool-patches
mailing list