Releases: tarantool/cartridge
Release 2.2.1
[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)
[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. Makeservers
option accept number of servers in replicaset.
Enhanced in WebUI
-
Prettier errors displaying.
-
Enhance replicaset filtering by role / status.
Release 2.1.2
[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)
[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 (seefailover.md
). -
Respect
box.cfg
optionswal_dir
,memtx_dir
,vinyl_dir
. They
can be either absolute or relative - in the later case it's calculated
relative tocartridge.workdir
. -
New option in
cartridge.cfg({upgrade_schema=...})
to automatically upgrade schema to modern tarantool version
(only for leader). It also has been added forargparse
. -
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
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
aboutclass_name
andstack
of original error. -
cluster{ issues{ level message ... }}
: obtain more details on
replication status -
cluster{ self {...} }
: new fieldsapp_name
,instance_name
. -
servers{ boxinfo { cartridge {...} }}
: new fieldsversion
,
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 inConnectingFullmesh
state until it
succeeds. -
Specifying
pool.connect()
optionsuser
,password
,
reconnect_after
are deprecated and ignored, they never worked as
intended and will never do. Optionconnect_timeout
is deprecated,
but for backward compatibility treated aswait_connected
.
Fixed
-
Fix DDL failure if
spaces
field isnull
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 fromerror.str
field. -
Apply
custom_proc_title
setting without waiting forbox.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
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
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 GraphQLservers
query and inadmin.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 outsideip_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
stateInitError
orBootError
. -
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 withget_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 theOperationError
state, which can be avoided by
explicitly specifyingreplication_connect_quorum = 1
(or 0).
(major change) -
Option
{prefer_local = false}
inrpc_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. Useadmin_edit_topology
interad. (incompatible change) -
Misspelled role callback
validate
is now removed completely.
Keep usingvalidate_config
.
Fixed
-
Arrange proper failover triggering: don't miss events, don't trigger
if nothing changed. Fix races in callingapply_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
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 properSet-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 optionhealthy_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