Skip to content

Latest commit

 

History

History
1144 lines (886 loc) · 46 KB

File metadata and controls

1144 lines (886 loc) · 46 KB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog and this project adheres to Semantic Versioning.

[Unreleased]

Added

  • tt connect, tt replicaset, tt cluster topology, tt backup: added --sslpassword and --sslpasswordfile to decrypt password-protected private SSL keys.
  • tt connect, tt replicaset, tt cluster topology, tt backup: added --connect-timeout, with a default of one second, to bound binary connection establishment.

Changed

Fixed

[2.15.0] - 2026-09-24

This release extends cluster backup and restore: tt backup-id generates backup identifiers, tt backup start and finalize gain --dir and iproto TLS flags, and tt restore can restore a subset of replicasets into separate snapshot, WAL and vinyl directories. It also parallelizes tt status and fixes duplicated lines and stalls in tt log -f after log rotation.

Added

  • tt backup-id: prints an identifier for a new backup, the current UTC time as 20060102T150405Z, to pass as --backup-id to tt backup start, upload and finalize. Identifiers sort in the order they are generated, and the command exits once the printed second is over, so two consecutive calls never print the same one.
  • status: added --instance-timeout flag to bound how long collecting a single instance's status may take.
  • tt restore apply: restore into the three data directories Tarantool configures separately. --snapshot-dir, --wal-dir and --vinyl-dir name one directory each, and -c/--config with --instance reads them out of a cluster configuration, resolving snapshot.dir, wal.dir, vinyl.dir, their var/lib/{{ instance_name }} defaults and process.work_dir the way Tarantool does. Each directory is decided on its own, taking the flag that names it, else the configuration, else --work-dir. The marker is written beside the snapshot directory as <absolute snapshot directory>.restore_state.json and records all three, resolved.
  • tt backup start / tt backup finalize: added --dir flag to choose the directory of the local archive and manifest fragment instead of $TMPDIR/tt-backup/<backup-id>.
  • tt backup start / tt backup finalize: added --sslkeyfile, --sslcertfile, --sslcafile and --sslciphers flags to connect to an instance with iproto TLS enabled.
  • tt restore plan: added --replicasets to restrict the restore to the named replicasets, by the names the cluster config gives them, which is why it requires -c. The cluster recovery point is then searched over those replicasets alone, and so are the downloads, the restore targets and the trim positions. The others -- a stateless router, say -- are not restored and are reported in the warnings.

Changed

  • status: status requests now have a default timeout of 5 seconds.
  • status: status requests were parallelized for faster collection.
  • tt restore apply: --work-dir is no longer required. It still puts every kind of file in one directory when used alone; with --config it is the directory the instance is launched from, which the configuration's relative paths resolve against. A call that does not add up to three directories is rejected with exit code 3 and touches nothing.
  • tt backup / tt restore apply: a memtx sort data file (<signature>.sortdata, Tarantool 3.8+) counts as a snapshot, so it is backed up against memtx_dir and restored beside the snapshot it belongs to. --target-point drops the sort data of a snapshot it drops, instead of leaving a file describing a snapshot that is no longer there.
  • tt log -f / tt tcm log --follow: only complete lines are printed. A half-written line stays buffered until its newline arrives instead of being split into two records.
  • Commands working with a Tarantool 3 application (tt start, tt status and others) read its cluster configuration once instead of once per instance, which was slow on applications with hundreds of instances.

Fixed

  • status: replication errors were ignored.
  • tt backup start: an archive entry is named against the data directory that holds files of its own kind, so an instance keeping one data directory inside another no longer names a vinyl run against wal_dir and has it restored a level too deep. tt restore apply normalizes the names older archives carry, so a backup already taken from such an instance restores correctly too.
  • tt cluster publish / tt cluster show: fix a connection timeout to an https:// Tarantool Config Storage or etcd endpoint with SSL enabled but no client certificate configured.
  • tt log -f / tt tcm log --follow: a line could be delivered twice right after a log rotation, and the follow could stall, never picking up the rotated file.
  • tt log -f: the message about an unavailable log file printed %!q(MISSING) instead of the file name.
  • tt clean: fixed showing files to delete before confirmation. Verbose option added.

[2.14.0] - 2026-08-06

This release introduces cluster backup and restore: tt backup plans a backup, takes it on the nodes, uploads the archives with a cluster manifest to file or S3 storage, and verifies and prunes that storage, while tt restore plans a recovery point and prepares the instance work directories for it. It also adds cluster topology discovery with tt cluster topology and the \history command in the interactive console, and fixes line loss and hangs in tt log -f around log rotation.

