Commit Briefs

c18e057680 Sergey Bronnikov

Revert "third_party: update libcurl from 8.3.0 to 8.4.0" (ligurio/revert-curl-bump-8.4.0)

This reverts commit 0ea1ba877b8e62e0acb558b55623d93bf58a0e1f. Bump is reverted due to regression in Curl 8.4.0. Needed for #9283 NO_DOC=libcurl submodule bump NO_TEST=libcurl submodule bump NO_CHANGELOG=libcurl submodule bump


ddaa5a320e Serge Petrenko

replication: relax rules box.cfg.*_name

We decided to allow underscore in names to provide easier support for many existent installations. Closes #9148 NO_CHANGELOG=no updates to the feature description NO_DOC=update existent doc tickets 3466, 3467, 3468


9e91827855 Vladimir Davydov

iproto: clean accounting of processed messages in input buffers

Message body resides in one of rotating input buffers for the connection. When we don't need message body anymore we advance the reading end of the input buffer by the size of the message. But message processing order can differ from the order of messages in the wire. Thus this advancing a bit hacky. Let's instead mark the data in the input buffer as read when we process all the messages in the input buffer. We cannot reuse the buffer any earlier anyway. Follow-up #7327 NO_TEST=refactoring NO_CHANGELOG=refactoring NO_DOC=refactoring


7383266879 Vladimir Davydov

misc: use ibuf API to discard/allocate/consume

The API functions additionally poison related data in ASAN build. Follow-up #7327 NO_TEST=refactoring NO_CHANGELOG=refactoring NO_DOC=refactoring


ebafd68409 Vladimir Davydov

small: bump version

New commits: - ibuf: change ibuf_consume_before argument type to const void ptr - ibuf: introduce ibuf_consume/ibuf_consume_before API - matras: fix matras_view::block_count overflow - slab: fix uint32_t overflow in slab_capacity - debug: add assertions of ASAN version to non ASAN - ibuf: add ibuf_discard - slab: fix NULL ptr deref in assertion in slab_get NO_TEST=submodule bump NO_CHANGELOG=submodule bump NO_DOC=submodule bump


703d11fe10 Vladimir Davydov

test: increase expected selectG execution time for debug ASAN build

The test is quite a flacky in debug ASAN CI workflow. The issue is test check upper boundary of it's execution time. I run many instances of this test on in parallel and got average time of 40s for memtex and 70s for vinyl. The time quota is already changed by the commit 84cb1e049272 ("sql: increase time quota for selectG test on vinyl") for laptops with HDD. I did not check execution time for HDD though. I guess the bottleneck for debug ASAN is CPU. Follow-up #7327 NO_CHANGELOG=internal NO_DOC=internal


1b88f30ade Serge Petrenko

replication: improve name conflict error message

The error message was not quite clear in case instance has any name defined and config provides a different one. Closes #8692 NO_CHANGELOG=no previous release with this error message NO_DOC=not needed since no changes to the public API


cb8e903b27 Vladimir Davydov

fiber: use alternative signal stack

We install a signal handler that prints the stack trace on SIGSEGV, SIGBUS, SIGILL, SIGFPE. The signal handler uses the current stack. This works fine for most issues, but not for stack overflow, because the latter makes the current stack unusable, leading to a crash in the signal handler. Let's install an alternative signal stack in each thread so that we can print the stack trace on stack overflow. Note that we skip this for ASAN because it installs its own signal stack. (Installing a custom stack would result in a crash.) Closes #9222 NO_DOC=bug fix


af996bbb92 Yaroslav Lobankov

ci: dockerize linux workflows

Modify Linux workflows for running jobs inside Docker containers. It helps isolate the building and testing environment from the runner's system and other workflows. Closes tarantool/tarantool-qa#327 NO_DOC=ci NO_TEST=ci NO_CHANGELOG=ci


d08f28df0c Vladimir Davydov

util: introduce the ALWAYS_INLINE macro

The macro expands to inline keyword and always_inline attribute if it's supported. This attribute forces the compiler to inline the function if it's possible and raise a diagnostic if it's not. Needed for tarantool/tarantool-ee#580 NO_DOC=internal NO_TEST=internal NO_CHANGELOG=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/
extra/
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/