maria:review__knielsen_xa_sched_minimal_fix

Last commit made on 2024-03-19
Get this branch:
git clone -b review__knielsen_xa_sched_minimal_fix https://git.launchpad.net/maria

Branch merges

Branch information

Name:
review__knielsen_xa_sched_minimal_fix
Repository:
lp:maria

Recent commits

0dc1367... by Andrei <email address hidden>

Review suggestion.

As maybe_active_xid can expand in runtime and its extra allocated elements
may not be needed in a while, lets check for that and shrink
the size to a double of the initial one.

c44a732... by Kristian Nielsen

MDEV-33668: Remove redundant wait_for_prior_commit when applying XA PREPARE

This was blocking XA PREPARE from group-committing with any prior transaction
in parallel replication, which would limit performance.

Signed-off-by: Kristian Nielsen <email address hidden>

c01ea17... by Kristian Nielsen

More precise dependency tracking of XA XID in parallel replication

Keep track of each recently active XID, recording which worker it was queued
on. If an XID might still be active, choose the same worker to queue event
groups that refer to the same XID to avoid conflicts.

Otherwise, schedule the XID freely in the next round-robin slot.

This way, XA PREPARE can normally be scheduled without restrictions (unless
duplicate XID transactions come close together). This improves scheduling
and parallelism over the old method, where the worker thread to schedule XA
PREPARE on was fixed based on a hash value of the XID.

XA COMMIT will normally be scheduled on the same worker as XA PREPARE, but
can be a different one if the XA PREPARE is far back in the event history.

Signed-off-by: Kristian Nielsen <email address hidden>

f0c1d5a... by Kristian Nielsen

Refactor parallel replication round-robin scheduling to use explicit FIFO

When choosing the scheduling bucket for the next event group in
rpl_parallel_entry::choose_thread(), use an explicit FIFO for the
round-robin selection instead of a simple cyclic counter i := (i+1) % N.

This allows to schedule XA COMMIT/ROLLBACK dependencies explicitly without
changing the round-robin scheduling of other event groups.

Signed-off-by: Kristian Nielsen <email address hidden>

55cea0c... by Sergei Golubchik

Merge branch '10.5' into 10.6

bb451d2... by Sergei Golubchik

fix galera tests after 9a132d423ab

dbd36bb... by Sergei Golubchik

after merge fix

51e3f1d... by Sergei Golubchik

cmake: append to the array correctly

it was generating broken spec files

9d5a8bd... by Sergey Petrunia

MDEV-33665: MSAN failure due to uninitialized Item_func::not_null_tables_cache

eliminate_item_equal() uses quick_fix_field() for Item objects it creates.
It computes some of their attributes on its own (see update_used_tables()
call) but it doesn't update not_null_tables_cache.

Recompute not_null_tables_cache also. Not computing it is currently
harmless, except for producing MSAN error when some other code
propagates the wrong value of not_null_tables_cache to other item.

49cf702... by Sergei Golubchik

build failure with cmake < 3.10

cmake bug #14362