- 16 Sep, 2022 1 commit
-
-
Marko Mäkelä authored
recv_scan_log(): Do not dereference the first byte of the log record before recv_sys.parse_pmem() (or recv_sys_t::parse_mtr()) returns OK. In the case of the failure that was analyzed, we had recv_sys.offset == recv_sys.len and recv_sys_t::parse_mtr() would return PREMATURE_EOF. This would lead us to reading more data and parsing again. When a memory-mapped interface to the log is being used, that is, log_sys.is_pmem() holds, recv_sys.offset cannot point past the end of the memory-mapped log_sys.buf[]. This is guaranteed by log_sys.calc_lsn_offset(). Thanks to Nayuta Yanagisawa for providing a core dump for analysis.
-
- 13 Sep, 2022 3 commits
-
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
- 12 Sep, 2022 2 commits
-
-
Marko Mäkelä authored
-
Vladislav Vaintroub authored
use waitable_task.wait() function to wait for the end of previous purge
-
- 09 Sep, 2022 1 commit
-
-
Andrei authored
The shutdown time assert was caused by untimely deactivation of the binlog background thread and related structs destruction. It could specifically occur when a transaction is replication unsafe and has to be completed with a ROLLBACK event in binlog. This gets fixed with the binlog background thread stop relocation to a point and user transactions have been completed. A test case is added to binlog.binlog_checkpoint which also receives as a bonus a minor correction to reactivate a MDEV-4322 test case that originally required a shutdown phase (that ceased to do).
-
- 08 Sep, 2022 5 commits
-
-
Nayuta Yanagisawa authored
-
Nayuta Yanagisawa authored
-
Nayuta Yanagisawa authored
-
Marko Mäkelä authored
In commit 8f8ba758 (MDEV-27234) the data dictionary recovery was changed to use READ COMMITTED so that table-rebuild operations (OPTIMIZE TABLE, TRUNCATE TABLE, some forms of ALTER TABLE) would be recovered correctly. However, for operations that avoid a table rebuild thanks to being able to instantly ADD, DROP or reorder columns, recovery must use the READ UNCOMMITTED isolation level so that changes to the hidden metadata record can be rolled back. We will detect instant operations by detecting uncommitted changes to SYS_COLUMNS in case there is no uncommitted change of SYS_TABLES.ID for the table. In any table-rebuilding DDL operation, the SYS_TABLES.ID (and likely also the table name) will be updated. As part of rolling back the instant ALTER TABLE operation, after the operation on the hidden metadata record has been rolled back, a rollback of an INSERT into SYS_COLUMNS in row_undo_ins_remove_clust_rec() will invoke trx_t::evict_table() to discard the READ UNCOMMITTED definition of the table. After that, subsequent recovery steps will load and use the correct table definition. Reviewed by: Thirunarayanan Balathandayuthapani Tested by: Matthias Leich
-
Vlad Lesin authored
Use suspend thread syncpoint instead of include/wait_condition.inc to make sure DELETE created waiting lock before the next UPDATE begins locking.
-
- 07 Sep, 2022 14 commits
-
-
Andrei authored
The ASAN report was made in the parallel slave execution of a query event and implicitly involved (so also parallelly run) Format-Description event. The Query actually had unexpected impossible dependency on a preceding "old" FD whose instance got destructed, to cause the ASAN error. The case is fixed with storing the FD's value into Query-log-event at its instantiating on slave. The stored value is from the very FD of the Query's original binlog so remains to be correct at the query event applying. The branch C. of a new rpl_parallel_29322.test also demonstrates (may need few --repeat though) the bug in its simple form of the same server version binlog.
-
Vladislav Vaintroub authored
mtr supports running processes in background on Windows since 10.8. Rename shutdown_not_windows.test to shutdown_debug.test, and allow this test everywhere.
-
Vladislav Vaintroub authored
-
Vladislav Vaintroub authored
# Conflicts: # sql/sql_connect.cc # sql/threadpool_common.cc
-
Vladislav Vaintroub authored
# Conflicts: # sql/sql_connect.cc
-
Vladislav Vaintroub authored
Do not repeat yourself. Instead of having the same DBUG_EXECUTE_IF code in threadpool and thread-per-connection, add this code to setup_connection_thread_globals() which is executed in all scheduling modes.
-
Daniel Black authored
-
Marko Mäkelä authored
Additional fixes for 10.6: fts_sync_commit(): Release cache->lock also on rollback. fts_sync_write_words(): Avoid a crash if an error occurs, by stopping at the first error. fts_add_doc_by_id(): Sync the doc id only after adding the doc id to the cache.
-
Marko Mäkelä authored
Let us specify STATS_AUTO_RECALC=0 for the failing section of the test. It is possible that this test started failing sporadically ever since commit 9608773f was applied and tests no longer globally disable the InnoDB persistent statistics.
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
- 06 Sep, 2022 6 commits
-
-
Marko Mäkelä authored
trx_undo_rseg_free(): Revert an inadvertent change that was done as part of the merge a42c80bd
-
Thirunarayanan Balathandayuthapani authored
- During shutdown, InnoDB fts fails to update synced doc id when there is only one doc id about to sync. While starting the server, InnoDB fetches the already synced doc id from config table. In the subsequent sync operation, InnoDB fails with DB_DUPLICATE_KEY error.
-
Marko Mäkelä authored
-
Marko Mäkelä authored
In commit 244fdc43 (MDEV-29438) we made sure that if the preceding record is the page infimum record, no more than 8 bytes will be read from it. But, if the data payload of the being-inserted record is less than 8 bytes (this can happen in secondary indexes), we must not compare all 8 bytes. This was caught by a failure of the test gcol.innodb_virtual_basic under MemorySanitizer and some builds with AddressSanitizer.
-
Marko Mäkelä authored
-
Thirunarayanan Balathandayuthapani authored
- This is caused by commit 1bd681c8(MDEV-25506) InnoDB removes the index from the table object before freeing the leaf and non-leaf segments.
-
- 05 Sep, 2022 7 commits
-
-
Daniel Black authored
The resources like uring in MariaDB aren't intended for spawned processes so we restrict access using the io_uring_ring_dontfork liburing library call.
-
Jan Lindström authored
-
Jan Lindström authored
-
Jan Lindström authored
-
Jan Lindström authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
This bug was found in MariaDB Server 10.6 thanks to the OPT_PAGE_CHECKSUM record that was implemented in commit 4179f93d for catching this type of recovery failures. page_cur_insert_rec_low(): If the previous record is the page infimum, correctly limit the end of the record. We do not want to copy data from the header of the page supremum. This omission caused the incorrect recovery of DB_TRX_ID in an instant ALTER TABLE metadata record, because part of the DB_TRX_ID was incorrectly copied from the n_owned of the page supremum, which in recovery would be updated after the copying, but in normal operation would already have been updated at the time the common prefix was being determined. log_phys_t::apply(): If a data page is found to be corrupted, do not flag the log corrupted but instead return a new status APPLIED_CORRUPTED so that the caller may discard all log for this page. We do not want the recovery of unrelated pages to fail in recv_recover_page(). No test case is included, because the known test case would only work in 10.6, and even after this fix, it would trigger another bug in instant ALTER TABLE crash recovery.
-
- 03 Sep, 2022 1 commit
-
-
Andrei authored
The replication unsafe warning's pattern gets corrected in the punctuation part.
-