config: allow to bootstrap anon replica from RO rs
This commit allows to bootstrap an anonymous replica from a replicaset, where all the instances are in read-only mode. The reason of the change is that there are no technical reasons to forbid this action. An anonymous replica is not registered in `_cluster` system space, so it can join a replicaset even if there are no writable instances. Fixes #9432 @TarantoolBot document Title: config: anonymous replica is now supported `replication.anon: true` option is now working. There are configuration constraints that are related to anonymous replicas. * A replicaset must contain at least one non-anonymous instance. * An anonymous replica can't be configured as writable instance using `database.mode` or `<replicaset>.leader` options. * An anonymous replica can't be configured with `replication.election_mode` equals to `candidate`, `voter` or `manual` (only `off` is allowed). A few more nuances about anonymous replicas: * Anonymous replicas are filtered out from default upstream list. * A `replication.failover: election` replicaset can contain anonymous replicas, but `replication.election_mode` defaults to `off` for them (unlike non-anonymous instances, where the default is `candidate`). * `replication.failover: supervised` skips anonymous replicas, when choosing a bootstrap leader. * A anonymous replica can joined a replicaset, which has all the instances in read-only mode (unlike a non-anonymous instance). See details in [1] and [2]. [1]: https://github.com/tarantool/tarantool/issues/9432 [2]: https://github.com/tarantool/tarantool/pull/9418
Showing
- changelogs/unreleased/config-anonymous-replica.md 0 additions, 6 deletionschangelogs/unreleased/config-anonymous-replica.md
- src/box/lua/config/applier/box_cfg.lua 2 additions, 3 deletionssrc/box/lua/config/applier/box_cfg.lua
- test/config-luatest/anonymous_replica_test.lua 51 additions, 0 deletionstest/config-luatest/anonymous_replica_test.lua
Loading
Please register or sign in to comment