- 29 Jun, 2022 1 commit
-
-
Marko Mäkelä authored
recv_sys_t::recover_deferred(): Hold the exclusive page latch until the tablespace has been set up. Otherwise, the write of the page may be lost due to non-existent tablespace. This race only affects the recovery of the first page in a newly created tablespace. This race condition was introduced in MDEV-24626.
-
- 28 Jun, 2022 3 commits
-
-
Marko Mäkelä authored
Ever since commit 9608773f the InnoDB persistent statistics are enabled on all InnoDB tables by default. We must filter out any output that indicates that the statistics tables are being internally accessed by InnoDB.
-
Monty authored
The issue was that flush_tables() didn't take a MDL lock on cached TABLE_SHARE before calling open_table() to do a HA_EXTRA_FLUSH call. Most engines seams to have no issue with it, but apparantly this conflicts with InnoDB in 10.6 when using TRUNCATE Fixed by taking a MDL lock before trying to open the table in flush_tables(). There is no test case as it hard to repeat the scheduling that causes the error. I did run the test case in MDEV-28897 to verify that the bug is fixed.
-
Marko Mäkelä authored
This test failure is similar to encryption.innodb-redo-badkey, which was fixed in commit 0f0a45b2.
-
- 27 Jun, 2022 15 commits
-
-
Marko Mäkelä authored
i_s_dict_fill_sys_tablestats(): Read all fields of dict_table_t while holding dict_sys.latch. dict_sys_t::allow_eviction(): Remove.
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
prepare_inplace_alter_table_dict(): If the table will not be rebuilt, preserve all of the original ROW_FORMAT, including the compressed page size flags related to ROW_FORMAT=COMPRESSED.
-
Marko Mäkelä authored
hex_to_ascii(): Add #if around the definition to avoid clang -Wunused-function. Avoid GCC 5 -Wconversion with a cast.
-
Marko Mäkelä authored
btr_root_raise_and_insert(), btr_lift_page_up(), rtr_page_split_and_insert(): Reset DB_FAIL from a failure to copy records on a ROW_FORMAT=COMPRESSED page to DB_SUCCESS before retrying. This fixes a regression that was introduced by commit 0b47c126 (MDEV-13542). btr_root_raise_and_insert(): Remove a redundant condition. btr_page_split_and_insert() will invoke btr_page_split_and_insert() if needed.
-
Marko Mäkelä authored
On FreeBSD, tests run on persistent storage, and no asynchronous I/O has been implemented. Warnings about 205-second waits on dict_sys.latch may occur.
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
buf_page_print(): Dump the buffer page 32 bytes (64 hexadecimal digits) per line. In this way, the limitation in mtr ("Data too long for column 'line'") will not be triggered. Also, do not bother decoding the page contents, because everything is present in the hexadecimal output. dict_index_find_on_id_low(): Merge to dict_index_get_if_in_cache_low(). The direct call in buf_page_print() was prone to crashing, in case the table definition was concurrently evicted or dropped from the data dictionary cache.
-
Hirokazu Hata authored
Spider supports (or at least allows) INSERT DELAYED but the documentation does not specify spider as a storage engine that supports "INSERT DELAYED". Also, although not mentioned in the documentation, "INSERT DELAYED" is not intended to be executed inside a transaction, as can be seen from the list of supported storage engines. The current implementation allows executing a delayed insert on a remote transactional table and this breaks the consistency ensured by the transaction. We too remove "internal_delayed", one of the Spider table parameters. Documentation says, > Whether to transmit existence of delay to remote servers when > executing an INSERT DELAYED statement on local server. This table parameter is only used for "INSERT DELAYED". Reviewed by: Nayuta Yanagisawa
-
- 24 Jun, 2022 1 commit
-
-
Oleksandr Byelkin authored
MDEV-22590 SIGSEGV in flush_all_key_blocks when changing key_buffer_size / ASAN: heap-use-after-free in flush_all_key_blocks Take into account that in preparation of a simple key cache for resizing no disk blocks might be assigned to it. Reviewer: IgorBabaev <igor@mariadb.com>
-
- 23 Jun, 2022 4 commits
-
-
Vladislav Vaintroub authored
Revert "TSAN: data race on vptr (ctor/dtor vs virtual call)" This reverts commit 78084fa7. This commit was done to please TSAN, which falsely reported an error where there was none. Yet as consequence, it could cause a real error, a crash in os_aio_free on shutdown
-
Marko Mäkelä authored
fil_name_process(): If the recovery of a tablespace was deferred, do invoke fil_ibd_load() even though the name in recv_spaces is not changing. This allows us to recover from a situation where there are many FILE_RENAME records, renaming a tablespace back and forth, and a FILE_MODIFY record that had been written by fil_names_clear(). Co-developed with: Thirunarayanan Balathandayuthapani
-
Vladislav Vaintroub authored
-
Vladislav Vaintroub authored
Fixed tpool timer implementation on POSIX. Prior to this patch, under some specific rare circumstances (concurrency related), timer callback execution might be skipped.
-
- 22 Jun, 2022 3 commits
-
-
Marko Mäkelä authored
When attempting to recover a database with an incorrect encryption key, the unencrypted page contents should be expected to differ from what was written before recovery. Let us suppress some more messages. This caused intermittent failures, depending on when the latest log checkpoint was triggered.
-
Marko Mäkelä authored
trx_undo_rec_copy(): Return nullptr if the undo record is corrupted. trx_undo_rec_get_undo_no(): Define inline with the declaration. trx_purge_dummy_rec: Replaced with a -1 pointer. row_undo_rec_get(), UndorecApplier::apply_undo_rec(): Check if trx_undo_rec_copy() returned nullptr. trx_purge_get_next_rec(): Return nullptr upon encountering any corruption, to signal the end of purge.
-
Marko Mäkelä authored
On GNU/Linux, even though the C11 aligned_alloc() appeared in GNU libc early on, some custom memory allocators did not implement it until recently. For example, before gperftools/gperftools@d406f2285390c402e824dd28e6992f7f890dcdf9 the free() in tcmalloc would fail to free memory that was returned by aligned_alloc(), because the latter would map to the built-in allocator of libc. The Linux specific memalign() has a similar interface and is safer to use, because it has been available for a longer time. For AddressSanitizer, we will use aligned_alloc() so that the constraint on size can be enforced. buf_tmp_reserve_compression_buf(): When HAVE_ALIGNED_ALLOC holds, round up the size to be an integer multiple of the alignment. pfs_malloc(): In the unit test stub, round up the size to be an integer multiple of the alignment.
-
- 21 Jun, 2022 6 commits
-
-
Marko Mäkelä authored
Table_cache_instance: Define the structure aligned at the CPU cache line, and remove a pad[] data member. Krunal Bauskar reported this to improve performance on ARMv8. aligned_malloc(): Wrapper for the Microsoft _aligned_malloc() and the ISO/IEC 9899:2011 <stdlib.h> aligned_alloc(). Note: The parameters are in the Microsoft order (size, alignment), opposite of aligned_alloc(alignment, size). Note: The standard defines that size must be an integer multiple of alignment. It is enforced by AddressSanitizer but not by GNU libc on Linux. aligned_free(): Wrapper for the Microsoft _aligned_free() and the standard free(). HAVE_ALIGNED_ALLOC: A new test. Unfortunately, support for aligned_alloc() may still be missing on some platforms. We will fall back to posix_memalign() for those cases. HAVE_MEMALIGN: Remove, along with any use of the nonstandard memalign(). PFS_ALIGNEMENT (sic): Removed; we will use CPU_LEVEL1_DCACHE_LINESIZE. PFS_ALIGNED: Defined using the C++11 keyword alignas. buf_pool_t::page_hash_table::create(), lock_sys_t::hash_table::create(): lock_sys_t::hash_table::resize(): Pad the allocation size to an integer multiple of the alignment. Reviewed by: Vladislav Vaintroub
-
Marko Mäkelä authored
There was a race condition between log_checkpoint_low() and deleting or renaming data files. The scenario is as follows: 1. The buffer pool does not contain dirty pages. 2. A FILE_DELETE or FILE_RENAME record is written. 3. The checkpoint LSN will be moved ahead of the write of the record. 4. The server is killed before the file is actually renamed or deleted. We will prevent this race condition by ensuring that a log checkpoint cannot occur between the durable write and the file system operation: 1. Durably write the FILE_DELETE or FILE_RENAME record. 2. Perform the file system operation. 3. Allow any log checkpoint to proceed. mtr_t::commit_file(): Implement the DELETE or RENAME logic. fil_delete_tablespace(): Delegate some of the logic to mtr_t::commit_file(). fil_space_t::rename(): Delegate some logic to mtr_t::commit_file(). Remove the debug injection point fil_rename_tablespace_failure_2 because we do test RENAME failures without any debug injection. fil_name_write_rename_low(), fil_name_write_rename(): Remove. Tested by Matthias Leich
-
Julius Goryavsky authored
This commit contains workaround for a bug known as 'Red Hat issue 1870279' (connection reset by peer issue in socat versions 1.7.3.3 to 1.7.4.0) which further causes crashes during SST using mariabackup (when openssl is used). Also fixed broken logic of automatic generation of the Diffie-Hellman parameters for socat version less than 1.7.3 (which defaults to 512-bit values instead of 2048-bit ones).
-
Marko Mäkelä authored
buf_page_create_low(): Before retrying, release the exclusive page latch in order to prevent an infinite loop in buf_pool_t::corrupted_evict().
-
Marko Mäkelä authored
-
Julius Goryavsky authored
-
- 20 Jun, 2022 1 commit
-
-
Vladislav Vaintroub authored
Disable static build for encryption plugin file_key_management
-
- 18 Jun, 2022 2 commits
-
-
Daniel Black authored
Recent adventures in liburing and btrfs have shown up some kernel version dependent bugs. Having a bug report of accurace kernel version can start to correlate these errors sooner. On Linux, /proc/version contains the kernel version. FreeBSD has kern.version (per man 8 sysctl), so include that too. Example output: Max nice priority 0 0 Max realtime priority 0 0 Max realtime timeout unlimited unlimited us Core pattern: |/usr/lib/systemd/systemd-coredump %P %u %g %s %t %c %h Kernel version: Linux version 5.19.0-0.rc2.21.fc37.x86_64 (mockbuild@bkernel01.iad2.fedoraproject.org) (gcc (GCC) 12.1.1 20220507 (Red Hat 12.1.1-1), GNU ld version 2.38-14.fc37) #1 SMP PREEMPT_DYNAMIC Mon Jun 13 15:27:24 UTC 2022 Segmentation fault (core dumped)
-
Sergei Golubchik authored
it starts an EXPLAIN of a multi-table join and tries to KILL it. no sync points. depending on how fast the hareware is and optimizer development it might kill EXPLAIN at some random point in time (generally unrelated to the Bug#28598 it was supposed to test) or EXPLAIN might finish before the KILL and the test will fail.
-
- 17 Jun, 2022 3 commits
-
-
Daniel Black authored
Work around MDEV-28718 for now, but also optimize the interation of information_schema.SYSTEM_VARIABLES. Add test case to show that tzinfo data into bootstrap is desired functionality. Bug report thanks to Dan Lenski of AWS.
-
Daniel Black authored
The reasons sited for disabling this test in MDEV-16172 where disputed.
-
Marko Mäkelä authored
We do not really care about the exact result; we only care that the statistics will be accessed. The result could change depending on when some statistics were updated in the background or when some committed delete-marked rows were purged from other tables on which persistent statistics are enabled.
-
- 16 Jun, 2022 1 commit
-
-
Marko Mäkelä authored
-