<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><div class=""><br class=""></div><div class=""><div dir="auto" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><div><div class=""><br class=""></div></div></div><br class="Apple-interchange-newline"><br class="Apple-interchange-newline">

</div>
<div><br class=""><blockquote type="cite" class=""><div class="">20 дек. 2019 г., в 15:07, Serge Petrenko <<a href="mailto:sergepetrenko@tarantool.org" class="">sergepetrenko@tarantool.org</a>> написал(а):</div><br class="Apple-interchange-newline"><div class=""><div class=""><br class=""><br class=""><br class=""><blockquote type="cite" class="">18 дек. 2019 г., в 10:49, Georgy Kirichenko <<a href="mailto:georgy@tarantool.org" class="">georgy@tarantool.org</a>> написал(а):<br class=""><br class="">Hi!<br class="">Thank you for the patch set, good approach and overall it looks good to be <br class="">merged. And there alos some points I would like to point.<br class="">Please consider what should happen if any other instance tries to connect to <br class="">an anonymous replica. I think we could enable such replication if a connecting <br class="">replica is anonymous to, however, this should be an object of a different issue <br class="">so we could disable such behavior right now. At least we should handle <br class="">replica_id = 0 while replication.<br class=""></blockquote></div></div></blockquote><div><div class=""><br class=""></div><div class="">The case with replcia_id = 0 is handled in relay_send_row()</div><div class="">Anonymous replica just doesn’t send the rows which have id = 0.</div><div class=""><br class=""></div><div class="">For now I just forbid replication from an anonymous instance.</div><div class="">Other anonymous instances may fetch this instances snapshot, </div><div class="">and then they’ll get an error on subscribe:</div><div class="">«Replication does not support replicating from an anonymous instance»</div><div class=""><br class=""></div>I’ve also opened a ticket to allow anon replication from an anon instance</div><div><a href="https://github.com/tarantool/tarantool/issues/4696" class="">https://github.com/tarantool/tarantool/issues/4696</a><br class=""><div class=""><div dir="auto" style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><div><div>--</div><div>Serge Petrenko</div><div>sergepetrenko@tarantool.org</div></div></div></div></div><br class=""><blockquote type="cite" class=""><div class=""><div class=""><blockquote type="cite" class="">The last point I would like to mention is that a test with replication from an <br class="">anonymous replica could be included.<br class=""><br class=""><br class=""></blockquote>Hi! Thank you for review. I’ve added the test you requested and sent it as a follow-up<br class="">to 5th patch.<br class=""><br class="">Vlad, could you do the second review?<br class="">--<br class="">Serge Petrenko<br class=""><a href="mailto:sergepetrenko@tarantool.org" class="">sergepetrenko@tarantool.org</a><br class=""><br class=""><br class=""><blockquote type="cite" class="">On Sunday, 15 December 2019 23:56:14 MSK sergepetrenko wrote:<br class=""><blockquote type="cite" class="">Serge Petrenko (3):<br class=""> box: update comment describing join protocol<br class=""> replication: do not decode replicaset uuid when processing a subscribe<br class=""> applier: split join processing into two stages<br class=""><br class="">sergepetrenko (2):<br class=""> vclock: ignore 0th component in comparisons.<br class=""> replication: introduce anonymous replica.<br class=""><br class="">src/box/applier.cc              | 119 ++++++++++++--<br class="">src/box/applier.h               |   4 +<br class="">src/box/box.cc                  | 278 ++++++++++++++++++++++++++++++--<br class="">src/box/box.h                   |  11 +-<br class="">src/box/iproto.cc               |  16 +-<br class="">src/box/iproto_constants.h      |   6 +<br class="">src/box/lua/cfg.cc              |  14 +-<br class="">src/box/lua/info.c              |   4 +-<br class="">src/box/lua/load_cfg.lua        |   4 +<br class="">src/box/recovery.cc             |   7 +-<br class="">src/box/relay.cc                |  32 +++-<br class="">src/box/replication.cc          |  41 ++++-<br class="">src/box/replication.h           |  24 +++<br class="">src/box/vclock.h                |   7 +<br class="">src/box/wal.c                   |   4 +<br class="">src/box/xrow.c                  |  47 +++++-<br class="">src/box/xrow.h                  |  68 ++++++--<br class="">test/app-tap/init_script.result |  49 +++---<br class="">test/box/admin.result           |   2 +<br class="">test/box/cfg.result             |   4 +<br class="">test/replication/anon.lua       |  13 ++<br class="">test/replication/anon.result    | 259 +++++++++++++++++++++++++++++<br class="">test/replication/anon.test.lua  |  89 ++++++++++<br class="">test/replication/suite.cfg      |   1 +<br class="">test/unit/vclock.cc             |   8 +-<br class="">25 files changed, 1022 insertions(+), 89 deletions(-)<br class="">create mode 100644 test/replication/anon.lua<br class="">create mode 100644 test/replication/anon.result<br class="">create mode 100644 test/replication/anon.test.lua<br class=""></blockquote><br class=""></blockquote><br class=""></div></div></blockquote></div><br class=""></body></html>