Added

  • tt backup start and tt backup finalize: add support for creating and finalizing local backup artifacts. --backup-id must be a single safe path component: it names a directory and a file on the node and an object key in the storage, so an empty id, a path separator, a leading dot or an absolute path is rejected before the instance is dialed.
  • tt cluster topology: add cluster topology discovery from a file, etcd, or Tarantool Config Storage with table and JSON output.
  • tt backup last: add support for displaying the latest backup manifest from file or S3 storage.
  • tt backup verify: add a read-only health check of a backup storage: missing and corrupted archives, breaks in the backup chain, and dangling archives. Exits with 2 when problems are found. Archives of a backup newer than every stored manifest are reported as an upload in progress and do not make the storage unhealthy. A manifest carrying a warning code this tt does not know is read normally: warnings[] is diagnostic, so an unfamiliar code neither invalidates the manifest nor breaks the chain below it.
  • tt backup gc: add retention-based cleanup of a backup storage: --keep-full / --keep-days delete whole backup chains from their newest end, --orphan-age collects dangling archives, and --dry-run reports what a run would delete. The chain holding the newest manifest and the newest chain that can still be recovered from are never deleted, so no combination of flags empties a storage.
  • tt backup plan: add backup planning command that computes last valid manifest for tt backup start. The plan carries format_version, and tt backup upload refuses a version it does not know instead of reading the fields it knows: the plan crosses hosts, and possibly a tt upgrade, between the two commands. When the plan names no chain head, previous_backup_id and base_full_backup_id are null rather than absent, so a consumer reads them without a special case. The cluster manifest does the same with previous_backup_id for the first full backup of a chain. The plan also carries checksum_sha256 of its own content, which is how tt backup upload tells a plan tt produced from one written or edited by hand.
  • tt backup upload: add a command that builds a cluster manifest from per-shard fragments and uploads archives and the manifest to file or S3 storage. Every archive is read through and checked against the checksum its fragment carries before anything is stored, so a copy that went wrong between the node and the manager host is refused rather than published as healthy. A fragment with no checksum gets the computed one, and the run reports that nothing was verified for that shard. The storage is also compared against the plan before the first object is written: an increment whose chain head moved since the plan was made, and a backup id that does not sort above the newest stored backup, are both refused — the second is what a host with a clock behind produces, and reusing an id looks the same. A full backup landing on a chain whose replicaset set or master changed records promoted_to_full in warnings[] with the reason, so a forced full backup is distinguishable from a scheduled one; being informational, it leaves the manifest status alone. The fragments are compared against the plan as well: one taken on an instance the plan does not name as that replicaset's master — a failover between plan and start — or one of a different backup type than the plan asked for is refused. This holds the plan to its word only when tt wrote it: for a plan written or edited by hand, checked by its checksum_sha256, the same disagreements are reported and the upload continues, which is also how an operator overrides the check. A shard that produced nothing does not fail the run: a replicaset the plan expects and no fragment covers is stored as a failed shard with shard_unreachable in warnings[], a fragment whose archive never arrived as one with shard_partial, and every shard that did produce data is uploaded either way — the run reports the manifest status, so a degraded backup is visible in the log of a run that exited 0. An archive no fragment describes is still refused: its checksum can be compared against nothing, and storing it would leave an object no manifest refers to.
  • tt backup plan, upload, verify, gc, last and tt restore plan: --cluster-name and --environment select the <storage_root>/<cluster_name>/<environment>/ subtree of the storage, so one storage can hold several clusters. Every command that reads or writes a storage takes the pair and has to be given the same one: a backup uploaded with it is invisible to a reader run without it. --environment without --cluster-name, and either of them holding a path separator, are refused rather than silently pointing at another storage location. Object keys inside the subtree, and the archive paths the manifest records, stay relative to it. tt backup plan records the pair it was given in the plan, and tt backup upload takes it from there — its own flags are only needed to override the plan, which it reports when they do.
  • tt restore plan: add restore planning on the manager host. Lists the storage itself, walks the backup chain, resolves --target-time into the latest cluster recovery point not later than it, downloads the manifests and archives that point needs into -d/--dir and verifies their checksums there. Prints the download plan, the chosen point with its per-replicaset trim positions, and — when the requested time cannot be reached — the recovery times on either side of it. restore_targets names, per replicaset, the node its chain is restored onto and the instance UUID that node has to own afterwards, which is what tt restore apply --patch-uuid stamps in: a replicaset is backed up on its master, so the master is the node whose headers the archives already fit. With -c the other configured members are listed beside it under rejoin — they are wiped before the restore and come back by joining the restored node, needing no UUID of their own because Tarantool 3.x identifies an instance by name. With -c the point's topology is also checked against the cluster being restored: the composition comes from the configuration rather than from the instances, and replicasets are matched by instance name rather than by UUID, so a restore into a freshly deployed cluster passes. Exits with 2 for a topology boundary, 3 when no point is available, 4 for a broken chain, 5 for a time outside the coverage and 6 for a topology that does not match the cluster config. A missing or corrupt archive stops the plan; nothing is distributed to the nodes and nothing is deleted.
  • tt restore apply: add preparation of an instance work directory from a backup chain. Unpacks the archives in order, stamps --patch-uuid into every snap/xlog header, and cuts the chain at --target-point: the xlog holding the point is truncated and the files starting past it are removed. --checksums verifies the archives before anything is touched, and a chain that is not one — archives out of order, a gap between an increment and its base, or archives taken on different instances — is refused rather than restored into a healthy-looking instance sitting at the wrong position. Re-running for the same point is idempotent, and only the files a restore owns are cleared, so an instance config kept in the same directory survives. Exits with 2 when no xlog covers the point and 3 when an input is rejected, in which case the work directory is left as it was. A restore_state.json marker is written next to the work directory for the orchestrator to compare across the restored nodes before the cluster is started.
  • tt connect: add \history command to display the last executed commands in the interactive console.

