- Description:
- [Mirror] Middleware for data
- Last Change:
- Clone URL:
Commit Briefs
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)
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)
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)
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)
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)
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)
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)
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)
test/fuzz: fix error injections in engine test
Closes #10531 NO_DOC=testing NO_CHANGELOG=testing (cherry picked from commit 4bc191535803454a9485ca56f35281a205d466e2)
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
Tree
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/