- Description:
- [Mirror] Middleware for data
- Last Change:
- Clone URL:
Commit Briefs
ci: fix module API publish job (again) (master)
The new version of the publishing action leads to the following error: NOWRAP ``` Error: File not found: '/home/runner/work/_actions/JamesIves/github-pages-deploy-action/v4.6.6/lib/main.js' ``` NOWRAP Let's revert it to v4.6.4 (because v4.6.5 change was reverted in v4.6.6). See also https://github.com/JamesIves/github-pages-deploy-action/issues/1697 NO_DOC=no code changes NO_CHANGELOG=see NO_DOC NO_TEST=see NO_DOC
ci: fix module API build/publish job
The `ubuntu-latest` image is now `ubuntu-24.04`, see [1]. The job fails on this image with the following error: NOWRAP ``` CMake Error at /usr/local/share/cmake-3.30/Modules/FindPackageHandleStandardArgs.cmake:233 (message): Could NOT find Readline (missing: READLINE_INCLUDE_DIR READLINE_LIBRARY) ``` NOWRAP It seems, the libreadline-dev package is missing. Let's install it. Also, update a version of the publishing action to the latest at the moment. I didn't perform any check, but I guess that a new version of NodeJS is needed and the latest action version has better support of it. [1]: https://github.blog/changelog/2024-09-25-actions-new-images-and-ubuntu-latest-changes/ NO_DOC=no code changes NO_CHANGELOG=see NO_DOC NO_TEST=see NO_DOC
test: specify the dir in the cluster helper
The cluster helper in `test/config-luatest/cluster.lua` is used to define the clusters in an easy way. Though every time the `cluster.new` is called it creates a new temporary directory, which is not good when you're writing a test setting up the directory before the cluster start. This patch adds an `opts` object as the fourth parameter for `cluster.new` and makes the function use `opts.dir` as a key for specifying the directory to start the cluster. Example: ``` local dir = '/some/long/dir' local cluster_config = cbuilder:new(remote_config) :use_replicaset('r-001') :add_instance('i-001', {}) :config() -- The cluster will be started in a new temp directory. local cluster = cluster.new(g, cluster_config) -- The cluster will be started in '/some/long/dir'. local cluster = cluster.new(g, cluster_config, nil, { dir = dir }) ``` Needed for testing tarantool/tarantool-ee#870. NO_CHANGELOG=internal testing helper change NO_TEST=internal testing helper change NO_DOC=internal testing helper change
config: grant runtime access to lua_call from config
This patch introduces the ability to grant execution privileges for Lua functions through declarative configuration, even when the database is in read-only mode or has an outdated schema version. Users can specify `lua_call: [<func_name>]`, enabling the execution of specified Lua functions (e.g., `failover:execute()` when all instance are in read-only mode). The `lua_call: [all]` option is also supported, allowing access to all global Lua functions except built-in ones, regardless of database mode or status. Privileges are still written to the database when possible for consistency and compatibility. Closes tarantool#10310 @TarantoolBot document Title: Grant runtime access to Lua functions via configuration It is now possible to grant execution privileges for Lua functions through the declarative configuration, even when the database is in read-only mode or has an outdated schema version. You can specify function permissions using the `lua_call` option in the configuration, for example: ```yaml credentials: users: alice: privileges: - permissions: [execute] lua_call: [my_func] ``` This grants the `alice` user permission to execute the `my_func` Lua function, regardless of the database's mode or status. The special option `lua_call: [all]` is also supported, granting access to all global Lua functions except built-in ones, bypassing database restrictions. Privileges will still be written to the database when possible to maintain compatibility and consistency with other privilege types.
connpool: make filter() check connections in parallel
Connpool `filter()` method used to be executed synchronously in a single thread. Thus the maximum evaluation time was `number of instances * timeout`. This patch makes its execution parallel limiting the evaluation time with `timeout`. @TarantoolBot document Title: Experimental.connpool: `filter()` now works faster Now `connpool.filter()` checks the instance status in parallel, making the function execution faster, especially in case there are unavailable instances. Closes #10286
vinyl: fix crash when empty PK DDL races with DML
Vinyl doesn't support altering the primary index of a non-empty space, but the check forbidding this isn't entirely reliable - the DDL function may yield to wait for pending WAL writes to finish after ensuring that the space doesn't contain any tuples. If a new tuples is inserted into the space in the meantime, the DDL operation will proceed rebuilding the primary index and trigger a crash because the code is written on the assumption that it's rebuilding a secondary index: ``` ./src/box/vinyl.c:1572: vy_check_is_unique_secondary_one: Assertion `lsm->index_id > 0' failed. ``` Let's fix this by moving the check after syncing on WAL. Closes #10603 NO_DOC=bug fix
build: curl option BUILD_MISC_DOCS set OFF
Curl option BUILD_MISC_DOCS builds misc man pages and set ON by default. Other documentation building options such as ENABLE_CURL_MANUAL and BUILD_LIBCURL_DOCS was set OFF in BuildLibCurl.cmake. I suppose this option has to be added in commit 7192bf667917 ("third_party: update libcurl from 8.7.0 to 8.8.0+patches") and set OFF. Follows up #9885 NO_TEST=does not change tarantool behavior NO_DOC=does not change tarantool behavior
test/fuzz: create console socket after test directory
Otherwise the test will fail creating the console socket if the test directory doesn't exist. Fixes commit 5d18b84e1e76 ("test: enable remote console for debug"). NO_DOC=testing NO_CHANGELOG=testing
test/fuzz: fix worker fiber error handling
If a worker fibre fails (e.g. because it exceeds the max configured fiber slice), `fiber.join` returns false and the error object (cdata). In this case we shouldn't try to analyze `res`, which normally contains the list of errors encountered by the worker fiber. Fixes commit 6513c6adceab ("test/fuzz: disable error injections before joining worker fibers"). NO_DOC=testing NO_CHANGELOG=testing
test/fuzz: disable error injections before joining worker fibers
To avoid a situation when a worker fiber never exits because it got stuck on some random timeout injections, let's disable all error injections before joining worker fibers. To prevent the injection fiber from re-enabling an error injection that was just disabled, let's disable all error injections right before returning from the injection fiber. Closes #10600 NO_DOC=testing NO_CHANGELOG=testing
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/