Changed

  • tt stop: preliminary interrupts the processes to enable parallel termination.
  • tt create vshard_cluster: the generated rockspec now pins vshard 0.1.42 instead of 0.1.25. 0.1.42 is the first release shipping the vshard-router backend of the roles.recovery-point-manager role, which is what lets a backup take a cluster-wide recovery point.
  • tt backup: remove creation_duration from the cluster manifest — the field was unused and is no longer serialized.

Fixed

  • tt log -f: possible line loss/duplication on rename, hanging after a watched log directory is removed, and lines written just as the file was read to the end not showing up until the next write.

[2.13.0] - 2026-05-21

This release adds cluster worker configuration management and fixes incorrect error reporting in tt start on insufficient directory permissions.

Added

  • tt cluster: worker publish subcommand.
  • tt cluster: worker show subcommand.
  • tt cluster: worker delete subcommand.

Fixed

  • tt start: fixed a bug where an error did not appear when access rights to the var directive were insufficient.

[2.12.0] - 2026-03-30

This maintenance release marks the end of active development on the v2 branch.

Added

  • tt pack: support nested .packignore at the root of tt environment.
  • tt status: add --format option to support JSON and YAML output formats for machine-readable output.

Changed

  • tt status: deprecate --pretty option in favor of --format=pretty-table.

Fixed

  • tt pack: fix .packignore for directories with regexp symbols in their names.
  • tt: return non-zero exit code on unknown command.

[2.11.5] - 2026-03-19

The release includes fixes identified by CVE linters.

[2.11.4] - 2026-03-04

The auxilary release just to keep version matching with tt-ee (no functional changes in tt).

[2.11.3] - 2026-02-25

The release updates the dependencies and fixes discovering of the available versions with tt search.

Fixed

  • tt search: fix unknown dev tags parsing.

[2.11.2] - 2026-02-19

The release includes minor fixes identified by Svacer and CVE linters.

[2.11.1] - 2026-01-19

The release allows --cartridge-compat flag for the tt pack deb|rpm commands. Also it includes several fixes for the tt install and tt pack commands and docker container used by these commands is upgraded to Ubuntu 20.04.

Added

  • pack: if the --cartridge-compat flag is set pack deb and pack rpm commands add files with application and tarantool versions to the package.

Changed

  • Container that is used to build tarantool when --use-docker is specified with tt install or tt pack command is upgraded to Ubuntu 20.04.

Fixed

  • tt coredump: adjust Tarantool GDB-extention to avoid load failure if main_cord symbol is optimized out in gdb session.
  • tt pack: corrupts relative symbolic links.
  • tt install: fails to install tarantool by commit hash.
  • tt install: fails to install tarantool 3.6.0 using docker (--use-docker).
  • tt can be built without linking to OpenSSL.

[2.11.0] - 2025-09-10

The release supports Tarantool Config Storage in tt cluster failover commands and introduces templates to create Tarantool Config Storage and non-vshard cluster.

Added

  • tt create: add template for Tarantool Config Storage.
  • tt create: add template for non-vshard Cluster.
  • tt cluster failover: support Tarantool Config Storage.

Changed

  • tt cluster failover switch: minor change in output that displays corresponding switch-status command with quoted URI argument so it could be copy-pasted for subsequent launch as-is.
  • tt rs vshard bootstrap: make more informative error message when sharding roles are not configured (for example when launched against non-vshard cluster).

[2.10.1] - 2025-06-26

The release introduces a fix for the tt logrotate command, which now properly releases the descriptor of the old log file.

Fixed

  • tt logrotate: properly release descriptor of the old log file.

[2.10.0] - 2025-06-09

The release introduces command support for working with Tarantool Cluster Manager (TCM). Also added support for fish shell autocompletion. In addition, code verification with pre-commit hooks has been configured.

