Branch: https://github.com/tarantool/tarantool/tree/g.kirichenko/gh-980-disable-lsn-gaps Issue: https://github.com/tarantool/tarantool/issues/980 On Friday, January 4, 2019 1:34:10 PM MSK you wrote: > The patchset eliminates LSN gaps from journal what is needed for > synchronous replication to enforce data stream consistency. > Replicaset vclock is promoted only after write, replication row applying > is allowed only if previous row was processed. All conflicting rows to skip > are replacing with NOPs to fill gaps. After all vclock following > protected with assert to ensure that this is strict one step increase. > > Needed for: #980 > > Georgy Kirichenko (5): > Do not promote wal vclock for failed writes > Update replicaset vclock from wal > Enforce applier out of order protection > Emit NOP if an applier skips row > Disallow lsn gaps while vclock following > > src/box/applier.cc | 113 ++++++++++++++++-------------- > src/box/box.cc | 3 +- > src/box/replication.cc | 2 + > src/box/replication.h | 3 + > src/box/vclock.c | 16 ++++- > src/box/vclock.h | 3 + > src/box/wal.c | 57 ++++++--------- > src/box/xrow.c | 2 +- > test/unit/vclock.cc | 10 +-- > test/xlog-py/dup_key.result | 12 +++- > test/xlog-py/dup_key.test.py | 18 +++-- > test/xlog/errinj.result | 1 - > test/xlog/panic_on_lsn_gap.result | 65 +++++++++-------- > 13 files changed, 167 insertions(+), 138 deletions(-)