- Dec 17, 2021
-
-
Vladimir Davydov authored
Needed for Tarantool EE. Off by default.
-
mechanik20051988 authored
After updating the uri library, the "params" table was added to the URI structure. It breaks backward compatibility in case when URI passed to "uri.format" function in old way, without params table.
-
Vladimir Davydov authored
This commit defines two cmake variables: - EXTRA_REEXPORT_LIBRARIES: list of libraries appended to reexport_libraries. - EXTRA_EXPORTS_FILE_SOURCES: list of exports file sources appended to export_file_sources. Needed to export extra symbols in Tarantool EE build.
-
Vladimir Davydov authored
Currently, we use the same luarocks hardcoded config for static build as for regular build. As a result, LUA_BINDIR, LUA_INCDIR, SYSCONFDIR, and PREFIX point to locations inside the build directory, which doesn't make any sense. Let's introduce a special hardcoded config which will set those directories to locations relative to the binary location: - LUA_BINDIR: directory where the binary is located (bindir) - PREFIX: <dir> if bindir is <dir>/bin, otherwise bindir. - LUA_INCDIR: PREFIX/include/tarantool - SYSCONFDIR: PREFIX/etc/tarantool/rocks Also, let's add the PREFIX/rocks to the rocks path if present. This is needed for Tarantool SDK bundle to work as expected. In particular the check for <dir>/bin is needed, because SDK installs binaries in bundle root, not in /bin.
-
Vladimir Davydov authored
The options are not used anymore since update to 3.1.1, see third_party/luarocks/src/luarocks/core/cfg.lua. They should have been removed by commit 4222c1f6 ("rocks: update luarocks to 3.1.1")
-
Vladimir Davydov authored
It contains Lua code. Format it appropriately. No functional changes.
-
- Dec 16, 2021
-
-
Alxander V. Tikhonov authored
On heavy loaded hosts either slow machines like VMware found the following issues: [010] --- replication/long_row_timeout.result Fri May 8 08:56:08 2020 [010] +++ var/rejects/replication/long_row_timeout.reject Mon Jun 21 04:39:08 2021 [010] @@ -23,7 +23,7 @@ [010] ... [010] box.info.replication[2].downstream.status [010] --- [010] -- follow [010] +- stopped [010] ... [010] -- make applier incapable of reading rows in one go, so that it [010] -- yields a couple of times. [010] It happened because replication downstream status check occurred too early, when it was only in 'stopped' state. This situation happens when replica done its initial join, but not reached subscription yet. To give the replication status check routine ability to reach the needed 'follow' state, it need for it using test_run:wait_downstream() routine. We don't see this issue anymore, but let's fix it still in case we ever encounter it again. Also remove the test from fragile list. Closes #4351 Co-developed-by:
Serge Petrenko <sergepetrenko@tarantool.org>
-
Mergen Imeev authored
After this patch, MAP values can be used as bind variables. However, due to the current syntax for binding in Lua, the only possible way is to use MAP values as the named bind variable. Part of #4763
-
Mergen Imeev authored
After this patch, ARRAY values can be used as bind variables. However, due to the current syntax for binding in Lua, the only possible way is to use ARRAY values as the named bind variable. Part of #4762
-
- Dec 14, 2021
-
-
Alexander Turenko authored
What is bad: a considerable amount of boilerplate code should be added to just run a simple script. I hope we'll do something with this in #6604.
-
Alexander Turenko authored
After this change the release notes are able to be built. Changed '---' to '----', so comments for a release manager are parsed correctly.
-
Alexander Turenko authored
The idea is to allow to add more checks here: I'm going to add changelogs check in a next commit.
-
Vladimir Davydov authored
This commit allows to override Tarantool version detection by setting CMake TARANTOOL_VERSION variable. This is needed to build Tarantool as a part of tarantool/sdk, which sets its own, extended version. Also, this commit updates box-py/args.test.py to allow arbitrary tags appended to the version (tarantool/sdk appends -rNNN).
-
Vladimir Davydov authored
Submodules are auto-updated in two cases: 1. When cmake is called for the first time (and there's no src/lib/small/CMakeLists.txt). 2. If git-describe version doesn't match the version stored in the VERSION file. The first case looks okay, but the second one is confusing. It means that the following sequence of commands does NOT update submodules: ```sh cmake . # initial configuration, fetches small cd src/lib/small && git checkout HEAD^ && cd - # checkout small cmake . # does NOT update small ``` while the following sequence of commands does: ```sh git commit --allow-empty -m dummy cmake . # updates small! ``` This looks confusing, inconsistent, and dangerous. Let's drop this code and let the developers update submodules manually when they need to. This effectively reverts commit c83eea60 ("CMake: automatically update submodules").
-
Vladimir Davydov authored
Use git from CMAKE_SOURCE_DIR instead of PROJECT_SOURCE_DIR so that if Tarantool is built as a sub-project, we will use the version of the main project.
-
Vladimir Davydov authored
To build audit log as a part of the box library, set the following cmake variables: - ENABLE_AUDIT_LOG: ON - AUDIT_LOG_SOURCES: audit log source files - EXTRA_BOX_INCLUDE_DIRS: header files needed for compilation and add "audit_impl.h" to EXTRA_BOX_INCLUDE_DIRS - then it will be included by "audit.h". If ENABLE_AUDIT_LOG is unset, then a stub implementation is built, which spits a warning to the log on an attempt to configure audit log.
-
Vladimir Davydov authored
Needed for the tests to pass with enabled audit log.
-
- Dec 13, 2021
-
-
Aleksandr Lyapunov authored
Now there's a lot of load_*/store_* functions that are designed for unaligned access to values in data stream. Unfortunately they are written in a way that makes new compilers to warn about outside bounds. Rewrite it in the most safe, cross-platform and efficient way - using memcpy. Note that memcpy with compile-time-defined size is recognized by the magority of compilers and they make the most efficient operation. Closes #6703
-
Vladimir Davydov authored
If the tarantool repository is used as a submodule named <foobar> in another repository, then the statically built binary will be placed in <binary_dir>/<foobar>/src/tarantool not in <binary_dir>/src/tarantool where static-build/CMakeLists.txt currently tries to look it up in order to run `ctest` and so we can't use static-build/CMakeLists.txt as is. Let's instead use <install_dir>/bin/tarantool This way `ctest` will work for static-build in both open-source and EE repository without requiring any modifications.
-
Alexander Turenko authored
We anyway run all tests on graviton machines in centos_{7,8}_aarch64 and fedora_{33,34}_aarch64 jobs.
-
Alexander Turenko authored
Regarding debug_aarch64: we had old git on odroid machines (see PR #6180), but now we use graviton ones and, it seems, it becomes irrelevant. Regarding memtx_allocator_based_on_malloc: it seems, checkout@v1 here is due to usage of Debian Stretch (with git 2.11) in docker, as in older release workflow. Updated it in the spirit of PR #5949. Left actions/checkout@v1 in containers jobs (coverity and jepsen*): it should be revisited separately. Left actions/checkout@v1 in perf_* jobs: they run on special machines and I don't want to dig inside this part of the infrastructure ATM.
-
Alexander Turenko authored
AFAIK we anyway run self-hosted runners from root due to all those problems like [1]. No reason to include the hack into every workflow file. If we'll going to start runners from a non-root user, it is better to pass `--user $PROPER_UID` to all docker jobs instead, see [2]: at least it does not require to place a boilerplate into all workflow files. Didn't touch perf_* jobs: don't want to dig inside this part of the infrastructure ATM. It reverts PR #5953. [1]: https://github.com/actions/checkout/issues/211 [2]: https://github.com/actions/runner/issues/691
-
Alexander Turenko authored
AFAIU it only has meaning for jobs constructed with matrix expansion. See the documentation: [1]. It is relevant to [2] as well, but already fixed on nektos/act side. [1]: https://docs.github.com/en/actions/learn-github-actions/workflow-syntax-for-github-actions#jobsjob_idstrategyfail-fast [2]: https://github.com/tarantool/tarantool-qa/issues/118
-
Timur Safin authored
Workaround for #6599 where we may randomly fail on AWS Graviton machines, while it's working properly when jit disabled. Follow-up to #5941 Relates to #6599
-
VitaliyaIoffe authored
There was a build problem with CMAKE_BUILD_TYPE=Debug build on ARM64. It was fixed in 224cb68c (build: fix build on Linux ARM64 with CMAKE_BUILD_TYPE=Debug), before this fix '-DCMAKE_C_FLAGS="-Wno-type-limits "' was used to avoid the issue, implemented by 72c77166 (github-ci: add GitHub Actions workflow for Odroid). Follow-up #6143
-
Andrey Kulikov authored
tarantool debian package MUST NOT depends on binutils package. This is due to the fact that binutils include linker and assembler, what in most cases forbidden on production servers. This dependency is a residual from times, when tarantool did use libbfd for stack unwinding. Now it simply does not required at all. Fixes #6699
-
mechanik20051988 authored
Previously, for "listen" and "replication" options URI can be passed as a number, as a string value or as a table, which contains numbers and strings, no special properties for URIs was available. Now user can pass URIs in different ways, same as in tarantool "uri" library: as before, as a table which contains URI and it's parameters in "param" table, as a table which contains URI strings and URI tables. Same as in "uri" library, which internally used to parse new "listen" and "replication" there are different ways to specify properties for URI: in a string which contains URI, after '?' delimiter, in a table which contains URI in "params" table, in "default_params" table if it is default parameters for all URIs. Closes #5928 @TarantoolBot document Title: implement ability to pass several URIs in different ways Now there are several ways to pass multiple URIs for box.cfg.listen and box.cfg.replication: ```lua -- As a string with one or several URIs separated by commas -- (provides backward compatibility): box.cfg { listen = "127.0.0.1:3301, /unix.sock, 3302" } -- As an array which contains string URIs (unambiguous short form): box.cfg { listen = {"127.0.0.1:3301", "/unix.sock", "3302"} } -- As an array of tables with 'uri' field -- (may be extended with more fields in future): box.cfg { listen = { {uri = "127.0.0.1:3301"}, {uri = "/unix.sock"}, {uri = 3302} } } ```
-
mechanik20051988 authored
Previously, URI can be passed as a string, which contains one URI or several URIs separated by commas. Now URIs can be passed in different ways: as before, as a table which contains URI and it's parameters in "param" table, as a table which contains URI strings and URI tables. Also there are different ways to specify properties for URI: in a string which contains URI, after '?' delimiter, in a table which contains URI in "params" table, in "default_params" table if it is default parameters for all URIs. For this purposes new method `parse_many` was implemented in tarantool `uri` library. Also `parse` method was updated to make possible the same as new `parse_many` method but only for single URI. ```lua uri = require('uri') -- Single URI, passed as before uri.parse_many("/tmp/unix.sock") -- Single URI, with query paramters uri.parse_many("/tmp/unix.sock?q1=v1&q2=v2") -- Several URIs with parameters in one string, separated by commas uri.parse_many("/tmp/unix.sock_1?q=v, /tmp/unix.sock_2?q=v") -- Single URI passed in table, with additional parameters, passed -- in "params" table. This parameters overwrite parameters from -- URI string (q1 = "v2" in example below). uri.parse_many({"/tmp/unix.sock?q1=v1", params = {q1 = "v2"}}) -- For parse it's also works now uri.parse({"/tmp/unix.sock?q1=v1", params = {q1 = "v2"}}) -- Several URIs passed in table with default parameters, passed -- in "default_params" table, which are used for parameters, which -- not specified for URI (q3 parameter with "v3" value corresponds -- to all URIs, and used if there is no such parameter in URI). uri.parse_many({ "/tmp/unix.sock_1?q1=v1", { uri = "/tmp/unix.sock_2", params = { q2 = "v2" } }, default_params = { q3 = "v3" } }) ```
-
mechanik20051988 authored
Implement ability to parse a string, which contains several URIs separated by commas. Each URI can contain different query parameters after '?'. All created URIs saved in new implemented struct `uri_set`. Part of #5928
-
mechanik20051988 authored
Previously, the part of the URI string that comes after the first '?' was saved as a single unit in the field `query` as a part of `struct uri`. Now an array of URI paramters has been added to the uri structure, and query is subjected to the additional parsing and URI query parameters are extracted from it. The separator symbol between URI query parameters is '&', the separator symbol between parameter and it's value is '='. For example URI = "/tmp/unix.sock?q1=v11&q1=v12&q2=v2" has two parameters: parameter 'q1' with two values 'v11' and 'v12' and parameter 'q2' with value 'v2'. Part of #5928 Closes #1175
-
mechanik20051988 authored
In the future, it is planned to extend the URI structure to allow its passing with different options and in different formats (see next commit `uri: implement ability to parse URI query paramters` for example). For these purposes, it is planned to use functions that modify the source string, for example `strtok_r`, so we need to rework the URI structure to create copies of the string for each of the URI components. Part of #5928
-
mechanik20051988 authored
In the next commit we implement new `struct uri` and rename current `struct uri` to `struct uri_raw` which will be located in uri_parser.* files. Since git does not understand that we renamed file, if in the same commit we create file with the same name that file had before renaming, we will perform the renaming in a separate commit. Part of #5928
-
mechanik20051988 authored
Previously in case when unix socket URI with query didn't contain "unix/:" prefix, parsing of this URI was incorrect. For example "/unix.sock?q=v" was parsed into "path: /unix.sock" and "query: x=y" instead of "host: unix/", "service: /unix.sock", "unix: /unix.sock" and "query: x=y". Now parsing of unix socket URI is independent from "unix/:" prefix and correct. Pay attention, all parsing logic is realized in uri.rl file which compiled in uri.c using 'ragel'. Part of #5928
-
mechanik20051988 authored
The third parameter passed to the 'test:is' function is a message and usually should described what test checked.
-
- Dec 10, 2021
-
-
Andrey Saranchin authored
Currently, select/pairs/get look at an :array part of passed table, that is why different problems occurs when passed to select() table is not a regular array. Now we will check if passed table is not "clear dict" (not empty table without array part). Invalid queries like s:select{key = 'value'} will fail with an appropriate error, but the problems with dicts containing array part still remain (for example, s:select{1, key = 'value'} is the same as s:select{1}). Closes #6167
-
Vladimir Davydov authored
Without it `tarantoolctl rocks` would require luarocks to be installed on the system, which isn't always possible.
-
Vladimir Davydov authored
To avoid possible name clashes: e.g. we might want to add a module 'dump' to the built-in lib, but the symbol name dump_lua is already taken for 'jit.dump' - so better rename dump_lua to jit_dump_lua.
-
Vladimir Davydov authored
Currently, the symbol name is deducted from the filename, but it may lead to name clashes if different packages have modules with same names. Let's pass the symbol name explicitly to avoid that. This is needed to embed luarocks in static build.
-
Vladimir Davydov authored
This is needed to embed luarocks in static build.
-
Vladimir Davydov authored
Zlib is used in OpenSSL and in libCURL. Besides, we will need it for lua-zlib. So better define FindZLIB. Note, `add_library(ZLIB::ZLIB UNKNOWN IMPORTED)` and setting the corresponding properties in FindZLIB.cmake is needed to build libcurl, which depends on zlib.
-