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

Decoding ttl error, assertion failure in myrocks::ha_rocksdb::should_hide_ttl_rec

Details

    • Bug
    • Status: Open (View Workflow)
    • Major
    • Resolution: Unresolved
    • 10.4(EOL), 10.5, 10.6, 10.10(EOL), 10.11, 11.0(EOL), 11.1(EOL), 11.2(EOL)
    • 10.5, 10.6, 10.11
    • None

    Description

      INSTALL SONAME 'ha_rocksdb';
       
      CREATE TABLE t (id INT, a INT, b INT, PRIMARY KEY(id), KEY(a), KEY(b)) ENGINE=RocksDB COMMENT='ttl_duration=300';
      START TRANSACTION;
      INSERT INTO t VALUES (1,1,1),(2,2,2);
      DELETE FROM t ORDER BY a LIMIT 10;
      

      10.4 64f44b22d9a3dab3d4c0b77addbcbdafde57b466

      2023-11-26 17:39:42 4 [ERROR] Decoding ttl from PK value failed, for index (0,257), val: 
      mysqld: /data/bld/10.4-asan/storage/rocksdb/ha_rocksdb.cc:6433: bool myrocks::ha_rocksdb::should_hide_ttl_rec(const myrocks::Rdb_key_def&, const rocksdb::Slice&, int64_t): Assertion `0' failed.
       
      #9  0x00007f7ba5e53e32 in __GI___assert_fail (assertion=0x7f7b9bb3a040 "0", file=0x7f7b9bb2bca0 "/data/bld/10.4-asan/storage/rocksdb/ha_rocksdb.cc", line=6433, function=0x7f7b9bb39ea0 "bool myrocks::ha_rocksdb::should_hide_ttl_rec(const myrocks::Rdb_key_def&, const rocksdb::Slice&, int64_t)") at ./assert/assert.c:101
      #10 0x00007f7b9ae8062e in myrocks::ha_rocksdb::should_hide_ttl_rec (this=0x61d0002468a8, kd=..., ttl_rec_val=..., curr_ts=1701013182) at /data/bld/10.4-asan/storage/rocksdb/ha_rocksdb.cc:6433
      #11 0x00007f7b9ae80c1b in myrocks::ha_rocksdb::rocksdb_skip_expired_records (this=0x61d0002468a8, kd=..., iter=0x6080000103a0, seek_backward=false) at /data/bld/10.4-asan/storage/rocksdb/ha_rocksdb.cc:6461
      #12 0x00007f7b9ae980b6 in myrocks::ha_rocksdb::index_next_with_direction (this=0x61d0002468a8, buf=0x61900009f1b8 "\371\002", move_forward=true) at /data/bld/10.4-asan/storage/rocksdb/ha_rocksdb.cc:9145
      #13 0x00007f7b9ae977f7 in myrocks::ha_rocksdb::index_next (this=0x61d0002468a8, buf=0x61900009f1b8 "\371\002") at /data/bld/10.4-asan/storage/rocksdb/ha_rocksdb.cc:9096
      #14 0x000056488d21f98a in handler::ha_index_next (this=0x61d0002468a8, buf=0x61900009f1b8 "\371\002") at /data/bld/10.4-asan/sql/handler.cc:3011
      #15 0x000056488d644091 in rr_index (info=0x7f7b9ce51710) at /data/bld/10.4-asan/sql/records.cc:450
      #16 0x000056488c8aea84 in READ_RECORD::read_record (this=0x7f7b9ce51710) at /data/bld/10.4-asan/sql/records.h:70
      #17 0x000056488d692083 in mysql_delete (thd=0x62b00005b208, table_list=0x62b000062340, conds=0x0, order_list=0x62b00005fc20, limit=8, options=0, result=0x0) at /data/bld/10.4-asan/sql/sql_delete.cc:794
      #18 0x000056488ca6777c in mysql_execute_command (thd=0x62b00005b208) at /data/bld/10.4-asan/sql/sql_parse.cc:4817
      #19 0x000056488ca7da6b in mysql_parse (thd=0x62b00005b208, rawbuf=0x62b000062228 "DELETE FROM t ORDER BY a LIMIT 10", length=33, parser_state=0x7f7b9ce53c60, is_com_multi=false, is_next_command=false) at /data/bld/10.4-asan/sql/sql_parse.cc:8060
      #20 0x000056488ca53ae2 in dispatch_command (command=COM_QUERY, thd=0x62b00005b208, packet=0x62900021c209 "DELETE FROM t ORDER BY a LIMIT 10", packet_length=33, is_com_multi=false, is_next_command=false) at /data/bld/10.4-asan/sql/sql_parse.cc:1857
      #21 0x000056488ca50651 in do_command (thd=0x62b00005b208) at /data/bld/10.4-asan/sql/sql_parse.cc:1378
      #22 0x000056488ce56d15 in do_handle_one_connection (connect=0x6080000009a8) at /data/bld/10.4-asan/sql/sql_connect.cc:1419
      #23 0x000056488ce5662c in handle_one_connection (arg=0x6080000009a8) at /data/bld/10.4-asan/sql/sql_connect.cc:1323
      #24 0x000056488dabb26c in pfs_spawn_thread (arg=0x615000003508) at /data/bld/10.4-asan/storage/perfschema/pfs.cc:1869
      #25 0x00007f7ba5ea8044 in start_thread (arg=<optimized out>) at ./nptl/pthread_create.c:442
      #26 0x00007f7ba5f2861c in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81
      

      Non-debug build produces the same error without server abort:

      2023-11-26 17:39:42 4 [ERROR] Decoding ttl from PK value failed, for index (0,257), val: 
      

      (it does indeed end with val:, nothing after that).

      Reproducible on all existing versions.

      Attachments

        Activity

          elenst Elena Stepanova created issue -
          elenst Elena Stepanova made changes -
          Field Original Value New Value
          Fix Version/s 10.10 [ 27530 ]
          Assignee Elena Stepanova [ elenst ] Sergei Petrunia [ psergey ]
          Description Reproducible (also on previous 10.4, so not a recent regression), needs cleaning

          {code:sql}
          # Remaining options: --mysqld=--default-storage-engine=RocksDB --mysqld=--plugin-load-add=ha_rocksdb
          # Search pattern(s): (?^s:myrocks::ha_rocksdb::should_hide_ttl_rec)

          --disable_abort_on_error
          CREATE DATABASE IF NOT EXISTS advanced_db;
          CREATE TABLE advanced_db.t7 (id INTEGER AUTO_INCREMENT, col_timestamp TIMESTAMP NOT NULL DEFAULT '1971-01-01 00:00:00', col_bit BIT(53) NULL, col_int INT(1) UNSIGNED NOT NULL DEFAULT 0, col_char BINARY(161) NOT NULL DEFAULT '', col_year YEAR NULL, col_varchar VARCHAR(2136) NOT NULL DEFAULT '', PRIMARY KEY(id));
          CREATE VIEW advanced_db.view_t7 AS SELECT * FROM advanced_db.t7;
          ALTER TABLE advanced_db.t7 ADD INDEX(col_timestamp,col_int,col_char(64));
          ALTER TABLE advanced_db.t7 ADD INDEX(col_timestamp,col_int,col_char(64));
          PREPARE stmt_86 FROM " REPLACE INTO advanced_db.view_t7 (col_year) VALUES (?) ";
          --delimiter |||
          ALTER TABLE advanced_db.t7 COMMENT = 'ttl_duration=345;'|||
          PREPARE stmt_95 FROM " DELETE FROM advanced_db.view_t7 ORDER BY col_timestamp LIMIT ? ";
          START TRANSACTION;
          --delimiter |||
          --delimiter ;
          EXECUTE stmt_86 USING 89;
          EXECUTE stmt_95 USING 80;
          {code}

          {noformat:title=10.4 9e321a44}
          2023-11-05 23:36:36 4 [ERROR] Decoding ttl from PK value failed, for index (0,260), val:
          mysqld: /data/src/10.4/storage/rocksdb/ha_rocksdb.cc:6433: bool myrocks::ha_rocksdb::should_hide_ttl_rec(const myrocks::Rdb_key_def&, const rocksdb:
          :Slice&, int64_t): Assertion `0' failed.
          231105 23:36:36 [ERROR] mysqld got signal 6

          #9 0x00007fcfaa974e32 in __GI___assert_fail (assertion=0x7fcfa3b39fe0 "0", file=0x7fcfa3b2bc40 "/data/src/10.4/storage/rocksdb/ha_rocksdb.cc", line=6433, function=0x7fcfa3b39e40 "bool myrocks::ha_rocksdb::should_hide_ttl_rec(const myrocks::Rdb_key_def&, const rocksdb::Slice&, int64_t)") at ./assert/assert.c:101
          #10 0x00007fcfa2e8062e in myrocks::ha_rocksdb::should_hide_ttl_rec (this=0x61d00022e2a8, kd=..., ttl_rec_val=..., curr_ts=1699220196) at /data/src/10.4/storage/rocksdb/ha_rocksdb.cc:6433
          #11 0x00007fcfa2e80c1b in myrocks::ha_rocksdb::rocksdb_skip_expired_records (this=0x61d00022e2a8, kd=..., iter=0x6080000107a0, seek_backward=false) at /data/src/10.4/storage/rocksdb/ha_rocksdb.cc:6461
          #12 0x00007fcfa2e980b6 in myrocks::ha_rocksdb::index_next_with_direction (this=0x61d00022e2a8, buf=0x6210000d7128 "\375\001", move_forward=true) at /data/src/10.4/storage/rocksdb/ha_rocksdb.cc:9145
          #13 0x00007fcfa2e977f7 in myrocks::ha_rocksdb::index_next (this=0x61d00022e2a8, buf=0x6210000d7128 "\375\001") at /data/src/10.4/storage/rocksdb/ha_rocksdb.cc:9096
          #14 0x00005584942fcd0c in handler::ha_index_next (this=0x61d00022e2a8, buf=0x6210000d7128 "\375\001") at /data/src/10.4/sql/handler.cc:3011
          #15 0x00005584947209ad in rr_index (info=0x7fcf9d4ba730) at /data/src/10.4/sql/records.cc:450
          #16 0x00005584939931e6 in READ_RECORD::read_record (this=0x7fcf9d4ba730) at /data/src/10.4/sql/records.h:70
          #17 0x000055849476e99f in mysql_delete (thd=0x62b00005b208, table_list=0x62b000039f68, conds=0x0, order_list=0x62b000038dd8, limit=79, options=0, result=0x0) at /data/src/10.4/sql/sql_delete.cc:794
          #18 0x0000558493b4a080 in mysql_execute_command (thd=0x62b00005b208) at /data/src/10.4/sql/sql_parse.cc:4817
          #19 0x0000558493bb4355 in Prepared_statement::execute (this=0x619000099288, expanded_query=0x7fcf9d4bcb30, open_cursor=false) at /data/src/10.4/sql/sql_prepare.cc:5068
          #20 0x0000558493baf995 in Prepared_statement::execute_loop (this=0x619000099288, expanded_query=0x7fcf9d4bcb30, open_cursor=false, packet=0x0, packet_end=0x0) at /data/src/10.4/sql/sql_prepare.cc:4515
          #21 0x0000558493ba9807 in mysql_sql_stmt_execute (thd=0x62b00005b208) at /data/src/10.4/sql/sql_prepare.cc:3587
          #22 0x0000558493b4448b in mysql_execute_command (thd=0x62b00005b208) at /data/src/10.4/sql/sql_parse.cc:3994
          #23 0x0000558493b601e5 in mysql_parse (thd=0x62b00005b208, rawbuf=0x62b000062228 "EXECUTE stmt_95 USING 80", length=24, parser_state=0x7fcf9d4be860, is_com_multi=false, is_next_command=false) at /data/src/10.4/sql/sql_parse.cc:8013
          #24 0x0000558493b36410 in dispatch_command (command=COM_QUERY, thd=0x62b00005b208, packet=0x629000244209 "EXECUTE stmt_95 USING 80", packet_length=24, is_com_multi=false, is_next_command=false) at /data/src/10.4/sql/sql_parse.cc:1857
          #25 0x0000558493b32f7f in do_command (thd=0x62b00005b208) at /data/src/10.4/sql/sql_parse.cc:1378
          #26 0x0000558493f344dc in do_handle_one_connection (connect=0x608000008628) at /data/src/10.4/sql/sql_connect.cc:1420
          #27 0x0000558493f33df3 in handle_one_connection (arg=0x608000008628) at /data/src/10.4/sql/sql_connect.cc:1324
          #28 0x0000558494ba75c2 in pfs_spawn_thread (arg=0x61500000e408) at /data/src/10.4/storage/perfschema/pfs.cc:1869
          #29 0x00007fcfaa9c9044 in start_thread (arg=<optimized out>) at ./nptl/pthread_create.c:442
          #30 0x00007fcfaaa4961c in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81
          {noformat}

          A release build doesn't crash but also produces an error.
          {code:sql}
          INSTALL SONAME 'ha_rocksdb';

          CREATE TABLE t (id INT, a INT, b INT, PRIMARY KEY(id), KEY(a), KEY(b)) ENGINE=RocksDB COMMENT='ttl_duration=300';
          START TRANSACTION;
          INSERT INTO t VALUES (1,1,1),(2,2,2);
          DELETE FROM t ORDER BY a LIMIT 10;
          {code}

          {noformat:title=10.4 64f44b22d9a3dab3d4c0b77addbcbdafde57b466}
          2023-11-26 17:39:42 4 [ERROR] Decoding ttl from PK value failed, for index (0,257), val:
          mysqld: /data/bld/10.4-asan/storage/rocksdb/ha_rocksdb.cc:6433: bool myrocks::ha_rocksdb::should_hide_ttl_rec(const myrocks::Rdb_key_def&, const rocksdb::Slice&, int64_t): Assertion `0' failed.

          #9 0x00007f7ba5e53e32 in __GI___assert_fail (assertion=0x7f7b9bb3a040 "0", file=0x7f7b9bb2bca0 "/data/bld/10.4-asan/storage/rocksdb/ha_rocksdb.cc", line=6433, function=0x7f7b9bb39ea0 "bool myrocks::ha_rocksdb::should_hide_ttl_rec(const myrocks::Rdb_key_def&, const rocksdb::Slice&, int64_t)") at ./assert/assert.c:101
          #10 0x00007f7b9ae8062e in myrocks::ha_rocksdb::should_hide_ttl_rec (this=0x61d0002468a8, kd=..., ttl_rec_val=..., curr_ts=1701013182) at /data/bld/10.4-asan/storage/rocksdb/ha_rocksdb.cc:6433
          #11 0x00007f7b9ae80c1b in myrocks::ha_rocksdb::rocksdb_skip_expired_records (this=0x61d0002468a8, kd=..., iter=0x6080000103a0, seek_backward=false) at /data/bld/10.4-asan/storage/rocksdb/ha_rocksdb.cc:6461
          #12 0x00007f7b9ae980b6 in myrocks::ha_rocksdb::index_next_with_direction (this=0x61d0002468a8, buf=0x61900009f1b8 "\371\002", move_forward=true) at /data/bld/10.4-asan/storage/rocksdb/ha_rocksdb.cc:9145
          #13 0x00007f7b9ae977f7 in myrocks::ha_rocksdb::index_next (this=0x61d0002468a8, buf=0x61900009f1b8 "\371\002") at /data/bld/10.4-asan/storage/rocksdb/ha_rocksdb.cc:9096
          #14 0x000056488d21f98a in handler::ha_index_next (this=0x61d0002468a8, buf=0x61900009f1b8 "\371\002") at /data/bld/10.4-asan/sql/handler.cc:3011
          #15 0x000056488d644091 in rr_index (info=0x7f7b9ce51710) at /data/bld/10.4-asan/sql/records.cc:450
          #16 0x000056488c8aea84 in READ_RECORD::read_record (this=0x7f7b9ce51710) at /data/bld/10.4-asan/sql/records.h:70
          #17 0x000056488d692083 in mysql_delete (thd=0x62b00005b208, table_list=0x62b000062340, conds=0x0, order_list=0x62b00005fc20, limit=8, options=0, result=0x0) at /data/bld/10.4-asan/sql/sql_delete.cc:794
          #18 0x000056488ca6777c in mysql_execute_command (thd=0x62b00005b208) at /data/bld/10.4-asan/sql/sql_parse.cc:4817
          #19 0x000056488ca7da6b in mysql_parse (thd=0x62b00005b208, rawbuf=0x62b000062228 "DELETE FROM t ORDER BY a LIMIT 10", length=33, parser_state=0x7f7b9ce53c60, is_com_multi=false, is_next_command=false) at /data/bld/10.4-asan/sql/sql_parse.cc:8060
          #20 0x000056488ca53ae2 in dispatch_command (command=COM_QUERY, thd=0x62b00005b208, packet=0x62900021c209 "DELETE FROM t ORDER BY a LIMIT 10", packet_length=33, is_com_multi=false, is_next_command=false) at /data/bld/10.4-asan/sql/sql_parse.cc:1857
          #21 0x000056488ca50651 in do_command (thd=0x62b00005b208) at /data/bld/10.4-asan/sql/sql_parse.cc:1378
          #22 0x000056488ce56d15 in do_handle_one_connection (connect=0x6080000009a8) at /data/bld/10.4-asan/sql/sql_connect.cc:1419
          #23 0x000056488ce5662c in handle_one_connection (arg=0x6080000009a8) at /data/bld/10.4-asan/sql/sql_connect.cc:1323
          #24 0x000056488dabb26c in pfs_spawn_thread (arg=0x615000003508) at /data/bld/10.4-asan/storage/perfschema/pfs.cc:1869
          #25 0x00007f7ba5ea8044 in start_thread (arg=<optimized out>) at ./nptl/pthread_create.c:442
          #26 0x00007f7ba5f2861c in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81
          {noformat}

          Non-debug build produces the same error without server abort:
          {noformat}
          2023-11-26 17:39:42 4 [ERROR] Decoding ttl from PK value failed, for index (0,257), val:
          {noformat}
          (it does indeed end with {{val:}}, nothing after that).

          Reproducible on all existing versions.
          Summary [Draft] Decoding ttl from PK value failed in RocksDB Decoding ttl error, assertion failure in myrocks::ha_rocksdb::should_hide_ttl_rec
          julien.fritsch Julien Fritsch made changes -
          Fix Version/s 11.0 [ 28320 ]
          julien.fritsch Julien Fritsch made changes -
          Fix Version/s 10.4 [ 22408 ]
          julien.fritsch Julien Fritsch made changes -
          Fix Version/s 11.1 [ 28549 ]
          julien.fritsch Julien Fritsch made changes -
          Fix Version/s 11.2(EOL) [ 28603 ]

          People

            psergei Sergei Petrunia
            elenst Elena Stepanova
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:

              Git Integration

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