[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