Skip to content
Snippets Groups Projects
user avatar
Serge Petrenko authored
Starting with commit f1c2127d ("replication: add META stage to JOIN")
replication master appends a special section, called IPROTO_JOIN_META to
the initial snapshot sent to the replica. This section contains the
latest raft term and synchronous transaction queue owner and term.

The section is only sent to nodes, which have a non-zero version_id.
For some reason, version_id encoding for FETCH_SNAPSHOT (analog of JOIN
for anonymous replicas) wasn't added in that commit, so anonymous
replicas do not receive synchronous queue state.

This leads to them raising ER_SPLIT_BRAIN errors later after join, when
the first synchronous row arrives.

In order to fix this, start encoding version_id in FETCH_SNAPSHOT
requests.

Closes #9401

@TarantoolBot document
Title: new field in `IPROTO_FETCH_SNAPSHOT` request

`IPROTO_FETCH_SNAPSHOT` request was bodyless (only contained a header)
until now, but now it receives a body with a single field:
`IPROTO_SERVER_VERSION` : MP_UINT -- an encoded representation of the
server version of a replica issuing the request.
58c006c9
History
Name Last commit Last update