From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp62.i.mail.ru (smtp62.i.mail.ru [217.69.128.42]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dev.tarantool.org (Postfix) with ESMTPS id EAE68469719 for ; Fri, 28 Feb 2020 11:34:57 +0300 (MSK) From: Serge Petrenko Date: Fri, 28 Feb 2020 11:34:41 +0300 Message-Id: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [Tarantool-patches] [PATCH v5 0/4] replication: fix applying of rows originating from local instance List-Id: Tarantool development patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: v.shpilevoy@tarantool.org Cc: kirichenkoga@gmail.com, tarantool-patches@dev.tarantool.org https://github.com/tarantool/tarantool/issues/4739 https://github.com/tarantool/tarantool/tree/sp/gh-4739-vclock-assert-v4 @ChangeLog - fix possible vclock ordering violations in master-master replication when one of the masters restarts (gh-4739) Changes in v5: - review fixes as per reviews from Vlad and Kostja - added a test - applied Vlads test amendments - added a changelog Changes in v4: - move row skipping logic from recovery to relay - encode a list of instances whose rows to skip in SUBSCRIBE request insead of encoding is_orhpan status Changes in v3: - review fixes as per review from Vlad - instead of skipping rows on replica side, do it on master side, by patching recovery to silently follow rows coming from a certain instance. Changes in v2: - review fixes as per review from Kostja Serge Petrenko (4): box: expose box_is_orphan method wal: warn when trying to write a record with a broken lsn replication: implement an instance id filter for relay replication: do not relay rows coming from a remote instance back to it src/box/applier.cc | 7 +- src/box/box.cc | 13 ++- src/box/box.h | 3 + src/box/iproto_constants.h | 1 + src/box/relay.cc | 15 +++- src/box/relay.h | 3 +- src/box/wal.c | 20 ++++- src/box/xrow.c | 40 ++++++++- src/box/xrow.h | 36 +++++--- src/lib/core/cbus.h | 7 ++ src/lib/core/errinj.h | 3 +- test/box/errinj.result | 1 + test/replication/gh-4739-vclock-assert.result | 88 +++++++++++++++++++ .../gh-4739-vclock-assert.test.lua | 36 ++++++++ test/replication/suite.cfg | 1 + test/replication/suite.ini | 2 +- 16 files changed, 250 insertions(+), 26 deletions(-) create mode 100644 test/replication/gh-4739-vclock-assert.result create mode 100644 test/replication/gh-4739-vclock-assert.test.lua -- 2.21.1 (Apple Git-122.3)