maria:bb-10.5-cs

Last commit made on 2021-07-23
Get this branch:
git clone -b bb-10.5-cs https://git.launchpad.net/maria

Branch merges

Branch information

Name:
bb-10.5-cs
Repository:
lp:maria

Recent commits

730da02... by David Hall

update ref to 5.6.2-1

42b9daa... by Marko Mäkelä

MDEV-26138 innodb_flush_log_at_trx_commit=3 doesn't flush

trx_flush_log_if_needed_low(): Do flush for both
innodb_flush_log_at_trx_commit=1 and
innodb_flush_log_at_trx_commit=3.

This is the 10.6 version of
10.2 commit 5f8651ac238d8d6cd3e4a7e3090b4b529f990331
which fixed a regression that had been introduced
in 2e814d4702d71a04388386a9f591d14a35980bfe
(breaking 288eeb3a31e4bfb52180f3906a4d354ac9cc457e).

c35ac54... by Marko Mäkelä

Update libmariadb

7783161... by Marko Mäkelä

Merge 10.5 into 10.6

8cb2027... by Daniel Black

mtr: aix test fix innodb.temporary_table

AIX error message didn't include the filename like:

2021-07-22 9:43:04 0 [ERROR] mariadbd: Can't create/write to file '' (Errcode: 20 "Not a directory")
2021-07-22 9:43:04 0 [ERROR] mariadbd: Can't create/write to file '' (Errcode: 20 "Not a directory")

Reviewer: Marko

efd9093... by Marko Mäkelä

MDEV-26110 fixup: GCC 4.8.5 -Wtype-limits

row_ins_index_entry_set_vals(): Remove an assertion that trivially
holds because the 16-bit dict_col_t::len cannot represent the value
UNIV_PAGE_SIZE_MAX.

5f4314f... by Marko Mäkelä

MDEV-26210: Disable mariabackup.log_page_corruption

MDEV-26193 exposed a race condition in the test
mariabackup.log_page_corruption by no longer waking up purge tasks
on every transaction commit. (Note that there never was a guarantee
that the purge tasks would actually run as quickly as the test expected
it to happen; that would depend on the CPU load.)

a4dc926... by Marko Mäkelä

MDEV-26193: Wake up purge less often

Starting with commit 6e12ebd4a748eba738e08ad1d7f5dec782ff63ee
(MDEV-25062), srv_wake_purge_thread_if_not_active() became
more expensive operation, especially on NUMA systems, because
instead of reading an atomic global variable trx_sys.rseg_history_len
we are traversing up to 128 cache lines in trx_sys.history_exists().

trx_t::commit_cleanup(): Do not wake up purge at all.
We will wake up purge about once per second in srv_master_callback().

srv_master_do_active_tasks(), srv_master_do_idle_tasks():
Move some duplicated code to srv_master_callback().

srv_master_callback(): Invoke purge_coordinator_timer_callback()
to ensure that purge will be periodically woken up, even if the
latest execution of trx_t::commit_cleanup() allowed the purge view
to advance but did not wake up purge.
Do not call log_free_check(), because every thread that is going
to generate redo log is supposed to call that function anyway,
before acquiring any page latches. Additional calls to the function
every few seconds should not make any difference.

srv_shutdown_threads(): Ensure that srv_shutdown_state can be at most
SRV_SHUTDOWN_INITIATED in srv_master_callback(), by first invoking
srv_master_timer.reset() before changing srv_shutdown_state.
(Note: We first terminate the srv_master_callback and only then
terminate the purge tasks. Thus, the purge subsystem should exist
when srv_master_callback() invokes purge_coordinator_timer_callback()
if it was initiated in the first place.

641f093... by Marko Mäkelä

Merge 10.5 into 10.6

82d5994... by Marko Mäkelä

MDEV-26110: Do not rely on alignment on static allocation

It is implementation-defined whether alignment requirements
that are larger than std::max_align_t (typically 8 or 16 bytes)
will be honored by the compiler and linker.

It turns out that on IBM AIX, both alignas() and MY_ALIGNED()
only guarantees alignment up to 16 bytes.

For some data structures, specifying alignment to the CPU
cache line size (typically 64 or 128 bytes) is a mere performance
optimization, and we do not really care whether the requested
alignment is guaranteed.

But, for the correct operation of direct I/O, we do require that
the buffers be aligned at a block size boundary.

field_ref_zero: Define as a pointer, not an array.
For innochecksum, we can make this point to unaligned memory;
for anything else, we will allocate an aligned buffer from the heap.
This buffer will be used for overwriting freed data pages when
innodb_immediate_scrub_data_uncompressed=ON. And exactly that code
hit an assertion failure on AIX, in the test innodb.innodb_scrub.

log_sys.checkpoint_buf: Define as a pointer to aligned memory
that is allocated from heap.

log_t::file::write_header_durable(): Reuse log_sys.checkpoint_buf
instead of trying to allocate an aligned buffer from the stack.