Skip to content
Tags give the ability to mark specific points in history as being important
  • 2.7.8
    Release 2.7.8
  • 2.7.7
    01e5f66a · Update changelog ·
    Release 2.7.7
  • 2.7.6
    d6aecbf9 · Pcall sslsocket ·
    Release 2.7.6
  • 2.7.5
    39fb3560 · Release 2.7.5 (#1851) ·
    Release 2.7.5
  • 2.7.4
    6c26afc4 · Update requirements.txt ·
    Release 2.7.4
  • 2.7.3
    Release 2.7.3
  • 2.7.2
    766d24ba · Release v2.7.2 (#1568) ·
    [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.1
    8e57ed85 · Release v2.7.1 (#1537) ·
    [2.7.1] - 2021-08-18
    
    Fixed
    
    - Compatibility with Tarantool 2.9 (update ``errors`` dependency to 2.2.1).
  • 2.7.0
    c8cfb917 · Release v2.7.0 (#1518) ·
    [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.0
    cc607f5a · Release v2.6.0 (#1394) ·
    [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.1
    [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.0
    7d6e4963 · Release v2.5.0 (#1306) ·
    [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.0
    3c3914fd · Fix rock publishing ·
    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.0
    2ed8fb58 · Release v2.3.0 (#1023) ·
    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.1
    9da5ad23 · Release v2.2.1 ·
    Release 2.2.1
    
    Fixed
    
    - Eventual failover may miss an event while roles are being
      reconfigured.
  • 2.2.0
    8502a956 · Release v2.2.0 (#916) ·
    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.2
    ec0ed5d4 · Release v2.1.2 (#822) ·
    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.1
    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.0
    595a16f5 · Release v2.1.0 (#787) ·
    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.2
    c1ae3aba · Release v2.0.2 (#663) ·
    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.