| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| 3.8.1 source code.tar.gz | 2026-09-04 | 9.8 MB | |
| 3.8.1 source code.zip | 2026-09-04 | 12.1 MB | |
| README.md | 2026-09-04 | 5.8 kB | |
| Totals: 3 Items | 22.0 MB | 1 | |
3.8.1
Date: 2026-09-01 Tag: 3.8.1
Overview
Tarantool 3.x is the recommended release series. Users of Tarantool 2.11 are encouraged to update to the latest 3.x release.
This release introduces 1 improvement and resolves 15 bugs since 3.8.0.
Please consider the full list of user-visible changes below.
Compatibility
Tarantool 2.x and 3.x are compatible in the binary data layout, client-server protocol, and replication protocol. It means upgrade may be performed with zero downtime for read requests and the order-of-network-lag downtime for write requests.
Please follow the upgrade procedure to plan your update actions.
Users of Tarantool 2.x may be interested in the compat options that allow to imitate some 2.x behavior. This allows to perform application code update step-by-step, not all-at-once.
Functionality added or changed
Core
- Added a new
box.cfg.read_onlyvalue:'unless_bootstrap'. An instance configured this way becomes writable only if it has bootstrapped the replica set on the current startup and stays read-only if it has recovered from a local snapshot or has joined an already bootstrapped replica set. The mode is resolved atomically during the initialbox.cfg()call, so the instance never goes through a transient writable state. The value may be set only during the initialbox.cfg()call (gh-12970).
Although this change brings a new feature rather than a bugfix, it was decided
to backport it anyway, because the new option value is used by the config
module to fix a serious double-leader bug with 'supervised' failover. More
details below in the "Config" section and in the gh-12970 issue.
Bugs fixed
Application server
- Fixed a bug where Tarantool could hang at startup when application threads were configured (gh-12936).
- The root directory from which Lua dependencies are loaded was made global:
setting it with
package.setsearchroot()in tx or any of the application threads now affects all application threads and tx (gh-12546).
Core
- Fixed a crash on calling
box.ctl.wal_sync()beforebox.cfg{}. Now it raises anER_UNCONFIGUREDerror in this case (gh-12556). - Fixed a crash on update with deleting by JSON path with a terminal key when the deleted key in the tuple had non-optimal encoding (gh-13027).
Vinyl
- In some cases, vinyl deferred UPSERT field constraint checks until a read or a compaction. A violating UPSERT could then be skipped without returning an error to the client. Constraints are now validated at UPSERT time when update operations may modify constrained columns, matching Memtx behavior (gh-12404).
Replication
- Fixed an ordering bug in WAL batching that could make a joining replica miss rows written by the master (gh-11028).
Lua
- Fixed an error in the JSON encoder when an encoded key in the map has the
__serializemetamethod (gh-12726).
Http client
- Fixed a regression of authorization on an HTTP proxy or a target HTTP(S) host using the Basic algorithm (gh-12805).
SQL
- Fixed an inability to set both the sort order and the AUTOINCREMENT property on columns in a PRIMARY KEY table constraint at the same time (gh-12968).
- Fixed a bug where the foreign field ID for a field foreign key
was lost after executing an
ALTER TABLE ADD COLUMNstatement (gh-13010). - Added permission checks when dropping a trigger in SQL. Now only users with 'alter' privileges on a table can drop triggers for that table (ghs-163).
Config
- This is the bugfix that needs the
unless_bootstrapfeature described above. Fixed a bug where an instance rebootstrapped with an empty data directory could start in the RW mode alongside an already appointed leader withreplication.failover = supervisedandreplication.bootstrap_strategy = auto, if the instance had the lexicographically minimal name in the replica set. The bootstrap leader candidate now starts withbox.cfg.read_only = 'unless_bootstrap', so a rejoined instance never goes through a writable state at all (gh-12970). - Fixed a spurious
The vshard-ee/vshard module is not availableconfiguration validation error on startup when thevshardmodule is installed into the configuredprocess.work_dirand the process is started from a different directory, or when an instance without a sharding role inherits a global sharding option, such assharding.bucket_count. The availability ofvshardand its minimum version are now checked only on instances with a configured sharding role (gh-12928, gh-13025). - Modules installed into the configured
process.work_dir(for example, into its.rocksdirectory) are now resolvable, and a relativeapp.filepath is interpreted against the working directory even before the firstbox.cfg()call. In particular, roles and an application marked with theearly_loadtag can now be loaded from the working directory, and the configuration defaults that depend on the installedvshardversion are applied at first startup (gh-13025). - An unavailable or outdated
vshardmodule for a configured sharding role, as well as a configured sharding option that requires a newervshard, is now reported before the firstbox.cfg()call, so a misconfigured instance fails fast instead of failing after a potentially long database recovery (gh-13025).