Commit Briefs

d32b2fe90d Sergey Bronnikov

test: enable remote console for debug (ligurio/gh-xxxx-enable-console-in-test)

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


9dbaa6a9bc Vladimir Davydov

vinyl: handle error loading statement from disk during key lookup

`vy_page_stmt()` may fail (return NULL) if: - the statement is corrupted; - memory allocation for the statement fails; - the statement size exceeds `box.cfg.vinyl_max_tuple_size`. If this happens `vy_page_find_key()` won't return an error. Instead, it'll either point the caller to a wrong statement or claim that there's no statement matching the key in this page. This may result in invalid index selection results and, later on, a crash caused by inconsistencies in the tuple cache. The issue was introduced by commit ac8ce0233a00 ("vinyl: factor out function to lookup key in page"). All of the three cases are actually very unlikely to happen in production: - If a statement stored in a run file is corrupted, we'll probably fail to load the whole page due to failed checksums and never even get to `vy_page_stmt()`. - Statements are allocated with `malloc()`, which doesn't normally fail (instead the whole process would be terminated by OOM) . - Users don't tend to lower the tuple size limit after restart. Still, let's fix the issue by implementing proper error handling for `vy_page_find_key()`. Closes #10512 NO_DOC=bug fix


bd510bb5cc Vladimir Davydov

box: export box_slab_info via C API

NO_TEST=the new function is called in the test-covered function @TarantoolBot document Title: Document `box_slab_info` C API function Since: Tarantool 3.3.0 Added the new C function `box_slab_info` that returns information about the memory state depending on the passed argument `box_slab_info_type`. The same information is available in Lua via `box.slab.info()`.


6fd4544740 Vladimir Davydov

box: free txn limbo on exit

Part-of #10211 NO_TEST=internal NO_CHANGELOG=internal NO_DOC=internal


18e79a8387 Vladimir Davydov

box: free replication on exit

Part-of #10211 NO_TEST=internal NO_CHANGELOG=internal NO_DOC=internal


9245750c55 Vladimir Davydov

box: free coll_id cache on exit

Part-of #10211 NO_TEST=internal NO_CHANGELOG=internal NO_DOC=internal


3ea0087f66 Vladimir Davydov

box: free space sql triggers on exit

Part-of #10211 NO_TEST=internal NO_CHANGELOG=internal NO_DOC=internal


02ea0e9fd9 Vladimir Davydov

box: free space cache on exit

Part-of #10211 NO_TEST=internal NO_CHANGELOG=internal NO_DOC=internal


1b4cb3fb8e Vladimir Davydov

box: free users cache on exit

Part-of #10211 NO_TEST=internal NO_CHANGELOG=internal NO_DOC=internal


1997d5cf06 Vladimir Davydov

memtx: handle primary index destroying after shutdown

GC fiber is dead at this point. We don't need to free tuples anyway for non ASAN builds on shutdown. For ASAN builds let's free tuples in memtx_engine_free(). Part-of #10211 NO_TEST=internal NO_CHANGELOG=internal NO_DOC=internal


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/