-
-
-
-
-
-
-
2.7.2766d24ba · ·
[2.7.2] - 2021-10-08 Added - 'Make all instances writeable' configuration field can be hidden via frontend-core's `set_variable` feature or at runtime. - New `get_issues` callback in role API to collect user-defined issues. The issues are gathered from the enabled roles only (present in `service-registry`). - Allow disabling built-in HTTP "admin" user: * by specifying `auth_builtin_admin_enabled: false` in the `instances.yml`; * using `TARANTOOL_AUTH_BUILTIN_ADMIN_ENABLED=false` environment variable; * permanently in `init.lua`: ```lua -- init.lua require('cartridge.auth-backend').set_builtin_admin_enabled(false) cartridge.cfg({ auth_backend_name = 'cartridge.auth-backend', ... }) ``` Changed - Make built-in HTTP "admin" user a part of default auth backend. Custom backends are free of it now. Fixed - Eliminate unnecessary transactions after the restart before the replication sync. This reduces the chance the hardware restart leads to WAL corruption ([#1546](<https://github.com/tarantool/cartridge/issues/1546)). - Fix `net.box` clients compatibility with future tarantool 2.10 versions. - Fix vshard rebalancer broken by roles reload.
-
2.7.18e57ed85 · ·
[2.7.1] - 2021-08-18 Fixed - Compatibility with Tarantool 2.9 (update ``errors`` dependency to 2.2.1).
-
2.7.0c8cfb917 · ·
[2.7.0] - 2021-08-10 Added - New suggestion to restart replication. Whenever the replication isn't running and the reason isn't in the dead upstream, Cartridge will show the corresponding banner in WebUI. - More server details in WebUI: membership, vshard-router, and vshard-storage. - Roles are stopped with the `on_shutdown` trigger where it's supported (in Tarantool 2.8+). - New `cartridge.cfg` options: - `webui_prefix` (default: `""`) allows to modify WebUI routes. - `webui_enforce_root_redirect` (default: `true`) manage redirection. To sum up, now they look as follows: - `<PREFIX>/admin/`; - `<PREFIX>/admin/api`; - `<PREFIX>/admin/config`; - `<PREFIX>/admin/cluster/*`; - `<PREFIX>/static/*`; - `<PREFIX>/login`; - `<PREFIX>/logout`; - `/` and `<PREFIX>/` redirect to `/<PREFIX>/admin` (if enabled). - Support `rebalancer_max_sending` vshard option. - New `validate_config` method in GraphQL API. - Add `zone` and `zone_distances` parameters to test helpers. Changed - Merge "Schema" and "Code" pages. Also, allow validating all files, not only the `schema.yml`. - Allow expelling a leader. Cartridge will appoint a new leader according to the failover priority from the topology. - Add default `pool.map_call` timeout 10 seconds. - Forbid starting an instance absent in `instances.yml`. - Update `errors` dependency to 2.2.0 with a new method `errors.netbox_wait_async` to wait for `netbox.future` result. - Update `membership` dependency to 2.4.0 ([Changelog] (https://github.com/tarantool/membership/releases/tag/2.4.0)). - Update `ddl` dependency to 1.5.0 which supplements the clusterwide config with an example schema ([Changelog] (https://github.com/tarantool/ddl/releases/tag/1.5.0)). - Update `vshard` to 0.1.18 ([Changelog] (<https://github.com/tarantool/vshard/releases/tag/0.1.18)). Fixed - Leaders replaced during stateful failover can be expelled now. - Make failover logging more verbose. - Fix hot-reload for roles that leave gaps in httpd routes. - Check user e-mail uniqueness when editing. - Expelled instances are removed from the `_cluster` space. - Fix `get_enabled_roles` to work w/o arguments. - Don't default to syslog driver unless `/dev/log` or `/var/run/syslog` are available. - Fix inappropriate consistency timeout that led to "Timed out" error during forceful leader promotion. - Support automatic parsing of Tarantool Enterprise box options `audit_log` and `audit_nonblock`. - Instance won't suspect any members during `RecoveringSnapshot` and `BootstrappingBox`. Enhanced in WebUI - Allow to blacklist subpages for complex modules. - Fix notifications displaying. Close it by clicking anywhere. Keep it open while the mouse is over. - Various styles enhancements.
-
2.6.0cc607f5a · ·
[2.6.0] - 2021-04-26 Added - Update vshard to 0.1.17. (`Changelog <https://github.com/tarantool/vshard/releases/tag/0.1.17>`_). - Update graphql to 0.1.1. (`Changelog <https://github.com/tarantool/graphql/releases/tag/0.1.1>`_). - New test helper: ``cartridge.test-helpers.stateboard``. - New ``failover`` option in the cluster test helper for easier failover setup. Changed - Move DDL related code out of Cartridge and ship it as a permaent role in the ddl rock. No observable functionality is affected. The roles remains registered implicitly. Nonetheless it's recomended to add it explicitly to ``cartridge.cfg({roles = {'cartridge.roles.ddl-manager'}})`` (if it's actually used) as this implicity may be removed in future. Fixed - Fix unclear timeout errors in case of ``InitError`` and ``BootError`` states. - Fix inconsistency which could occur while longpolling stateboard in unstable networks. - Increase timeout for the ``validate_config`` stage from 1 to 10 seconds. It afftected ``config_patch_clusterwide`` in v2.5, mostly on large clusters. Enhanced in WebUI - Highlight if file name exists in file create/rename mode on Code page.
-
2.5.1a9a113f4 · ·
[2.5.1] - 2021-03-24 Added - Extend GraphQL `issues` API with `aliens` topic. The issues warns if two separate clusters share the same cluster cookie. - Enhance error messages when they're transferred over network. Supply it with the connection URI. Fixed - Don't skip two-phase commit prematurely. From now on, the decision to skip the `apply_config` is made by every instance individually. The validation step is never skipped. - Avoid WebUI and `pool.map_call` requests hanging because of network connection problems. - Fix unclear "Timeout exceeded" error. It affects v2.5.0 two-phase commit when an instance is stuck in `ConfiguringRoles` state. - Make the "Replication isn't running" issue critical instead of a warning.
-
2.5.07d6e4963 · ·
[2.5.0] - 2021-03-05 Issues and suggestions - Show an issue when `ConfiguringRoles` state gets stuck for more than 5s. - Show a suggestion to disable broken instances. - Show a suggestion to force reapply clusterwide configuration. Configuration options - New `cartridge.cfg` option `webui_enabled` (default: `true`). Otherwise, HTTP server remains operable (and GraphQL too), but serves user-defined roles API only. - New `cartridge.cfg` option `http_host` (default: `0.0.0.0`) which allows to specify the bind address of the HTTP server. Miscellaneous enhancements - Allow observing cluster from an unconfigured instance WebUI. - Introduce a new graphql parser (`libgraphqlparser` instead of `lulpeg`). It conforms to the newer GraphQL specification and provides better error messages. The "null" literal is now supported. But some other GraphQL expressions are considered invalid (e.g. empty subselection). - Properly handle etcd index updates while polling stateful failover updates. The problem affected long-running clusters and resulted in flooding logs with the "Etcd cluster id mismatch" warnings. - Refactor two-phase commit (`patch_clusterwide`) logics: don't use hardcoded timeout for the `prepare` stage, move `upload` to a separate stage. - Eliminate GraphQL error "No value provided for non-null ReplicaStatus" when a replica is removed from the `box.space._cluster`. - Allow specifying server zone in `join_server` API. - Don't make formatting ugly during config upload. - Hide the bootstrap button when it's not necessary (e.g. before the cluster is bootstrapped, and in vshardless cluster too). - Properly display an error if changing server zone fails. - Fix disabled instances style.
-
2.4.03c3914fd · ·
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".
-
2.3.02ed8fb58 · ·
Release 2.3.0 Added - When failover mode is stateful, all manual leader promotions will be consistent: every instance before becoming writable performs `wait_lsn` operation to sync with previous one. If consistency couldn't be reached due to replication failure, a user could either revert it (promote previous leader), or force promotion to be inconsistent. - Early logger initialization (for Tarantool > 2.5.0-100, which supports it). - Add `probe_uri_timeout` argparse option responsible for retrying "Can't ping myself" error on startup. - New test helper: `cartridge.test-helpers.etcd`. - Support `on_push` and `on_push_ctx` options for `cartridge.rpc_call()`. - Changing users password invalidates HTTP cookie. - Support GraphQL default variables (https://graphql.org/learn/queries/#default-variables). Fixed - Eventual failover may miss an event while roles are being reconfigured. - Compatibility with pipe logging, see https://github.com/tarantool/tarantool/issues/5220. - Non-informative assertion when instance is bootstrapped with a distinct `advertise_uri`. - Indexing `nil` value in `get_topology()` query. - Initialization race of vshard storage which results in `OperationError`. - Lack of vshard router reconnection attempts to the replicas. - Make GraphQL syntax errors more clear. - Better `errors.pcall()` performance, `errors` rock updated to v2.1.4. Enhanced is WebUI - Show instance names in issues list. - Show app name in window title. - Add "Force leader promotion" button in stateful failover mode. - Indicate consistent switchover problems with a yellow leader flag.
-
2.2.19da5ad23 · ·
Release 2.2.1 Fixed - Eventual failover may miss an event while roles are being reconfigured.
-
2.2.08502a956 · ·
Release 2.2.0 Added - When running under systemd use `<APP_NAME>.<INSTANCE_NAME>` as default syslog identity. - Support `etcd` as state provider for stateful failover. Changed - Improve rocks detection for feedback daemon. Besides cartridge version it now parses manifest file from the `.rocks/` directory and collects rocks versions. - Make `uuid` parameters optional for test helpers. Make `servers` option accept number of servers in replicaset. Enhanced in WebUI - Prettier errors displaying. - Enhance replicaset filtering by role / status.
-
2.1.2ec0ed5d4 · ·
Release 2.1.2 Fixed - Avoid trimming `console_sock` if it's name is too long. - Fix file descriptors leak during box recovery. - Support `console_sock` option in stateboard as well as notify socket and other box options similar to regular cartridge instances.
-
2.1.1f6797065 · ·
Release 2.1.1 Fixed - Fix route mapping in WebUI Release 2.1.0 Added - Implement stateful failover mode. You can read more in "Failover architecture" documentation topic (see `failover.md`). - Respect `box.cfg` options `wal_dir`, `memtx_dir`, `vinyl_dir`. They can be either absolute or relative - in the later case it's calculated relative to `cartridge.workdir`. - New option in `cartridge.cfg({upgrade_schema=...})` to automatically upgrade schema to modern tarantool version (only for leader). It also has been added for `argparse`. - Extend GraphQL `issues` API with various topics: `replication`, `failover`, `memory`, `clock`. Make thresholds configurable via argparse. Changed - Make GraphQL validation stricter: scalar values can't have sub-selections; composite types must have sub-selections; omitting non-nullable arguments in variable list is forbidden. Your code **may be affected** if it doesn't conform GraphQL specification. - GraphQL query `auth_params` returns "fullname" (if it was specified) instead of "username". - Update `errors` dependency to 2.1.3. - Update `ddl` dependency to 1.1.0. Deprecated Lua API: - `cartridge.admin_get_failover` -> `cartridge.failover_get_params` - `cartridge.admin_enable/disable_failover` -> `cartridge.failover_set_params` GraphQL API: - `query {cluster {failover} }` -> `query {cluster {failover_params {...} } }` - `mutation {cluster {failover()} }` -> `mutation {cluster {failover_params() {...} } }` Fixed - Properly handle nested input object in GraphQL: ```graphql mutation($uuid: String!) { cluster { edit_topology(servers: [{uuid: $uuid ...}]) {} } } ``` - Show WebUI notification on successful config upload. - Repair GraphQL queries `add_user`, `issues` on uninitialized instance. Enhanced in WebUI - Show "You are here" marker. - Show application and instance names in app title. - Indicate replication and failover issues. - Fix bug with multiple menu items selected. - Refactor pages filtering, forbid opening blacklisted pages. - Enable JS chunks caching.
-
2.1.0595a16f5 · ·
Release 2.1.0 Added - Implement stateful failover mode. You can read more in "Failover architecture" documentation topic (see `failover.md`). - Respect `box.cfg` options `wal_dir`, `memtx_dir`, `vinyl_dir`. They can be either absolute or relative - in the later case it's calculated relative to `cartridge.workdir`. - New option in `cartridge.cfg({upgrade_schema=...})` to automatically upgrade schema to modern tarantool version (only for leader). It also has been added for `argparse`. - Extend GraphQL `issues` API with various topics: `replication`, `failover`, `memory`, `clock`. Make thresholds configurable via argparse. Changed - Make GraphQL validation stricter: scalar values can't have sub-selections; composite types must have sub-selections; omitting non-nullable arguments in variable list is forbidden. Your code **may be affected** if it doesn't conform GraphQL specification. - GraphQL query `auth_params` returns "fullname" (if it was specified) instead of "username". - Update `errors` dependency to 2.1.3. - Update `ddl` dependency to 1.1.0. Deprecated Lua API: - `cartridge.admin_get_failover` -> `cartridge.failover_get_params` - `cartridge.admin_enable/disable_failover` -> `cartridge.failover_set_params` GraphQL API: - `query {cluster {failover} }` -> `query {cluster {failover_params {...} } }` - `mutation {cluster {failover()} }` -> `mutation {cluster {failover_params() {...} } }` Fixed - Properly handle nested input object in GraphQL: ```graphql mutation($uuid: String!) { cluster { edit_topology(servers: [{uuid: $uuid ...}]) {} } } ``` - Show WebUI notification on successful config upload. - Repair GraphQL queries `add_user`, `issues` on uninitialized instance. Enhanced in WebUI - Show "You are here" marker. - Show application and instance names in app title. - Indicate replication and failover issues. - Fix bug with multiple menu items selected. - Refactor pages filtering, forbid opening blacklisted pages. - Enable JS chunks caching.
-
2.0.2c1ae3aba · ·
Release 2.0.2 **Added** - Expose membership options in `argparse` module (edit them with environment variables and command-line arguments). - New internal module to handle `.tar` files. Lua API: - `cartridge.cfg({webui_blacklist = {'/admin/code', ...}})`: blacklist certain WebUI pages. - `cartridge.get_schema()` referencing older `_G.cartridge_get_schema`. - `cartridge.set_schema()` referencing older `_G.cartridge_set_schema`. GraphQL API: - Make use of GraphQL error extensions: provide additional information about `class_name` and `stack` of original error. - `cluster{ issues{ level message ... }}`: obtain more details on replication status - `cluster{ self {...} }`: new fields `app_name`, `instance_name`. - `servers{ boxinfo { cartridge {...} }}`: new fields `version`, `state`, `error`. Test helpers: - Allow specifying `all_rw` replicaset flag in luatest helpers. - Add `cluster({env = ...})` option for specifying clusterwide environment variables. **Changed** - Remove redundant topology availability checks from two-phase commit. - Prevent instance state transition from `ConnectingFullmesh` to `OperationError` if replication fails to connect or to sync. Since now such fails result in staying in `ConnectingFullmesh` state until it succeeds. - Specifying `pool.connect()` options `user`, `password`, `reconnect_after` are deprecated and ignored, they never worked as intended and will never do. Option `connect_timeout` is deprecated, but for backward compatibility treated as `wait_connected`. **Deprecated** Lua API: - `cartridge.admin_get_failover` -> `cartridge.failover_get_params` - `cartridge.admin_enable/disable_failover` -> `cartridge.failover_set_params` GraphQL API: - `query {cluster {failover} }` -> `query {cluster {failover_params {...} } }` - `mutation {cluster {failover()} }` -> `mutation {cluster {failover_params() {...} } }` **Fixed** - Fix DDL failure if `spaces` field is `null` in input schema. - Check content of `cluster_cookie` for absence of special characters so it doesn't break the authorization. Allowed symbols are `[a-zA-Z0-9_.~-]`. - Drop remote-control connections after full-featured `box.cfg` becomes available to prevent clients from using limited functionality for too long. During instance recovery remote-control won't accept any connections: clients wait for box.cfg to finish recovery. - Update errors rock dependency to 2.1.2: eliminate duplicate stack trace from `error.str` field. - Apply `custom_proc_title` setting without waiting for `box.cfg`. - Make GraphQL compatible with `req:read_cached()` call in httpd hooks. - Avoid "attempt to index nil value" error when using rpc on an uninitialized instance. **Enhanced in WebUI** - Add an ability to hide certain WebUI pages. - Validate YAML in code editor WebUI. - Fix showing errors in Code editor page. - Remember last open file in Code editor page. Open first file when local storage is empty. - Expand file tree in Code editor page by default. - Show Cartridge version in server info dialog. - Server alias is clickable in replicaset list. - Show networking errors in splash panel instead of notifications. - Accept float values for vshard-storage weight.