Added

  • In commands tt cat|play <DIR> added options -r/--recursive to allow find WAL files inside nested subdirectories.
  • tt search tcm - the command performs a search for tarantool cluster manager (TCM) in the customer zone or local distfiles directory.
  • tt install tcm - the command performs an install for tarantool cluster manager (TCM) from the customer zone or local distfiles directory.
  • tt uninstall tcm [version] - the command removes installed tarantool cluster manager from the bin directory.
  • tt tcm status: added command to check TCM runtime status (modes: watchdog or interactive).
  • tt tcm stop: add command for graceful termination of TCM processes (modes: watchdog or interactive).
  • Add support manage installed tcm versions via tt binaries CLI.
  • Added support for completion with shell fish see the command tt completion fish.
  • Repository use pre-commit hooks to check code style.
  • Added support for showing TCM logs with tt tcm log command.

Changed

  • tt pack: packs TCM config, if any.

Fixed

  • Fixed a crash in tt aeon connect when processing responses from certain SQL commands.
  • tt cat|play <DIR> with directories handles only .snap or .xlog files.
  • rs vshard bootstrap: ignore an error and retry within timeout flag period.
  • pack with modules include only under root tt environment directory. Modules outside of the directory with tt.yaml will be ignored.
  • tt connect|replicaset|cluster|aeon|play: fixed using of IPv6 in instance URI.
  • play: extend error message if space to play is unavailable or user does not have permission to work with it, because the net.box module does not have means to distinguish between these errors.

[2.9.1] - 2025-04-15

The release includes minor fixes identified by Svacer and CVE linters.

[2.9.0] - 2025-04-10

The release introduces advanced features to connect to the Aeon database and start tcm commands. Further improvements on packaging the customized application. Major changes on working with external modules.

Added

  • tt aeon connect added tests for connect file/app.

  • tt modules list added command to show available modules. If support extra flags:

    • --version - to show information about version.
    • --path - to show module executables.
  • tt aeon connect added tests for connect file/app.

  • tt aeon connect: add connection from the etcd/tcs config.

  • tt pack: support .packignore file to specify files that should not be included in package (works the same as .gitignore).

  • tt tcm start: add the tcm command.

  • tt tcm start OR tt tcm start --path /path/to/tcm: added the capability to run TCM in interactive mode.

  • tt tcm start --watchdog: implemented Watchdog mode for automatic restarting of TCM upon unexpected termination.

Changed

  • The following functions were moved from cluster/cmd to lib/cluster:
    • CreateCollector → lib/cluster/cluster.go,
    • ConnectEtcdUriOpts → lib/cluster/etcd.go,
    • DoOnStorage → lib/cluster/etcd.go,
    • MakeEtcdOptsFromUriOpts → lib/cluster/etcd.go,
    • MakeConnectOptsFromUriOpts → lib/cluster/tarantool.go,
    • ConnectTarantool → lib/cluster/tarantool.go.
  • Added new submodule lib/connect.

Fixed

  • tt pack: added TCM packing when executing the tt pack command, except for the flag without-binaries in this case TCM will not be in the archive.

  • Arguments of an internal command are not parsed if it is forced over its existent external counterpart.

  • aeon: fix SSL paths configuration for aeon connection.

  • tt pack rpm: failed to pack if only one of --preinst/--postinst options is specified.

[2.8.1] - 2025-03-10

The release introduces minor changes in stabilization of tt connect command. Expanded possibility to connect to aeon base. Improvement in the work of templates.

Added

  • tt aeon connect: add connection from the app:instance_name.
  • Added support for the {{ metricsPort }} construct in Go text templates. This new function allows template users to generate a monitoring port value directly within their templates, providing more flexibility and simplifying configuration management.

Changed

  • tt connect: allow to disconnect with Ctrl+C or Ctrl+\ if script execution hung.
  • Moved cluster.cmd.UriOpts to connect.UriOpts.

Fixed

  • tt connect: return Lua parse error.
  • tt connect: panic on render empty table.
  • tt can be built without linking to OpenSSL.

[2.8.0] - 2025-02-19

The release introduces an expanded ways to connect to aeon DB using: configuration file and fixing of using root certificates. TCM binary could be packed with pack subcommand.

Added

  • tt pack: added TCM file packaging.
  • tt aeon connect: add connection from the cluster config.

Fixed

  • tt aeon: did not use system CAs by default.

[2.7.0] - 2025-01-22

The release introduces an experimental support of console for AeonDB and continues to improve tt play command.

Added

  • tt aeon connect: add support to connect Aeon database.
  • tt play: support of the SSL parameters by using next flags:
    • sslkeyfile - path to a private SSL key file,
    • sslcertfile - path to an SSL certificate file,
    • sslcafile - path to a trusted certificate authorities (CA) file,
    • sslciphers - colon-separated list of SSL cipher suites the connection.
  • tt play: support connection to a target instance by application name or application:instance name.
  • tt coredump pack: add options to customize coredump packing:
    • -e (--executable): specify Tarantool executable path.
    • -p (--pid): specify PID of the dumped process.
    • -t (--time): specify time of dump (seconds since the Epoch).
  • tt.yaml: allows to specify a list of modules directories.
  • Environment variable TT_CLI_MODULES_PATH can be used to specify an extra path with modules.

