- Nov 17, 2022
-
-
Andrey Saranchin authored
The patch adds new iproto keys needed for pagination and extends tx_process_select, used by IPROTO. IPROTO and NETBOX_IPROTO versions are updated, iproto feature pagination is introduced, new keys are: 0x2e - IPROTO_AFTER_POSITION - start iteration after passed iterator position. It has type MP_STR. 0x2f - IPROTO_AFTER_TUPLE - start iteration after passed tuple. It has type MP_ARRAY. 0x1f - IPROTO_FETCH_POSITION - send position of last fetched tuple in response. It has type MP_BOOL. 0x35 - IPROTO_POSITION - iterator position, sent in response if IPROTO_FETCH_POSITION is true. It has type MP_STR. Part of #7637 NO_CHANGELOG=see later commits NO_DOC=see later commits
-
- Nov 15, 2022
-
-
Ilya Verbin authored
Currently AArch64 version of coro_transfer stores x19-x30 and d8-d15 registers to the stack, but only after that it updates the stack pointer. If a SIGALRM signal is delivered during the execution of coro_transfer, the signal handler will use the stack starting from current sp, thus corrupting the saved registers. Fix this by updating the stack pointer at the beginning of coro_transfer. x2 register is still required, because `str sp, [x0, #0]` is invalid in the A64 instruction set. Closes #7484 Closes #7523 NO_DOC=bugfix NO_TEST=Hard to create a stable reproducer, mostly covered by existing tests.
-
- Nov 11, 2022
-
-
Sergey Bronnikov authored
NO_DOC=fix protocol in link NO_TEST=fix protocol in link NO_CHANGELOG=fix protocol in link
-
Vladimir Davydov authored
The test fails with: master | 2022-11-11 09:03:32.093 [4128822] main/103/default.lua F> can't initialize storage: unlink, called on fd 30, aka unix/:(socket), peer of unix/:(socket): Address already in use Looks like it happens, because both test cases share the socket path. The fix is the same as in commit 3f86cd04 ("test: fix flaky 'test_ignore_with_force_recovery'") - use different socket paths. Follow-up commit b2dab5f4 ("memtx: log bad row on snapshot recovery error"). NO_DOC=test fix NO_CHANGELOG=test fix
-
Igor Munkin authored
* ci: add workflow for legacy CMake GNU Make build * build: fix build with the original Makefile * ci: drop integration for macOS with disabled GC64 * ci: add 'self-hosted' tag to runs-on * ci: use Ninja generator in CI workflows * ci: use CMAKE_EXTRA_PARAMS in LuaJIT integration * test: replace result variable in MakeLuaPath.cmake * ci: merge Linux and macOS workflows * ci: merge x86_64 and ARM64 workflows * ci: remove arch prefix for macOS M1 workflow * ci: remove excess parallel level setup * ci: use out of source build in GitHub Actions * test: fix tarantool suite for out of source build * test: introduce MakeLuaPath.cmake helper * test: introduce utils.profilename helper NO_DOC=LuaJIT submodule bump NO_TEST=LuaJIT submodule bum NO_CHANGELOG=ci
-
- Nov 10, 2022
-
-
Serge Petrenko authored
When replica heartbeat is read while another heartbeat is en route, it's delivery is delayed for a full replication_timeout. This can be seen in replication/qsync_basic.test.lua occasional hangs on these lines: ``` -- -- gh-5100: replica should send ACKs for sync transactions after -- WAL write immediately, not waiting for replication timeout or -- a CONFIRM. -- -- on replica: box.cfg{replication_timeout = 1000, replication_synchro_timeout = 1000} test_run:switch('default') box.cfg{replication_timeout = 1000, replication_synchro_timeout = 1000} <factored-out> -- Now commit something sync. It should return immediately even -- though the replication timeout is huge. box.space.sync:replace{4} ``` Change that so a pending heartbeat is sent immediately upon status message return from tx thread. Closes #7869 NO_TEST=hard to test NO_DOC=bugfix NO_CHANGELOG=not user-visible
-
Igor Munkin authored
Fun fact: our self-hosted macOS runner has the same name as the one provided by GitHub. Hence sometimes when no self-hosted runners are available, the public GitHub one is chosen. This patch enforces LuaJIT integration workflow to use only self-hosted runner by explicitly specifying this in runs-on section. NO_DOC=ci NO_TEST=ci NO_CHANGELOG=ci Reviewed-by:
Yaroslav Lobankov <y.lobankov@tarantool.org> Signed-off-by:
Igor Munkin <imun@tarantool.org>
-
Vladimir Davydov authored
We log bad row on xlog recovery error. We should log bad row on snapshot recovery error ase well to ease debugging. Closes #7917 NO_DOC=bug fix
-
Gleb Kashkin authored
fh:pread() will raise a clear error on wrong arguments. Closes #4963 NO_DOC=bugfix NO_CHANGELOG=bugfix
-
- Nov 09, 2022
-
-
Georgiy Lebedev authored
If we find a newer story in the secondary index, the statement of which deletes a story added in the same transaction, there can be two cases: if the secondary index is not unique, then it is conflicted by primary index (since it's `cmp_def` is extended with the primary index's `key_def`, every history chain in the secondary index has a corresponding chain in the primary index). Otherwise, the prepared story must also conflict the newer one. Summarizing the above: remove the unnecessary check. Closes #7761 NO_DOC=bugfix
-
Georgiy Lebedev authored
Gap trackers are stored in the story at the top of the history chain (see `memtx_tx_story_{un}link_top_light`): following this logic, during rollback we need to rebind them to the older story. We already maintain this in 56cf737c, since a story is not retained iff it has a newer story (which means it does not store trackers) or if it has an older story (in which case rebinding is done in `memtx_tx_story_{un}link_top_light`): add an assertion that a story deleted during rollback does not have any gap trackers and a test for this case. Follow-up 56cf737c NO_CHANGELOG=internal NO_DOC=internal
-
Georgiy Lebedev authored
`memtx_tx_story_unlink_both` is called in two separate contexts: on space delete and on rollback. In the former case we need to simply unlink the story, while in the latter case we need to rebind read and gap trackers, and, perhaps do some other logic in the future. Calling `memtx_tx_story_unlink_both` in the former context can trigger assertion: split the function and its helpers into two separate functions for each case, grouping the common logic into third `*_common` functions. Closes #7757 NO_DOC=bugfix
-
Nikolay Shirokovskiy authored
stailq_shift expects list to be non empty. Let's add assertion. This patch addresses coverity complains 1526815 and 1526816 (dup). https://scan7.scan.coverity.com/reports.htm#v43693/p13437/fileInstanceId=129122176&defectInstanceId=18601010&mergedDefectId=1526815 Closes #7913 NO_DOC=code health NO_CHANGELOG=code health NO_TEST=code health
-
Nikolay Shirokovskiy authored
We potentially pass negative size to safe_write in say_default if total is negative. We can't hit this issue currently because formatting functions currently do not return -1. Yet let's check total value where appropriate. By the way fix restoring errno in log_vsay. format_log_entry_full is introduced for this purpuse as SNPRINT macro returns in case of error. Also add assertion to safe_write. This patch addresses coverity complain 1527154 (https://scan7.scan.coverity.com/reports.htm#v43693/p13437/fileInstanceId=129123623&defectInstanceId=18608452&mergedDefectId=1527154) Part of #7913 NO_DOC=code health NO_CHANGELOG=code health NO_TEST=code health
-
Georgiy Lebedev authored
After revisiting the list of currently disabled compiler warnings it seems like the following are unjustifiably disabled: * `-Wunknown-pragmas`; * `-Wstrict-aliasing`; * `-Wunused-value`; * `-Wchar-subscripts`; * `-Wformat-truncation`. `-Wunused-value` appeared to be disabled due to a bug in Clang (see also llvm/llvm-project#14119): according to the LLVM release dates, the last affected Clang version was 3.1 and it was hopefully fixed in Clang 3.2. No currently alive (or recently EOLed) distributions offer such old Clang versions. Strict aliasing violation warnings coming from libev cannot be disabled with `system_header` pragma on GNU compilers older than 8, so we have to leave to leave it disabled for the whole project in this case. Otherwise, enable the warnings listed above for the sake of code health. Closes #7862 NO_CHANGELOG=build NO_DOC=build NO_TEST=build
-
Georgiy Lebedev authored
Fix strict aliasing rules violation by explicitly calling `memcpy`. libev is treated in a special way: -Wstrict-aliasing warning are ignored there, because: 1. libev authors claim that this is a false positive and their code is correct in respect to aliasing rules: see * http://lists.schmorp.de/pipermail/libev/2010q1/000943.html * http://lists.schmorp.de/pipermail/libev/2015q2/002540.html 2. it's a common practice to ignore compiler warning in libev: see * http://pod.tst.eu/http://cvs.schmorp.de/libev/ev.pod#COMPILER_WARNINGS * https://github.com/tarantool/tarantool/blob/dec0e0221e183fa972efa65bb0fb658112f2196f/cmake/BuildLibEV.cmake#L6-L12 Ignoring `-Wstrict-aliasing` for libev using diagnostic pragmas does not work, apparently, due to a bug in GNU: use the `system_header` pragma instead — ignoring all compiler warnings coming from libev is a win-win anyways. Needed for #7862 NO_CHANGELOG=build NO_DOC=build NO_TEST=build
-
Georgiy Lebedev authored
The path buffer's size is `PATH_MAX`, whilst we write two paths into it, the latter (`dent->d_name`) also having a maximum size of `PATH_MAX`, which triggers `-Wformat-truncation` compiler warning: check the return value of `snprintf` and mimic a system error if the path got truncated. Needed for #7862 NO_CHANGELOG=build NO_DOC=build NO_TEST=build
-
- Nov 08, 2022
-
-
Andrey Saranchin authored
There is a big caveat in current implementation of position - it is represented as a string with unprintable chars in Lua - if user will need to save it to another database or pass to another client, unprintable chars can be affected. That is why we decided to redesign position entity - now it is just a key with MP_ARRAY header, encoded to base64 format. NO_CHANGELOG=redesign of unreleased feature NO_DOC=later Part of #7639
-
Andrey Saranchin authored
When pagination is used with offset and returns no tuples while several tuples were actually skipped by offset, iterator has non-NULL position, that is why select returns non-empty position. Let's check if resulting tuples were actually found before return position. NO_CHANGELOG=bugfix for unreleased feature NO_DOC=bugfix Part of #7639
-
Vladimir Davydov authored
The module API header (module.h) is generated automatically by extracting everything between '\cond public' and '\endcond public' from headers listed in the api_headers CMake variable. We're planning to extend the module API in Tarantool EE. To achieve that, this commit includes all files listed in the new CMake variable EXTRA_API_HEADERS into api_headers. Needed for https://github.com/tarantool/tarantool-ee/issues/265 NO_DOC=build NO_TEST=build NO_CHANGELOG=build
-
- Nov 07, 2022
-
-
Georgiy Lebedev authored
Since this feature is compiler-dependent, we need to skip the test if the server was build with a compiler that does not support the `-fmacro-prefix-map` flag. Follow-up #7808 NO_CHANGELOG=test NO_DOC=test NO_TEST=test
-
Georgiy Lebedev authored
Currently, `tarantool.build.compiler` stores the `CMAKE_C_COMPILER` and `CMAKE_CXX_COMPILER` strings from CMake, which are basically paths to the compiler used for build, and are usually set to `/usr/bin/cc` and `/usr/bin/c++` accordingly, which does not yield any useful information: instead, set it to `${CMAKE_C_COMPILER_ID}-${CMAKE_C_COMPILER_VERSION}`, assuming the same compiler is used for building C and C++. Closes #7888 @TarantoolBot document Title: change of information shown in compiler information Compiler information provided by `tarantool --version` and `tarantool.build.compiler` now show `${CMAKE_C_COMPILER_ID}-${CMAKE_C_COMPILER_VERSION}` instead of paths to C and C++ compilers used to build tarantool, for instance: ```console tarantool> tarantool.build.compiler --- - Clang-14.0.0.14000029 ... tarantool> tarantool.build.compiler --- - GNU-12.2.0 ... ```
-
Georgiy Lebedev authored
The `-Wa,--debug-prefix-map` compiler flag breaks GNU-based LTO, and also we cannot reliably test this feature. Follow-up 256da010 NO_CHANGELOG=bugfix NO_DOC=bugfix NO_TEST=bugfix
-
Mergen Imeev authored
This patch renames index_def_is_valid() to index_def_check() and makes it return 0 or -1 because that function sets a diag. NO_DOC=refactoring NO_TEST=refactoring NO_CHANGELOG=refactoring
-
Mergen Imeev authored
Prior to this patch, there was no error of creating too many indexes in SQL. This led to a situation where indexes with IDs greater than BOX_INDEX_MAX were not created, but no error was thrown. For example, in the case of CREATE TABLE, only indexes with an ID less than BOX_INDEX_MAX were created. Now an error is thrown when creating too many indexes. Closes #5526 NO_DOC=bugfix
-
Mergen Imeev authored
After this patch, the list of auto-increment IDs will be reset before executing the prepared statement. Closes #6422 NO_DOC=bugfix
-
Mergen Imeev authored
In case the space format is changed after inserting tuples, the new format contains new fields, and a new index is created that works with those new fields, it is possible to get an assertion during SELECT. This problem was fixed in this path. Closes #5183 NO_DOC=bugfix
-
Sergey Ostanevich authored
The async transactions should always wait for LSN from the master after switch to replica. Closes tarantool/tarantool-qa#274 NO_CHANGELOG=testing NO_DOC=testing
-
- Nov 03, 2022
-
-
Vladimir Davydov authored
The bug was fixed in https://github.com/tarantool/msgpuck/pull/24. This commit just bumps the submodule. Closes https://github.com/tarantool/security/issues/18 NO_DOC=bug fix
-
Serge Petrenko authored
Add a forgotten changelog entry. Follow-up https://github.com/tarantool/security/issues/17 NO_DOC=changelog NO_TEST=changelog
-
Serge Petrenko authored
decimal_unpack() and hence mp_decode_decimal() didn't check length of digits array, overflowing the output structure. Fix that and a couple of typos in comments as well. Closes https://github.com/tarantool/security/issues/17 NO_DOC=security NO_CHANGELOG=security
-
- Nov 02, 2022
-
-
Timur Safin authored
Appeared that ASAN build could return nil values from child process executed via popen. Which sporadically produces error messages: not ok 1 ..console_debugger_session.test_interactive_debugger_session # ...ntool/test/app-luatest/console_debugger_session_test.lua:11: # attempt to index local 's' (a nil value) # stack traceback: Due to used timeouts we are ok to receive nil at one of a loop cycle - we simply repeat read to popen object. So handle this case gracefully. NO_DOC=bugfix NO_CHANGELOG=internal
-
Gleb Kashkin authored
SQL select1:1-8.4 test didn't have any rationale in modern tarantool SQL and had been turned off since 2017. Closes: #5737 NO_DOC=test NO_CHANGELOG=test
-
Vladimir Davydov authored
All the heavy lifting was done in the previous commit that dropped the syslog formatter. This commit just removes the checks that forbid using syslog with json. Closes #7860 @TarantoolBot document Title: JSON log format can now be used with syslog The configuration reference says that syslog is incompatible with the JSON log format: https://www.tarantool.io/en/doc/latest/reference/configuration/#confval-log_format This isn't true anymore. If JSON is used with syslog, then a JSON message body is appended to the syslog header. See https://github.com/tarantool/tarantool/issues/7860.
-
Vladimir Davydov authored
All messages written to syslog must have a header, which contains the current time, message severity, and process identity, so we have a special formatter function for syslog. As a result, the syslog log destination is incompatible with the json log format, which has its own formatter function. This is confusing, because there's nothing that prevents us from writing json in the log entry body to syslog - we just need to prepend the message with a proper header. As a preparation for befriending json and syslog, let's get rid of the syslog formatter function and instead write the header right in log_vsay in case logs are written to syslog. We just need to strip the duplicate information from the log entry in say_format_plain so as not to print the time and pid twice. Needed for #7860 NO_DOC=refactoring NO_TEST=refactoring NO_CHANGELOG=refactoring
-
Vladimir Davydov authored
We have three places in say.c where we peform exactly the same steps to obtain the current time. Let's add a helper function to avoid code and comments duplication. NO_DOC=refactoring NO_TEST=refactoring NO_CHANGELOG=refactoring
-
Vladimir Davydov authored
It's a global althoug static variable so better use say_ prefix so as not to mix it with a local variable. NO_DOC=refactoring NO_TEST=refactoring NO_CHANGELOG=refactoring
-
Yaroslav Lobankov authored
Some internal modules have been recently copied to luatest repo [1,2,3] and now they can be safely removed, and the corresponding functionality from luatest can be used instead. Affected modules: - test/luatest_helpers/misc.lua - test/luatest_helpers/fiber.lua - test/luatest_helpers/proxy/* [1] https://github.com/tarantool/luatest/pull/247 [2] https://github.com/tarantool/luatest/pull/248 [3] https://github.com/tarantool/luatest/pull/255 Closes tarantool/luatest#238 Closes tarantool/luatest#251 NO_DOC=testing stuff NO_TEST=testing stuff NO_CHANGELOG=testing stuff
-
Yaroslav Lobankov authored
Bump test-run to new version with the following improvements: - Bump luatest to 0.5.7-6-gee1f5c1 [1] - Fix detection of debug builds [2] [1] https://github.com/tarantool/test-run/pull/354 [2] https://github.com/tarantool/test-run/pull/356 Part of tarantool/luatest#238 Part of tarantool/luatest#251 NO_DOC=testing stuff NO_TEST=testing stuff NO_CHANGELOG=testing stuff
-
Timur Safin authored
tarantool.debug.getsources() used to provide lua sources only for libserver lua modules, and was not providing sources for src/box/lua/* modules. Now this code works: ```lua local tnt = require 'tarantool' local code1 = tnt.debug.getsources('box/session') local code1 = tnt.debug.getsources('@builtin/box/session..lua') ``` Closes #7839 NO_DOC=bugfix NO_CHANGELOG=later
-