- May 21, 2020
-
-
Vladislav Shpilevoy authored
Msgpuck functions mp_snprint() and mp_fprint() now support customizable MP_EXT serializer. This patch adds such for MP_UUID. It is not activated yet, but will be later, when last extension - MP_ERROR - also gets its serializer. Part of #4719 Reviewed-by:
Cyrill Gorcunov <gorcunov@gmail.com> Reviewed-by:
Serge Petrenko <sergepetrenko@tarantool.org> Reviewed-by:
Nikita Pettik <korablev@tarantool.org> Reviewed-by:
Alexander Turenko <alexander.turenko@tarantool.org>
-
Vladislav Shpilevoy authored
Msgpuck functions mp_snprint() and mp_fprint() now support customizable MP_EXT serializer. This patch adds such for MP_DECIMAL. It is not activated yet, but will be later, when other extensions also get their serializers. Part of #4719 Reviewed-by:
Cyrill Gorcunov <gorcunov@gmail.com> Reviewed-by:
Serge Petrenko <sergepetrenko@tarantool.org> Reviewed-by:
Nikita Pettik <korablev@tarantool.org> Reviewed-by:
Alexander Turenko <alexander.turenko@tarantool.org>
-
Vladislav Shpilevoy authored
In the new version an API is added to be able to customize MP_EXT serializer for mp_snprint() and mp_fprint() functions. Part of #4719 Reviewed-by:
Cyrill Gorcunov <gorcunov@gmail.com> Reviewed-by:
Serge Petrenko <sergepetrenko@tarantool.org> Reviewed-by:
Nikita Pettik <korablev@tarantool.org> Reviewed-by:
Alexander Turenko <alexander.turenko@tarantool.org>
-
Alexander Turenko authored
It is hotfix for the previous test-run update, where 'core = app' test suites starts to support 'use_unix_sockets_iproto' option. We found a case when unix socket names may clash and attempt to listen on the socket will report 'Address already in use' error. It is fixed in this test-run update. See more in [1]. [1]: https://github.com/tarantool/test-run/pull/211
-
- May 20, 2020
-
-
Alexander Turenko authored
Support 'use_unix_sockets_iproto' suite.ini option in 'core = app' test suites. It'll allow to workaround TCP port choosing race (see more in [1]) by using Unix sockets instead of TCP ones: we did the same for 'core = tarantool' test suites in [2]. [1]: https://github.com/tarantool/test-run/issues/141 [2]: 60f84cbf ('test: use unix sockets for iproto connections') Part of #4459.
-
Nikita Pettik authored
vy_read_iterator_cmp_stmt() uses tuple_compare_with_key() under the hood which follows next convention: (a) it returns 0 if key_fields of tuple equal to given key; (b) < 0 if key_fields less than given key; (c) > 0 otherwise. However, comment to vy_read_iterator_cmp_stmt() says that: (a) it returns -1 if first statement precedes second one; (b) 0 if they at the same position; (c) +1 if first statement supersedes second one. so, since there's no "normalization" of return code from tuple_compare_with_key() it would be correct to say that vy_read_iterator_cmp_stmt() returns: (a) it returns arbitrary integer value < 0 if first statement precedes second one; (b) 0 if they at the same position; (c) arbitrary integer value > 0 if first statement supersedes second one.
-
Kirill Yukhin authored
Add MAP_STACK to mmap() flags.
-
Alexander V. Tikhonov authored
Changed number of tests to packaging testing jobs from suites: "unit/ app/ app-tap/ box/ box-tap/ engine/ vinyl/", to all suites except 'replication/' suite which has special issue for it's enabling: https://github.com/tarantool/tarantool/issues/4798 Also added testing to the all available packing jobs except 'CentOS 6'. Removed test-run option that run testing inline to be able to run it in parallel. Also changed 'test-run' to 'make test-force' command. Closes #4599
-
Alexander V. Tikhonov authored
Found that issues #1227 and #1322 were closed, returned the tests blocked by it into the testing. Part of #4599
-
Alexander V. Tikhonov authored
Tarantool packages build scenario at rpm/tarantool.spec installs Python packages for Tarantool testing. In some latest OS like Fedora 32 old Python packages based on Python 2 version were deprecated and changed to Python 3. Currently Tarantool testing based on Python 2 which packages stored at local backport repository and it should be used from there calling it as python2-* packages. Issue: ... No matching package to install: 'python-yaml >= 3.0.9' ... Not all dependencies satisfied Error: Some packages could not be found. Needed for #4599 Closes #4965
-
Alexander.V Tikhonov authored
Found that modules may have only sources packages w/o binaries packages. Script updated to be able to work with only binaries either sources RPM packages. The same fix was already done for DEB packages at commit 4527a4da. Close #4839
-
Alexander V. Tikhonov authored
Fragiled flaky tests from parallel runs to avoid of flaky fails in regular testing: app/fiber.test.lua ; gh-4987 app/fiber_channel.test.lua ; gh-4961 app/socket.test.lua ; gh-4978 box/alter_limits.test.lua ; gh-4926 box/misc.test.lua ; gh-4982 box/role.test.lua ; gh-4998 box/rtree_rect.test.lua ; gh-4994 box/sequence.test.lua ; gh-4996 box/tuple.test.lua ; gh-4988 engine/ddl.test.lua ; gh-4353 replication/box_set_replication_stress ; gh-4992 replication/recover_missing_xlog.test.lua ; gh-4989 replication/replica_rejoin.test.lua ; gh-4985 replication/wal_rw_stress.test.lua ; gh-4977 replication-py/conflict.test.py ; gh-4980 vinyl/errinj_ddl.test.lua ; gh-4993 vinyl/misc.test.lua ; gh-4979 vinyl/snapshot.test.lua ; gh-4984 vinyl/write_iterator.test.lua ; gh-4572 xlog/panic_on_broken_lsn.test.lua ; gh-4991 Part of #4953
-
Sergey Bronnikov authored
Part of #4967
-
Sergey Bronnikov authored
Part of #4967
-
Sergey Bronnikov authored
Part of #4967
-
Sergey Bronnikov authored
- define macros LOG_MAKEPRI() on OpenBSD as it is absent - replace sigtimedwait() by sigwait() as latter is unsupported on OpenBSD Part of #4967
-
Sergey Bronnikov authored
Part of #4967
-
Sergey Bronnikov authored
Part of #4967
-
Sergey Bronnikov authored
Part of #4967
-
Sergey Bronnikov authored
OpenBSD includes DL library in a base system Part of #4967
-
Sergey Bronnikov authored
Part of #4967
-
Sergey Bronnikov authored
Part of #4967
-
Alexander Turenko authored
killpg() on Mac OS may don't deliver a signal to a process: it seems that there is a race when a process is just forked. It means that popen_handle:close() may leave a process alive, when `opts.setsid` and `opts.group_signal` are set. There is simple reproducer, which does not leave alive `sleep 120` processes on Linux, but does it on Mac OS (within three-four runs in rows): | #include <signal.h> | #include <unistd.h> | #include <fcntl.h> | | int | main() | { | char *child_argv[] = { | "/bin/sh", | "-c", | "sleep 120", | NULL, | }; | pid_t pid; | int fd[2]; | pipe(fd); | fcntl(fd[0], F_SETFD, FD_CLOEXEC); | fcntl(fd[1], F_SETFD, FD_CLOEXEC); | | if ((pid = fork()) == 0) { | /* Child. */ | close(fd[0]); | setpgrp(); | for (int i = 0; i < 10; ++i) { | /* Proceed with killpg. */ | if (i == 5) | close(fd[1]); | if (fork() == 0) { | /* Child. */ | execve("/bin/sh", child_argv, NULL); | } | } | } else { | /* Parent. */ | close(fd[1]); | char c; | read(fd[0], &c, 1); | killpg(pid, SIGKILL); | } | return 0; | } Compile it (`cc test.c -o test`) and run several times: $ for i in $(seq 1 1000); do \ echo $i; \ ./test \ && ps -o pid,pgid,command -ax | grep [s]leep \ && break; \ done This is the reason why `sleep 120` process may be alive even when the whole test passes. test-run captures stdout and stderr of a 'core = app' test and waits EOF on them. If a child process inherit one of them or both, the fd is still open for writing and so EOF situation will not appear until `sleep 120` will exit. This commit doesn't try to overcome the root of the problem, but close stdout and stderr for the child process that may not be killed / exited in time. Aside of this, updated found Mac OS peculiars in API comments of C and Lua popen modules. Fixes #4938 @TarantoolBot document Title: popen: add note re group signaling on Mac OS Copyed from the popen_handle:signal() updated description: > Note: Mac OS may don't deliver a signal to a process in a group when > opts.setsid and opts.group_signal are set. It seems there is a race > here: when a process is just forked it may be not signaled. Copyed from the popen_handle:close() updated description: > Details about signaling: > > <...> > - There are peculiars in group signaling on Mac OS, > @see popen_handle:signal() for details. Follows up https://github.com/tarantool/doc/issues/1248
-
Alexander Turenko authored
popen_delete() always frees a handle memory even when it reports a failure to send SIGKILL, see [1]. We should reflect this contract in popen_handle:close() and mark the handle as closed despite popen_delete() return value. There are cases, when killpg() fails with EPERM on Mac OS, so popen_delete() reports a failure. See [1] for more information. [1]: 01657bfb ('popen: always free resources in popen_delete()') Fixes #4995
-
- May 19, 2020
-
-
Vladislav Shpilevoy authored
Closes #4689 @TarantoolBot document Title: box.session.push() 'sync' is deprecated box.session.push() had two parameters - data to push and 'sync'. The sync was a request ID with which the out of bound data should be pushed into a socket. This was introduced as a workaround for #3450, and is useless since its resolution. A user anyway can't push to different sessions, where that parameter could be useful. And pushing into requests of the same session, on the contrary, is something not really needed anywhere, not portable to non-binary session types (console, background), and is just dangerous since it is easy to add a bug here. The patch removes the parameter. Now there will be thrown a 'Usage' error at attempt to use 'sync' parameter. In version 2.4 it is deprecated, prints warnings into logs, but still works. In 2.5 it is removed completely.
-
Kirill Yukhin authored
Revert 03790ac5 commit in small library part.
-
- May 18, 2020
-
-
Vladislav Shpilevoy authored
dynamic-list (exported_symbols_list on Mac) was used to forbid export of all symbols of the tarantool executable except a given list. Motivation of that was to avoid hacking the linker with false usage of symbols needed to be exported. As a consequence, symbols not listed in these options became invisible. Before these options, when a symbol was defined, but not used in the final executable, the linker could throw it away, even though many symbols were used by Lua FFI, or should be visible for user's dynamic modules. Where the linker, obviously, can't see if they are needed. To make the linker believe the symbols are actually needed there was a hack with getting pointers at these functions and doing something with them. For example, assume we have 'test()' function in 'box' static library: int test(void); It is not used anywhere in the final executable. So to trick the linker there is a function 'export_syms()' declared, which takes a pointer at 'test()' and seemingly does something with it (or actually does - it does not matter): void export_syms() { void *syms[] = {test}; if (time(NULL) == 0) { syms[0](); syms[1](); ... } } Some users want to use not documented but visible symbols, so the patch removes the dynamic-list option, and returns the linker hack back. But with 0 dependencies in the export file. Closes #2971
-
Vladislav Shpilevoy authored
src/cpu_feature.c, src/box/error.cc and src/box/vclock.c were used twice. As a result it could lead to duplicate symbols.
-
Cyrill Gorcunov authored
To make sure ULL constants are not broken. Part-of #4682 Signed-off-by:
Cyrill Gorcunov <gorcunov@gmail.com>
-
Cyrill Gorcunov authored
I do not drop the serpent module for a while since I need to make sure that everything work as expected as we've not break backward compatibility significantly (though we didn't claim the lua mode output is stable enough). Fixes #4682 Signed-off-by:
Cyrill Gorcunov <gorcunov@gmail.com>
-
Cyrill Gorcunov authored
When we print output in console (especially in Lua mode) it is impossible to find out the internal type an entry represents, which in turn leads to inability to encode "ULL" entries properly. Moreover we always introduce new types (for example decimals, uuids) and the serpent module we currently use for encodings has no clue about them. Thus lets implement own lua serializer similarly to the yaml encoder. This allows us to properly detect every field and encode it accordingly. Part-of #4682 Signed-off-by:
Cyrill Gorcunov <gorcunov@gmail.com>
-
Cyrill Gorcunov authored
As we gonna implement lua output serializer lets rename luaL_yaml_default to serializer_yaml which will be more general name, for other serializers we will use same serializer_ prefix. Part-of #4682 Signed-off-by:
Cyrill Gorcunov <gorcunov@gmail.com>
-
Cyrill Gorcunov authored
This will allow us to implement own formatter for Lua output mode, so to be precise which exactly formatter is caller lets rename general "format" to "format_yaml". Part-of #4682 Signed-off-by:
Cyrill Gorcunov <gorcunov@gmail.com>
-
Cyrill Gorcunov authored
For some reason we're using spaces here to adjust code. Signed-off-by:
Cyrill Gorcunov <gorcunov@gmail.com>
-
Cyrill Gorcunov authored
For better maintainance. Signed-off-by:
Cyrill Gorcunov <gorcunov@gmail.com>
-
Cyrill Gorcunov authored
The member is defined as unsigned 32 bit value, so we have to use an exactly the same type here. Signed-off-by:
Cyrill Gorcunov <gorcunov@gmail.com>
-
- May 15, 2020
-
-
Vladislav Shpilevoy authored
When a new option is added, app-tap/init_script outputs big diff. Because all options are printed with ordinal indexes. Addition of a new option changes indexes of all options after the new one. The patch removes indexes from the output making diff smaller, when a new option is added.
-
Alexander V. Tikhonov authored
Release branches should be regularly run using gitlab-ci pipeline schedules: https://gitlab.com/tarantool/tarantool/pipeline_schedules It will help to detect flaky issues. But there is no need to rerun too long running performance testing, to block it in schedules the option 'schedules' in 'except:' field was set. Part of #4974
-
Alexander V. Tikhonov authored
Set all test suites at OSX testing. Close #4818
-
Serge Petrenko authored
Since the anonymous replica implementation, it was forbidden to replicate (join/subscribe/register) from anonymous instances. Actually, only joining and register should be banned, since an anonymous replica isn't able to register its peer in _cluster anyway. Let's allow other anonymous replicas, but not the normal ones, to subscribe to an anonymous replica. Also remove unnecessary ER_UNSUPPORTED errors from box_process_join() and box_process_register() for anonymous replicas. These cases are covered with ER_READONLY checks later on, since anonymous replicas must be read-only. Note, this patch doesn't allow normal instances to subscribe to anonymous ones. Even though it is technically possible, it may bring more problems than profits. Let's allow it later on if there's an explicit demand. Closes #4696
-