- Jan 13, 2023
-
-
Vladimir Davydov authored
Note, this patch will be backported to 2.10 so we add upgrade function for 2.10.5, not for 2.11.0. Needed for #7858 @TarantoolBot document Title: Document `_space_sequence` and `_vspace_sequence` system spaces The `_space_sequence` system space was added long time ago (in 1.7.5) along with the `_sequence` and `_sequence_data` system spaces, but it was never documented. The space is used to attach sequences to spaces and has the following fields: 1. 'id', type 'unsigned'. Space id. 2. 'sequence_id', type 'unsigned'. Id of the attached sequence. 3. 'is_generated', type 'boolean'. True if the sequence was created automatically (`space:create_index('pk', {sequence = true})`) 4. 'field', type 'unsigned'. Id of the space field that is set using the attached sequence. 5. 'path', type 'string'. Path to the data within the field that is set using the attached sequence. The `_vspace_sequence` is a system space view of the `_space_sequence` space that, like any other system space view, shows only rows accessible by the current user. It will be introduced in Tarantool 2.10.5. (cherry picked from commit 06ee1134)
-
Aleksandr Lyapunov authored
When a transaction is in read-confirmed state it must ignore all prepared changes, and if it actually ignores something - it must fall to read-view state. By a mistake the check relied not on actual skipping of a prepared statement, but on the fact that there is a deleting statement. That leads to excess conflicts for transactions with read-committed isolation level. Fix it by raising a conflict only if a deleting statement is skipped. Closes #8122 Needed for #7202 NO_DOC=bugfix (cherry picked from commit 91d6d70f)
-
Aleksandr Lyapunov authored
Read lists (read set and other similar lists) are used only for detecting a conflict when another transaction is committed. Once a transaction is prepared (no matter with success or not) those lists are no more needed. Moreover, in some part of code it is expected that there can be no read set of already prepared tx. So let's clean those lists once a transaction is prepared. Closes #7945 NO_DOC=bugfix (cherry picked from commit ba8e00c0)
-
Aleksandr Lyapunov authored
There ware two functions - check_dup_clean and check_dup_dirty. Merge them to one. Also extract phantom checks from check_dup and call them explicitly. That will additionally simplify check_dup and will allow to get rid of temporary conflict trackers - memtx_tx_conflict. Note that this kind of object will remain in memory monitoring by now. It will be removed later. No logical changes. Part of #8122 NO_DOC=refactoring NO_TEST=refactoring NO_CHANGELOG=refactoring (cherry picked from commit a5dd48ed)
-
Aleksandr Lyapunov authored
If a transaction writes to a gap that is tracked by some another transaction, the interval must be (usually) broken into parts, while new story must be explicitly added to the read set of reading transaction. Now both read tracker and conflict trackers are set in this case. But read tracker is enough in this case - when the writing tx is prepared it will conflict reading transaction, that's all we need. Let's leave only read tracker. Part of #8122 NO_DOC=refactoring NO_TEST=refactoring NO_CHANGELOG=refactoring (cherry picked from commit e6f5090c)
-
Aleksandr Lyapunov authored
Each story has two ends: the beginning and the end. For each transaction both ends of a story could be visible or not. Now there's a function that checks visibility of both ends of a story. It can distinguish three cases: both ends are visible, both ends are invisible, and the beginning is visible while the end is not. The function returns true in the first and the last cases; the actual case is clarified with an additional function argument - visible_tuple, which is set to null in one of the cases.. Let's make two different functions for checking visibility of the beginning and the end of a story. Actually that is simple split of function into two parts. The visible_tuple argument will no longer be needed. No logical changes. Part of #8122 NO_DOC=refactoring NO_TEST=refactoring NO_CHANGELOG=refactoring (cherry picked from commit b6ef41ef)
-
Aleksandr Lyapunov authored
There's no harm but also no sense in it. Part of #8122 NO_DOC=refactoring NO_TEST=refactoring NO_CHANGELOG=refactoring (cherry picked from commit 8a565144)
-
Aleksandr Lyapunov authored
Hide structures and functions that are not required for API. No logical changes. Part of #8122 NO_DOC=refactoring NO_TEST=refactoring NO_CHANGELOG=refactoring (cherry picked from commit 4cc04ca9)
-
Aleksandr Lyapunov authored
Option memtx_tx_manager_use_mvcc_engine changes the behavior of transaction execution workflow. Usually that is implemented as direct check of memtx_tx_manager_use_mvcc_engine. But there are places in the code that rely on the fact that some pointers are set to not null if the engine is enabled. That's a bit confusing. Let's always check for memtx_tx_manager_use_mvcc_engine option when it's needed to determine which workflow must be executed. Note that checking of memtx_tx_manager_use_mvcc_engine option is more correct: in case of delete of nothing (delete statement when a tuple was not found by given key) all the pointers including old_tuple and new_tuple are null, while logically we still need to use mvcc execution workflow. Note also that in this case the mvcc engine does (and must do) almost nothing, so there was no bug in the previous behaviour. Part of #8122 NO_DOC=refactoring NO_TEST=refactoring NO_CHANGELOG=refactoring (cherry picked from commit f4c56892)
-
Aleksandr Lyapunov authored
No logical changes. Part of #8122 NO_DOC=refactoring NO_TEST=refactoring NO_CHANGELOG=refactoring (cherry picked from commit 69479c89)
-
- Jan 12, 2023
-
-
Georgiy Lebedev authored
Since the fiber function is not expected to return (i.e., the inline assembly is not expected to return), remove the dummy memory operand used to indicate that the memory pointed to by the inline assembly pointer operand is clobbered. Closes #8125 NO_DOC=build diagnostic NO_CHANGELOG=build diagnostic NO_TEST=build diagnostic (cherry picked from commit 97a3af1b)
-
Vladimir Davydov authored
The status isn't used anywhere - to set the proper error when an aborted transaction is attempted to be used, we check out transaction flags (TXN_IS_CONFLICTED, TXN_IS_ABORTED_BY_YIELD, TXN_IS_ABORTED_BY_TIMEOUT). Let's use TXN_ABORTED instead. While we are at it, also set the transaction status to TXN_ABORTED when a transaction is aborted by yield or timeout and use it instead of checking flags where appropriate, since it's more convenient. Follow-up #8123 NO_DOC=code cleanup NO_TEST=code cleanup NO_CHANGELOG=code cleanup (cherry picked from commit 16f8969f)
-
Vladimir Davydov authored
We fail write statements if the current transaction was aborted by yield or timeout. We should fail read-only statements in this case, as well. Note, we already fail read-only statements if the current transaction was aborted by conflict. Closes #8123 NO_DOC=bug fix (cherry picked from commit 5f1500f4)
-
Alexander Turenko authored
Fixed pthread-related CMake checks. The checks code is built with `-pedantic-errors` and it leads to errors of the following kind on clang 15: ``` <...>/CMakeFiles/CMakeScratch/TryCompile-78KaOK/src.c:4:17: error: a function declaration without a prototype is deprecated in all versions of C [-Werror,-Wstrict-prototypes] int main() { pthread_setname_np(pthread_self(), ""); } ^ void ``` Fixed a warning in the SQL code (it's an error in Debug build): ``` <...>/src/box/sql/vdbeaux.c:170:13: error: variable 'n' set but not used [-Werror,-Wunused-but-set-variable] static int n = 0; ``` Fixed several warnings from lemon.c of the following kind: ``` <...>/extra/lemon.c:173:6: warning: a function declaration without a prototype is deprecated in all versions of C and is treated as a zero-parameter prototype in C2x, conflicting with a subsequent definition [-Wdeprecated-non-prototype] void FindRulePrecedences(); ^ <...>/extra/lemon.c:766:6: note: conflicting prototype is here void FindRulePrecedences(struct lemon *xp) ``` See also https://github.com/tarantool/small/issues/57 Fixes #8110 NO_DOC=build fix NO_TEST=build fix (cherry picked from commit 1c6b6f85)
-
Alexander Turenko authored
Bump the small submodule with the following commit: * https://github.com/tarantool/small/commit/02d3c23fd0d1e1743618850dc11378566b3804b1 - It eliminates a CMake warning. * https://github.com/tarantool/small/commit/c1ac3eef79a7394fb52442a77b958b66d82b8f0b - It adds on alloc/on truncate callbacks and poisoning of freed data. Tarantool 2.10 doesn't set the callbacks, so no behavior should change. * https://github.com/tarantool/small/commit/5c3a0880ae4659cb662085563ff0b9eee40565fe - It eliminates the warning on clang 15. See https://github.com/tarantool/small/issues/57 Part of #8110 It is a backport of PR #8142 for 2.10. NO_DOC=build fix NO_TEST=build fix NO_CHANGELOG=to be added in a commit that fixes #8110
-
- Jan 11, 2023
-
-
Igor Munkin authored
* cmake: introduce CheckUnwindTables helper * x64/LJ_GC64: Fix type-check-only variant of SLOAD. * LJ_GC64: Fix ir_khash for non-string GCobj. * gdb: support full-range 64-bit lightuserdata Relates to #6481 Part of #7230 NO_DOC=LuaJIT submodule bump NO_TEST=LuaJIT submodule bump
-
- Jan 10, 2023
-
-
Anna Balaeva authored
Change runner label 'macos-11' to 'macos-11-self-hosted' and 'macos-12' to 'macos-12-self-hosted' to distinguish between self-hosted and GitHub-hosted runners. We want to use only self-hosted macOS runners because of test-run problems with python3.11 on GitHub-hosted macOS runners. NO_DOC=ci NO_TEST=ci NO_CHANGELOG=ci (cherry picked from commit f991f7c0)
-
Vladimir Davydov authored
Closes #8043 NO_DOC=bug fix (cherry picked from commit 19dcdd34)
-
- Dec 29, 2022
-
-
Yaroslav Lobankov authored
The coverage workflow is a part of the default testing, so there is no sense to run this workflow when the 'full-ci' label is set. Moreover, it cancelled the run of the default testing and started the run of the full testing due to workflow `concurrency`. By default, a workflow only runs when a `pull_request` event's activity type is `opened`, `synchronize`, or `reopened`. That's why there is no sense in the following construction: pull_request: types: [ opened, reopened, synchronize ] So just removed the line related to event's activity type. NO_DOC=ci NO_TEST=ci NO_CHANGELOG=ci (cherry picked from commit 182034dc)
-
viacheslav.kirichenko authored
Add workflow for integration testing of ddl and crud modules. Resolves tarantool/tarantool#6619 Resolves tarantool/tarantool#6620 NO_DOC=ci NO_TEST=ci NO_CHANGELOG=ci (cherry picked from commit 53f41130)
-
- Dec 25, 2022
-
-
Alexander Turenko authored
A jiggle in tarantool's initialization code can lead to trace numbers above 9. We can either: * accept trace numbers above 9 in the test * or drop traces from the initialization code in the test and assume that the new trace will have number 1. Igor Munkin suggested to stick with the second approach to avoid dependency on the initialization code. NO_DOC=test fixup, no user visible changes NO_CHANGELOG=see NO_DOC Co-authored-by:
Igor Munkin <imun@tarantool.org> (cherry picked from commit 92794ddc)
-
- Dec 23, 2022
-
-
Ilya Verbin authored
Currently all non-main threads have all the signals blocked, however according to `man pthread_sigmask': > If SIGBUS, SIGFPE, SIGILL, or SIGSEGV are generated while they > are blocked, the result is undefined, unless the signal was > generated by kill(2), sigqueue(3), or raise(3). On macOS they are actually blocked, causing the faulting instruction to loop indefinitely. While on Linux they are not blocked, however the signal handler registered by sigaction is not executed. Don't block them. Closes #8023 Closes #8083 NO_DOC=bugfix (cherry picked from commit 706bfea4)
-
Ilya Verbin authored
There are 4 fatal signals that cannot be blocked by sigmask if they are caused by the CPU exception (rather than kill, sigqueue or raise): SIGILL, SIGBUS, SIGFPE, SIGSEGV. Currently the crash module handles only SIGSEGV and SIGFPE. This patch adds handlers for SIGBUS and SIGILL. SIGBUS is usually raised by macOS on access to the unmapped memory, and SIGILL is possible, for example, while running AVX version of memcpy on a CPU without AVX support. Faulting address siginfo->si_addr is valid for all these signals, so print it unconditionally. Part of #8023 Part of #8083 NO_DOC=See next commit NO_CHANGELOG=See next commit (cherry picked from commit 6c3ce7a6)
-
Andrey Saranchin authored
Currently, core constraints are dropped on commit. That is why it is impossible to drop constraint and drop objects it references to at the same transaction. Let's drop constraints in two steps - detach them when DDL occurs, then reattach on rollback or delete on commit. Closes #7339 NO_DOC=bugfix (cherry picked from commit f72efbc2)
-
- Dec 21, 2022
-
-
Ilya Verbin authored
Use O_CLOEXEC flag instead. If Tarantool is forked before executing box.cfg{}, e.g. using io.popen(), the child process could start with stdin linked to /dev/urandom. This happens because wal_writer_singleton and vy_log_writer are not yet initialized, i.e. `fd' fields are 0, then atfork child handler wal_atfork() is called. It checks that xlog is opened (the check succeeded as 0 != -1) and closes its fd 0, in fact closing stdin (twice). Next, Tarantool opens the file /dev/urandom during initialization, and it receives the lowest unused file descriptor, which is 0. Then luaL_loadfile() loads stdin as a Lua chunk, in effect reading random numbers. This happens on glibc 2.28 and older, as newer versions do not invoke atfork handlers during io.popen(): https://sourceware.org/bugzilla/show_bug.cgi?id=17490 Closes #7886 NO_DOC=bugfix NO_TEST=Tested by test/app-luatest/gh_5747_crash_multiple_args_test.lua (cherry picked from commit ec1af129)
-
Mergen Imeev authored
This patch fixes an issue where collation could change the computed type of a built-in function argument when choosing a function implementation. Closes #7992 NO_DOC=bugfix (cherry picked from commit 1c80ce2d)
-
Nick Volynkin authored
Workflow submodule_update now brings latest commits in stable branches further to tarantool/sdk, where integration tests can run with other enterprise products and modules. In tarantool/tarantool-ee a pull request is still opened, so the maintainers can merge it at any time. In tarantool/sdk the test branches are named in the following pattern: `TarantoolBot/test-ce-master` `TarantoolBot/test-ce-2.10` and so on. This pattern can be easily distinguished by workflows, which run integration tests and alert developers on failures. It is also consistent with branches with the same purpose of integration testing, that are created by the sdk_test workflow: `TarantoolBot/test-ce-{feature_branch_name}` NO_DOC=CI NO_TEST=CI NO_CHANGELOG=CI Resolves tarantool/sdk#355 (cherry picked from commit 60a2ee11)
-
- Dec 20, 2022
-
-
Ilya Verbin authored
JIT has been disabled for these 3 tests on arm64 to avoid weird fails, but they are still flaky in CI. Perhaps the JIT traces from other tests affect them. Let's try to do jit.flush() together with jit.off(). Also disable JIT for pagination_netbox_test.lua, which suffers from the same problem as pagination_test.lua. Part of #6599 Part of #7739 Part of #8011 NO_DOC=testing stuff NO_CHANGELOG=testing stuff (cherry picked from commit 2695f66a)
-
- Dec 16, 2022
-
-
Yaroslav Lobankov authored
Some internal modules have been recently copied to luatest repo [1] and now they can be safely removed, and the corresponding functionality from luatest can be used instead. Affected modules: - test/luatest_helpers/cluster.lua [1] tarantool/luatest#271 Closes tarantool/luatest#237 Closes tarantool/luatest#269 NO_DOC=testing stuff NO_TEST=testing stuff NO_CHANGELOG=testing stuff (cherry picked from commit 62ffc72c)
-
Yaroslav Lobankov authored
Bump test-run to new version with the following improvements: - Bump luatest to 0.5.7-20-g48c406a [1] [1] tarantool/test-run#366 Part of tarantool/luatest#237 NO_DOC=testing stuff NO_TEST=testing stuff NO_CHANGELOG=testing stuff (cherry picked from commit 903211df)
-
Maxim Kokryashkin authored
Before the patch, fiber->storage.lua.stack is used for `panic` calls. However, some fibers don't have any Lua state saved in their storage (for example, space triggers). After the patch, the Lua state pointed by `cur_L` is used to make those calls, as it is always present. Closes #6647 NO_DOC=bugfix (cherry picked from commit dfe79b9a)
-
- Dec 14, 2022
-
-
Vladimir Davydov authored
The 'copy' ptr is checked for NULL after dereferencing. Found by PVS. https://jira.vk.team/browse/TNT-698 It can hardly result in a null-ptr dereference, because vy_stmt_dup() uses malloc(), which doesn't normally fail (instead, the OOM killer just kills the process if there's a severe shortage of memory, see #3534). Still, PVS rightfully complains about it so let's fix it. Fixes commit 902d212b ("vinyl: zap vy_write_iterator->format") NO_DOC=bug fix NO_TEST=unreproducible NO_CHANGELOG=unreproducible (cherry picked from commit de175b97)
-
- Dec 13, 2022
-
-
Nick Volynkin authored
ChristopherHX/github-act-runner@0.4.1, which we use on FreeBSD, is incompatible with newest actions/checkout@v3.2.0, aliased to @v3. Until this is resolved, FreeBSD workflows will use fixed version actions/checkout@v3.1.0. actions/checkout@v3.2.0 fails with an unclear error: >
Run actions/checkout@v3 > git clone 'https://github.com/actions/checkout' # ref=v3 > Error: Unable to resolve v3: unsupported object type > Error: Unable to resolve v3: unsupported object type > Error: Failure - actions/checkout@v3 > Error: unsupported object type NO_DOC=CI NO_TEST=CI NO_CHANGELOG=CI (cherry picked from commit a79d32b1)
-
- Dec 12, 2022
-
-
Yaroslav Lobankov authored
Support for OpenSUSE 15.1/15.2 has been recently dropped. There is no sense to keep the dead code. So removing it. Follows up #8021 NO_DOC=cd NO_TEST=cd NO_CHANGELOG=cd (cherry picked from commit e5704327)
-
Sergey Ostanevich authored
The `recursive_rmdir` can start execution while tarantool instance started by the tarantoolctl is in the process of shutdown. As a result the instance pid file can be available at the name collection, but by the time of its removal the instance deletes it by itself. NO_DOC=test NO_CHANGELOG=test (cherry picked from commit 8f3fc2ef)
-
Sergey Ostanevich authored
Two more places where replica didn't wait until data is replicated. Follow-up tarantool/tarantool-qa#274 NO_CHANGELOG=test fix NO_DOC=test fix (cherry picked from commit e27ddf70)
-
- Dec 08, 2022
-
-
viacheslav.kirichenko authored
* Prepare workspace before actions/checkout to prevent git-related workflow failures. * Replace tarantool/actions/cleanup, because it solves just the same problem. Resolves tarantool/tarantool-qa#285 NO_DOC=ci NO_TEST=ci NO_CHANGELOG=ci (cherry picked from commit f6ee11e9)
-
Yaroslav Lobankov authored
It was decided not to proceed with support for these distros. Closes tarantool/infra#162 NO_DOC=ci/cd NO_TEST=ci/cd NO_CHANGELOG=ci/cd (cherry picked from commit 739e6eb5)
-
- Dec 07, 2022
-
-
Vladimir Davydov authored
Currently, we stop without checking the authentication request body if the specified user doesn't exist. As a result, one can check if a user exists by sending a malformed authentication request: for an existing user, the server will reply with ER_INVALID_MSGPACK error while if the user doesn't exist, the error will be set to ER_CREDS_MISMATCH. To fix this, let's parse the authentication request body even if the user doesn't exist. Closes https://github.com/tarantool/security/issues/21 NO_DOC=bug fix (cherry picked from commit 42badb87)
-
Vladimir Davydov authored
The triggers are supposed to run on any authentication attempt, successful or not. Without it, the admin may not notice a malefactor enumerating user names. Closes #8017 NO_DOC=bug fix (cherry picked from commit 8a2f1653)
-