insert with unique_checks=OFF into table with TTL crashing MyRocks

Description

It used to work in 8.0.26. We are trying to upgrade to 8.0.39 and it does not work.

One of the selling points of LSM is the ability to write without needing read-modify-write. So we use unique_checks=OFF (with rocksdb_skip_locks_if_skip_unique_check=ON) for inserts. We don’t have any secondary indexes. Only primary index.

It worked fine in MyRocks 8.0.26, but is crashing MyRocks with signal 11 in 8.0.39.

ALso refer https://www.facebook.com/groups/MyRocks/posts/2744769962253842/

Is there any alternative option for doing blind insert in 8.0.39?

REPRO


CREATE DATABASE `testdatabase`;

CREATE TABLE `testdatabase`.`table_with_ttl` ( `id` varbinary(32) NOT NULL,

`ttl_ts` bigint unsigned NOT NULL,

PRIMARY KEY (`id`) )

ENGINE=ROCKSDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='ttl_duration=31536000;ttl_col=ttl_ts;';

SET unique_checks=OFF;

INSERT INTO `testdatabase`.`table_with_ttl` (`id`, `ttl_ts`)

VALUES ('helloworld', 1738737225);

STACK TRACE


2025-02-06T00:39:08Z UTC - mysqld got signal 11 ; Most likely, you have hit a bug, but this error can also be caused by malfunctioning hardware. BuildID[sha1]=747a4376e26b3524903d836440acdfe406b53966 Server Version: 8.0.39-30 Percona Server (GPL), Release '30', Revision '41ebc5d9' Thread pointer: 0x55697ed4dff0 Attempting backtrace. You can use the following information to find out where mysqld died. If you see no messages after this, something went terribly wrong... stack_bottom = 7f2f60646ac8 thread_stack 0x40000 /usr/sbin/mysqld(my_print_stacktrace(unsigned char const*, unsigned long)+0x41) [0x55695b184481] /usr/sbin/mysqld(print_fatal_signal(int)+0x3b3) [0x55695a1d1723] /usr/sbin/mysqld(handle_fatal_signal+0xc5) [0x55695a1d17f5] /lib/x86_64-linux-gnu/libpthread.so.0(+0x14420) [0x7f2f6c4e9420] /usr/lib/mysql/plugin/ha_rocksdb.so(myrocks::rdb_should_hide_ttl_rec(myrocks::Rdb_key_def const&, rocksdb::Slice const&, myrocks::Rdb_transaction*)+0x7f) [0x7f2f37814fcf] /usr/lib/mysql/plugin/ha_rocksdb.so(myrocks::Rdb_iterator_base::get(rocksdb::Slice const*, rocksdb::PinnableSlice*, myrocks::Rdb_lock_type, bool, bool)+0x129) [0x7f2f37866ad9] /usr/lib/mysql/plugin/ha_rocksdb.so(myrocks::ha_rocksdb::check_and_lock_unique_pk(myrocks::ha_rocksdb::update_row_info const&, bool*, bool)+0xdb) [0x7f2f378179eb] /usr/lib/mysql/plugin/ha_rocksdb.so(myrocks::ha_rocksdb::check_uniqueness_and_lock(myrocks::ha_rocksdb::update_row_info const&, bool, bool)+0x86) [0x7f2f37843d66] /usr/lib/mysql/plugin/ha_rocksdb.so(myrocks::ha_rocksdb::update_write_row(unsigned char const*, unsigned char const*, bool)+0x202) [0x7f2f37844002] /usr/lib/mysql/plugin/ha_rocksdb.so(myrocks::ha_rocksdb::write_row(unsigned char*)+0x65) [0x7f2f37844085] /usr/sbin/mysqld(handler::ha_write_row(unsigned char*)+0x1b0) [0x556959d2f950] /usr/sbin/mysqld(write_record(THD*, TABLE*, COPY_INFO*, COPY_INFO*)+0x6c4) [0x55695a010b94] /usr/sbin/mysqld(Sql_cmd_insert_values::execute_inner(THD*)+0xa1d) [0x55695a0120ad] /usr/sbin/mysqld(Sql_cmd_dml::execute(THD*)+0x1d4) [0x55695a0b0374] /usr/sbin/mysqld(mysql_execute_command(THD*, bool)+0xe1e) [0x55695a0473fe] /usr/sbin/mysqld(dispatch_sql_command(THD*, Parser_state*, bool)+0x610) [0x55695a04b6e0] /usr/sbin/mysqld(dispatch_command(THD*, COM_DATA const*, enum_server_command)+0x1972) [0x55695a04d622] /usr/sbin/mysqld(do_command(THD*)+0x299) [0x55695a04f029] /usr/sbin/mysqld(threadpool_process_request(THD*)+0x8b) [0x55695a17cd7b] /usr/sbin/mysqld(+0x14bfac5) [0x55695a191ac5] /usr/sbin/mysqld(+0x29f219d) [0x55695b6c419d] /lib/x86_64-linux-gnu/libpthread.so.0(+0x8609) [0x7f2f6c4dd609] /lib/x86_64-linux-gnu/libc.so.6(clone+0x43) [0x7f2f6bb8e353] Trying to get some variables. Some pointers may be invalid and cause the dump to abort. Query (7f2ea40a0880): is an invalid pointer Connection ID (thread ID): 9 Status: NOT_KILLED Please help us make Percona Server better by reporting any bugs at https://bugs.percona.com/

Environment

None

Activity

Show:

Nagavamsi Ponnekanti February 6, 2025 at 1:03 AM

Actually we use rocksdb_skip_locks_if_skip_unique_check=OFF (ie default). I am figuring out how to update description.

Details

Assignee

Reporter

Regression Issue

Yes

Needs QA

Yes

Priority

Smart Checklist

Created February 6, 2025 at 12:52 AM
Updated last month