- Jun 27, 2023
-
-
Andrey Saranchin authored
We are going to introduce universal triggers registry and use it for tarantool triggers (e.g. space.on_replace). However, when trigger is set to the registry, we do not know which arguments will be passed there from C. That is why current implementation of triggers in tarantool is not suitable for use in universal registry. We decided to introduce func_adapter interface which allows to call functions from any programming language. Now we support only one language, which is Lua, so for the most part this interface is needed to invert dependencies. The patch introduces func_adapter interface and its implementation for Lua functions. Part of #8657 NO_CHANGELOG=internal NO_DOC=internal
-
- Jun 23, 2023
-
-
Georgiy Lebedev authored
`cord_slab_cache` was not designed to offer a backward compatible API, and leaving it exposed inevitably leads to errors like those highlighted in #7124 and tarantool/memcached#96: hence, remove it from the public API export. Closes #7124 @TarantoolBot document Title: `cord_slab_cache` was removed from public API export The `cord_slab_cache` needs to be removed from the C API reference of the fiber module.
-
Georgiy Lebedev authored
Space index build and space format checking operations don't destroy space iterator on `txn_check_singlestatement` failure — fix this. Closes #8773 NO_DOC=bugfix NO_TEST=<leak happens in small, cannot be detected by sanitizer>
-
Georgiy Lebedev authored
The procedure name cache uses a region for hash table entry allocation, but the cache is a thread local variable, while the `region` uses a `slab` allocator the lifetime of which is bounded by `main`, while thread locals are destroyed after `main`: use the `malloc` allocator instead. Benchmark from #7207 shows that this change does not effect performance. Closes #8777 NO_CHANGELOG=<leak does not affect users> NO_DOC=bugfix NO_TEST=<detected by ASAN>
-
Mergen Imeev authored
This patch removes some deprecated code. This code had no user-visible effect, but caused problems when running the test with ASAN enabled. Closes #8761 NO_DOC=refactoring NO_TEST=refactoring NO_CHANGELOG=refactoring
-
- Jun 22, 2023
-
-
Sergey Bronnikov authored
Before a commit ec1af129 ("box: do not close xlog file descriptors in the atfork handler") there was a bug when Tarantool with enabled background mode via environment variable could lead a crash: NO_WRAP ``` $ TT_PID_FILE=tarantool.pid TT_LOG=tarantool.log TT_BACKGROUND=true TT_LISTEN=3301 tarantool -e 'box.cfg{}' $ tail -3 tarantool.log 2021-11-02 16:05:43.672 [2341202] main init.c:696 E> LuajitError: cannot read stdin: Resource temporarily unavailable 2021-11-02 16:05:43.672 [2341202] main F> fatal error, exiting the event loop 2021-11-02 16:05:43.672 [2341202] main F> fatal error, exiting the event loop ``` NO_WRAP With commit ec1af129 ("box: do not close xlog file descriptors in the atfork handler") described bug could not be reproduced. Proposed patch adds a test that starts Tarantool in background mode enabled via box.cfg option and via environment variable TT_BACKGROUND to make sure this behaviour will not be broken in a future. Closes #6128 NO_DOC=test
-
Mergen Imeev authored
This patch adds configuration examples. Although the configuration module will be introduced later, the examples can already be tested using the instance_config and cluster_config modules. Closes #8778 NO_DOC=will be added later NO_CHANGELOG=will be added later
-
Mergen Imeev authored
This patch introduces the cluster_config module. This module contains the cluster configuration schema. Part of #8778 NO_DOC=will be added later NO_CHANGELOG=will be added later
-
Mergen Imeev authored
This patch instroduces instance EE options. Part of #8778 NO_DOC=will be added later NO_CHANGELOG=will be added later
-
Mergen Imeev authored
This section describes the instance application configuration. Part of #8778 NO_DOC=will be added later NO_CHANGELOG=will be added later
-
Mergen Imeev authored
This section describes the instance credentials configuration. Part of #8778 NO_DOC=will be added later NO_CHANGELOG=will be added later
-
Mergen Imeev authored
This section describes the instance replication configuration. Part of #8778 NO_DOC=will be added later NO_CHANGELOG=will be added later
-
Mergen Imeev authored
This section describes the instance snapshot configuration. Part of #8778 NO_DOC=will be added later NO_CHANGELOG=will be added later
-
Mergen Imeev authored
This section describes the instance WAL configuration. Part of #8778 NO_DOC=will be added later NO_CHANGELOG=will be added later
-
Mergen Imeev authored
This section describes the instance vinyl engine configuration. Part of #8778 NO_DOC=will be added later NO_CHANGELOG=will be added later
-
Mergen Imeev authored
This section describes the instance memtx engine configuration. Part of #8778 NO_DOC=will be added later NO_CHANGELOG=will be added later
-
Mergen Imeev authored
This section describes the instance SQL configuration. Part of #8778 NO_DOC=will be added later NO_CHANGELOG=will be added later
-
Mergen Imeev authored
This section describes the instance database configuration. Part of #8778 NO_DOC=will be added later NO_CHANGELOG=will be added later
-
Mergen Imeev authored
This section describes the instance iproto configuration. Part of #8778 NO_DOC=will be added later NO_CHANGELOG=will be added later
-
Mergen Imeev authored
This section describes the instance log configuration. Part of #8778 NO_DOC=will be added later NO_CHANGELOG=will be added later
-
Mergen Imeev authored
This section describes the instance fiber configuration. Part of #8778 NO_DOC=will be added later NO_CHANGELOG=will be added later
-
Mergen Imeev authored
This section describes the instance console configuration. Part of #8778 NO_DOC=will be added later NO_CHANGELOG=will be added later
-
Mergen Imeev authored
This section describes the instance process configuration. Part of #8778 NO_DOC=will be added later NO_CHANGELOG=will be added later
-
Mergen Imeev authored
This section describes general instance configuration options. Part of #8778 NO_DOC=will be added later NO_CHANGELOG=will be added later
-
Mergen Imeev authored
This patch introduces the instance_config module. This module will contain the instance configuration schema. Part of #8778 NO_DOC=will be added later NO_CHANGELOG=will be added later
-
Alexander Turenko authored
The msgpack module can't lack `msgpack.NULL`, because it leads to the 'Please call box.cfg{} first' error at access to `box.NULL`. An upcoming patch regarding schemas for tarantool's new hierarchical configuration uses `box.NULL` during tarantool's initialization. The override feature is tested on a set of modules, which are easy to replace with an arbitrary table without losing an ability to pass tarantool's initialization. The msgpack module will not meet the criteria after the mentioned patch. The test doesn't attempt to hold a precise list of modules available for overriding. It rather checks the overall mechanics. So it is OK to adjust the list. NO_DOC=testing code change NO_CHANGELOG=see NO_DOC
-
Ilya Verbin authored
There are sporadic segfaults in libunwind during backtrace_collect(). Reproducible with the latest version, and there are open issues with similar stacks: https://github.com/libunwind/libunwind/issues/150 https://github.com/libunwind/libunwind/issues/260 https://github.com/libunwind/libunwind/issues/473 Let's disable ENABLE_BACKTRACE for AArch64 Linux until these issues are resolved in libunwind. Closes #8572 Part of #8791 NO_DOC=bugfix
-
Ilya Verbin authored
The ability to support backtraces is checked in cmake/compiler.cmake, it makes no sense to duplicate the check in rpm/tarantool.spec. Also do not enable backtraces unconditionally in apk/APKBUILD and static-build. Part of #6998 NO_DOC=build NO_TEST=build NO_CHANGELOG=build
-
Serge Petrenko authored
Instead of relying on fixed xlog / snap pair in gh_6794_data, let's better generate the desired files right in the test. This way we won't face the problem of the files getting out of date. For example, when schema version changes. Remove the now unneeded gh_6794_data files and re-enable the gh_6794_recover_nonmatching_xlogs test. Closes #8701 NO_DOC=test NO_CHANGELOG=test
-
Maksim Kokryashkin authored
This patch fixes the crontab expression in the Lango team stale PRs workflow, so it runs not every minute, but every hour. Also, python version is updated to 3.11, since the script is reliant onto `datetime.fromisoformat' changes, that were introduced in that version. NO_DOC=Workflow fix NO_TEST=Workflow fix NO_CHANGELOG=Workflow fix
-
- Jun 21, 2023
-
-
Oleg Jukovec authored
The description of CURLOPT_UPLOAD [1] is confusing: If you use PUT to an HTTP 1.1 server, you can upload data without knowing the size before starting the transfer if you use chunked encoding. You enable this by adding a header like "Transfer-Encoding: chunked" with CURLOPT_HTTPHEADER. In fact, libcurl adds this header itself. Actually we need to avoid adding this header by libcurl with CURLOPT_INFILESIZE [2]. The CURLOPT_UPLOAD documentation has been updated [3]. 1. https://github.com/curl/curl/blob/555bacd6d522bcca497573765056354f4d5d7b33/docs/libcurl/opts/CURLOPT_UPLOAD.3 2. https://curl.se/libcurl/c/httpput.html 3. https://github.com/curl/curl/pull/11300 Closes #8744 NO_DOC=bugfix
-
Aleksandr Lyapunov authored
There's case when a transaction is rolled back from prepared state. This happens when WAL fails, synchronized replication confirmation failure or perhaps in other similar cases. By design other RW transactions and transactions with READ_COMMITTED isolation level are allowed to read prepared state. All these transactions must be aborted in case of rollback of prepared transaction since they definitely have read no more possible database state. This patch implements this abortion. Closed #8654 NO_DOC=bugfix
-
Aleksandr Lyapunov authored
Rollback is rather complicated part if MVCC implementation that is meant to handle two kinds of rollback: * rollback from in-progress state, if box.rollback() is called. * rollback from prepared state, when WAL fails. Unfortunately the last one was not properly tested and surely has at least one flaw. When an inserting transaction becomes prepared its stories could be linked as deleted (via del_stmt pointer) by other in-progress transactions in order to maintain correct visibility. The problem is that in case of rollback of such prepared transaction those links remained. Broken links breaks the chain structure, and some older changes (that were linked as deleted before that hapless preparation) can become visible to other transaction. Refactor, simplify a bit that part of code and fix the issue described above; cover with tests. Closes #8648 NO_DOC=bugfix
-
Aleksandr Lyapunov authored
Almost completely rewrite, simplify and comment this part of code. Part of #8648 Part of #8654 NO_DOC=refactoring NO_TEST=refactoring NO_CHANGELOG=refactoring
-
Aleksandr Lyapunov authored
Almost completely rewrite, simplify and comment this part of code. Part of #8648 Part of #8654 NO_DOC=refactoring NO_TEST=refactoring NO_CHANGELOG=refactoring
-
Aleksandr Lyapunov authored
The latter flag is a bit wider: it reveals not only inserting statements after deleting by the same transaction, but also replacing and deleting statements after all kinds of previois changes but the same transaction. This extended behavior will be used in further commits. Part of #8648 Part of #8654 NO_DOC=refactoring NO_TEST=refactoring NO_CHANGELOG=refactoring
-
Aleksandr Lyapunov authored
It was an ugly solution when MVCC engine requires outside engine to set this flag which is not convenient. Remove it and use mode arguments to set up proper read trackers. Part of #8648 Part of #8654 NO_DOC=refactoring NO_TEST=refactoring NO_CHANGELOG=refactoring
-
Aleksandr Lyapunov authored
The function memtx_tx_story_delete is expected to delete fully unlinked stories and thus should not try to unlink something by itself. So remove unlink and add asserts instead. Part of #8648 Part of #8654 NO_DOC=refactoring NO_TEST=refactoring NO_CHANGELOG=refactoring
-
Aleksandr Lyapunov authored
Now there are three kinds of very close trackers: * The transaction have read some tuple that is not committed and thus not visible. This kind is now stored as gap_item with is_nearby = false. * The transaction made a select or range scan, reading a key or range between two adjacent tuples of the index. This kind is stored as gap_iteam with is_nearby = true. * A transaction completed a full scan of unordered index. This kind is stored as full_scan_item. All these trackers serve for the same thing: to record a fact that a transaction read something but didn't see anything. There are some problems with the current solution: * gap_item with is_nearby = false has several unused members that just consume space. * bool is_nearby flag for type descriptin is an ugly solution. * full_scan_item is separated from logically close items. This commit joins all these trackers under one base (that is struct gap_item_base) and solves problems above. Part of #8648 Part of #8654 NO_DOC=refactoring NO_TEST=refactoring NO_CHANGELOG=refactoring
-
Aleksandr Lyapunov authored
Now read trackers are used both for cases when a transaction has read an existing value and it has read nothing (read by key but there was no visible tuple in this place). For latter case an additional index_mask was used to identify from which index the read was done. Along with that there was per-index interval gap trackers. This patch divides area of responsibility between read trackers and gap tracker in the following way: * Reads of existing visible values are stored in read trackers. * Reads of non-existing or non-visible values are store in gap trackers. This new approach allows to provide new invariants: gap trackers are stored only at top of chain, and read trackers are stored only at topmost committed story in chain. Part of #8648 Part of #8654 NO_DOC=refactoring NO_TEST=refactoring NO_CHANGELOG=refactoring
-