Details
-
Bug
-
Status: Closed (View Workflow)
-
Major
-
Resolution: Won't Fix
-
10.3.29
-
None
Description
Hi,
MariaDB Cluster fails with the following stack trace if LOAD DATA and TRUNCATE runs at the same time:
May 26 21:16:06 juan-arruti-node1 mysqld: 2021-05-26 21:16:06 128 [ERROR] WSREP: FSM: no such a transition ABORTING -> REPLICATING |
May 26 21:16:06 juan-arruti-node1 mysqld: 210526 21:16:06 [ERROR] mysqld got signal 6 ; |
May 26 21:16:06 juan-arruti-node1 mysqld: This could be because you hit a bug. It is also possible that this binary |
May 26 21:16:06 juan-arruti-node1 mysqld: or one of the libraries it was linked against is corrupt, improperly built, |
May 26 21:16:06 juan-arruti-node1 mysqld: or misconfigured. This error can also be caused by malfunctioning hardware. |
May 26 21:16:06 juan-arruti-node1 mysqld: To report this bug, see https://mariadb.com/kb/en/reporting-bugs |
May 26 21:16:06 juan-arruti-node1 mysqld: We will try our best to scrape up some info that will hopefully help |
May 26 21:16:06 juan-arruti-node1 mysqld: diagnose the problem, but since we have already crashed, |
May 26 21:16:06 juan-arruti-node1 mysqld: something is definitely wrong and this may fail. |
May 26 21:16:06 juan-arruti-node1 mysqld: Server version: 10.3.29-MariaDB-log |
May 26 21:16:06 juan-arruti-node1 mysqld: key_buffer_size=134217728 |
May 26 21:16:06 juan-arruti-node1 mysqld: read_buffer_size=131072 |
May 26 21:16:06 juan-arruti-node1 mysqld: max_used_connections=3 |
May 26 21:16:06 juan-arruti-node1 mysqld: max_threads=153 |
May 26 21:16:06 juan-arruti-node1 mysqld: thread_count=12 |
May 26 21:16:06 juan-arruti-node1 mysqld: It is possible that mysqld could use up to |
May 26 21:16:06 juan-arruti-node1 mysqld: key_buffer_size + (read_buffer_size + sort_buffer_size)*max_threads = 467429 K bytes of memory |
May 26 21:16:06 juan-arruti-node1 mysqld: Hope that's ok; if not, decrease some variables in the equation. |
May 26 21:16:06 juan-arruti-node1 mysqld: Thread pointer: 0x7f30540009a8 |
May 26 21:16:06 juan-arruti-node1 mysqld: Attempting backtrace. You can use the following information to find out |
May 26 21:16:06 juan-arruti-node1 mysqld: where mysqld died. If you see no messages after this, something went |
May 26 21:16:06 juan-arruti-node1 mysqld: terribly wrong... |
May 26 21:16:06 juan-arruti-node1 mysqld: stack_bottom = 0x7f30e4076d30 thread_stack 0x49000 |
May 26 21:16:06 juan-arruti-node1 mysqld: /usr/sbin/mysqld(my_print_stacktrace+0x2e)[0x55d8dd525a7e] |
May 26 21:16:06 juan-arruti-node1 mysqld: /usr/sbin/mysqld(handle_fatal_signal+0x30f)[0x55d8dcfb8f1f] |
May 26 21:16:06 juan-arruti-node1 mysqld: sigaction.c:0(__restore_rt)[0x7f30f8215630] |
May 26 21:16:06 juan-arruti-node1 mysqld: :0(__GI_raise)[0x7f30f7e6e387] |
May 26 21:16:06 juan-arruti-node1 mysqld: :0(__GI_abort)[0x7f30f7e6fa78] |
May 26 21:16:06 juan-arruti-node1 mysqld: src/fsm.hpp:104(galera::FSM<galera::TrxHandle::State, galera::TrxHandle::Transition, galera::EmptyGuard, galera::EmptyAction>::shift_to(galera::TrxHandle::State))[0x7f30f4508b0c] |
May 26 21:16:06 juan-arruti-node1 mysqld: src/gcs.hpp:228(gcs_repl)[0x7f30f44fe861] |
May 26 21:16:06 juan-arruti-node1 mysqld: src/wsrep_provider.cpp:515(galera_pre_commit)[0x7f30f44e392a] |
May 26 21:16:06 juan-arruti-node1 mysqld: /usr/sbin/mysqld(wsrep_run_wsrep_commit+0x6ed)[0x55d8dcf247ed] |
May 26 21:16:06 juan-arruti-node1 mysqld: /usr/sbin/mysqld(+0x7252c8)[0x55d8dcf252c8] |
May 26 21:16:06 juan-arruti-node1 mysqld: /usr/sbin/mysqld(_Z15ha_commit_transP3THDb+0x1a6)[0x55d8dcfbc386] |
May 26 21:16:06 juan-arruti-node1 mysqld: /usr/sbin/mysqld(_Z17trans_commit_stmtP3THD+0x57)[0x55d8dcec3907] |
May 26 21:16:06 juan-arruti-node1 mysqld: /usr/sbin/mysqld(_Z21mysql_execute_commandP3THD+0x2a5)[0x55d8dcdd6295] |
May 26 21:16:06 juan-arruti-node1 mysqld: /usr/sbin/mysqld(_Z11mysql_parseP3THDPcjP12Parser_statebb+0x1fb)[0x55d8dcdde0eb] |
May 26 21:16:06 juan-arruti-node1 mysqld: /usr/sbin/mysqld(+0x4e1b30)[0x55d8dcce1b30] |
May 26 21:16:06 juan-arruti-node1 mysqld: /usr/sbin/mysqld(_Z16dispatch_command19enum_server_commandP3THDPcjbb+0x2689)[0x55d8dcde1079] |
May 26 21:16:06 juan-arruti-node1 mysqld: /usr/sbin/mysqld(_Z10do_commandP3THD+0x11b)[0x55d8dcde155b] |
May 26 21:16:06 juan-arruti-node1 mysqld: /usr/sbin/mysqld(_Z24do_handle_one_connectionP7CONNECT+0x1d6)[0x55d8dceb69c6] |
May 26 21:16:06 juan-arruti-node1 mysqld: /usr/sbin/mysqld(handle_one_connection+0x3d)[0x55d8dceb6add] |
May 26 21:16:06 juan-arruti-node1 mysqld: pthread_create.c:0(start_thread)[0x7f30f820dea5] |
May 26 21:16:06 juan-arruti-node1 mysqld: /lib64/libc.so.6(clone+0x6d)[0x7f30f7f369fd] |
May 26 21:16:06 juan-arruti-node1 mysqld: Trying to get some variables. |
May 26 21:16:06 juan-arruti-node1 mysqld: Some pointers may be invalid and cause the dump to abort. |
May 26 21:16:06 juan-arruti-node1 mysqld: Query (0x7f305400f5f8): load data local infile '/tmp/testcase' into table test.t2 |
May 26 21:16:06 juan-arruti-node1 mysqld: Connection ID (thread ID): 128 |
You can find below the steps to reproduce it, let the loop run concurrently in all sessions for a while (5 minutes) and the database should abort:
# Session 1 |
while true; do { |
mysql -e "drop table if exists test.t1" |
mysql test < /tmp/t1.sql
|
mysql -e "purge binary logs before now();" |
mysql -e "load data local infile '/tmp/testcase' into table test.t1 ;" |
mysql -e "purge binary logs before now();" |
} done;
|
|
# Session 2 |
while true; do { |
mysql -e "drop table if exists test.t2" |
mysql test < /tmp/t2.sql
|
mysql -e "purge binary logs before now();" |
mysql -e "load data local infile '/tmp/testcase' into table test.t2 ;" |
mysql -e "purge binary logs before now();" |
} done;
|
|
# Session 3 |
while true; do { |
mysql -e "truncate table test.t1" |
mysql -e "truncate table test.t2" |
} done;
|
You can find attached the testcase file to load the data while t1.sql and t2.sql files contain table DDL. I couldn't reproduce it without purging logs, maybe there is a connection with:
https://jira.mariadb.org/browse/MDEV-17262
Regards,