maria:10.4-sysprg-galera_3nodes

Last commit made on 2022-03-04
Get this branch:
git clone -b 10.4-sysprg-galera_3nodes https://git.launchpad.net/maria

Branch merges

Branch information

Name:
10.4-sysprg-galera_3nodes
Repository:
lp:maria

Recent commits

cbded9b... by Julius Goryavsky <email address hidden>

galera_3nodes.galera_2_cluster test: ignoring expected warnings

446ec64... by THIRUNARAYANAN BALATHANDAYUTHAPANI

MDEV-27962 Instant DDL downgrades the MDL when table is empty

 - Server incorrectly downgrading the MDL after prepare phase when
table is empty. mdl_exclusive_after_prepare is being set in
prepare phase only. But mdl_exclusive_after_prepare condition was
misplaced and checked before prepare phase by
commit d270525dfde86bcb92a2327234a0954083e14a94 and it is now
changed to check after prepare phase.

 - main.innodb_mysql_sync test case was changed to avoid locking
optimization when table is empty.

3c58cdd... by Marko Mäkelä

Merge 10.3 into 10.4

0635088... by Marko Mäkelä

MDEV-27800: Avoid garbage TRX_UNDO_TRX_NO on TRX_UNDO_CACHED pages

In commit c7d0448797a2013079c3e0b7ca97f7bdc1138696 (MDEV-15132)
MariaDB Server 10.3 stopped writing the latest transaction identifier
to the TRX_SYS page. Instead, the transaction identifier will be
recovered from undo log pages.

Unfortunately, before commit 3926673ce7149aa223103126b6aeac819b10fab5
and mysql/mysql-server@dc29792ff2996aefbb6e64bb2f0bc3aa8fc879e9
(MySQL 5.1.48 or MariaDB 5.1.48) InnoDB did not always initialize all
data fields, but some garbage could be left behind in unused parts
of data pages.

In undo log pages that are essentially free, but added to a list for
reuse (TRX_UNDO_CACHED) the TRX_UNDO_TRX_NO fields could contain garbage,
instead of 0. As long as such undo pages are being reused and never
marked completely free, the garbage contents may remain forever.
In fact, the function trx_undo_header_create() and the record
MLOG_UNDO_HDR_CREATE will only initialize TRX_UNDO_TRX_ID, but leave
TRX_UNDO_TRX_NO uninitialized.

trx_undo_mem_create_at_db_start(): Only read the TRX_UNDO_TRX_NO
fields of TRX_UNDO_CACHED pages if the TRX_UNDO_PAGE_TYPE is 0,
that is, the page was updated by MariaDB Server 10.3. Earlier versions
would always write the TRX_UNDO_PAGE_TYPE as 1 or 2.

trx_undo_header_create(): Zero out the TRX_UNDO_TRX_NO field.
Strictly speaking, this will change the semantics of the
MLOG_UNDO_HDR_CREATE record, but it should not do any harm to
overwrite a potentially garbage field with zeroes.

Note: This fix will only help future upgrades straight from
MariaDB Server 10.2 or MySQL 5.6 or earlier. If such an upgrade has
already been made, then an earlier server startup could have
fast-forwarded the transaction ID sequence to a large value.
If this large value cannot be represented in 48 bits (the size of
the DB_TRX_ID column in clustered index records), then various
strange things can happen.

535bef8... by Marko Mäkelä

Merge 10.2 into 10.3

905baa6... by Brandon Nesterenko

MDEV-27850: MTR tests can hang due to DEBUG_SYNC race condition

DEBUG_SYNC signals can get lost in certain tests due to later
DEBUG_SYNC commands overwriting them. This patch addresses
these issues in three tests: main.query_cache_debug,
main.partition_debug_sync, and
rpl.rpl_dump_request_retry_warning.

Additionally, main.partition_debug_sync needed changes to the
result file (the others did not). The synchronization happened
between two commands, one based on ALTER, the other on DROP.
A new thread/connection was needed to synchronize the DEBUG_SYNC
actions between these commands, thereby changing the result file.
Additional comments were added for clarification.

Reviewed By:
============
Andrei Elkin <email address hidden>

f5ff7d0... by Marko Mäkelä

Merge 10.3 into 10.4

9ba385a... by Marko Mäkelä

Merge 10.2 into 10.3

ed691ec... by Marko Mäkelä

Remove deprecated (in C++11) std::binary_function

0eabc28... by Marko Mäkelä

Merge 10.3 into 10.4 (MDEV-27913)