Skip to content

Releases: tarantool/cartridge

Release 2.2.1

12 Aug 06:06
Compare
Choose a tag to compare

[2.2.1] - 2020-08-11

Fixed

  • Eventual failover may miss an event while roles are being reconfigured.
  • ApplyConfigError: fiber is cancelled (#994)

Release 2.2.0 (etcd for stateful failover)

23 Jun 17:57
8502a95
Compare
Choose a tag to compare

[2.2.0] - 2020-06-23

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.

Release 2.1.2

24 Apr 16:31
ec0ed5d
Compare
Choose a tag to compare

[2.1.2] - 2020-04-24

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.

Release 2.1.1 (stateful failover)

20 Apr 10:48
f679706
Compare
Choose a tag to compare

[2.1.1] - 2020-04-20

Fixed

  • Frontend core update: fix route mapping

[2.1.0] - 2020-04-16

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:
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.

Release 2.0.2

18 Mar 11:33
c1ae3ab
Compare
Choose a tag to compare

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.

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.

Release 2.0.1

15 Jan 15:51
7455c95
Compare
Choose a tag to compare

Added

  • Expose TARANTOOL_DEMO_URI environment variable in GraphQL query
    cluster{ self{demo_uri} } for demo purposes.

Fixed

  • Notifications in schema editor WebUI.

  • Fix GraphQL servers query compatibility with old cartridge versions.

  • Two-phase commit backward compatibility with v1.2.0.

Release 2.0.0

15 Jan 15:50
acb21de
Compare
Choose a tag to compare

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.

Release 1.2.0

21 Oct 17:07
1203f23
Compare
Choose a tag to compare

Added

  • 'Auto' placeholder to weight input in Replicaset add and edit forms.
  • 'Select all' and 'Deselect all' buttons to roles field in Replicaset add and edit forms.
  • Refresh replicaset list in UI after topology edit actions: bootstrap, join, expel,
    probe, replicaset edit.
  • New Lua API cartridge.http_authorize_request() suitable for checking
    HTTP request headers.
  • New Lua API cartridge.http_render_response() for generating HTTP
    response with proper Set-Cookie headers.
  • New Lua API cartridge.http_get_username() to check authorization of
    active HTTP session.
  • New Lua API cartridge.rpc_get_candidates() to get list
    of instances suitable for performing a remote call.
  • Network error notification in UI.
  • Allow specifying vshard storage group in test helpers.

Changed

  • Get UI components from Tarantool UI-Kit
  • When recovering from snapshot, instances are started read-only.
    It is still possible to override it by argparse (command line
    arguments or environment variables)

Fixed

  • Editing topology with failover_priority argument.
  • Now cartridge.rpc.get_candidates() returns value as specified in doc.
    Also it accepts new option healthy_only to filter instances which
    have membership status healthy.
  • Replicaset weight tooltip in replicasets list
  • Total buckets count in buckets tooltip
  • Validation error in user edit form
  • Leader flag in server details modal
  • Human-readable error for invalid GrqphQL queries:
    Field "x" is not defined on type "String"
  • User management error "attempt to index nil value" when one of users
    has empty e-mail value
  • Catch rpc_call errors when they are performed locally