[MDEV-22146] Server crashes in mysql_ha_flush_tables upon ALTER SERVER Created: 2020-04-03  Updated: 2020-04-04  Resolved: 2020-04-04

Status: Closed
Project: MariaDB Server
Component/s: Admin statements, Storage Engine - Federated
Affects Version/s: 10.5
Fix Version/s: 10.5.3

Type: Bug Priority: Critical
Reporter: Elena Stepanova Assignee: Sergey Vojtovich
Resolution: Fixed Votes: 0
Labels: regression


 Description   

install soname 'ha_federatedx';
--eval create server s foreign data wrapper 'mysql' options (HOST '127.0.0.1', DATABASE 'test', USER 'root', PASSWORD '', PORT $MASTER_MYPORT, SOCKET '', OWNER 'root');
create database federated;
create table test.t1 (a int);
create table federated.t1 (a int) engine=FEDERATED CONNECTION='s';
insert into federated.t1 values (1);
alter server s options (DATABASE 'x');

10.5 d2c366c6

#3  <signal handler called>
#4  0x000055a7482b0b91 in mysql_ha_flush_tables (thd=0x7f6bc4000d78, all_tables=0x7f6bc4013c90) at /data/src/10.5/sql/sql_handler.cc:1132
#5  0x000055a74825791e in close_cached_tables (thd=0x7f6bc4000d78, tables=0x7f6bc4013c90, wait_for_refresh=true, timeout=86400) at /data/src/10.5/sql/sql_base.cc:429
#6  0x000055a748495135 in close_cached_connection_tables (thd=0x7f6bc4000d78, connection=0x7f6bc4006398) at /data/src/10.5/sql/sql_servers.cc:194
#7  0x000055a748497603 in alter_server (thd=0x7f6bc4000d78, server_options=0x7f6bc4006390) at /data/src/10.5/sql/sql_servers.cc:1170
#8  0x000055a74830b3a3 in mysql_execute_command (thd=0x7f6bc4000d78) at /data/src/10.5/sql/sql_parse.cc:5852
#9  0x000055a748311bd0 in mysql_parse (thd=0x7f6bc4000d78, rawbuf=0x7f6bc4013b90 "alter server s options (DATABASE 'x')", length=37, parser_state=0x7f6be0442510, is_com_multi=false, is_next_command=false) at /data/src/10.5/sql/sql_parse.cc:7953
#10 0x000055a7482fd564 in dispatch_command (command=COM_QUERY, thd=0x7f6bc4000d78, packet=0x7f6bc4008d09 "alter server s options (DATABASE 'x')", packet_length=37, is_com_multi=false, is_next_command=false) at /data/src/10.5/sql/sql_parse.cc:1839
#11 0x000055a7482fbca2 in do_command (thd=0x7f6bc4000d78) at /data/src/10.5/sql/sql_parse.cc:1358
#12 0x000055a74849cde0 in do_handle_one_connection (connect=0x55a74b1bc1f8, put_in_cache=true) at /data/src/10.5/sql/sql_connect.cc:1422
#13 0x000055a74849cb10 in handle_one_connection (arg=0x55a74b12dfd8) at /data/src/10.5/sql/sql_connect.cc:1319
#14 0x000055a7489cb9f3 in pfs_spawn_thread (arg=0x55a74b1bbe38) at /data/src/10.5/storage/perfschema/pfs.cc:2201
#15 0x00007f6be5af7fa3 in start_thread (arg=<optimized out>) at pthread_create.c:486
#16 0x00007f6be53464cf in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

The failure appeared in 10.5 branch with this commit:

commit bfdd30d3e92d3bf5570cc050967098c6b5a2d73a
Author: Sergey Vojtovich
Date:   Sat Dec 21 01:22:09 2019 +0400
 
    Fixed close_cached_connection_tables() flushing
    
    Let DROP SERVER and ALTER SERVER perform fair affected tables flushing.
    That is acquire MDL_EXCLUSIVE and do tdc_remove_table(TDC_RT_REMOVE_ALL).
    
    Aim of this patch is elimination of another inconsistent use of
    TDC_RT_REMOVE_UNUSED. It fixes (to some extent) a problem described in the
    beginning of sql_server.cc, when close_cached_connection_tables()
    interferes with concurrent transaction.
    
    A better fix should probably introduce proper MDL locks for server
    objects?
    
    Part of MDEV-17882 - Cleanup refresh version

Note: The test case is a modified excerpt from federated.federated_server.


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