Changed

  • tt stop/kill/clean/logrotate: no longer need:
    • Instances scripts for multi-instance applications.
    • Cluster config for tarantool3-based cluster applications.
  • tt logrotate: don't exit at non-running instance, just warn and proceed with the other instances, like tt stop and tt kill do.
  • tt coredump pack: if -e option is omitted first search tarantool executable in tt environment then in PATH instead of using the hardcoded path /usr/bin/tarantool.
  • tt replicaset downgrade: drop option -v (--version). Pass version as a positional argument rather than option.

Fixed

  • tt coredump inspect: fails for tarantool-ee coredump archive if the source directory is missing.
  • tt pack: fails if etcd or tcs are present in the configuration and not available.

[2.6.0] - 2024-11-29

The release introduces upgrade and downgrade subcommands for tt replicaset and adds minor improves to tt cat, tt play and tt connect.

Added

  • tt replicaset downgrade: command to downgrade the schema on a Tarantool cluster.
    • -v (--version): (required) specify schema version to downgrade to.
    • -r (--replicaset): specify the replicaset name(s) to downgrade.
    • -t (--timeout): timeout for waiting the LSN synchronization (in seconds) (default 5).
  • tt replicaset upgrade: command to upgrade the schema on a Tarantool cluster.
    • -r (--replicaset): specify the replicaset name(s) to upgrade.
    • -t (--timeout): timeout for waiting the LSN synchronization (in seconds) (default 5).
    • supports upgrading the database schema on remote cluster by upgrading each replicaset individually using tt replicaset upgrade <URI>.
  • New flag --timestamp of tt cat and tt play commands is added to specify operations ending with the given timestamp. This value can be specified as a number or using RFC3339/RFC3339Nano time format.
  • tt connect: add new --evaler option to support for customizing the way user input is processed.
  • tt cat/play: allows to specify a list of directories to search WAL files.

Fixed

  • tt rocks: don't load local configs.

[2.5.2] - 2024-11-07

The release updates luarocks and libraries version.

Fixed

  • tt rocks: a wrong Lua interpreter is selected.

[2.5.1] - 2024-10-31

The release updates the MessagePack library in a release build.

Fixed

  • Release packages were built using the outdated and buggy MessagePack library.

[2.5.0] - 2024-10-15

The release introduces a set of subcommands for replicaset roles, improves clarity regarding the version number to install, enhances the status display, and adds a flag to disable interactivity when the application is stopped.

Additionally, several fixes were implemented to improve stability.

Added

  • tt status: display config, box, and replication upstream statuses.
    • --details: display detailed reports of errors and warnings from instances.
  • tt stop confirmation prompt. -y option is added to accept stop without prompting.
  • tt cluster replicaset roles add: command to add roles in config scope provided by flags.
  • tt cluster replicaset roles remove: command to remove roles from config scope provided by flags.
  • tt replicaset roles add: command to add roles in the tarantool replicaset with cluster config (3.0) or cartridge orchestrator.
  • tt replicaset roles remove: command to remove roles in the tarantool replicaset with cluster config (3.0) or cartridge orchestrator.
  • tt install tt|tarantool <version> - allow be incomplete. So 2.3 will install the the last available release with specified <major=2>.<minor=3> in .

Fixed

  • tt console command \set delimiter [marker] don't hang tt.
  • tt log -f crash on removing log directory.
  • tt connect crash due to an empty response.
  • tt start error on start Tarantool 3 with encrypted etcd.
  • tt replicaset vshard bootstrap unable to bootstrap large clusters due to a timeout.
  • tt replicaset vshard bootstrap timeout was 3s instead of 10s.

[2.4.0] - 2024-08-07

Added

  • tt log: a module for viewing instances logs. Supported options:
    • --lines number of lines to print.
    • --follow print appended data as log files grow.
  • tt connect: support format for Tarantool tuples for Tarantool versions >= 3.2.
  • tt enable: create a symbolic link in 'instances_enabled' directory to a script or an application directory.
  • tt replicaset bootstrap: command to bootstrap a Cartridge cluster or an instance.
  • tt rs rebootstrap: re-bootstraps an instance.
  • -s (--self) flag to execute tt itself and don't search for other tts in bin_dir provided in config.
  • tt start interactive mode with -i option.

Fixed

  • Sorted by name order of columns for table and ttable formats.
  • tt switch tt: does not work with x.x.x version format.
  • tt install tt returns expected exit status code on unsuccessful dependency check.
  • tt pack: failed to start instances using systemctl due to permissions denied.
  • tt uninstall tt: does not work with x.y.z version format.
  • Ability to update a latest version of master tarantool and tt with tt install.

Changed

  • Do not create Dockerfile.* in application's directory.

[2.3.1] - 2024-06-13

Added

  • Building Linux AArch64 tt packages.

[2.3.0] - 2024-06-04

