- Jan 23, 2024
-
-
Sergey Bronnikov authored
There was a problem: chunked request to etcd via TLS using builtin http client returns nothing. The problem was reproduced quite often by a test `integration.general.tls` in etcd-client Lua module. The patch updates curl submodule to a version based on 8.5.0 release with applied patch with fix [1]. The patch also removes workaround for aforementioned problem made in commit aa58c212 ("httpc: use http 1.1 by default"). 1. https://github.com/curl/curl/commit/cdd905a9854305657ebbe645095e1189dcda28c7 Fixes #9547 NO_TEST=etcd-client tests NO_DOC=bugfix
-
- Jan 18, 2024
-
-
Ilya Verbin authored
This update pulls the following commit: * Introduce mp_read_int8 and mp_read_int16 functions Needed for tarantool/tarantool-ee#627 NO_DOC=internal NO_CHANGELOG=internal NO_TEST=submodule update
-
Nikolay Shirokovskiy authored
- First endswith returns boolean so fix where it compared with nil. Due to the invalid comparison we actually don't check for prompt in nested case. - Add trailing space to prompt in this test case. - Reset readline configuration in this test case. NO_CHANGELOG=test fix NO_DOC=test fix
-
- Jan 17, 2024
-
-
Vladimir Davydov authored
In contrast to space_cache_find(), space_by_id() doesn't cache the last looked up space to speed up following lookups. This is confusing, because one would expect the only difference between space_cache_find() and space_by_id() functions to be that the former sets diag while the latter doesn't. Let's move the prev_space cache to space_by_id() to fix this issue. To achieve that we need to make space_by_id() inline, which is tricky because it's called via FFI. We work around that by defining a macro space_by_id() which expands to space_by_id_fast() while still keeping the space_by_id() symbol for FFI. Last but not least, we make the last cached space global (currently it's instantiated once per each space_cache_find() call site). This is a good thing because we often call space_by_id() a few times while processing the same DML request (e.g. in memtx mvcc). NO_DOC=no user-visible behavior changes NO_TEST=no user-visible behavior changes NO_CHANGELOG=no user-visible behavior changes
-
Yaroslav Lobankov authored
- Drop testing for FreeBSD 12 since FreeBSD 14 is available - Add testing for FreeBSD 14 NO_DOC=ci NO_TEST=ci NO_CHANGELOG=ci
-
- Jan 16, 2024
-
-
Ilya Verbin authored
See the docbot request for details. Closes #9548 @TarantoolBot document Title: Document fixed-size numeric field types Product: Tarantool Since: 3.1 Root document: https://www.tarantool.io/en/doc/latest/concepts/data_model/value_store/#field-type-details ### Fixed-size field types Tarantool supports the following fixed-size numeric field types: * `uint8`: integer in range [0 .. 255] * `int8`: integer in range [-128 .. 127] * `uint16`: integer in range [0 .. 65,535] * `int16`: integer in range [-32,768 .. 32,767] * `uint32`: integer in range [0 .. 4,294,967,295] * `int32`: integer in range [-2,147,483,648 .. 2,147,483,647] * `uint64`: integer in range [0 .. 18,446,744,073,709,551,615] * `int64`: integer in range [-9,223,372,036,854,775,808 .. 9,223,372,036,854,775,807] * `float32`: 32-bit floating point number * `float64`: 64-bit floating point number These types don't affect how data is stored in Tarantool's memtx or vinyl engines but they enforce the limits when a tuple is inserted or updated.
-
Ilya Verbin authored
All the information needed by this function is stored in `field_mp_type[]' and `field_ext_type[]'. Get rid of redundant `field_type_compatibility[]', which is hard to extend and which can introduce additional bugs. NO_DOC=refactoring NO_CHANGELOG=refactoring
-
Ilya Verbin authored
commit 51af059c ("box: compare and hash msgpack value of double key field as double") changed `field_mp_type[FIELD_TYPE_DOUBLE]', but the corresponding column of `field_type_compatibility[]' wasn't updated. Now a field of type DOUBLE can store MP_UINT and MP_INT, i.e. it can store any value from fields of type UNSIGNED, NUMBER, INTEGER. In fact, FIELD_TYPE_DOUBLE is now an alias for FIELD_TYPE_NUMBER. It's hard to create a test, because e.g. during CheckSpaceFormat even if field_type1_contains_type2() erroneously returns false, then each tuple is correctly validated anyway. So this patch actually fixes performance issue. NO_TEST=see above NO_DOC=minor fix NO_CHANGELOG=minor fix
-
- Jan 15, 2024
-
-
Vladimir Davydov authored
Not used since we moved result processing to the memtx engine. NO_DOC=refactoring NO_TEST=refactoring NO_CHANGELOG=refactoring
-
Vladimir Davydov authored
Initially, we tried to upgrade tuples in the engine-independent code, for which purpose we added the result processor, see commit 21e2def9 ("box: introduce result processor"). It turned out, we still need to do some upgrade-related work in the memtx engine, see commit f7a520ef ("box: don't apply space upgrade func to DML result except for DELETE") and commit 921a0717 ("memtx: add stubs to keep track of upgraded read view tuples"). Since the memtx engine is the only engine that currently supports space upgrade, let's simplify the code by moving space upgrade handling completely in the memtx engine. This is easy to do because we already have memtx_prepare_result_tuple() helper that decompresses tuples before returning them to the user, which seems to be the perfect place for handling upgrade. NO_DOC=refactoring NO_TEST=refactoring NO_CHANGELOG=refactoring
-
- Jan 12, 2024
-
-
Vladimir Davydov authored
We have to update the test every time we add a new system tuple format because it checks the number of spaces that can be created before the tuple format count limit is reached. Let's loosen the space count check to avoid that. We do this for the new memcs engine, which will be introduced to Tarantool Enterprise Edition, because it will create a tuple format to serve internal needs. Needed for tarantool/tarantool-ee#617 NO_DOC=test fix NO_CHANGELOG=test fix
-
Vladimir Davydov authored
We need it for the memcs engine. The generic implementation used by other engines just trashes the iterator object. Needed for tarantool/tarantool-ee#617 NO_DOC=internal NO_TEST=internal NO_CHANGELOG=internal
-
Vladimir Davydov authored
The stub will be implemented in Tarantool Enterprise Edition. Needed for tarantool/tarantool-ee#617 NO_DOC=stub NO_TEST=stub NO_CHANGELOG=stub
-
Vladimir Davydov authored
The implementation of the checkpoint and join memtx engine methods is actually generic: all they need is a read view. Let's allow other engines that support creation of a consistent read view to be checkpointed and joined by the memtx engine by setting the corresponding engine flags. Currently, there's no such engines, i.e. the only engine setting the new flags is memtx itself. We will use this feature for new engines. Needed for tarantool/tarantool-ee#617 NO_DOC=internal NO_TEST=internal NO_CHANGELOG=internal
-
Nikolay Shirokovskiy authored
This implies finishing replication TX fibers and stopping applier threads. This is easy to do using existing applier_stop. We also need to make sure that there is no client fibers are in replication code after shutdown. Otherwise we may have difficulties (assertions) while freeing replication resources. This goal have two sides. First we have to finish client fibers waiting in replication code and second we should not allow to wait after shutdonw is done. Here we probably can achieve first side by just stopping appliers. But in this case client will get error other than FiberIsCancelled which is nice to have. So approach is to track client fibers in replication code and cancel them on shutdown. This approach is also aligned with iproto/relay shutdown. There is issue with graceful replication shutdown though. A good example (on which `replication/shutdown_test.lua` is based) is bootstrapping a replica with wrong auth in replication URI. In this case applier is sleeping in reconnect delay and bootstrap code waiting for READY state. Now comes server shutdown. Applier is stopped during shutdown and we hit assertion [1]. The issue is we miss bootstrap fiber notification that applier fiber is cancelled. That's why the change with `fiber_testcancel` in `applier_f`. We also drop the assertion in the `replica_on_applier_sync` because applier can switch to OFF state from any previous state if we cancel applier fiber. Part of #8423 [1] Issue assertion stack: ``` #5 0x00007fe877a54d26 in __assert_fail ( assertion=0x5637b683b07c "fiber() == applier->fiber", file=0x5637b683a03e "./src/box/applier.cc", line=2809, function=0x5637b683b05f "void applier_pause(applier*)") at assert.c:101 #6 0x00005637b62f0f20 in applier_pause (applier=0x5637b7a87a60) at /home/shiny/dev/tarantool/src/box/applier.cc:2809 #7 0x00005637b62f104b in applier_on_state_f (trigger=0x7fe877380a60, event=0x5637b7a87a60) at /home/shiny/dev/tarantool/src/box/applier.cc:2845 #8 0x00005637b645d2e3 in trigger_run_list (list=0x7fe877280de0, event=0x5637b7a87a60) at /home/shiny/dev/tarantool/src/lib/core/trigger.cc:100 #9 0x00005637b645d401 in trigger_run (list=0x5637b7a88098, event=0x5637b7a87a60) at /home/shiny/dev/tarantool/src/lib/core/trigger.cc:133 #10 0x00005637b62e4d6b in trigger_run_xc (list=0x5637b7a88098, event=0x5637b7a87a60) at /home/shiny/dev/tarantool/src/lib/core/trigger.h:173 #11 0x00005637b62e703a in applier_set_state (applier=0x5637b7a87a60, state=APPLIER_OFF) at /home/shiny/dev/tarantool/src/box/applier.cc:83 #12 0x00005637b62f0ab3 in applier_stop (applier=0x5637b7a87a60) at /home/shiny/dev/tarantool/src/box/applier.cc:2749 #13 0x00005637b62dc189 in replication_shutdown () ``` NO_CHANGELOG=internal NO_DOC=internal
-
Nikolay Shirokovskiy authored
Currently last applier error is keeped in fiber diag. This leads to some hacks like the return of -1 from applier fiber to keep the diag (fiber diag is cleared if fiber return value is 0). Also we do not use applier fiber diag as it intended - as diag set to current fiber on applier fiber join. Let's instead keep applier diag in a different place. Also let's copy error in `applier_wait_for_state` so that fiber error is not disappeared in case of bootstrap. Part of #8423 NO_TEST=refactoring NO_CHANGELOG=refactoring NO_DOC=refactoring
-
- Jan 11, 2024
-
-
Vladimir Davydov authored
An iterator doesn't pin the index it was created for. Instead, it holds a 'weak' reference to it, which is invalidated if the index is dropped. This is achieved by checking if the index can be found in the space cache by id every time the reference is accessed. Let's factor out this weak reference concept into a separate class so that we can reuse it because we'll also need it to implement the index scanner API. Needed for #9568 NO_DOC=refactoring NO_TEST=refactoring NO_CHANGELOG=refactoring
-
Yaroslav Lobankov authored
- Drop testing for macOS 12 since macOS 14 is available - Add testing for macOS 14 NO_DOC=ci NO_TEST=ci NO_CHANGELOG=ci
-
Yaroslav Lobankov authored
The issue [1] is closed, and it looks like the problem doesn't exist now. So removing the respective workaround from the action. Also, removing the workaround with upgrading packages as it is not needed anymore because now `brew` just gives a warning instead of failing when the package is already installed. [1] https://github.com/gevent/gevent/issues/1721 NO_DOC=ci NO_TEST=ci NO_CHANGELOG=ci
-
Yaroslav Lobankov authored
From time to time, the step to upload job artifacts to S3 fails due to the following error: Error: Unable to retrieve job ID by provided job name It happens in the `s3-upload-artifact` action that tries to get job ID by the name via the `get-job-id` action. Job ID is needed to compose the proper artifact name. `get-job-id` performs a request to GitHub for the list of workflow jobs and finds the job by its name and then gets its ID. For some reason, sometimes GitHub doesn't give the complete job list and there is no chance to find the job and get its ID. At least, it has been noticed for the osx.yml workflow with 36 parallel jobs. It looks like the issue resides on the GitHub side and the simplest way to resolve this is to ignore the failure and not fail the whole workflow due to this GitHub bug. NO_DOC=ci NO_TEST=ci NO_CHANGELOG=ci
-
Yaroslav Lobankov authored
When the `freebsd` workflow has become a matrix one in 0bd15468 ("ci: mv freebsd testing from per-commit to nightly"), we forgot to do the corresponding changes in the `Upload artifacts to S3` step. So adding missing changes. NO_DOC=ci NO_TEST=ci NO_CHANGELOG=ci
-
Yaroslav Lobankov authored
When `${{ matrix.tarantool-branch}}` is `release/3.0` or similar, the step to save build artifacts will fail with the following error: Error: Artifact name is not valid: osx-13-x86_64-release/3.0-debug. Contains the following character: Forward slash / This commit fixes the issue. NO_DOC=ci NO_TEST=ci NO_CHANGELOG=ci
-
Sergey Kaplun authored
<box/net.box_reconnect_after_gh-3164.test.lua> and <vinyl/tx_gap_lock.test.lua> checking some objects that should be collected may fail because these objects are referenced as the upvalues for a function inlined on some JIT trace. The objects aren't leaked; tests don't consider the JIT semantics. See more details in [1]. This patch disables JIT for the first test. The second test itself isn't affected since the commit tarantool/test-run@33fbace8307e64e66b0b2178ac952b2697673917 ("Add default server restart to each test run"). Because of this commit, the `tx.gap_locks` can't be affected by the use of the `create_iterator()` function in other tests. But to avoid similar situations in the future, the JIT is disabled for the `res.next()` function in test utils. [1]: https://github.com/tarantool/tarantool/wiki/LuaJIT-function-inlining Closes tarantool/tarantool-qa#233 Closes tarantool/tarantool-qa#276 NO_DOC=fix flaky test NO_CHANGELOG=see NO_DOC
-
- Jan 10, 2024
-
-
Mergen Imeev authored
This patch removes the static_assert(). This static_assert was necessary because after commit 037e2e44 ("sql: clean-up affinity from SQL source code") and before commit 078bcf00 ("sql: remove implicit cast from comparison opcodes"), 4 bits of the p5 field of the struct VdbeOp were used to store the field type in VDBE comparison opcodes. After the commit 078bcf00 ("sql: remove implicit cast from comparison opcodes"), these opcodes no longer need the field type, so this static_assert() is now unneeded. NO_DOC=refactoring NO_TEST=refactoring NO_CHANGELOG=refactoring
-
- Dec 29, 2023
-
-
Yaroslav Lobankov authored
It has been decided to move osx testing to the nightly basis due to lack of human and hardware resources to support per-commit testing. Part of tarantool/infra#187 NO_DOC=ci NO_TEST=ci NO_CHANGELOG=ci
-
Nikita Zheleztsov authored
Currently a leader fails to start with `attempt to index a nil value` error, when all UUIDs are specified in config. This is caused by the fact, that we try to apply names to the instance, which have not joined yet, _cluster record doesn't exist. We must skip such names. Alert will be dropeed automatically as soon as the instance is joined. Closes #9572 NO_DOC=bugfix Co-authored-by:
Alexander Turenko <totktonada.ru@gmail.com>
-
Yaroslav Lobankov authored
It has been decided to move freebsd testing to the nightly basis due to lack of human and hardware resources to support per-commit testing. Part of tarantool/infra#187 NO_DOC=ci NO_TEST=ci NO_CHANGELOG=ci
-
- Dec 27, 2023
-
-
Yaroslav Lobankov authored
The approach to build SDK since 3.0 release series is changed and will be under development for some period of time. So the `test-sdk` job is just irrelevant now and expected to fail. Let's remove the job until it is clear how to implement the integration testing in the scope of the new approach for SDK build. NO_DOC=ci NO_TEST=ci NO_CHANGELOG=ci
-
Nikolay Shirokovskiy authored
Also we now can free all resources allocated in iproto threads. Part of #8423 NO_TEST=rely on existing tests NO_CHANGELOG=internal NO_DOC=internal
-
Nikolay Shirokovskiy authored
When shutdown is started iproto stop accepting new connections yet new connections are still possible. One can use box.session.new() or use box.cfg{} to start accepting connections again. This is a minor bug but in the next patch we are going to free all iproto resources properly and rely on the fact that we stop accepting new connections. (Before iproto_free we call iproto_drop_connections to make sure all connections are finished. But if we continue to accept new connections then connection that established after dropping may not be finished.) Part of #8423 NO_CHANGELOG=internal NO_DOC=internal
-
Nikolay Shirokovskiy authored
To be able to do configuration changes in the iproto_on_shutdown_f in the next patch. Part of #8423 NO_TEST=refactoring NO_CHANGELOG=refactoring NO_DOC=refactoring
-
Sergey Bronnikov authored
The patch updates curl module to the version 8.5.0 [1][2] that brings a number of functional fixes and security fix for CVE-2023-46219 (HSTS long file name clears contents), see description in [2], and updates CMake module for building curl library. Changes in CMake module: - Option `CURL_DISABLE_HEADERS_API` was added and disabled by default [4]. - Option `CURL_DISABLE_BINDLOCAL` was added and disabled by default [5]. - Option `CURL_DISABLE_INSTALL` was added and disabled by default [6]. 1. https://curl.se/changes.html#8_5_0 2. https://github.com/curl/curl/compare/curl-8_4_0...curl-8_5_0 3. https://curl.se/docs/CVE-2023-46219.html 4. https://github.com/curl/curl/commit/33493db2af2dc6d9910f5d7c702aae6f63b8a6a6 5. https://github.com/curl/curl/commit/20bb363f25151febe9026b41b8ad65df6db20b68 6. https://github.com/curl/curl/commit/aace27b0965c10394544d1dacc9c2cb2fe0de3d3 NO_DOC=libcurl submodule bump NO_TEST=libcurl submodule bump
-
Sergey Bronnikov authored
The commit "lib: add ability to disable auths individually" [1][2] in Curl 8.3.0 removes CURL_DISABLE_CRYPTO_AUTH and introduces CMake options for a number crypto protocols. The patch reflects this change in Tarantool's build infrastructure. 1. https://github.com/curl/curl/commit/e92edfbef64448ef461117769881f3ed776dec4e 2. https://github.com/curl/curl/pull/11490 Follows up #9086 NO_CHANGELOG=third_party NO_DOC=third_party NO_TEST=third_party
-
Sergey Bronnikov authored
The commit "cmake: improve OpenLDAP builds" [1][2] in Curl deletes CMake option CURL_USE_OPENLDAP. The patch reflects this change in Tarantool's build infrastructure. 1. https://github.com/curl/curl/commit/751e168d93b4a58f3fbbe2908c0041ae2f934329 2. https://github.com/curl/curl/pull/12024 Follows up #9086 NO_CHANGELOG=third_party NO_DOC=third_party NO_TEST=third_party
-
Sergey Bronnikov authored
Commit 2e31751d ("cmake: introduce target checkpatch") introduced a target 'checkpatch'. However, target name was incorrect in a dummy target, that generated when checkpatch tool is not found. The patch fixes that. NO_CHANGELOG=cmake NO_DOC=cmake NO_TEST=cmake
-
Maksim Kokryashkin authored
This reverts commit b471fc97. Tests for GC finalizers were patched in the luajit submodule. The submodule was updated in commit 1a0bafd5 ("luajit: bump new version"). NO_DOC=Revert CI hack NO_TEST=Revert CI hack NO_CHANGELOG=Revert CI hack
-
- Dec 26, 2023
-
-
Sergey Ostanevich authored
Remove all changelogs reported in release notes for 3.0.0. NO_CHANGELOG=changelog NO_DOC=changelog NO_TEST=changelog
-
Andrey Saranchin authored
New swim:on_member_event triggers use a slightly changed new trigger API because it uses closures as triggers and a context can be passed. Firstly, swim:on_member_event returns closure over the new trigger instead of passed handler. Secondly, ctx can be passed as the second argument - it is considered as an old trigger if the object is callable and as ctx otherwise. Also, ctx can be passed as the third argument - it is considered as name if it is string and as ctx otherwise. And, ctx can be passed as the fourth argument. When one uses key-value API, ctx can be passed with key "ctx". Closes #6484 Closes #8659 NO_DOC=later
-
Andrey Saranchin authored
Triggers that were moved to the trigger registry accept trigger name as an optional argument and allow to set triggers using new key-value API. Let's provide triggers, that were not moved to the trigger registry yet, with the same functionality. For this purpose the main trigger setter, lbox_trigger_reset, is updated. Backward compatibility is a bit broken after this patch. Firstly, all the triggers were listed in order of their insertion, which is reversed order of their actual layout and call. Now they are listed in direct oreder of call. The patch changes API for all the triggers that were not moved to the trigger registry except for swim triggers - this case is a bit more complicated because of context that can be passed to the swim triggers. Note that argument `top` of `lbox_trigger_reset` is changed to `bottom` because all passed `top`s became irrelevant with the introduction of the third argument - changing it to `bottom` will help avoid a similar problem in the future. Along the way, make transactional triggers' error more descriptive and add box.session.on_access_denied to the test - it wasn't tested by mistake. Part of #6484 Part of #8659 NO_CHANGELOG=later NO_DOC=later
-
Andrey Saranchin authored
The patch rewrites Lua implementation of trigger list in C as a wrapper over list of lbox triggers. Backward compatibility is a bit broken after this patch. Firslty, despite usually all the triggers are inserted to the beginning of the trigger list, trigger list, implemented in Lua, inserted new triggers at the end. The patch fixes this inconsistency. Also, triggers using lbox_trigger_reset return nil when a trigger is deleted, and triggers using Lua implementation return removed trigger in this case. The behavior is unified now - all triggers return nil on deletion. Part of #6484 Part of #8659 NO_CHANGELOG=internal NO_DOC=internal
-