Commits


test: fix flakiness in gh_6128_background_mode_test Previous attempt to fix flakiness in commit 6a2c73f81b30 ("test: fix flakiness in gh_6128_background_mode_test") used a constant buffer size in check_err_msg function. Tarantool 2.10 has a bit bigger log before a desired message that other versions of Tarantool and it leads to a this resulted in a truncated message ("entering the even" instead of "entering the event loop"). Patch replaces check_err_msg() implementation to grep_log used in luatest, it reads the whole log. Also patch renames check_err_msg to check_msg, because "entering the event loop" is not an error message. Follows up #6128 NO_CHANGELOG=fix test NO_DOC=fix test


test: fix flakiness in gh_6128_background_mode_test Test runs an external process with tarantool that writes to a log file. Then test reads that log file and searches a string with required message in it (see function check_err_msg). Test was flaky on macOS and I suspect it was happening due to a high log level - timeout was not enough to wait message in the log file. Patch decreases a log level to a default value and replaces io functions with the similar alternatives in a fio module. Using fio functions allows to not block fibers. NO_CHANGELOG=test fix NO_DOC=test fix (cherry picked from commit 47380bb7626544800239ca179a6b2c490ebb6d1c)


lua/xlog: don't ignore unknown header fields The xlog reader Lua module uses the xlog_cursor_next_row, which decodes the row header with xrow_header_decode. The latter silently ignores any unknown fields, which complicates catching bugs when garbage is written to a row header by mistake, for example, see #8783. Let's parse a row header without using xrow_header_decode in the xlog reader module, like we parse a row body, and output all unknown/invalid keys as is. To do that, we have to extend the xlog cursor API with the new method xlog_cursor_next_row_raw that returns a pointer to the position in the tx buffer where the next xrow is stored without advancing it. To avoid a memory leak in case the caller fails to parse an xrow returned by this function, we also have to move the call to xlog_tx_cursor_destroy from xlog_tx_cursor_next_row to xlog_cursor_next_tx. While we are at it, - Don't raise an error if a key type encountered in a row body is invalid (not an integer). Instead, silently ignore such keys. - Remove the useless body MsgPack validness check because we already check it after decoding the header. - Add error injection based tests to check all the corner cases. NO_DOC=bug fix (cherry picked from commit 8a25d170ea897d5aa2f1a81e1cbe8292596a6a6d)


txn: reset stream_id row header field To avoid garbage written to xlog. Closes #8783 NO_DOC=bug fix NO_TEST=next commit (cherry picked from commit f058cee74eca494e8fca8e3aae6b94ce8105165b)


box: reduce luaT_pushtuple Lua GC memory usage <luaT_pushtuple> function created a new GCfunc object for a tuple __gc handler (i.e. <lbox_tuple_gc>), having no upvalues, on each call when tuple object for Lua world is created. The change introduces the reference to the single GCfunc object created on Tarantool startup and stored to Lua registry. Using this approach in scope of <luaT_pushtuple> is aimed to reduce Lua GC memory usage. Part of #5201 NO_DOC=refactoring NO_TEST=refactoring NO_CHANGELOG=refactoring Reviewed-by: Vladimir Davydov <vdavydov@tarantool.org> Reviewed-by: Sergey Kaplun <skaplun@tarantool.org> Signed-off-by: Igor Munkin <imun@tarantool.org> (cherry picked from commit 8d7d14609853ac7020f15d5239ee05c65817ad29)