Release 2.0.0 Added - Use for frontend part single point of configuration HTTP handlers. As example: you can add your own client HTTP middleware for auth. - Built-in DDL schema management. Schema is a part of clusterwide configuration. It's applied to every instance in cluster. - DDL schema editor page in webui. - Instances now have internal state machine which helps to manage cluster operation and protect from invalid state transitions. - WebUI checkbox to specify `all_rw` replicaset property. - GraphQL API for clusterwide configuration management. - Measure clock difference across instances and provide `clock_delta` in GraphQL `servers` query and in `admin.get_servers()` Lua API. - New option in `rpc_call(..., {uri=...})` to perform a call on a particular uri. Changed - `cartridge.rpc_get_candidates()` doesn't return error "No remotes with role available" anymore, empty table is returned instead. **(incompatible change)** - Base advertise port in luatest helpers changed from 33000 to 13300, which is outside `ip_local_port_range`. Using port from local range usually caused tests failing with an error "address already in use". (*incompatible change*, but affects tests only) - Whole new way to bootstrap instances. Instead of polling membership for getting clusterwide config the instance now start Remote Control Server (with limited iproto protocol functionality) on the same port. Two-phase commit is then executed over net.box connection. (**major change**, but still compatible) - Failover isn't triggered on `suspect` instance state anymore - Functions `admin.get_servers`, `get_replicasets` and similar GraphQL queries now return an error if the instance handling the request is in state `InitError` or `BootError`. - Clusterwide configuration is now represented with a file tree. All sections that were tables are saved to separate `.yml` files. Compatibility with the old-style configuration is preserved. Accessing unmarshalled sections with `get_readonly/deepcopy` methods is provided without `.yml` extension as earlier. (**major change**, but still compatible) - After an old leader restarts it'll try to sync with an active one before taking the leadership again so that failover doesn't switch too early before leader finishes recovery. If replication setup fails the instance enters the `OperationError` state, which can be avoided by explicitly specifying `replication_connect_quorum = 1` (or 0). **(major change)** - Option `{prefer_local = false}` in `rpc_call` makes it always use netbox connection, even to connect self. It never tries to perform call locally. - Update `vshard` dependency to 0.1.14. Removed - Function `cartridge.bootstrap` is removed. Use `admin_edit_topology` interad. **(incompatible change)** - Misspelled role callback `validate` is now removed completely. Keep using `validate_config`. Fixed - Arrange proper failover triggering: don't miss events, don't trigger if nothing changed. Fix races in calling `apply_config` between failover and two-phase commit. - Race condition when creating working directory. - Hide users page in WebUI when auth backend implements no user management functions. Enable auth switcher is displayed on main cluster page in this case. - Displaying boolean values in server details. - Add deduplication for WebUI notifications: no more spam. - Automatically choose default vshard group in create and edit replicaset modals. - Enhance WebUI modals scrolling.