maria:bb-10.6.8-MDEV-27701

Last commit made on 2023-05-18
Get this branch:
git clone -b bb-10.6.8-MDEV-27701 https://git.launchpad.net/maria

Branch merges

Branch information

Name:
bb-10.6.8-MDEV-27701
Repository:
lp:maria

Recent commits

f9214e8... by Vlad Lesin

MDEV-27701 Race on trx->lock.wait_lock between lock_rec_move() and lock_sys_t::cancel()

The initial issue was in assertion failure, which checked the equality
of lock to cancel with trx->lock.wait_lock in lock_sys_t::cancel().

If we analyze lock_sys_t::cancel() code from the perspective of
trx->lock.wait_lock racing, we won't find the error there, except the
cases when we need to reload it after the corresponding latches
acquiring.

So the fix is just to remove the assertion and reload
trx->lock.wait_lock after acquiring necessary latches.

Reviewed by: Marko Mäkelä <email address hidden>

b218766... by Sergei Golubchik

Merge branch '10.5' into 10.6

7970ac7... by Sergei Golubchik

Merge branch '10.4' into 10.5

98ca71a... by Andrei <email address hidden>

MDEV-28461 semisync-slave server recovery fails to rollback prepared transaction

that is not in binlog.

Post-crash recovery of --rpl-semi-sync-slave-enabled server
failed to recognize a transaction in-doubt that needed rolled back.
A prepared-but-not-in-binlog transaction gets committed instead
to possibly create inconsistency with a master (e.g the way it was observed
in the bug report).

The semisync recovery is corrected now with initializing binlog coordinates
of any transaction in-doubt to the maximum offset which is
unreachable.
In effect when a prepared transaction that is not found in binlog
it will be decided to rollback because it's guaranteed to reside
in a truncated tail area of binlog.

Mtr tests are reinforced to cover the described scenario.

23ddc35... by Sergei Golubchik

Merge branch '10.3' into 10.4

a0d4f0f... by Sergei Golubchik

Merge branch '10.2' into 10.3

commit 84984b79f27 is null-merged

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

MDEV-28583: Galera: binlogs disappear after rsync IST

This commit sends a flag indicating the presence of the "--bypass"
option from the donor node to the joiner nodes during rsync IST,
because without such a flag it is impossible to distinguish IST
from the SST on the joiner nodes (in IST/SST scripts, because the
"--bypass" option is still not passed to scripts from server code).
Specifically, this fixes an issue with binary logs disappearing
after IST (via rsync). There are also changes to diagnostic messages
here that will make it easier to diagnose script-related problems
in the future when debugging and when checking the logs. This commit
also adds more robust signal handlers - to handle exceptions during
script execution. These handlers won't mask some crashes and it
also unifies exit codes between different scripts. These changes
have already been helpful to debugging "bypass" flag handling.

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

MDEV-28423: Galera IST is failing on Joiner node

This commit fixes an issue with IST handling in
version 10.9 which is a regression after MDEV-26971
and related to trying to get a non-existent "total"
tag on the IST branch (this tag is only defined in
SST mode).

107623c... by midenok

MDEV-28552 Assertion `inited==RND' failed in handler::ha_rnd_end

We cannot permanently change bits in read_partitions in the middle of
processing because ha_rnd_init()/ha_rnd_end() depends on that.

8609254... by Sergei Golubchik

cleanup:have_log_bin.inc

prefer if/skip over require
(works better with debugging, not affected by query log)