Release 2.4.0 Fencing and failover - The new fencing feature protects a replicaset from the presence of multiple leaders when the network is partitioned. It forces an isolated leader to become read-only. - New failover parameter `failover_timout` specifies the time (in seconds) used by membership to mark `suspect` members as `dead` which triggers failover. The default value of `failover_timeout` increased from 3 to 20 seconds (**important change**). - The `rpc_*` functions now consider `suspect` members as healthy to be in agreement with failover (**important change**). - All these parameters, `fencing_enabled`, `fencing_pause`, `fencing_timeout`, are available for customization via Lua and GraphQL API, and in WebUI too. Zones and zone distances - Add support of replica weights and zones via a cluster-wide config new section `zone_distances` and a server parameter `zone`. - Update server details dialog in WebUI. Issues and suggestions - Fix `upstream.idle` issue tolerance to avoid unnecessary warnings "Replication: long idle (1 > 1)". - Indicate config checksum mismatch in the issues list. - Indicate the change of `arvertise_uri` in the issues list. - Show an issue if the cluster-wide config is locked on an instance. - Show a suggestion to heal the cluster after relocating servers and changing their `advertise_uri`. - Don't get stuck in `ConnectingFullmesh` state when an instance is restarted with a different `advertise_uri`. Also, keep the "Server details" dialog in WebUI operable in this case. - Allow applying config when an instance is in `OperationError` state. It doesn't cause a loss of quorum anymore. Hot-reload - Add new feature for hot reloading roles code without restarting an instance: `cartridge.reload_roles()`. The feature is experimental and should be enabled explicitly: `cartridge.cfg({roles_reload_allowed = true})`. Use it with caution. Miscellaneous enhancements - New `cartridge.cfg` option `swim_broadcast` to manage instances auto-discovery on start. Default: true. - New argparse options for tarantool 2.5+: `replication_synchro_quorum`, `replication_synchro_timeout`, `memtx_use_mvcc_engine`. - Stop vshard fibers when the corresponding role is disabled. - Make `console.listen` error more clear when `console_sock` exceeds `UNIX_PATH_MAX` limit. - Allow removing spaces from DDL schema for the sake of `drop` migrations. - Make DDL schema validation stricter. Forbid redundant keys in schema top-level and make `spaces` mandatory. - Refresh interval and stat refresh period variables can be customized via frontend-core `set_variable` feature or at runtime. - Properly display errors on WebUI pages "Users" and "Code".