Commit Briefs

980ae98bf2 Sergey Bronnikov

test: replace testcase by luatest's testcases (ligurio/gh-xxxx-ctest-prerequisites-3.2, origin/ligurio/gh-xxxx-ctest-prerequisites-3.2)

The tests `array.test.lua` and `map.test.lua` require the remote Tarantool instance for running testcases. When tests are executed by test-run.py, it runs this Tarantool instance. The testcases that require the remote instance were ported to luatest to make tests able to run with ctest. The testcases `builtins-13.1` and `builtins-14.1` are companion testcases and were moved as well. Required by patches for CTest support, because allows to execute aforementioned tests without test-run.py. NO_CHANGELOG=codehealth NO_DOC=codehealth NO_TEST=codehealth (cherry picked from commit 47295fdebc1910b990c391c26fe92918a9c0c001)


10d3af81de Sergey Bronnikov

test: remove testcase for tarantoolctl

The testcase `test_tarantoolctl_connect` tests `tarantoolctl`, but this tool has been deprecated and removed for a long time. The patch removes testcases as useless. Follows up commit 216b6243bba1 ("tools: remove tarantoolctl utility"). NO_CHANGELOG=codehealth NO_DOC=codehealth (cherry picked from commit c26c07172f4e4d8a31ace84bd62eeee81660854c)


663efdceb9 Sergey Bronnikov

test: fix minimal.test.lua

The patch set a path to `tarantool` executable binary explicitly in the aforementioned test. NO_CHANGELOG=codehealth NO_DOC=codehealth (cherry picked from commit 7844e6034bd67f3e5a57710443373da5200e441a)


f7ba64e078 Sergey Bronnikov

test: use built tarantool instead a system one

The test gh_5747_crash_multiple_args_test.lua uses a `tarantool` binary that is available in a current PATH environment variable. In some cases, PATH may point to a system `tarantool` executable and this could be unexpected for those who run the test. The patch set a path to `tarantool` executable derived from a command-line used to run the test. NO_CHANGELOG=codehealth NO_DOC=codehealth (cherry picked from commit 1e907ddbd8db2587418d50dde3e06e985c47bded)


3420831cd5 Sergey Bronnikov

test: fix test filename

According to CMake policy CMP0110 whitespaces and other special characters are forbidden before CMake 3.19. This policy is triggered with the patch for CTest support and breaks test generation: NO_WRAP The following name given to add_test() is invalid if CMP0110 is not set or set to OLD: `test/box-luatest/gh_7217_repeatable_{in, up}sert_memtx_tx_conflict_test.lua´ NO_WRAP The patch renames file without using whitespaces and special characters. Required for CTest support. Follows up commit 654cf498662c ("memtx: fix story delete statement list"). 1. https://cmake.org/cmake/help/latest/policy/CMP0110.html NO_CHANGELOG=codehealth NO_DOC=codehealth NO_TEST=codehealth (cherry picked from commit ec810b9d6b618c4ec5116dde2f02b5be01a13f6d)


87a0597df8 Sergey Bronnikov

test: remove feedback_daemon.skipcond

The aforementioned skipcond file is specific for Travis CI because it depends on the environment variable `TRAVIS_JOB_ID`. We have moved to GHA for a long time, it seems this skipcond is not useful anymore. NO_CHANGELOG=codehealth NO_DOC=codehealth NO_TEST=codehealth (cherry picked from commit 6d9620cd6d485f826acc2b54fb4ac7f971b56cde)


aba9894c0c Sergey Bronnikov

test: remove test in suite.ini

The test has been renamed in commit 16d6e9d2e272 ("console: remove ERRINJ_STDIN_ISATTY injection") and it is not used the error injection anymore, so it was removed in suite.ini. NO_CHANGELOG=codehealth NO_DOC=codehealth NO_TEST=codehealth (cherry picked from commit b220f050261d4c4ba0ec679c8d77a5e817367a3f)


5f0e55f45a Vladimir Davydov

index_def: make index_def_new non-failing

Function `index_def_new` can fail only due to failure of identifier validation and due to failure of `key_def_merge` helper. The helper `key_def_merge` can fail only because of OOM or if multikey validation has failed. Firstly, we never need to check identifier in `index_def_new` because we always do it earlier actually (except for cases we use string literals for internal indexes, but we don't need to check them anyway), so let's remove this check. Secondly, `key_def_merge` cannot fail because of multikey validation in `index_def_new` because the secondary index is already validated and primary index cannot have multikey path at all. So here it can fail only because of allocation failure - let's simply make `key_def_merge` panic on OOM so that `index_def_new` will become non-failing. Closes tarantool/security#130 NO_TEST=not reproducible NO_CHANGELOG=not reproducible NO_DOC=bugfix (cherry picked from commit d628b71bc537a75b69c253f45ec790462cf1a5cd)


7e03ffb471 Alexander Turenko

httpc: replace ibuf_alloc with xibuf_alloc

There is no check for NULL for a value returned by `ibuf_alloc`, the NULL will be passed to `memcpy()` if the aforementioned function will return a NULL. The patch fixes that by replacing `ibuf_alloc` with macros `xibuf_alloc` that never return NULL. Found by Svace. NO_CHANGELOG=codehealth NO_DOC=codehealth NO_TEST=codehealth (cherry picked from commit b4ee146fde6e418aed590ac6054cff75c2a59626)


803a77b2da Serge Petrenko

limbo: speed up synchronous transaction queue processing

This patch optimizes the process of collecting ACKs from replicas for synchronous transactions. Before this patch, collecting confirmations was slow in some cases. There was a possible situation where it was necessary to go through the entire limbo again every time the next ACK was received from the replica. This was especially noticeable in the case of a large number of parallel synchronous requests. For example, in the 1mops_write bench with parameters --fibers=6000 --ops=1000000 --transaction=1, performance increases by 13-18 times on small clusters of 2-4 nodes and 2 times on large clusters of 31 nodes. Closes #9917 NO_DOC=performance improvement NO_TEST=performance improvement (cherry picked from commit 4a866f64d64c610a3c8441835fee3d8dda5eca71)


Branches



























































































Tags

Tree

.editorconfigcommits | blame
.gdbinitcommits | blame
.gitattributescommits | blame
.github/
.gitignorecommits | blame
.gitmodulescommits | blame
.luacheckrccommits | blame
.pack.mkcommits | blame
.test.mkcommits | blame
AUTHORScommits | blame
CMakeLists.txtcommits | blame
CONTRIBUTING.mdcommits | blame
Doxyfilecommits | blame
Doxyfile.API.incommits | blame
FreeBSD/
LICENSEcommits | blame
README.FreeBSDcommits | blame
README.MacOSXcommits | blame
README.OpenBSDcommits | blame
README.mdcommits | blame
TODOcommits | blame
apk/
asan/
changelogs/
cmake/
debian/
doc/
docker/
extra/
patches/
perf/
rpm/
rump/
src/
static-build/
test/
test-run$commits | blame
third_party/
tools/

README.md

# Tarantool

[![Actions Status][actions-badge]][actions-url]
[![Code Coverage][coverage-badge]][coverage-url]
[![OSS Fuzz][oss-fuzz-badge]][oss-fuzz-url]
[![Telegram][telegram-badge]][telegram-url]
[![GitHub Discussions][discussions-badge]][discussions-url]
[![Stack Overflow][stackoverflow-badge]][stackoverflow-url]

[Tarantool][tarantool-url] is an in-memory computing platform consisting of a
database and an application server.

It is distributed under [BSD 2-Clause][license] terms.

Key features of the application server:

* Heavily optimized Lua interpreter with incredibly fast tracing JIT compiler,
  based on LuaJIT 2.1.
* Cooperative multitasking, non-blocking IO.
* [Persistent queues][queue].
* [Sharding][vshard].
* [Cluster and application management framework][cartridge].
* Access to external databases such as [MySQL][mysql] and [PostgreSQL][pg].
* A rich set of built-in and standalone [modules][modules].

Key features of the database:

* MessagePack data format and MessagePack based client-server protocol.
* Two data engines: 100% in-memory with complete WAL-based persistence and an
  own implementation of LSM-tree, to use with large data sets.
* Multiple index types: HASH, TREE, RTREE, BITSET.
* Document oriented JSON path indexes.
* Asynchronous master-master replication.
* Synchronous quorum-based replication.
* RAFT-based automatic leader election for the single-leader configuration.
* Authentication and access control.
* ANSI SQL, including views, joins, referential and check constraints.
* [Connectors][connectors] for many programming languages.
* The database is a C extension of the application server and can be turned
  off.

Supported platforms are Linux (x86_64, aarch64), Mac OS X (x86_64, M1), FreeBSD
(x86_64).

Tarantool is ideal for data-enriched components of scalable Web architecture:
queue servers, caches, stateful Web applications.

To download and install Tarantool as a binary package for your OS or using
Docker, please see the [download instructions][download].

To build Tarantool from source, see detailed [instructions][building] in the
Tarantool documentation.

To find modules, connectors and tools for Tarantool, check out our [Awesome
Tarantool][awesome-list] list.

Please report bugs to our [issue tracker][issue-tracker]. We also warmly
welcome your feedback on the [discussions][discussions-url] page and questions
on [Stack Overflow][stackoverflow-url].

We accept contributions via pull requests. Check out our [contributing
guide][contributing].

Thank you for your interest in Tarantool!

[actions-badge]: https://github.com/tarantool/tarantool/workflows/release/badge.svg
[actions-url]: https://github.com/tarantool/tarantool/actions
[coverage-badge]: https://coveralls.io/repos/github/tarantool/tarantool/badge.svg?branch=master
[coverage-url]: https://coveralls.io/github/tarantool/tarantool?branch=master
[telegram-badge]: https://img.shields.io/badge/Telegram-join%20chat-blue.svg
[telegram-url]: http://telegram.me/tarantool
[discussions-badge]: https://img.shields.io/github/discussions/tarantool/tarantool
[discussions-url]: https://github.com/tarantool/tarantool/discussions
[stackoverflow-badge]: https://img.shields.io/badge/stackoverflow-tarantool-orange.svg
[stackoverflow-url]: https://stackoverflow.com/questions/tagged/tarantool
[oss-fuzz-badge]: https://oss-fuzz-build-logs.storage.googleapis.com/badges/tarantool.svg
[oss-fuzz-url]: https://oss-fuzz.com/coverage-report/job/libfuzzer_asan_tarantool/latest
[tarantool-url]: https://www.tarantool.io/en/
[license]: LICENSE
[modules]: https://www.tarantool.io/en/download/rocks
[queue]: https://github.com/tarantool/queue
[vshard]: https://github.com/tarantool/vshard
[cartridge]: https://github.com/tarantool/cartridge
[mysql]: https://github.com/tarantool/mysql
[pg]: https://github.com/tarantool/pg
[connectors]: https://www.tarantool.io/en/download/connectors
[download]: https://www.tarantool.io/en/download/
[building]: https://www.tarantool.io/en/doc/latest/dev_guide/building_from_source/
[issue-tracker]: https://github.com/tarantool/tarantool/issues
[contributing]: CONTRIBUTING.md
[awesome-list]: https://github.com/tarantool/awesome-tarantool/