Commit Briefs

5480365fa9 Sergey Bronnikov

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

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)


a3c2f8bc54 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)


c87c6f13c4 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)


b05a35e5e9 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)


e94c9e2762 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)


92d846cfba 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)


bf4ed2353e 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)


46cac24cd5 Serge Petrenko

upgrade: introduce 2.11.5 schema version

We decided to introduce new schema version, which does nothing in order to distinguish, which 2.11 schema we can safely use to allow persistent names on it. Follow up #10549 NO_DOC=internal NO_CHANGELOG=internal NO_TEST=nothing to test


2be2e75cae Serge Petrenko

schema: allow _cluster update after join

The function replica_check_id() is called on any change in _cluster: insert, delete, update. It was supposed to check if the replica ID is valid - not nil, not out of range (VCLOCK_MAX). But it was also raising an error when the ID matched this instance's ID unless the instance was joining. That happened even if a _cluster tuple was updated without changing the ID at all. For example, if one would just do _cluster:replace(_cluster:get(box.info.id)). Better do the check in the only place where the mutation can happen - on deletion. Since replica ID is a primary key in _cluster, it can't be updated there. Only inserted or deleted. This commit is backported to 2.11, since we want to allow using persistent names as early as we can in order to simplify the upgrade process. We also bump the schema version in the following commit in order to distinguish this version from overs 2.11.X, where persistent names doesn't work. Closes #10549 NO_DOC=bugfix and refactoring NO_CHANGELOG=cannot happen without touching system spaces NO_TEST=too insignificant for an own test (cherry picked from commit cb8f4715c58aeaa5008888b66a328f200198a93c)


5bdda673cc 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)


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/
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/