Commit Briefs

831dfaf637 Sergey Bronnikov

cmake: propagate UBsan option to LuaJIT build (ligurio/gh-10145-unblock-ubsan-3.2)

The commit bf01fb200777 ("luajit: bump new version") introduced the LUAJIT_USE_UBSAN option in LuaJIT. The patch propagates the CMake option ENABLE_UB_SANITIZER used in Tarantool to the LuaJIT build. Needed for #10145 NO_CHANGELOG=build NO_DOC=build NO_TEST=build (cherry picked from commit b58791cf532c5a76a6941221358ca007bc97a85b)


16d11f8809 Sergey Bronnikov

varbinary: fix UB in a varbinary.new()

With enabled UndefinedBehavior Sanitizer runtime error like below is triggered: NO_WRAP $ UBSAN_OPTIONS=external_symbolizer_path=/usr/lib/llvm-13/bin/llvm-symbolizer:print_stacktrace=1 $ ./build/src/tarantool -e "require('varbinary').new()" /home/sergeyb/sources/MRG/tarantool/third_party/luajit/src/lib_ffi.c:710:14: \ runtime error: null pointer passed as argument 2, which is declared to never be null /usr/include/string.h:44:28: note: nonnull attribute specified here NO_WRAP This happened because in the varbinary constructor, the NULL pointer was passed to `ffi.copy()` and then to `memcpy()`, which is an undefined behaviour. The patch fixes that. Needed for #10145 NO_CHANGELOG=codehealth NO_DOC=codehealth NO_TEST=codehealth (cherry picked from commit 30179d44da65f835d81494ad63e86935f1c5aad0)


a9dad9f848 Alexander Turenko

doc: fix tt start command in --help

Fixes #10563 NO_DOC=The documentation on the website has correct command, this is a purely --help output problem. NO_CHANGELOG=This commit is not related to tarantool's behavior or public APIs. (cherry picked from commit 22e86d2ed3f5f36099cf143868619d1f0df611ac)


c6127c195e Vladimir Davydov

test: disable flaky testcases in http_client_test

The testcase "http_client.sock_family:\"AF_UNIX\".test_follow_location" is flaky in each run of `release_clang_asan` and `debug_asan_clang` workflows. Disabling a single testcase does not help. The patch disables a group of testcases executed with Unix domain socket. Needed for #9854 NO_CHANGELOG=testing NO_DOC=testing (cherry picked from commit 8fae8004f79ecd555537960c60c6e646b037c4cc)


058bc3ccca Vladimir Davydov

test: fix luacheck warnings

The patch fixes a warning produced by luacheck: NO_WRAP test/app-luatest/http_client_test.lua:27:8: Error prone negation: negation is executed before relational operator. test/app-luatest/http_client_test.lua:28:8: Error prone negation: negation is executed before relational operator. NO_WRAP Found by Luacheck 1.2.0. Closes #10037 NO_CHANGELOG=codehealth NO_DOC=codehealth NO_TEST=codehealth (cherry picked from commit 8fd37731b68e1e1d8e258ab919d65907d52ec764)


ca94a31aec Vladimir Davydov

test/fuzz: disable error injections on teardown

`test_engine.lua` actively uses error injections. Sometimes error injections remain enabled and triggered on test teardown. This leads to false positive test fails like below: NO_WRAP 2024-09-10 12:38:42.317 [1305] main/3502/WRK #3387/..test.fuzz.lua.test_engine I> Worker #3387 has finished. 2024-09-10 12:38:47.167 [1305] main/104/test_engine.lua/..test.fuzz.lua.test_engine I> TEARDOWN 2024-09-10 12:38:47.171 [1305] main/104/test_engine.lua wal.c:1327 E> ER_WAL_IO: Failed to write to disk 2024-09-10 12:38:47.174 [1305] main test_engine.lua:564 E> ER_WAL_IO: Failed to write to disk 2024-09-10 12:38:47.174 [1305] main F> fatal error, exiting the event loop NO_WRAP The patch disables error injection at the beginning of teardown. NO_CHANGELOG=testing NO_DOC=testing (cherry picked from commit be709c63b49df0ca5e52a015115c7c726cf416d6)


709fe5edeb Vladimir Davydov

test/fuzz: fix socket path in an engine test

The function `console.listen` does not accept a path with duplicate slashes, so absolute paths were rejected. The patch fixes that by always using absolute paths to Unix socket. Follows up the commit 5d18b84e1e76 ("test: enable remote console for debug"). NO_CHANGELOG=testing NO_DOC=testing NO_TEST=testing (cherry picked from commit 89dd6f5c76c5427a297ee64c9b250950e66ac9bc)


5dcdda5cf8 Vladimir Davydov

swim: fix crash on Tarantool shutdown

On Tarantool shutdown first swim worker fiber is finished as managed on shutdown one. So later when swim is collected we got crash in swim_gc() because `event_handler` is NULL at this point. There is no worker fiber so we need to free swim synchronously. The issue was hidden because we do not call lua_close() earlier. It had little change to occur. Now it is revealed. Closes #10495 Part-of #10211 NO_TEST=covered by existing tests NO_DOC=bugfix (cherry picked from commit 3a343825213b7b3ea00ca7c0f04a16cde5599307)


a3ff4a10b6 Vladimir Davydov

test/fuzz: fix error injections in engine test

Closes #10531 NO_DOC=testing NO_CHANGELOG=testing (cherry picked from commit 4bc191535803454a9485ca56f35281a205d466e2)


2df8880816 Vladimir Davydov

test: enable remote console for debug

The remote console is enabled for debugging purposes. It can be helpful when Tarantool is stuck and one need an access to console to gather an additional information about Tarantool (like `fiber.info` output or anything else). NO_CHANGELOG=testing NO_DOC=testing (cherry picked from commit 5d18b84e1e763d617c123c3e7f6fa88210f6ae6d)


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/