From: Vladislav Shpilevoy via Tarantool-patches <tarantool-patches@dev.tarantool.org> To: Serge Petrenko <sergepetrenko@tarantool.org>, gorcunov@gmail.com Cc: tarantool-patches@dev.tarantool.org Subject: Re: [Tarantool-patches] [PATCH 5/7] replication: send latest effective promote in initial join Date: Sat, 19 Jun 2021 00:52:13 +0200 [thread overview] Message-ID: <12dc56c1-c6b6-154d-1e19-99c621eaea47@tarantool.org> (raw) In-Reply-To: <3a61c787-8a92-0191-1565-118915adbfcc@tarantool.org> Good job on the fixes! On 17.06.2021 23:00, Serge Petrenko via Tarantool-patches wrote: > > > 16.06.2021 00:00, Vladislav Shpilevoy пишет: >> Thanks for working on this! >> >> Hm. The patch makes me think why don't we send the Raft >> checkpoint on join too? >> >> Otherwise it might happen that a replica joined, didn't >> get the most actual Raft term yet, then the leader died, >> and the replica would start elections with term 1. Even if >> the latest term was 1000. >> >> Nothing critical, Raft will probably work, but it could >> be an "optimization"? Also it would be consistent with the >> libmo state - send all the snapshot data on join. > I tried to implement such a patch, but faced the following problem: > > Unfortunately, we don't have information about replica's version > during join, so I can only send raft state based on term > 1. But you do send the limbo state. Won't it break the old versions like 1.10? I tried to replicate 1.10 from the new version and got UNKNOWN_REQUEST_TYPE error. 2021-06-19 00:50:49.781 [85883] main/105/applier/ applier.cc:345 E> ER_UNKNOWN_REQUEST_TYPE: Unknown request type 31 2021-06-19 00:50:49.781 [85883] main/101/interactive applier.cc:345 E> ER_UNKNOWN_REQUEST_TYPE: Unknown request type 31 2021-06-19 00:50:49.781 [85883] main/101/interactive F> can't initialize storage: Unknown request type 31 And that is fine. Because the replication does not need to be compatible "forward". You don't need to be able to replicate a new instance into an old instance. > Also, while writing a commit message I understood that this patch > doesn't help much. Even if a node joins, but doesn't subscribe to the > leader, it will still subscribe to someone else and receive the latest > Raft state. And what if it does not? What if there are just 2 nodes? > After all, our doc states full-mesh is required for Raft to work, so we'll > have someone else to subscribe to and receive Raft state from for sure. > The patch's small and simple but I think it's not needed. > > I've made a tiny amendment to this commit though, please find the diff below. The term limbo affects the filtering. Assume you sent the limbo state without raft to 2 new replicas. They now has a big limbo term, say 1000, and raft term 1. Now the master dies. The replicas start new election. One of them wins with some small raft term (let it be 10). It starts doing synchro txns. The other node's applier will turn them all to NOPs, because txn_limbo_is_replica_outdated() will return true. Even though it is not outdated. Will it happen?
next prev parent reply other threads:[~2021-06-18 22:52 UTC|newest] Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-06-10 13:32 [Tarantool-patches] [PATCH 0/7] forbid implicit limbo ownership transition Serge Petrenko via Tarantool-patches 2021-06-10 13:32 ` [Tarantool-patches] [PATCH 1/7] replication: always send raft state to subscribers Serge Petrenko via Tarantool-patches 2021-06-10 16:47 ` Cyrill Gorcunov via Tarantool-patches 2021-06-11 8:43 ` Serge Petrenko via Tarantool-patches 2021-06-11 8:44 ` Cyrill Gorcunov via Tarantool-patches 2021-06-15 20:53 ` Vladislav Shpilevoy via Tarantool-patches 2021-06-17 21:00 ` Serge Petrenko via Tarantool-patches 2021-06-10 13:32 ` [Tarantool-patches] [PATCH 2/7] replication: forbid implicit limbo owner transition Serge Petrenko via Tarantool-patches 2021-06-15 20:55 ` Vladislav Shpilevoy via Tarantool-patches 2021-06-17 21:00 ` Serge Petrenko via Tarantool-patches 2021-06-18 22:49 ` Vladislav Shpilevoy via Tarantool-patches 2021-06-21 10:13 ` Serge Petrenko via Tarantool-patches 2021-06-10 13:32 ` [Tarantool-patches] [PATCH 3/7] txn_limbo: fix promote term filtering Serge Petrenko via Tarantool-patches 2021-06-15 20:57 ` Vladislav Shpilevoy via Tarantool-patches 2021-06-17 21:00 ` Serge Petrenko via Tarantool-patches 2021-06-18 22:49 ` Vladislav Shpilevoy via Tarantool-patches 2021-06-21 8:55 ` Serge Petrenko via Tarantool-patches 2021-06-10 13:32 ` [Tarantool-patches] [PATCH 4/7] txn_limbo: persist the latest effective promote in snapshot Serge Petrenko via Tarantool-patches 2021-06-15 20:59 ` Vladislav Shpilevoy via Tarantool-patches 2021-06-17 21:00 ` Serge Petrenko via Tarantool-patches 2021-06-10 13:32 ` [Tarantool-patches] [PATCH 5/7] replication: send latest effective promote in initial join Serge Petrenko via Tarantool-patches 2021-06-15 21:00 ` Vladislav Shpilevoy via Tarantool-patches 2021-06-17 21:00 ` Serge Petrenko via Tarantool-patches 2021-06-18 22:52 ` Vladislav Shpilevoy via Tarantool-patches [this message] 2021-06-21 10:12 ` Serge Petrenko via Tarantool-patches 2021-06-10 13:32 ` [Tarantool-patches] [PATCH 6/7] box: introduce `box.ctl.demote` Serge Petrenko via Tarantool-patches 2021-06-18 22:52 ` Vladislav Shpilevoy via Tarantool-patches 2021-06-21 14:56 ` Serge Petrenko via Tarantool-patches 2021-06-10 13:32 ` [Tarantool-patches] [PATCH 7/7] box: make promote/demote always bump the term Serge Petrenko via Tarantool-patches 2021-06-15 21:00 ` Vladislav Shpilevoy via Tarantool-patches 2021-06-17 21:00 ` Serge Petrenko via Tarantool-patches 2021-06-18 22:53 ` Vladislav Shpilevoy via Tarantool-patches 2021-06-21 15:02 ` Serge Petrenko via Tarantool-patches 2021-06-15 20:53 ` [Tarantool-patches] [PATCH 0/7] forbid implicit limbo ownership transition Vladislav Shpilevoy via Tarantool-patches
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=12dc56c1-c6b6-154d-1e19-99c621eaea47@tarantool.org \ --to=tarantool-patches@dev.tarantool.org \ --cc=gorcunov@gmail.com \ --cc=sergepetrenko@tarantool.org \ --cc=v.shpilevoy@tarantool.org \ --subject='Re: [Tarantool-patches] [PATCH 5/7] replication: send latest effective promote in initial join' \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox