[MDEV-30917] mariabackup does not work when server has alter_algorithm=copy Created: 2023-03-23  Updated: 2023-04-07  Resolved: 2023-03-23

Status: Closed
Project: MariaDB Server
Component/s: Data Definition - Alter Table, Locking, mariabackup
Affects Version/s: 10.3, 10.4, 10.5, 10.6, 10.7, 10.8, 10.9, 10.10, 10.11, 11.0
Fix Version/s: N/A

Type: Bug Priority: Major
Reporter: Elena Stepanova Assignee: Elena Stepanova
Resolution: Not a Bug Votes: 0
Labels: None


 Description   

perl ./mtr mariabackup.lock_ddl_per_table --mem --mysqld=--alter-algorithm=copy

The test hangs, apparently MariaBackup locks itself. The server's processlist shows

10.4 ff3d4395

+----+-------------+-----------------+------+---------+------+---------------------------------+---------------------------------------------------+----------+
| Id | User        | Host            | db   | Command | Time | State                           | Info                                              | Progress |
+----+-------------+-----------------+------+---------+------+---------------------------------+---------------------------------------------------+----------+
|  1 | system user |                 | NULL | Daemon  | NULL | InnoDB purge coordinator        | NULL                                              |    0.000 |
|  4 | system user |                 | NULL | Daemon  | NULL | InnoDB purge worker             | NULL                                              |    0.000 |
|  2 | system user |                 | NULL | Daemon  | NULL | InnoDB purge worker             | NULL                                              |    0.000 |
|  3 | system user |                 | NULL | Daemon  | NULL | InnoDB purge worker             | NULL                                              |    0.000 |
|  5 | system user |                 | NULL | Daemon  | NULL | InnoDB shutdown handler         | NULL                                              |    0.000 |
|  9 | root        | localhost       | test | Sleep   |   52 |                                 | NULL                                              |    0.000 |
| 10 | root        | localhost       | NULL | Query   |   51 | Waiting for backup lock         | BACKUP STAGE BLOCK_COMMIT                         |    0.000 |
| 11 | root        | localhost       | NULL | Sleep   |   52 |                                 | NULL                                              |    0.000 |
| 12 | root        | localhost       | NULL | Query   |   52 | Waiting for table metadata lock | ALTER TABLE test.t ADD COLUMN mdl_lock_column int |    0.000 |
| 13 | root        | localhost:33124 | NULL | Query   |    0 | Init                            | show processlist                                  |    0.000 |
+----+-------------+-----------------+------+---------+------+---------------------------------+---------------------------------------------------+----------+

MariaDB [(none)]> select * from information_schema.metadata_lock_info;
+-----------+-------------------------+---------------+----------------------+--------------+----------------------+
| THREAD_ID | LOCK_MODE               | LOCK_DURATION | LOCK_TYPE            | TABLE_SCHEMA | TABLE_NAME           |
+-----------+-------------------------+---------------+----------------------+--------------+----------------------+
|        12 | MDL_BACKUP_DDL          | NULL          | Backup lock          |              |                      |
|        10 | MDL_BACKUP_WAIT_FLUSH   | NULL          | Backup lock          |              |                      |
|        11 | MDL_SHARED_READ         | NULL          | Table metadata lock  | test         | bobby`tables         |
|        11 | MDL_SHARED_READ         | NULL          | Table metadata lock  | test         | t                    |
|        12 | MDL_SHARED_NO_WRITE     | NULL          | Table metadata lock  | test         | t                    |
|        11 | MDL_SHARED_READ         | NULL          | Table metadata lock  | mysql        | transaction_registry |
|        11 | MDL_SHARED_READ         | NULL          | Table metadata lock  | mysql        | innodb_table_stats   |
|        11 | MDL_SHARED_READ         | NULL          | Table metadata lock  | mysql        | innodb_index_stats   |
|        12 | MDL_INTENTION_EXCLUSIVE | NULL          | Schema metadata lock | test         |                      |
+-----------+-------------------------+---------------+----------------------+--------------+----------------------+



 Comments   
Comment by Elena Stepanova [ 2023-03-23 ]

I didn't notice that MariaBackup is run there with a debug injection. Need to check further.

Comment by Elena Stepanova [ 2023-03-23 ]

False alarm, the test runs mariabackup with check_mdl_lock_works injection, and the ALTER is triggered by it.

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