Uploaded image for project: 'MariaDB Server'
  1. MariaDB Server
  2. MDEV-41293

Assertion `sp > last_savepoint()' failed

    XMLWordPrintable

Details

    • Can result in hang or crash
    • Q4/2026 Server Maintenance

    Description

      Issue:

      ---------
      mariadbd: /home/ppandith/wl-39226/storage/federatedx/federatedx_io_mysql.cc:238: virtual int federatedx_io_mysql::savepoint_set(ulong): Assertion `sp > last_savepoint()' failed.

      Issue details:

      -------------------------
      With pushdown=ON , query exceeds net_read_timeout(defualt 30sec) and errors out , re-executing query with pushdown=OFF crashes.

      MariaDB [m8]> set global federated_pushdown=ON;
       
      MariaDB [m8]> UPDATE s1 JOIN s1 AS OUTR2 SET OUTR2.a = 1 where s1.a >0; 
      ERROR 1159 (08S01): Got timeout reading communication packets
       
      MariaDB [m8]> set global federated_pushdown=OFF;
       
      MariaDB [m8]> UPDATE s1 JOIN s1 AS OUTR2 SET OUTR2.a = 1 where s1.a <2;
      ERROR 2027 (HY000): Received malformed packet
      MariaDB [m8]> UPDATE s1 JOIN s1 AS OUTR2 SET OUTR2.a = 1 where s1.a <2;
      ERROR 2026 (HY000): TLS/SSL error: unexpected eof while reading
      

      Version used:

      ----------------
      Branch : 13.2-MDEV-39226-direct-multi_table-update-delete
      commit: 5992b3d00bec6bdaee4c7dcd3efd9bb8e39e4911
      Version : 13.1.0

      Stack trace:

      ---------------

      #11 __assert_fail_base (fmt="%s%s%s:%u: %s%sAssertion `%s' failed.\n%n", assertion=assertion@entry="sp > last_savepoint()", 
          file=file@entry="/home/ppandith/wl-39226/storage/federatedx/federatedx_io_mysql.cc", line=line@entry=238, 
          function=function@entry="virtual int federatedx_io_mysql::savepoint_set(ulong)") at ./assert/assert.c:96
      #12 __assert_fail (assertion="sp > last_savepoint()", file="/home/ppandith/wl-39226/storage/federatedx/federatedx_io_mysql.cc", 
          line=238, function="virtual int federatedx_io_mysql::savepoint_set(ulong)") at ./assert/assert.c:105
      #13 federatedx_io_mysql::savepoint_set (this=, sp=1) at /home/ppandith/wl-39226/storage/federatedx/federatedx_io_mysql.cc:238
      #14 federatedx_txn::sp_acquire (this=, sp=) at /home/ppandith/wl-39226/storage/federatedx/federatedx_txn.cc:308
      #15 federatedx_txn::stmt_begin (this=) at /home/ppandith/wl-39226/storage/federatedx/federatedx_txn.cc:373
      #16 ha_federatedx::external_lock (this=, thd=, lock_type=1) at /home/ppandith/wl-39226/storage/federatedx/ha_federatedx.cc:3550
      #17 handler::ha_external_lock (this=, thd=, lock_type=1) at /home/ppandith/wl-39226/sql/handler.cc:8044
      #18 lock_external (thd=, tables=, count=2) at /home/ppandith/wl-39226/sql/lock.cc:443
      #19 mysql_lock_tables (thd=, sql_lock=, flags=0) at /home/ppandith/wl-39226/sql/lock.cc:388
      #20 mysql_lock_tables (thd=, tables=, count=2, flags=0) at /home/ppandith/wl-39226/sql/lock.cc:351
      #21 lock_tables (thd=, tables=, count=2, flags=0) at /home/ppandith/wl-39226/sql/sql_base.cc:6099
      #22 Sql_cmd_dml::execute (this=, thd=) at /home/ppandith/wl-39226/sql/sql_select.cc:34971
      #23 mysql_execute_command (thd=, is_called_from_prepared_stmt=false) at /home/ppandith/wl-39226/sql/sql_parse.cc:4452
      #24 mysql_parse (thd=, rawbuf="UPDATE s1 JOIN s1 AS OUTR2 SET OUTR2.a = 1 where s1.a <2", length=56, parser_state=)
          at /home/ppandith/wl-39226/sql/sql_parse.cc:7968
      #25 dispatch_command (command=COM_QUERY, thd=, packet="UPDATE s1 JOIN s1 AS OUTR2 SET OUTR2.a = 1 where s1.a <2", packet_length=56, 
          blocking=true) at /home/ppandith/wl-39226/sql/sql_parse.cc:1903
      #26 do_command (thd=, blocking=true) at /home/ppandith/wl-39226/sql/sql_parse.cc:1437
      #27 do_handle_one_connection (connect=, put_in_cache=true) at /home/ppandith/wl-39226/sql/sql_connect.cc:1514
      #28 handle_one_connection (arg=) at /home/ppandith/wl-39226/sql/sql_connect.cc:1426
      #29 pfs_spawn_thread (arg=) at /home/ppandith/wl-39226/storage/perfschema/pfs.cc:2198
      #30 start_thread (arg=<optimized out>) at ./nptl/pthread_create.c:447
      #31 clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:78
      

      How to repeat:

      ----------------
      Slave:

      create table s1( a int);
      

      Master: Start server with federated engine enabled

      create table s1(a int)  ENGINE="FEDERATED" CONNECTION='mysql://u3:pass1@127.0.0.1:3306/m8/s1';
       
      insert into s1 select seq from seq_1_to_100000;
      set global federated_pushdown=ON;
      UPDATE s1 JOIN s1 AS OUTR2 SET OUTR2.a = 1 where s1.a >0;
       
      set global federated_pushdown=OFF;
      UPDATE s1 JOIN s1 AS OUTR2 SET OUTR2.a = 1 where s1.a <2;
      UPDATE s1 JOIN s1 AS OUTR2 SET OUTR2.a = 1 where s1.a <2;
      

      Attachments

        Issue Links

          Activity

            People

              bsrikanth Srikanth Bondalapati
              mariadb-pavithrapandith Pavithra Pandith
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:

                Time Tracking

                  Estimated:
                  Original Estimate - 0d
                  0d
                  Remaining:
                  Remaining Estimate - 2d
                  2d
                  Logged:
                  Time Spent - Not Specified
                  Not Specified

                  Git Integration

                    Error rendering 'com.xiplink.jira.git.jira_git_plugin:git-issue-webpanel'. Please contact your Jira administrators.