[tarantool-patches] [PATCH v2] replication: adds replication sync after cfg. update
Olga Krishtal
krishtal.olja at gmail.com
Thu Aug 23 19:26:59 MSK 2018
Thanks for the review. Will fix.
чт, 23 авг. 2018 г. в 18:06, Vladimir Davydov <vdavydov.dev at gmail.com>:
> On Wed, Aug 22, 2018 at 06:59:30PM +0300, Olga Arkhangelskaia wrote:
> > When replica reconnects to replica set not for the first time, we
> > suffer from absence of synchronization. Such behavior leads to giving
> > away outdated data.
> >
> > Closes #3427
> > ---
> > https://github.com/tarantool/tarantool/issues/3427
> >
> https://github.com/tarantool/tarantool/tree/OKriw/replication_no_sync-1.9
> >
> > v1:
> >
> https://www.freelists.org/post/tarantool-patches/PATCH-replication-adds-replication-sync-after-cfg-update
> >
> > Changes in v2:
> > - fixed test
> > - changed replicaset_sync
> >
> > src/box/box.cc | 7 ++-
> > src/box/replication.cc | 34 ++++++++------
> > src/box/replication.h | 7 ++-
> > test/replication/orphan.result | 92
> +++++++++++++++++++++++++++++++++++++
> > test/replication/orphan.test.lua | 41 +++++++++++++++++
> > test/replication/replica_orphan.lua | 12 +++++
>
> The test isn't about the 'orphan' state. It's about replica set
> synchronization. Please call it appropriately.
>
> Also, the test takes prohibitively long - 15 seconds for memtx+vinyl.
> Please try to reduce the test run time.
>
> Also, the test passes with and without the changes done to the code, in
> other words it's useless. Please make sure, it doesn't pass without your
> patch.
>
>
> > 6 files changed, 177 insertions(+), 16 deletions(-)
> > create mode 100644 test/replication/orphan.result
> > create mode 100644 test/replication/orphan.test.lua
> > create mode 100644 test/replication/replica_orphan.lua
> >
> > diff --git a/src/box/box.cc b/src/box/box.cc
> > index 8d7454d1f..8c67c79e8 100644
> > --- a/src/box/box.cc
> > +++ b/src/box/box.cc
> > @@ -634,6 +634,9 @@ box_set_replication(void)
> > box_sync_replication(true);
> > /* Follow replica */
> > replicaset_follow();
> > + /* Sync replica up to quorum */
> > + replicaset_sync();
> > + say_verbose("synchronization complete");
>
> This message is pointless IMO. I think that replication reconfiguration
> should throw an error if it failed to synchronize with the quorum. It
> would be consistent with the fact that it throws an error in case it
> failed to connect to the quorum.
>
> > }
> >
> > void
> > @@ -1941,8 +1944,10 @@ box_cfg_xc(void)
> > fiber_gc();
> > is_box_configured = true;
> >
> > - if (!is_bootstrap_leader)
> > + if (!is_bootstrap_leader) {
> > replicaset_sync();
> > + replicaset_is_synced();
> > + }
>
> Instead of introducing another function, you could add a return value to
> replicaset_sync() - true in case it successfully synchronized, false
> otherwise - then use the return value to either log or throw an error,
> depending whether its initial configuration or reconfiguration. IMO it
> would look neater.
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.tarantool.org/pipermail/tarantool-patches/attachments/20180823/05e09077/attachment.html>
More information about the Tarantool-patches
mailing list