[Tarantool-patches] [PATCH v2 0/5] replication: fix local space tracking

Serge Petrenko sergepetrenko at tarantool.org
Wed Mar 18 22:47:43 MSK 2020


https://github.com/tarantool/tarantool/issues/4114
https://github.com/tarantool/tarantool/tree/sp/gh-4114-local-space-replication

The patchset contains 2 of Georgy's patches perorming WAL gc rework.
The first patch introduces a matrix clock structure, which contains the latest
known vclocks of all the cluster members and can be used to build a vclock,
which is less than or equal to all the member vclocks.
Such a vclock is used then in the second patch, where gc is rewritten to stop
tracking needed WAL files by vclock signature. Now replica vclocks are used to
define which files are still needed.

These two patches allow to start using a  0 vclock component to track local
space changes and ignore this component when finding WALs needed by a replica.

Patches 3 and 4 are preparation for the patch 5, which performs the task itself.
Now every replica has its own 0-th vclock component, which doesn't match any of
the other instance components and indicates the number of local space requests
executed.

Georgy Kirichenko (2):
  box: introduce matrix clock
  wal: track consumer vclock and collect logs in wal thread

Serge Petrenko (3):
  vclock: add an ability to set individual clock components
  replication: hide 0-th vclock components in replication responses
  box: start counting local space requests separately

 src/box/CMakeLists.txt                        |   4 +
 src/box/applier.cc                            |   5 +-
 src/box/box.cc                                |  70 ++--
 src/box/gc.c                                  | 216 +++-------
 src/box/gc.h                                  |  95 +----
 src/box/lua/info.c                            |  29 +-
 src/box/mclock.c                              | 394 ++++++++++++++++++
 src/box/mclock.h                              | 151 +++++++
 src/box/relay.cc                              | 157 ++-----
 src/box/replication.cc                        |  47 +--
 src/box/replication.h                         |   3 -
 src/box/vclock.c                              |  15 +
 src/box/vclock.h                              |  11 +
 src/box/wal.c                                 | 286 +++++++++++--
 src/box/wal.h                                 |  17 +-
 test/replication/anon.result                  |   5 +
 test/replication/anon.test.lua                |   2 +
 test/replication/autobootstrap.result         |   6 +
 test/replication/autobootstrap.test.lua       |   2 +
 test/replication/before_replace.result        |   8 +-
 test/replication/before_replace.test.lua      |   4 +-
 test/replication/gc_no_space.result           |  30 +-
 test/replication/gc_no_space.test.lua         |  12 +-
 .../gh-4114-local-space-replication.result    | 125 ++++++
 .../gh-4114-local-space-replication.test.lua  |  48 +++
 test/replication/local_spaces.result          |   4 +
 test/replication/local_spaces.test.lua        |   3 +
 test/replication/misc.result                  |   6 +
 test/replication/misc.test.lua                |   2 +
 test/replication/quorum.result                |   6 +
 test/replication/quorum.test.lua              |   2 +
 test/replication/replica_rejoin.result        |   9 +
 test/replication/replica_rejoin.test.lua      |   3 +
 test/replication/skip_conflict_row.result     |   3 +
 test/replication/skip_conflict_row.test.lua   |   1 +
 test/replication/suite.cfg                    |   1 +
 test/unit/CMakeLists.txt                      |   2 +
 test/unit/mclock.result                       |  18 +
 test/unit/mclock.test.c                       | 160 +++++++
 test/vinyl/errinj.result                      |   5 +
 test/vinyl/errinj.test.lua                    |   4 +
 41 files changed, 1430 insertions(+), 541 deletions(-)
 create mode 100644 src/box/mclock.c
 create mode 100644 src/box/mclock.h
 create mode 100644 test/replication/gh-4114-local-space-replication.result
 create mode 100644 test/replication/gh-4114-local-space-replication.test.lua
 create mode 100644 test/unit/mclock.result
 create mode 100644 test/unit/mclock.test.c

-- 
2.21.1 (Apple Git-122.3)



More information about the Tarantool-patches mailing list