Changed

  • tt status: displays the mode of the instance.
  • tt coredump: enhances coredump inspection:
    • tt coredump pack: puts gdb.sh and GDB-extensions into the archive so that it contains everything necessary for convenient coredump inspection.
    • tt coredump inspect: allows archive path as an argument (archive should be created with tt coredump pack).
    • tt coredump inspect: added -s option to specify the location of tarantool sources.
  • tt cluster publish: ability to publish a new instance config.
  • tt pack does not create unnecessary directories and removes files that are required only for building from the resulting package.

Added

  • tt cluster failover: added supervised failover management commands.
  • tt status: added pretty option for pretty-formatted table output.
  • TT_CLI_CFG: environment variable to specify the path to the configuration file.
  • tt pack: systemd unit parameterize support.
  • tt replicaset vshard: module to manage vshard in the tarantool replicaset.
    • tt replicaset vshard bootstrap: command to bootstrap vshard.

Fixed

  • tt clean no longer tries to clean files multiple times.
  • Tarantool 3 config instance fails to use 108 symbols control socket on tt start.
  • Incorrect application name in case of explicit providing config path without directories.
  • Application build failure during pack with Tarantool from the current environment.

[2.2.1] - 2024-04-03

Added

  • tt create: added single instance application template.
  • tt replicaset promote: command to promote an instance in the tarantool replicaset with cluster config (3.0) or cartridge orchestrator.
  • tt replicaset demote: command to demote an instance in the tarantool replicaset with cluster config (3.0) orchestrator.
  • tt cluster replicaset: module to manage replicaset via 3.0 cluster config storage.
    • tt cluster replicaset promote: command to promote an instance in the replicaset.
    • tt cluster replicaset demote: command to demote an instance in the replicaset.
  • tt connect --binary: connect to instance using binary port.
  • tt kill: command to stop instance(s) with SIGQUIT and SIGKILL signals.

Changed

  • tt start now creates binary port.

[2.2.0] - 2024-03-06

Changed

  • tt pack generates a separate systemd unit for each packed application. Common (all instances) unit is removed.
  • tt pack default data, run, log files location is changed for rpm/deb packages to /var/[log | run | lib]/tarantool/<env_name>
  • create /var/[log | run | lib]/tarantool/<env_name> on target system for packed applications.

Fixed

  • tt start: not working on FreeBSD.
  • tt pack and tt build fail in verbose mode with "invalid argument" error.
  • tt pack packs applications, which are not valid: instances file is empty, for example.
  • tt pack with --use-docker fails due to incompatible versions of tt between local system and docker container. Install current tt version in docker image if possible.
  • tt binaries list invalid argument error if tarantool is not a symlink.
  • if a user provides pre or post install script to tt pack rpm, it uses file name as a script instead of its content.

[2.1.2] - 2024-02-02

Added

  • Built-in vshard cluster application template.
  • Building tt in Linux-aarch64, FreeBSD environments.
  • tt binaries switch: switch to installed binary.
  • tt download: download Tarantool SDK.

Changed

  • tt replicaset: prefer cartridge instances without critical issues on it during discovery.
  • tt binaries renamed to tt binaries list

Fixed

  • tt rocks: not working on macOs.
  • tt install tarantool fails due to checkout error.
  • tt binaries list: not showing active tag for master version.
  • missing 3.0 SDK in search results for tarantool-ee.

[2.1.1] - 2024-01-15

Added

  • Module tt replicaset, to manage replicasets:
    • tt replicaset status to show a cluster status information.

Changed

  • Disable tt run tarantool flag parsing.

Fixed

  • tt start: not working global tt flags.

[2.1.0] - 2023-12-15

Changed

  • Make cartridge app dependencies less strict.
  • tt connect auto-completion shows directories and files when there are no running apps.
  • tt rocks --server now accepts several URL's.
  • Disable tt run tarantool flag parsing.
  • Now tt run starts instance without our wrapper.

Added

  • tt env: add current environment binaries location to the PATH variable.
  • tt cluster: add an ability to specify a key for show/publish via URI.
  • tt cluster: add an ability to publish/show configuration from tarantool config storage.

[2.0.0] - 2023-11-13

Changed

  • Print log messages to stderr.
  • Global flags are required to be positioned only before child commands. Example: tt --cfg tt.yaml install tt.
  • tt config format: separate tt environment options from application options.
  • tt version: additional version information for non-release builds.
  • Working directory is changed to an application source directory. If the application is a script, new working directory will be created in instances enabled location.
  • Re-worked application runtime artifacts layout: app section relative paths are considered relative to working directory, which is an application source directory. Application name sub-directory no longer used for relative paths. Default names are changed for PID-files, control sockets and log files.
  • Enable logging to file by default for tarantool cluster instances. Default log file name for an instance is tarantool.log. tarantool's stdout/stderr and tt logs go to tt.log file.
  • Remove URI with credentials from console title and prompt.
  • Ignore app-instance delimiters for Tarantool 3.0 instances.
  • Don't use dash as an app-instance delimiter. At the same time, cartridge_app-stateboard treated as a special case.
  • Log rotation functionality and configuration is removed from tt. tt logrotate command re-opens a log file and sends SIGHUP to the child tarantool processes.
  • tt cat: all diagnostic messages are printed to stderr.
  • Print tarantool stdout/stderr and watchdog logs to the same log file - tt.log.

