[MDEV-27365] CREATE-or-REPLACE bilogged without DDL flag Created: 2021-12-26  Updated: 2023-10-23  Resolved: 2023-10-23

Status: Closed
Project: MariaDB Server
Component/s: Replication
Affects Version/s: 10.3, 10.4, 10.5, 10.6, 10.7
Fix Version/s: 10.8.1, 10.4.24, 10.5.15, 10.6.7, 10.7.3, 10.8.2

Type: Bug Priority: Major
Reporter: Andrei Elkin Assignee: Andrei Elkin
Resolution: Fixed Votes: 0
Labels: None


 Description   

create or replace of both table and sequence are not logged with Gtid event DDL flag
which affects the slave parallel execution.
Unlike other DDL:s these two can occur in concurrent execution with following transactions
which can lead to various errors, including asserts like

(mdl_request->type != MDL_INTENTION_EXCLUSIVE && mdl_request->type != MDL_EXCLUSIVE) || !(get_thd()->rgi_slave && get_thd()->rgi_slave->is_parallel_exec && lock->check_if_conflicting_replication_locks(this)

of MDL_context::acquire_lock



 Comments   
Comment by Andrei Elkin [ 2021-12-26 ]

Brandon, this one needs fixing the master side. That's why I test it only there.
Having the DDL flag ensures correct assert-free behaviour like other DDL:s produce.

Comment by Andrei Elkin [ 2022-01-03 ]

I simplified the commit to withdraw the regular table part. It turns out the stmt level flag is not completely lost in that case. The stmt flag gets merged into all the whole trx flag set and Gtid ctor finds the "all" one. I somewhat missed to read that. In the Sequence case the merging is also done, but "all" gets cleared 'cos of an implicit_commit call before C-o-R Seq eventually gets to executing the ctor. So that part is preserved. The test is also rather trivial now. Pushed to bb-10.3-andrei (as the Seq is added starting from it).

Comment by Brandon Nesterenko [ 2022-01-04 ]

Elkin the new commit from bb-10.3-andrei (80da35a) looks good, approved.

Comment by Andrei Elkin [ 2022-01-26 ]

Another execution branch is found to lose the flag. A new commit is coming out.

Comment by Andrei Elkin [ 2022-01-26 ]

9e5ea2ef4a9 and its predecessor commits were pushed first to 10.8 QA branch to remove the issue
temporarily.

Comment by Brandon Nesterenko [ 2022-01-27 ]

Patch review. On my end I only would like to see a code comment which explains the expected life-cycle of the flags.

Comment by Brandon Nesterenko [ 2022-01-27 ]

The latest patch 55a01af looks good. Thanks!

Generated at Thu Feb 08 09:52:22 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.