- May 29, 2024
-
-
Georgiy Lebedev authored
Logically, we call triggers after running statements. These triggers can make significant changes (for instance, DDL triggers), so, for consistency, we should call the statement's `on_rollback` triggers before rolling back the statement. This also adheres to the logic that transaction `on_rollback` triggers are called before rolling back individual transaction statements. One particular bug that this patch fixes is rolling back of DDL on the `_space` space. DDL is essentially a replace operation on the `_space` space, which also invokes the `on_replace_dd_space` trigger. In this trigger, among other things, we swap the indexes of the original space, `alter->old_space`, which is equal to the corresponding transaction `stmt->space`, with the indexes of the newly created space, `alter->new_space`: https://github.com/tarantool/tarantool/blob/de80e0264f7deb58ea86ef85b37b92653a803430/src/box/alter.cc#L1036-L1047 If then a rollback happens, we first rollback the replace operation, using `stmt->space`, and only after that do we swap back the indexes in `alter_space_rollback`: https://github.com/tarantool/tarantool/blob/de80e0264f7deb58ea86ef85b37b92653a803430/src/box/memtx_engine.cc#L659-L669 https://github.com/tarantool/tarantool/blob/de80e0264f7deb58ea86ef85b37b92653a803430/src/box/alter.cc#L916-L925 For DDL on the _space space, the replace operation and DDL occur on the same space. This means that during rollback of the replace, we will try to do a replace in the empty indexes that were created for `alter->new_space`. Not only does this break the replace operation, but also the newly inserted tuple, which remains in the index, gets deleted, and access to it causes undefined behavior (heap-use-after-free). As part of the work on this patch, tests of rollback of DDL on system spaces which use `on_rollback` triggers were enumerated: * `_sequence` — box/sequence.test.lua; * `_sequence_data` — box/sequence.test.lua; * `_space_sequence` — box/sequence.test.lua; * `_trigger` — sql/ddl.test.lua, sql/errinj.test.lua; * `_collation` — engine-luatest/gh_4544_collation_drop_test.lua, box/ddl_collation.test.lua; * `_space` — box/transaction.test.lua, sql/ddl.test.lua; * `_index` — box/transaction.test.lua, sql/ddl.test.lua; * `_cluster` — box/transaction.test.lua; * `_func` — box/transaction.test.lua, box/function1.test.lua; * `_priv` — box/errinj.test.lua, box-luatest/rollback_ddl_on__priv_space_test.lua; * `_user` — box/transaction.test.lua, box-luatest/gh_4348_transactional_ddl_test.lua. Closes #9893 NO_DOC=<bugfix> (cherry picked from commit d529082f)
-
Georgiy Lebedev authored
In scope of #9893 we are going to run statement `on_rollback` triggers before rolling back the corresponding statement. During rollback of DDL in the `_priv` space, the database is accessed from `user_reload_privs` to reload user privileges, so we need it to account for the current statement being rolled back: i.e., the new tuple that was introduced (if any) must not be used, while the old tuple (if any) must be used. Needed for #9893 NO_CHANGELOG=<refactoring> NO_DOC=<refactoring> (cherry picked from commit 797c04ff)
-
Ilya Verbin authored
Currently on_rollback triggers are called on rollback of the whole transaction. To make it possible to invoke them on rollback to a savepoint, we need to pass a statement at which the savepoint was created. Needed for #9340 NO_DOC=refactoring NO_TEST=refactroring NO_CHANGELOG=refactoring (cherry picked from commit a1d85827)
-
Vladislav Shpilevoy authored
It could fail in ASAN build. Can't tell why just there. The main reason was that in a topology server1 + server2->server3 one of the cases - did a txn on server1, - then enabled server2->server3 replication, - then waited for server2->server3 sync, - and instantly assumed the txn reached server3. Surely it not always did. At the server2->server3 sync the txn might not had reached server2 itself yet. The fix is as simple as explicitly ensure the txn is on server2 before waiting server2->server3 sync. Another potential for flakiness was that the default timeout in luatest.helpers.retrying is super low, just 5 seconds. The patch manually bumps it to 60 seconds to be sure any future failures wouldn't be related to too small timeout. Closes #10031 NO_DOC=test NO_CHANGELOG=test (cherry picked from commit d4ea121b)
-
Georgiy Lebedev authored
Bump the OpenSSL library version to 3.2.1 and remove OpenSSL patches which are already present in the updated library version. Disable modules in OpenSSL configuration to make sure the OpenSSL 3.0 legacy provider is compiled into the library. Closes #7502 NO_DOC=<dependency bump> NO_TEST=<dependency bump> Co-authored-by:
Sergey Bronnikov <sergeyb@tarantool.org> (cherry picked from commit 8de22969)
-
- May 23, 2024
-
-
Nikolay Shirokovskiy authored
``` /home/shiny/dev/tarantool/src/lib/core/coio_task.c:114:58: error: ‘calloc’ sizes specified with ‘sizeof’ in the earlier argument and not in the later argument [-Werror=calloc-transposed-args] 114 | struct cord *cord = (struct cord *)calloc(sizeof(struct cord), 1); ``` NO_TEST=build fix NO_CHANGELOG=build fix NO_DOC=build fix (cherry picked from commit fb6b6c60)
-
- May 22, 2024
-
-
Andrey Saranchin authored
When upgrading a space, attribute `has_optional_parts` of indexes can be changed. So in order to correctly index both old and new tuples we should set new min_field_count value to the minimal min_field_count of old and new formats. Actual value will be set when space upgrade completes. Part of tarantool/tarantool-ee#698 Part of tarantool/tarantool-ee#750 NO_TEST=in ee NO_CHANGELOG=in ee NO_DOC=bugfix (cherry picked from commit c449ada4)
-
- May 21, 2024
-
-
Serge Petrenko authored
wal_queue_max_size took effect only after the initial box.cfg call, meaning that users with non-zero `replication_sync_timeout` still synced using the default 16 Mb queue size. In some cases the default was too big and the same issues described in #5536 arose. Fix this. Closes #10013 NO_DOC=bugfix (cherry picked from commit ab0f7913)
-
- May 20, 2024
-
-
Vladimir Davydov authored
The code setting ER_TUPLE_FOUND uses index_name_by_id() to find the index name, but it passes an index in the dense index map to it while the function expects an index in the sparse index map. Apparently, this doesn't work as expected after an index is removed from the middle of the index map. This bug was introduced by commit fc3834c0 ("vinyl: check key uniqueness before modifying tx write set"). Instead of just fixing the index passed to index_name_by_id(), we do a bit of refactoring. We stop passing index_name and space_name to vy_check_is_unique_*() functions and instead get them right before raising ER_TUPLE_FOUND. Note, to get the space name, we need to call space_by_id() but it should be fine because (a) the space is very likely to be cached as the last accessed one and (b) this is an error path so it isn't performance critical. We also drop index_name_by_id() and extract the index name from the LSM tree object. Closes #5975 NO_DOC=bug fix (cherry picked from commit 2cfba5eb)
-
Vladimir Davydov authored
Like UPDATE, UPSERT must not modify primary key parts. Unlike UPDATE, such an invalid UPSERT statement doesn't fail (raise an error) - we just log the error and ignore the statement. The problem is, we don't clear txn_stmt. As a result, if we're currently building a new index, the on_replace trigger installed by the build procedure will try to process this statement, triggering the assertion in the transaction manager that doesn't expect any statements in a secondary index without the corresponding statement in the primary index: ./src/box/vy_tx.c:728: vy_tx_prepare: Assertion `lsm->space_id == current_space_id' failed. Let's fix this by clearing the txn_stmt corresponding to a skipped UPSERT. Note, this also means that on_replace triggers installed by the user won't run on invalid UPSERT (hence test/vinyl/on_replace.result update), but this is consistent with the memtx engine, which doesn't run them in this case, either. Closes #10026 NO_DOC=bug fix (cherry picked from commit 5ac0d26a)
-
- May 17, 2024
-
-
Vladislav Shpilevoy authored
Not only for own txns, but also on the txns authored by other instances. Note that the lag isn't updated when the replica got new txns from another master. The lag still only reflects the replication between this relay and its specific applier. The motivation is that otherwise the lag sometimes shows irrelevant things, like that the replica is very outdated, while it keeps replicating just fine. Only not txns of this specific master, who might even turned into a replica itself already. Closes #9748 NO_DOC=bugfix (cherry picked from commit 39af9fbe)
-
Vladislav Shpilevoy authored
From the code it isn't obvious, but relay->status_msg.vclock and relay->last_recv_ack.vclock are both coming from the applier. Status_msg is the previous ack, last_recv_ack is the latest ack. They can never go down. And are not affected anyhow by the master committing its own transactions. I.e. master can commit something, relay->r->vclock (recovery cursor) will go up, and recovery vclock might become incomparable with the last ACK vclock. But the prev and last ACK vclocks are always comparable and always go up. This invariant was broken though, because relay on restart didn't nullify the current applier status (status_msg). It could break if the replica would loose its xlog files or its ID would be taken by another instance - then its vclock would go down, making last_recv_ack.vclock < status_msg.vclock. But that is not right and is fixed in this patch. In scope of #9748 NO_DOC=bugfix NO_TEST=test 5158 already covers it NO_CHANGELOG=bugfix (cherry picked from commit 71dbb47c)
-
Vladislav Shpilevoy authored
To reduce the insane indentation level. And to isolate the further changes in next commits more. Part of #9748 NO_DOC=refactoring NO_TEST=refactoring NO_CHANGELOG=refactoring (cherry picked from commit d6f15a10)
-
Vladislav Shpilevoy authored
Before the patch if the applier was reconnected, the master would see downstream lag equal to the time since it replicated the last txn to this applier. This happened because applier between reconnects kept the txn timestamp used for acks. On the master's side the relay was recreated, received the ack, thought the applier just applied this txn, and displayed this as a lag. The test makes a master restart because this is the easiest way to reproduce it. Most importantly, the applier shouldn't be re-created, and relay should restart. Part of #9748 NO_DOC=bugfix NO_CHANGELOG=later (cherry picked from commit dda42035)
-
Vladislav Shpilevoy authored
It was stored in struct replica, now is in struct applier. The motivation is that applier-specific data must be inside the applier. Also it makes the next commits look more logical. They are going to change this timestamp when applier progresses through its state machine. It looks strange when the applier is changing the replica object. Replica is on an upper level in the hierarchy. It owns the applier and the applier ideally mustn't know about struct replica (hardly possible to achieve), or at least not change it (this is feasible). In scope of #9748 NO_DOC=internal NO_TEST=refactoring NO_CHANGELOG=refactoring (cherry picked from commit 8e5d9f2a)
-
Vladimir Davydov authored
A unique nullable key definition extended with primary key parts (cmp_def) assumes that two tuples are equal *without* comparing primary key fields if all secondary key fields are equal and not nulls, see tuple_compare_slowpath(). This is a hack required to ignore the uniqueness constraint for nulls in memtx. The memtx engine can't use the secondary key definition as is (key_def) for comparing tuples in the index tree, as it does for a non-nullable unique index, because this wouldn't allow insertion of any duplicates, including nulls. It couldn't use cmp_def without this hack, either, because then conflicting tuples with the same secondary key fields would always compare as not equal due to different primary key parts. For Vinyl, this hack isn't required because it explicitly skips the uniqueness check if any of the indexed fields are nulls, see vy_check_is_unique_secondary(). Furthermore, this hack is harmful because Vinyl relies on the fact that two tuples compare as equal by cmp_def if and only if *all* key fields (both secondary and primary) are equal. For example, this is used in the transaction manager, which overwrites statements equal by cmp_def, see vy_tx_set_entry(). Let's disable this hack by resetting unique_part_count in cmp_def. Closes #9769 NO_DOC=bug fix (cherry picked from commit 2e689063)
-
- May 16, 2024
-
-
Vladimir Davydov authored
Between picking an LSM tree from a heap and taking a reference to it in vy_task_new() there are a few places where the scheduler may yield: - in vy_worker_pool_get() to start a worker pool; - in vy_task_dump_new() to wait for a memory tree to be unpinned; - in vy_task_compaction_new() to commit an entry to the metadata log after splitting or coalescing a range. If a concurrent fiber drops and deletes the LSM tree in the meanwhile, the scheduler will crash. To avoid that, let's take a reference to the LSM tree. It's quite difficult to write a functional test for it without a bunch of ugly error injections so we rely on fuzzing tests. Closes #9995 NO_DOC=bug fix NO_TEST=fuzzing (cherry picked from commit 1c4605bb)
-
- May 14, 2024
-
-
Alexander Turenko authored
It encapsulates all the needed actions to connect to a remote console using a Unix socket. Part of #9985 NO_DOC=testing helper change NO_CHANGELOG=see NO_DOC (cherry picked from commit bb430c55)
-
Alexander Turenko authored
See #7169 for details about the hide/show prompt feature. In short, it hides readline's prompt before `print()` or `log.<level>()` calls and restores the prompt afterwards. This feature sometimes badly interferes with `test.interactive_tarantool` heuristics about readline's command echoing. This commit disables the feature in `test.interactive_tarantool` by default and enables it explicitly where needed. Part of #9985 NO_DOC=testing helper change NO_CHANGELOG=see NO_DOC (cherry picked from commit 23094b6f)
-
Alexander Turenko authored
Before this patch the `:roundtrip()` method in the `test.interative_tarantool` instance considered the following calls as equivalent: ```lua g.it = it.new() -- Doesn't check the response. g.it:roundtrip('x') -- Before the patch it was the same as above. -- -- Now it checks that the response is nil. local expected = nil g.it:roundtrip('x', expected) -- It is the same as previous. g.it:roundtrip('x', nil) ``` Now the response is checked against the provided expected value if the value is passed to arguments, even if it is `nil`. Also, a command's response is now returned from the method. It may be useful if the response returns some dynamic information (such as a TCP port number or a file descriptor) that is used later in the test or if the response should be verified in some non-trivial way, not just a deep compare. The `:roundtrip()` method is just `:execute_command()` plus `:read_response()` plus `luatest.assert_equals()`. However, I like using `:roundtrip()` even when the assertion is not needed, because it is shorter and because using the same method brings less context to a reader. For example, ```lua g.it = it.new() g.it:roundtrip('x = 2') g.it:roundtrip('y = 3') g.it:roundtrip('x + y', 6) ``` Part of #9985 NO_DOC=testing helper change NO_CHANGELOG=see NO_DOC NO_TEST=see NO_DOC (cherry picked from commit 7d9e8569)
-
- May 08, 2024
-
-
Vladislav Shpilevoy authored
When a replica subscribes, it might in the beginning try to position its reader cursor to the end of a large xlog file. Positioning inside of this file can take significant time during which the WAL reader yielded and tried to send heartbeats, but couldn't, because the relay thread wasn't communicating with the TX thread. When there are no messages from TX for too long time, the heartbeats to the replica are not being sent (commit 56571d83 ("raft: make followers notice leader hang")). The relay must communicate with the TX thread even when subscribe is just being started and opens a large xlog file. This isn't the first time when the missing heartbeats result into timeouts. See more here: - commit 30ad4a55 ("relay: yield explicitly every N sent rows"). - commit 17289440 ("recovery: make it yield when positioning in a WAL"). - commit ee6de025 ("relay: send heartbeats while reading a WAL"). Given that this is fixed fourth time, it might suggest that the relay has not the best architecture having some slight drawbacks. See more in #9968. Closes #9094 NO_DOC=bugfix (cherry picked from commit f7e6686a)
-
- Apr 25, 2024
-
-
Sergey Vorontsov authored
By default, each job in a workflow can run for up to 6 hours of the execution time. If a job reaches this limit, the job is terminated by GitHub automatically and fails to complete. This patch sets job timeouts to 60 minutes to avoid waiting for jobs to complete for 6 hours. NO_DOC=ci NO_TEST=ci NO_CHANGELOG=ci
-
- Apr 23, 2024
-
-
Georgiy Lebedev authored
Currently, we close the transport from transport from `luaT_netbox_transport_stop`, and we do not wait for the worker fiber to stop. This causes several problems. Firstly, the worker can switch context by yielding (`coio_wait`) or entering the Lua VM (`netbox_on_state_change`). During a context switch, the connection can get closed. When the connection is closed, its receive buffer is reset. If there was some pending response that was partially retrieved (e.g., a large select), then after resetting the buffer we will read some inconsistent data. We must not allow this to happen, so let's check for this case after returning from places where the worker can switch context. In between closing the connection and cancelling the connection's worker, an `on_disconnect` trigger can be called, which, in turn, can also yield, returning control to the worker before it gets cancelled. Secondly, when the worker enters the Lua VM, garbage collection can be triggered and the connection owning the worker could get closed unexpectedly to the worker. The fundamental source of these problems is that we close the transport before the worker's loop stops. Instead, we should close it after the worker's loop stops. In `luaT_netbox_transport_stop`, we should only cancel the worker, and either wait for the worker to stop, if we are not executing on it, or otherwise throw an exception (`luaL_testcancel`) to stop the worker's loop. The user will still have the opportunity to catch this exception and prevent stoppage of the worker at his own risk. To safeguard from this scenario, we will now keep the `is_closing` flag enabled once `luaT_netbox_transport_stop` is called and never disable it. There also still remains a special case of the connection getting garbage collected, when it is impossible to stop the worker's loop, since we cannot join the worker (yielding is forbidden from finalizers), and an exception will not go past the finalizer. However, this case is safe, since the connection is not going to be used by this point, so the worker can simply stop on its own at some point. The only thing we need to account for is that we cannot wait for the worker to stop: we can reuse the `wait` option of `luaT_netbox_transport_stop` for this. Closes #9621 Closes #9826 NO_DOC=<bugfix> Co-authored-by:
Vladimir Davydov <vdavydov@tarantool.org> (cherry picked from commit fcf7f5c4) Cherry pick note: Dropped gh_9621_netbox_worker_crash_test because box.iproto.encode helpers aren't available on 2.11.
-
- Apr 19, 2024
-
-
Sergey Ostanevich authored
-
- Apr 17, 2024
-
-
Sergey Ostanevich authored
Also, remove unreleased/ entries. NO_DOC=changelog NO_TEST=changelog NO_CHANGELOG=changelog
-
- Apr 16, 2024
-
-
Aleksandr Lyapunov authored
Before this patch MVCC engine expected that if index_replace sets `result` to NULL then index_replace sets `successor` to something (NULL or existing tuple, depending on index type). That looked fine because by contract `successor` is set when true insertion was happened. Unfortunately it was not considered that in case of part with `exclude_null` option in index the insertion can be silently skipped and thus `successor` can be not set. The latter access of it was actually an UB. Fix it by explicit check of tuple_key_is_excluded and work on this case correctly. Note that logically `index_replace` should return a flag whether the new tuple was filtered (excluded) by key_def. But on the other hand this flag is required only for mvcc while the function is already has lots of arguments and it's very cheap to determine this flag right from memtx_tx, so I decided to make the most simple patch. NO_DOC=bugfix (cherry picked from commit 14e21297)
-
- Apr 15, 2024
-
-
Alexander Turenko authored
The CI/CD builds are performed on VK Cloud virtual machines, so the access to VK S3 is more reliable than to GitHub archives. In fact, we experience periodical download problems with source archives on GitHub in Tarantool Enterprise Edition builds in CI/CD and it is the motivation to backup the archives on our side. The problems appear quite frequently last few days. The download problems are not on VK Cloud side and not on GitHub side. The packet loss is somewhere in the middle. I don't know an exact reason for now. NO_DOC=no user-visible changes NO_CHANGELOG=see NO_DOC NO_TEST=see NO_DOC (cherry picked from commit 03445e6b)
-
- Apr 12, 2024
-
-
Georgy Moiseev authored
Bump metrics package submodule. There are 8 new commits, but only two of them affects Tarantool: - Add election_leader_idle metric [1]; - test: run log capture tests on a separate server [2]; the other 6 affect documentation and CI/CD scripts of the original repo. The latter one is required to bump luatest in test-run [3], since otherwise metrics log capture test fails on a new version. 1. https://github.com/tarantool/metrics/commit/ba9726d9b0cdfb22aa56d852f7fdc7b0aa22756a 2. https://github.com/tarantool/metrics/commit/3370f856efd4172bf24916e66e3846eeb01550a8 3. https://github.com/tarantool/test-run/pull/426 NO_DOC=doc is a part of submodule NO_TEST=repo runs submodule tests, no new test files are added (cherry picked from commit 50f74250)
-
- Apr 11, 2024
-
-
Sergey Kaplun authored
* ci: bump version of actions/checkout * test: fix typo in the link to the issue * test: refactor CMake macro LibRealPath * test: move LibRealPath to the separate module * test: more cautious usage of LD_PRELOAD for ASan * test: fix lj-802-panic-at-mcode-protfail GCC+ASan * ci: execute LuaJIT tests with GCC 10 and ASAN * cmake: replace prove with CTest * Prevent down-recursion for side traces. * Handle stack reallocation in debug.setmetatable() and lua_setmetatable(). * profilers: print user-friendly errors Closes #5994 Closes #9595 Closes #9217 Closes #9656 NO_DOC=LuaJIT submodule bump NO_TEST=LuaJIT submodule bump
-
- Apr 05, 2024
-
-
Ilya Verbin authored
New commits: * matras: increase max capacity from 2^31 to 2^32 blocks * matras: fix compilation on macOS * small: introduce the new method small_alloc_info Closes #9864 NO_TEST=small submodule bump NO_DOC=I will update https://github.com/tarantool/doc/issues/3816 (cherry picked from commit 1e86e0a4)
-
Ilya Verbin authored
This is the maximum possible capacity of a hash table with 32-bit record identifiers and 8-element `LIGHT_GROW_INCREMENT`. Needed for #9864 NO_DOC=see next commit NO_CHANGELOG=see next commit (cherry picked from commit f955ca0c)
-
Ilya Verbin authored
This function contains a bitwise optimization that returns wrong result when table size is greater than 2^31. E.g., if table size is 0xB0000000 and hash is 0, it returns 0x80000000 instead of 0. Fix it. Needed for #9864 NO_DOC=see next commit NO_CHANGELOG=see next commit (cherry picked from commit d279368c)
-
- Apr 03, 2024
-
-
Georgiy Lebedev authored
Currently, the connection state is updated after calling triggers. However, the triggers can, in turn, cause a new state change. The state will be updated the state in the wrong order, and the original state change will overwrite the state change from the trigger. To fix this, let's update the connection state before calling any triggers. Closes #9827 NO_DOC=<bugfix> (cherry picked from commit bb38b059)
-
Georgiy Lebedev authored
For the `on_connect` trigger, if the trigger execution fails and an exception happens, the connection is terminated and its state changes to 'error'. It allows the following filtering semantic: the client checked some condition from the trigger and decided that the connection does not suite him — the exception is thrown to indicate that the connection should be terminated. Currently, the `on_schema_reload` trigger behaves the same way. However, filtering a connection from the `on_schema_reload` trigger or waiting for a schema update does not seem has neither a reasonable semantic, nor a valid use case. Let's make the `on_schema_reload` trigger behave the same way as the `on_disconnect` trigger, i.e, log the exception, but otherwise ignore it. Closes #9679 @TarantoolBot document Title: `on_schema_reload` trigger of `net.box` connections behaviour update Product: Tarantool Since: 3.1 Root documents: https://www.tarantool.io/en/doc/latest/reference/reference_lua/net_box/#lua-function.conn.on_schema_reload When an error is thrown from the `on_schema_reload` trigger, it now behaves the same way as the `on_disconnect` trigger [^1]: > If the trigger function causes an error, the error is logged but otherwise is ignored. [^1]: https://www.tarantool.io/en/doc/latest/reference/reference_lua/net_box/#lua-function.conn.on_disconnect (cherry picked from commit bbd8b684)
-
Georgiy Lebedev authored
According to the documentation [1]: > If the trigger function causes an error, the error is logged but otherwise is ignored. However, currently, the `on_disconnect` trigger behaves the same way as the `on_connect` trigger, i.e., the connection is terminated and its state changes to 'error'. Let's fix this inconsistency and log errors from the `on_disconnect` trigger, but otherwise ignore them. Closes #9677 Closes #9797 NO_DOC=<bugfix> 1. https://www.tarantool.io/en/doc/latest/reference/reference_lua/net_box/#lua-function.conn.on_disconnect (cherry picked from commit 1d6d6a3a)
-
- Mar 29, 2024
-
-
Yaroslav Lobankov authored
It has been decided to drop required devx team review for tests. NO_DOC=codeowners NO_TEST=codeowners NO_CHANGELOG=codeowners (cherry picked from commit 58f5ffe4)
-
Andrey Saranchin authored
Header "unit.h" contains `ok` and `is` macros used to check test cases. The problem is such simple names can be used in C++ STL library headers (it's OK because such short names can be hidden in a namespace), so when including, for example, header "vector" after "unit.h", build can fail because function declaration or definition in the C++ header will turn into a macro invocation. I faced this problem building Tarantool on MacOS with SDK of 14.4 version. NO_TEST=fix build NO_CHANGELOG=fix build NO_DOC=fix build (cherry picked from commit 025ba32f)
-
- Mar 28, 2024
-
-
Andrey Saranchin authored
Currently, exclude_null option doesn't affect functional indexes at all. It seems that we just forgot to check if tuple should be inserted to the index - the patch simply adds missing check in replace and build_next methods of functional memtx_tree index. Closes #9732 NO_DOC=bugfix (cherry picked from commit c56998fa)
-
Georgiy Lebedev authored
In order to prevent the garbage collection of the discarded connection, asynchronous requests must reference the connection object. We must reference the connection object rather than the transport object, because our garbage collection hook is attached to the former. Closes #9629 NO_DOC=<bugfix> (cherry picked from commit fb5bf51c)
-
- Mar 26, 2024
-
-
Maxim Kokryashkin authored
This patch adds necessary cmake configurations for the <evread.lua> module, so it can be used later to implement human-readable error reporting in profile parsers. Part of #9217 NO_DOC=LuaJIT submodule NO_TEST=covered by the LuaJIT tests NO_CHANGELOG=build (cherry picked from commit e01fe8f7)
-