Added

  • tt completion: added luarocks completions.
  • tarantool-ee: search and install development builds.
  • tt play: ability to pass username and password via flags and environment variables.
  • tt cluster: credentials could be passed via environment variables and command flags.

Fixed

  • tt rocks: broken --verbose option.
  • tt binaries: tarantool-ee binaries not shown.
  • tt cluster: recognize app:instance as a etcd URL.

[1.3.0] - 2023-09-28

Changed

  • Use CLI arg connect string for the prompt line and the title to avoid too long prompt line when using 'app:instance' target format.
  • tt rocks: luarocks version has been updated to 3.9.2.

Added

  • tt install tarantool/tt: ability to install tarantool and tt from an arbitrary commit. The binary has the name tt/tarantool_ + seven-digit hash.
  • New tt pack flag --tarantool-version is added to specify tarantool version for pack in docker. It is supported only with --use-docker enabled.
  • Module tt cluster, to show or publish a cluster or an instance configuration.
  • tt connect: added command \help to show the help with a list of available commands.
  • tt connect: added command \quit to quit from the console.
  • tt connect: expanded formatting modes for the interactive console.
  • tt rocks: added admin commands tree. tt rocks admin implements luarocks-admin commands tree.

Fixed

  • Installation failure from a commit hash.
  • Crash on tt install <tool> master.
  • --with-binaries flag for tt pack not working while packing with --cartridge-compat.
  • tarantool binary after pack now always named "tarantool".

[1.2.0] - 2023-08-18

Changed

  • tt pack now skips all .git files in packed environment, not only in main directory.
  • tt connect: the reverse search function to work consistently with tarantool.

Added

  • tt install tarantool-dev: ability to install tarantool from the local build directory.
  • tt uninstall: smart auto-completion. It shows installed versions of programs.
  • tt uninstall: when removing symlinks and an existing installed version, the symlink will be switched to the latest installed version, so that tt can continue working with the program.
  • tt connect: support for multi-line commands in the history.
  • New tt pack flag --cartridge-compat is added to maintain backward compatibility with the cartridge-cli. It is supported only by tgz type packing.
  • tt pack: added option --without-modules allowing not to take external modules into the pack bundle.
  • tt connect: added command \shortcuts listing all available shortcuts and hotkeys in go-prompt.
  • initial support for Tarantool 3.0 instances running using cluster config.

Fixed

  • tt install tarantool: symlink to the directory with tarantool headers is now updated when installing an existing version.
  • tt connect: terminal failure after throwing an error.

[1.1.2] - 2023-06-16

Changed

  • Set compat.fiber_slice_default to new by default in cartridge application template.
  • Treat the directory containing the instances file (instances.y[a]ml) as an application.

Added

  • tt connect: support for the ../ and ~/ at the beginning of the URI, when using unix sockets.

Fixed

  • Panic in tarantool 1.10.15 static build by tt.
  • Removed --use-docker flag from tt uninstall tarantool since it was added by mistake.

[1.1.1] - 2023-06-08

Changed

  • tt build now hides building output if -V is not provided.

Fixed

  • tt start now does not start an instance if it is already running.
  • tt rocks uses rocks repo path relative to tt environment config location.
  • tt connect now does not crash on \q input.

Added

  • smart auto-completion for tt start, tt stop, tt restart, tt connect, tt build, tt clean, tt logrotate, tt status. It shows suitable apps, in case of the pattern doesn't contain delimiter :, and suitable instances otherwise.
  • support tt environment directories overriding using environment variables:
    • TT_CLI_REPO_ROCKS environment variable value is used as rocks repository path if it is set and there is no tt.repo.rocks in tt configuration file or tt.repo.rocks directory does not include repository manifest file.
    • TT_CLI_TARANTOOL_PREFIX environment variable value is used for as tarantool installation prefix directory for rocks commands if it is set and tarantool executable is found in PATH.
  • smart auto-completion for tt create. It shows a list of built-in templates and templates from the config.
  • tt connect: support for the timestamp format in the history file.

[1.1.0] - 2023-05-02

Changed

  • tt install tarantool without version specification now installs the latest release.
  • tt install/search tarantool-ee now uses credentials from tarantool.io customer zone. Also, installation now requires specifying the version.
  • tt search tarantool-ee options changed. A new --version flag has been added to allow search for a specific release. The --dev and --dbg options have been merged into a single --debug option.
  • tt search now uses subcommands for searching tarantool/tarantool-ee/tt binaries

