- Sep 17, 2019
-
- Sep 16, 2019
-
-
Oleg Babin authored
If the rock was packed with luarocks then the time in it is set to zeros and this is not the case with the unix format can be removed when date given is added to zipwriter_open_new_file_in_zip (luarocks/luarocks#1056) Closes #4481 (cherry picked from commit 3658cb00)
-
Nikita Pettik authored
It was forgotten to swap old and new mask (holding fields involved into foreign key relation) during space alteration (lists of object representing FK metadata are swapped successfully). Since mask is vital and depending on its value different byte-codes implementing SQL query can be produced, this mistake resulted in assertion fault in debug build and wrong constraint check in release build. Let's fix this bug and swap masks as well as foreign key lists. Closes #4495 (cherry picked from commit 33236ecc)
-
- Sep 13, 2019
-
-
Alexander Turenko authored
This commit does not change a user visible behaviour. It refactors pwd module to explicitly divide code that fetches data from passwd / group databases from code that performs deserialization of the data to Lua tables. The idea of splitting of those actions appears when it was observed that a call of getpw() / getgr() leads to problems on some systems when it is invoked during passwd / group database traveral. Now it is more obvious that we don't call getpw() during passwd traversal and getgr() during group traveral. Follows up #4428 and #4447. (cherry picked from commit 6c5d3f06)
-
Kirill Shcherbatov authored
LTO build fails on warning message: In file included from /tarantool/src/lib/core/diag.h:33:0, from /tarantool/src/box/engine.h:36, from /tarantool/src/box/memtx_engine.h:40, from /tarantool/src/box/memtx_engine.c:31: /tarantool/src/box/memtx_engine.c: In function 'metmx_tuple_chunk_delete': /tarantool/src/trivia/util.h:201:49: error: initialization from incompatible pointer type [-Werror] const typeof( ((type *)0)->member ) *__mptr = (ptr); \ ^ /tarantool/src/box/memtx_engine.c:1115:3: note: in expansion of macro 'container_of' container_of((typeof(tuple_chunk->data) *)data, ^ /tarantool/src/trivia/util.h:201:49: error: (near initialization for 'tuple_chunk') [-Werror] const typeof( ((type *)0)->member ) *__mptr = (ptr); \ ^ /tarantool/src/box/memtx_engine.c:1115:3: note: in expansion of macro 'container_of' container_of((typeof(tuple_chunk->data) *)data, Closes #4438 (cherry picked from commit 97012004)
-
- Sep 12, 2019
-
-
Mergen Imeev authored
This patch provides a test suite that allows us to make sure that the SQL BOOLEAN type works as intended. Part of #4228 (cherry picked from commit 7cf84a54)
-
Serge Petrenko authored
In a configuration with several read-only and read-write instances, if replication_connect_quorum is not greater than the amount of read-only instances and replication_connect_timeout happens to be small enough for some read-only instances to form a quorum and exceed the timeout before any of the read-write instaces start, all these read-only instances will choose themselves a read-only bootstrap leader. This 'leader' will successfully bootstrap itself, but will fail to register any of the other instances in _cluster table, since it isn't writeable. As a result, some of the read-only instances will just die unable to bootstrap from a read-only bootstrap leader, and when the read-write instances are finally up, they'll see a single read-only instance which managed to bootstrap itself and now gets a REPLICASET_UUID_MISMATCH error, since no read-write instance will choose it as bootstrap leader, and will rather bootstrap from one of its read-write mates. The described situation is clearly not what user has hoped for, so throw an error, when a read-only instance tries to initiate the bootstrap. The error will give the user a cue that he should increase replication_connect_timeout. Closes #4321 @TarantoolBot document Title: replication: forbid to bootstrap read-only masters. It is no longer possible to bootstrap a read-only instance in an emply data directory as a master. You will see the following error trying to do so: ``` ER_BOOTSTRAP_READONLY: Trying to bootstrap a local read-only instance as master ``` Now if you have a fresh instance, which has `read_only=true` in an initial `box.cfg` call, you need to set up replication from an instance which is either read-write, or has your local instance's uuid in its `_cluster` table. In case you have multiple read-only and read-write instances with replication set up, and you still see the aforementioned error message, this means that none of your read-write instances managed to start listening on their port before read_only instances have exceeded the `replication_connect_timeout`. In this case you should raise `replication_connect_timeout` to a greater value. (cherry picked from commit 037bd58c)
-
- Sep 11, 2019
-
-
Igor Munkin authored
* All test chunks related to luajit were moved from tarantool source tree to the luajit repo * Adjusted CMakeLists via creating a symlink to luajit test directory to fix out-of-source tests Closed #4478 (cherry picked from commit 43575303)
-
Kirill Yukhin authored
-
- Sep 10, 2019
-
-
Vladislav Shpilevoy authored
rows_per_wal does not allow to properly limit size of WAL logs. A user would need to estimate size of each WAL row to do that. Now WAL supports option wal_max_size allowing to limit WAL size much more precise. Part of #3762 (cherry picked from commit c7a382af)
-
- Sep 09, 2019
-
-
Kirill Shcherbatov authored
The json.encode() used to cause a segfault in case of recursive table: tbl = {} tbl[1] = tbl json.encode(tbl) Library doesn't test whether given object on Lua stack parsed earlier, because it performs a lightweight in-depth traverse of Lua stack. However it must stop when encode_max_depth is reached (by design). Tarantool's lua_cjson implementation has a bug introduced during porting original library: it doesn't handle some corner cases: entering into a map correctly increases a current depth, while entering into an array didn't. This patch adopts author's approach to check encode_max_depth limit. Thanks to handling this constraint correctly the segfault no longer occurs. Closes #4366 (cherry picked from commit d2641e66e65ab57317b8e70bb7115517ec81238e)
-
- Sep 02, 2019
-
-
Alexander V. Tikhonov authored
The test sql-tap/gh-3083-ephemeral-unref-tuples.test.lua took too long runtime and failed to finish in timeout limit of 2 minutes when it runs near the end of the running queue: No output during 120 seconds. Will abort after 120 seconds without output. List of workers not reporting the status: - 012_sql-tap [sql-tap/gh-3083-ephemeral-unref-tuples.test.lua, vinyl] at var/012_sql-tap/gh-3083-ephemeral-unref-tuples.result:0 Test hung! Result content mismatch: [File does not exists: sql-tap/gh-3083-ephemeral-unref-tuples.result] [Main process] No output from workers. It seems that we hang. Send SIGKILL to workers; exiting... Due to suggestion from Konstantin Osipov at gh-3845: https://github.com/tarantool/tarantool/issues/3845#issue-385735959 The following tests: gh-3083-ephemeral-unref-tuples.test.lua gh-3332-tuple-format-leak.test.lua where set to run only on memtx configuration. Also the test: gh-3083-ephemeral-unref-tuples.test.lua was removed from the test-run 'fragile' option flaky list. Closed #4128 (cherry picked from commit 40c94af7)
-
- Aug 29, 2019
-
-
Cyrill Gorcunov authored
We know that madvise(MADV_DONTDUMP) is present on linux based platforms only (macos doesn't support it at all, freebsd requires MADV_NOCORE or similar which is unsupported by now) thus we should not print a warning on other systems to not spam users. Fixes #4464 (cherry picked from commit 51d8e4c3)
-
Alexander V. Tikhonov authored
Added "fragile" option to the flaky tests that are not intended to be run in parallel with others. Option set at the suite.ini file at the appropriate suites with comments including the issue that stores the fail. (cherry picked from commit 165f8ee6)
-
Alexander V. Tikhonov authored
Removed the jobs that is interesting to check on gitlab-ci instead of travis-ci: - osx 13 "Sierra" - all LTO jobs - ASAN job Part of #4410 (cherry picked from commit 05477787)
-
Georgy Kirichenko authored
This is a followup for 7691154a (cherry picked from commit ff14626d)
-
Maria Khaydich authored
In case of throwing client error because of inactive function we did not destroy used port. It could possibly cause huge memory leaks as could be seen with top or its analogues when performing net.box test run in a loop. Closes #4388 (cherry picked from commit 7691154a)
-
- Aug 28, 2019
-
-
Kirill Yukhin authored
It turned out that patch d0e38d59 wasn't accompanied w/ a test. Add proper check. (cherry picked from commit c80e9416)
-
Serge Petrenko authored
Currently we only enter orphan mode when instance fails to connect to replication_connect_quorum remote instances during local recovery. On bootstrap and manual replication configuration change an error is thrown. We better enter orphan mode on manual config change, and leave it only in case we managed to sync with replication_connect_quorum instances. Closes #4424 @TarantoolBot document Title: document reaction on error in replication configuration change. Now when issuing `box.cfg{replication={uri1, uri2, ...}}` and failing to sync with replication_connect_quorum remote instances, the server will throw an error, if it is bootstrapping, and just set its state to orphan in all other cases (recovering from existing xlog/snap files or manually changing box.cfg.replication on the fly). To leave orphan mode, you may wait until the server manages to sync with replication_connect_quorum instances. In order to leave orphan mode you need to make the server sync with enough instances. To do so, you may either: 1) set replication_connect_quorum to a lower value 2) reset box.cfg.replication to exclude instances that cannot be reached or synced with 3) just set box.cfg.replication to "" (empty string) (cherry picked from commit 5a0cfe02)
-
Konstantin Osipov authored
In 3-node replica-set, registering with the leader node does not guarantee the registration record arrives to the second peer immediately. The joining node may bootstrap faster than the registration record arrives to the second peer, in which case replication will fail to create a full mesh. (cherry picked from commit a850acfd)
-
Konstantin Osipov authored
A follow up on gh-4305, fix failing args.test.py (cherry picked from commit 83ef5a17)
-
Konstantin Osipov authored
(cherry picked from commit ef14050f)
-
- Aug 27, 2019
-
-
Max Melentiev authored
To make it possible to develop and test related features on systems without systemd. WITH_SYSTEMD cmake flag is used to generate systemd related files: unit, generator script, etc. To keep this behavior and make it possible to use NOTIFY_SOCKET without other systemd-related stuff, I added WITH_NOTIFY_SOCKET cmake flag. It also required some changes to support other OS: SOCK_CLOEXEC (not available on macOS) flag for socket() is replaced with `fcntl(fd, F_SETFD, FD_CLOEXEC)` which has the same effect. MSG_NOSIGNAL flag for sendmsg is also not available on macOS. However it has SO_NOSIGPIPE flag for setsockopt which disables SIGPIPE. So it requires different solution for different OS. Inspired by https://nwat.xyz/blog/2014/01/16/porting-msg_more-and-msg_nosigpipe-to-osx/ Have to reduce send-buffer size to 4MB because larger values are not supported on macOS by default. This value should be enough for all systems because notification messages are usually less than 1KB. Fixes #4436 (cherry picked from commit 1e509dde)
-
Alexander Turenko authored
System-wide dynamic libraries usually (always?) have NEEDED and RUNPATH tags in a dynamic section (as `readelf -d /usr/lib/lib<...>.so` shows), so when we link, say, with libssl.so, which depends on libz.so, a linker does not complain against unresolved symbols that can be found in Z library (if it is installed within a system). Things are different when we linking with a static library. Say, when we linking with libssl.a, which contains an unresolved symbol from Z library, a linker reports an error. It is not possible to store an information where to find unresolved symbols (NEEDED / RUNPATH) in a static library (AFAIK). We depend on three libraries that are depend on Z library: libcurl, libssl and libcrypto (two latter are part of OpenSSL). When one of those libraries is linked statically we should link with libz.so or libz.a (depending on BUILD_STATIC flag). The patch doing exactly this. The patch changes OPENSSL_LIBRARIES variable to fix the issue with static linking of OpenSSL libraries. It also changes CURL_LIBRARIES in the same way, however this does not alter any visible behaviour, because OPENSSL_LIBRARIES is added to CURL_LIBRARIES. The latter change was made to unify the way to choose libraries to link with: it is pure refactoring part. Fixes #4437. (cherry picked from commit 2cdfaf3b)
-
Alexander Turenko authored
A manual action is needed after pulling of this commit to actually use the downstream repository instead of the upstream one: sed -i -e 's@https://github.com/curl/curl.git@https://github.com/tarantool/curl.git@' .git/config It is part of our processes to use forked repositories for submodules. Suggested by Konstantin Osipov. (cherry picked from commit 5a46639f)
-
Alexander V. Tikhonov authored
Cleaned up the .gitlab-ci.yml file from duplicating code - added templates that storres the needed configuration values for different jobs. Also moved the static_build from 'deploy' tag to 'deploy_test' tag to be sure that tests will not be run under high load.
-
Alexander Turenko authored
* Added "fragile" option with a list of tests that are not intended to be run in parallel with others. The format of the list is the same as for "disabled" option (#187, PR #188). * Ensured that non-parallel test suites and fragile tests will be run only when all parallel ones will be finished (PR #188). * Fixed reporting in case of lack of temporary result (PR #172). (cherry picked from commit 418ab172)
-
- Aug 26, 2019
-
-
Alexander Turenko authored
CentOS 6 and FreeBSD 12 implementations of getpwuid() rewind setpwent()-{getpwent()}-endpwent() loop to a start that leads to a hang during pwd.getpwall() invoke. The same is true for a getgrgid() call during setgrent()-{getgrent()}-endgrent() loop. The commit modifies pwd module to avoid getpwuid() calls during passwd database traversal and to avoid getgrgid() calls when traversing groups. The commit also fixes the important regression on CentOS 6 after f5d8331e ('lua: workaround pwd.getpwall() issue on Fedora 29'): tarantool hungs during startup due to added getpwall() call. This made tarantool unusable on CentOS 6 at all. Aside of that the commit fixes another pwd.getgrall() problem: the function gaves password entries instead of group entries. Fixes #4428. Fixes #4447. Part of #4271. (cherry picked from commit 7753d350)
-
- Aug 23, 2019
-
-
Alexander Turenko authored
app-tap.tarantoolctl.test.lua fails after 17df9edf ('tarantoolctl: allow to start instances with delayed box.cfg{}'). The commit fixes the test case that did check that an error is reported if box.cfg() was not called in an instance script. Follows up #4435. Fixes #4448. (cherry picked from commit 6c627af3)
-
- Aug 22, 2019
-
-
Yaroslav Dynnikov authored
This change is related to #4391. The objective was to collect additional information about modules, but it's hard to do without changing API. This patch will allow to monkey-patch report generation and achieve the same results without interfering the daemon behavior. (cherry picked from commit 5b9f207d)
-
Max Melentiev authored
There is a problem with calculating .msg_namelen field of msghdr struct. Instead of .msg_name = &sa, .msg_namelen = sizeof(sa.sun_family) + strlen(sd_unix_path), it must set as .msg_namelen = sizeof(sa) // larger value than current invalid one It works on linux but when I tried to enable this feature for macOS it didn't (maybe because of different order of fields in the struct). Instead of fixing calculation, I've replaced original sendmsg call with sendto, because it's a convenient shortcut which simplifies code and can prevent such mistakes. Required for #4436 (cherry picked from commit 89aae30c)
-
Max Melentiev authored
`tarantoolctl start` patches box.cfg two times: 1) before the init script to set default values and enforce some others, 2) after the init script to prevent changing a pid_file in runtime. The second patching fails if an init file does not call box.cfg{} before it's finished. This can take a place in apps with managed instances which receive configuration from external server. This patch moves the second patching into the box.cfg wrapper created during the first patching. So the second patching is performed only after box.cfg{} was invoked, so it does not fail anymore. However there is relatively minor flaw for applications that invoke box.cfg{} after init script is finished: `tarantoolctl start` goes to background only when box.cfg{} is called. Though this is not the case for daemon management systems like systemd, as they handle backgrounding on their side Fixes #4435 @TarantoolBot document Title: tarantoolctl allows to start instances without a box.cfg{} tarantoolctl now works for instances without box.cfg{} or with delayed box.cfg{} call. This can be managed instances which receive configuration from external server. For such instances `tarantoolctl start` goes to background when box.cfg{} is called, so it will wait until options for box.cfg are received. However this is not the case for daemon management systems like systemd, as they handle backgrounding on their side.
-
Nikita Pettik authored
This function implements common way of precise comparison between unsigned integer and floating point values (doubles). Currently, it is used in tuple comparators, but we need the same thing in SQL. Hence, let's move it to header containing set of utilities. (cherry picked from commit 72dbeb0e)
-
Nikita Pettik authored
To compare floating point values and integers in SQL functions compare_uint_float() and compare_int_float() are used. Unfortunately, they contain bug connected with checking border case: that's not correct to cast UINT64_MAX (2^64 - 1) to double. Proper way is to use exp2(2^64) or predefined floating point constant. To not bother fixing function which in turn may contain other tricky places, let's use instead already verified double_compare_uint64(). So that we have unified way of integer<->float comparison. (cherry picked from commit 73a4a525)
-
Alexander Turenko authored
`apt-get update <...>` fails on Debian Buster on docker_bootstrap goal (see #4331 for the similar issue). Added a description how to change dependencies in .travis.mk. (cherry picked from commit 45c2576d)
-
Nikita Pettik authored
Name duplicates are allowed for savepoints (both in our SQL implementation and in ANSI specification). ANSI SQL states that previous savepoint should be deleted. What is more, our doc confirms this fact and says that "...it is released before the new savepoint is set." Unfortunately, it's not true - currently old savepoint remains in the list. For instance: SAVEPOINT t; SAVEPOINT t; RELEASE SAVEPOINT t; RELEASE SAVEPOINT t; -- no error is raised Let's fix this and remove old savepoint from the list. (cherry picked from commit 8b8b6895)
-
Nikita Pettik authored
This allows us to completely remove SQL specific struct Savepoint and use instead original struct txn_savepoint. (cherry picked from commit 0a92ec7e)
-
Nikita Pettik authored
This procedure is processed in several steps. Firstly, we add name to struct txn_savepoint since we should be capable of operating on named savepoints (which in turn is SQL feature). Still, anonymous (in the sense of name absence) savepoints are also valid. Then, we add list (as implementation of stailq) of savepoints to struct txn: it allows us to find savepoint by its name. Finally, we patch rollback to/release savepoint routines: for rollback tail of the list containing savepoints is cut (but subject of rollback routine remains in the list); for release routine we cut tail including node being released. (cherry picked from commit 56096ff2)
-
Nikita Pettik authored
We are going to merge struct psql_txn with struct txn as a part of SQL integration into NoSQL, so let's move counter of deferred foreign key violations directly to struct txn. (cherry picked from commit 5259274d)
-
- Aug 21, 2019
-
-
Mergen Imeev authored
Hold libcurl-7.65.3. This version is not affected by the following issues: * #4180 ('httpc: redirects are broken with libcurl-7.30 and older'); * #4389 ('libcurl memory leak'); * #4397 ('HTTPS seem to be unstable'). After this patch libcurl will be statically linked when ENABLE_BUNDLED_LIBCURL option is set. This option is set by default. Closes #4318 @TarantoolBot document Title: Tarantool dependency list was changed * Added build dependencies: autoconf, automake, libtool, zlib-devel (zlib1g-dev on Debian). * Added runtime dependencies: zlib (zlib1g on Debian). * Removed build dependencies: libcurl-devel (libcurl4-openssl-dev on Debian). * Removed runtime dependencies: curl. The reason is that now we use compiled-in libcurl: so we don't depend on a system libcurl, but inherit its dependencies. (cherry picked from commit 7e51aebb)
-