- Jan 13, 2023
-
-
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)
-
Vladimir Davydov authored
The guest can't have a non-empty password - it's explicitly prevented by the _user trigger callback: https://github.com/tarantool/tarantool/blob/2ed06651c317f2d46631b0d55e4b88f2c8a6c0a0/src/box/alter.cc#L2930-L2936 So there's no need to check the guest user password in authenticate. NO_DOC=code cleanup NO_TEST=code cleanup NO_CHANGELOG=code cleanup (cherry picked from commit 26f69561)
-
Ilya Verbin authored
1. Fixed modification of a variable passed to the logging function (both log formats) tarantool> a = {foo = 'bar', file = 'c://autorun.bat'} tarantool> log.info(a) [...] tarantool> a (before) - foo: bar (after) - foo: bar file: c://autorun.bat 2. Fixed the drop of fields with reserved internal names (plain log format) tarantool> log.info({foo = 'bar', pid = 666}) (before) {"foo":"bar"} (after) {"foo":"bar","pid":666} 3. Now if 'message' field is absent, it is set to the first field of the table (JSON log format) tarantool> log.info({'Hello, world', key = 'value'}) (before) {[...], "1":"Hello, world", "key":"value", [...]} (after) {[...], "message":"Hello, world", "key":"value", [...]} 4. Fixed assertion on a table without string keys (JSON log format) If a Lua table, passed to say(), contains only integer indexes, json.encode() will encode it as an array rather than a map, thereafter say_format_json() will produce improperly formatted JSON string, or get assertion failure. Fix it by encoding all kinds of tables as maps. Closes #3853 Closes #7955 NO_DOC=Mostly bug fixes, the format of the JSON log is not documented. (cherry picked from commit 85ef1118)
-
Ilya Verbin authored
Turn LuaJIT off for this test on AArch64 in the scope of the issue [1]. Also increase grep_log_bytes. Currently the message is 235 byte long, which is pretty close to 256. If one more item is added to the traceback, the test will fail. ``` C> Potentially long select from space 'test_memtx' (512) stack traceback: builtin/box/schema.lua:2528: in function 'check_select_safety' builtin/box/schema.lua:2545: in function 'select' eval:1: in main chunk [C]: at 0x556e8ffd5c ``` [1] Related to #8011 Closes tarantool/tarantool-qa#264 NO_DOC=test fix NO_CHANGELOG=test fix (cherry picked from commit 84306671)
-
Igor Munkin authored
* Fix narrowing of unary minus. * Don't compile math.modf() anymore. * OSX/ARM64: Fix external unwinding. * Fix build with busybox grep. * BSD: Fix build with BSD grep. * OSX/ARM64: Disable unwind info. * ARM64: Reorder interpreter stack frame and fix unwinding. * OSX/ARM64: Disable external unwinding for now. * OSX: Fix build by hardcoding external frame unwinding. * Cleanup and enable external unwinding for more platforms. * test: remove TAP side effects in getmetrics tests * test: relax JIT setup in misc.getmetrics test * test: relax JIT setup in lj-430-maxirconst test * GC64: enable sysprof support Closes #6096 Closes #6976 Closes #7919 Relates to #781 Relates to #7762 Part of #7230 NO_DOC=LuaJIT submodule bump NO_TEST=LuaJIT submodule bump
-
- Dec 06, 2022
-
-
Gleb Kashkin authored
Update luacheckrc to suppress all warnings from lua loop vars with `_` prefix. This allows to make loops more verbose. Closes #8006 NO_CHANGELOG=luacheckrc fix NO_DOC=luacheckrc fix NO_TEST=luacheckrc fix (cherry picked from commit 2ed06651)
-
Yaroslav Lobankov authored
Bump test-run to new version with the following improvements: - Bump luatest to 0.5.7-18-gcb28d93 [1] [1] tarantool/test-run#364 NO_DOC=testing stuff NO_TEST=testing stuff NO_CHANGELOG=testing stuff (cherry picked from commit be73ba47)
-
- Dec 05, 2022
-
-
Yaroslav Lobankov authored
Some internal modules have been recently copied to luatest repo [1,2] and now they can be safely removed, and the corresponding functionality from luatest can be used instead. Affected modules: - test/luatest_helpers/server.lua [1] tarantool/luatest#258 [2] tarantool/luatest#266 Closes tarantool/luatest#239 NO_DOC=testing stuff NO_TEST=testing stuff NO_CHANGELOG=testing stuff (cherry picked from commit 21fc0770)
-
Yaroslav Lobankov authored
Bump test-run to new version with the following improvements: - Bump luatest to 0.5.7-17-g1387aa8 [1] [1] tarantool/test-run#360 Part of tarantool/luatest#239 NO_DOC=testing stuff NO_TEST=testing stuff NO_CHANGELOG=testing stuff (cherry picked from commit 9687656f)
-