Added

  • --dynamic option for tt install tarantool command to build non-static tarantool executable.

Fixed

  • tt connect command does not break a console after executing os.exit() command anymore.

[1.0.2] - 2023-04-21

Fixed

  • tt cartridge command takes into account run dir path from the tt environment. So most of the tt cartridge sub-commands are able to work without specifying --run-dir option.
  • tt install command checks it's write rights to binary and include directories before installing binaries.

Changed

  • tt install/uninstall command line interface is updated. Program names have become sub-commands with their own options.

[1.0.1] - 2023-04-04

Added

  • A configurable variable cluster_cookie for tt create cartridge template.
  • tt build accepts application name for building.
  • Creating wal, vinyl and memtx directories for tt pack. If these directories are not located in the same directory in the environment for packing, the result package will contain separate snap/vinyl/wal directories for corresponding artifacts.

Fixed

  • Packing symlinks into RPM package.

Changed

  • tt uninstall does not ask version if only one version of a program is installed.
  • tt rocks init is disabled.

[1.0.0] - 2023-03-23

Added

  • Follow-up message support for application templates.
  • tarantool_layout config option to enable compatibility mode with tarantoolctl artifacts layout. If this option is set to true, tt will not create sub-directories for runtime artifacts such as control socket, pid file and log file. This option affects only single instance applications.
  • An ability to set different directories for WAL, vinyl and snapshots artifacts.
  • tt instances command to print a list of enabled applications.
  • SSL options for tt connect command.
  • An ability to pass arguments to a connect command.
  • tt binaries command. It shows a list of installed binaries and their versions.

Changed

  • tt config is renamed to tt.yaml.
  • Do not use make command options for tarantool build if MAKEFLAGS environment variable is set.
  • binaries, build, check, clean, create, install, instances, logrotate, pack, restart, run, start, status, stop, uninstall require environment configuration file.

Fixed

  • Output of the help with all commands.
  • Allow more characters for URI credentials.

[0.4.0] - 2022-12-31

Added

  • Support of rocks repository specified in tt config.
  • cfg dump module. It prints tt environment configuration.
  • --use-docker option for tt pack for packing environments in docker container.
  • Support of MacOS.

Changed

  • Updated cartridge-cli version to 2.12.4.

[0.3.0] - 2022-12-05

Added

  • tt restart confirmation prompt. -y option is added to accept restart without prompting.
  • tt pack will generate systemd unit for rpm and deb packages.
  • --use-docker option for tt install to build Tarantool in Ubuntu 16.04 container.
  • Ability to use the start/stop/restart/status/check commands without arguments to interact with all instances of the environment simultaneously.
  • Starting from version 2.8.1, we can specify configuration parameters of tarantool via special environment variables. Added support for this feature when running older versions of tarantools via tt.

Changed

  • tt cartridge sub-commands create, build, pack are removed.
  • remove command is renamed to uninstall.
  • Updated values in system tarantool.yaml for bin_dir, inc_dir and repo: distfiles.

Fixed

  • Working of the help module with multi-level commands (commands with several subcommands).
  • Using the system tarantool.yaml when installing from the repository.

[0.2.1] - 2022-11-24

Fixed

  • Fixed building for MacOS.
  • A unified error writing style has been introduced.

[0.2.0] - 2022-11-21

Added

  • Module tt init, to create tt environment configuration file.
  • Module tt daemon, to manage the tt daemon.
  • Built-in application templates support. Cartridge application template is added.
  • Using default_cfg from .tarantoolctl for tarantool.yaml generation in tt init.

Changed

  • Modules tt start, tt connect and tt cartridge now use relative paths for unix sockets. It allows to use socket paths longer than sun_path limit.(108/106 on linux/macOS) e.g foo/bar.sock -> ./bar.sock

[0.1.0] - 2022-10-12

Added

  • Module tt version, to get information about the version of the CLI.
  • Module tt completion, to generate autocompletion for a specified shell.
  • Module tt help, to get information about the CLI and its modules.
  • Module tt start, responsible for launching the instance according to the application file.
  • Module tt stop, responsible for terminating the instance.
  • Module tt status, to get information about the state of the instance.
  • Module tt restart, responsible for restarting of the instance.
  • Module tt logrotate, to rotate instance logs.
  • Module tt check, to check an application file for syntax errors.
  • Module tt connect, used to connect to a running instance.
  • Module tt rocks, LuaRocks package manager.
  • Module tt cat, to print into stdout the contents of .snap/.xlog files.
  • Module tt play, to play the contents of .snap/.xlog files to another Tarantool instance.
  • Module tt coredump, to pack/unpack/inspect tarantool coredump.
  • Module tt run, to start tarantool instance using tt wrapper.
  • Module tt search, to show available tt/tarantool versions.
  • Module tt create, to create an application from a template.
  • Module tt build, to build an application.
  • Module tt install, to install tarantool/tt.
  • Module tt remove, to remove tarantool/tt.